2026-10-10 | AI |

Cara Kerja AMM (Automated Market Maker)

Cara Kerja AMM (Automated Market Maker)
Bursa saham atau crypto tradisional memakai order book: sistem mencocokkan orang yang mau menjual dengan yang mau membeli pada harga yang cocok. Cara ini butuh banyak pembeli dan penjual aktif, serta server cepat untuk mencocokkan pesanan setiap milidetik — sesuatu yang mahal dan sulit dijalankan di atas blockchain yang lambat.
Automated Market Maker (AMM) membuang order book sepenuhnya. Tidak ada antrian jual-beli, tidak ada pencocokan pesanan. Harga ditentukan oleh sebuah rumus matematika dan sekumpulan dana yang disebut liquidity pool. Inilah mesin di balik Uniswap, PancakeSwap, Curve, dan hampir semua DEX.

1. Liquidity pool: dua token dalam satu wadah

Bayangkan sebuah kolam berisi dua token, misalnya ETH dan USDC. Siapa pun bisa:
  • Menukar (swap): memasukkan ETH, mengambil USDC (atau sebaliknya).
  • Menyediakan likuiditas (LP): menyetor kedua token ke kolam, dan sebagai gantinya mendapat bagian dari biaya transaksi.
Yang menentukan harga bukan tawar-menawar antar orang, melainkan perbandingan jumlah kedua token di dalam kolam.

2. Formula inti: constant product

AMM paling populer (model Uniswap v2) memakai aturan constant product:
  • x = jumlah token A di kolam (mis. ETH)
  • y = jumlah token B di kolam (mis. USDC)
  • k = konstanta yang harus tetap sama setiap kali terjadi swap
Harga ETH saat ini (spot price) adalah sekadar perbandingan cadangan:
Contoh: kolam berisi 100 ETH dan 300.000 USDC. Maka harga = 300.000 / 100 = 3.000 USDC per ETH, dan k = 100 × 300.000 = 30.000.000.

3. Bagaimana swap menggerakkan harga

Misalkan Anda menjual 10 ETH ke kolam. ETH di kolam bertambah, USDC berkurang, tapi hasil kali x·y harus tetap k. Berapa USDC yang Anda terima?
Karena kolam bergerak sepanjang kurva x·y=k (sebuah hiperbola), semakin besar order Anda, semakin “mahal” setiap unit tambahannya. Inilah yang disebut price impact / slippage: harga rata-rata yang Anda dapat lebih buruk daripada harga spot.
Satu swap menggeser titik harga di sepanjang kurva x dikali y sama dengan k
Menjual 10 ETH menggeser posisi kolam di sepanjang kurva x·y=k: harga spot turun dari 3.000 ke 2.480, dan harga rata-rata yang didapat hanya 2.719 — inilah price impact.

4. Biaya dan LP token

Setiap swap dikenai biaya kecil (Uniswap v2: 0,3%). Biaya ini tidak diambil protokol, melainkan ditambahkan kembali ke kolam, sehingga k perlahan membesar. Di sinilah penyedia likuiditas mendapat imbalan.
Ketika Anda menyetor likuiditas, Anda menerima LP token — bukti kepemilikan atas sebagian kolam. Saat menariknya kembali, Anda mendapat porsi token berikut akumulasi biayanya.

5. Impermanent loss: sisi gelap jadi LP

Ada risiko penting yang sering dilupakan: impermanent loss (IL). Karena kolam otomatis menyeimbangkan diri, saat harga sebuah token bergerak jauh, nilai aset Anda di kolam bisa lebih kecil dibanding kalau tadi Anda cuma menyimpan (hold) kedua token.
Bila harga berubah dengan rasio r (harga baru dibanding harga awal), nilai posisi LP dibanding sekadar hold adalah:
Selisihnya (selalu ≤ 0) itulah impermanent loss. Beberapa angkanya:
Perubahan harga Impermanent loss
1,25× −0,62%
1,5× −2,02%
2× −5,72%
3× −13,40%
4× −20,00%
Disebut “impermanent” karena kerugian ini hilang bila harga kembali ke titik awal — tapi menjadi permanen begitu Anda menarik dana saat harga sudah menyimpang. Biaya transaksi yang terkumpul-lah yang diharapkan menutup IL ini.

6. Simulasi dengan Python

Mari buktikan semuanya dengan kode. Rumus swap di bawah sudah memasukkan biaya 0,3% (persis seperti Uniswap v2):
import math

def get_amount_out(amount_in, reserve_in, reserve_out, fee=0.003):
    # Berapa token keluar untuk sejumlah token masuk, menjaga x*y=k
    amount_in_with_fee = amount_in * (1 - fee)
    return (amount_in_with_fee * reserve_out) / (reserve_in + amount_in_with_fee)

eth, usdc = 100, 300_000          # harga spot awal = 3.000 USDC/ETH

usdc_out = get_amount_out(10, eth, usdc)
print("USDC diterima utk 10 ETH :", round(usdc_out, 2))
print("Harga rata-rata didapat  :", round(usdc_out / 10, 2))
print("Harga spot setelah swap  :", round((usdc - usdc_out) / (eth + 10), 2))
Keluarannya:
USDC diterima utk 10 ETH : 27198.33
Harga rata-rata didapat  : 2719.83
Harga spot setelah swap  : 2480.02
Perhatikan: harga spot 3.000, tapi karena kolam ini kecil, menjual 10 ETH hanya menghasilkan rata-rata 2.719 USDC/ETH, dan harga pun jatuh ke 2.480. Di kolam besar (likuiditas dalam), price impact-nya jauh lebih kecil.
Dan berikut perhitungan impermanent loss:
def impermanent_loss(price_ratio):
    return 2 * math.sqrt(price_ratio) / (1 + price_ratio) - 1

for r in [1, 1.25, 1.5, 2, 3, 4]:
    print(f"harga {r:>4}x  ->  IL {impermanent_loss(r) * 100:6.2f}%")

7. Keterbatasan dan evolusinya

Model constant product memang elegan, tapi punya kelemahan:
  • Price impact besar untuk order besar di kolam dangkal.
  • Impermanent loss bagi penyedia likuiditas.
  • Rentan MEV — bot bisa menyelipkan transaksi (front-running / sandwich) di sekitar swap Anda.
Karena itu muncul varian baru. Uniswap v3 memperkenalkan concentrated liquidity: LP bisa memusatkan dananya pada rentang harga tertentu sehingga modal jadi jauh lebih efisien. Curve memakai formula berbeda yang dioptimalkan untuk aset berharga mirip (mis. stablecoin), sehingga slippage-nya sangat kecil.

Penutup

AMM mengganti juru lelang manusia dengan satu persamaan sederhana:
  • Harga lahir otomatis dari perbandingan cadangan kolam.
  • Order besar menggeser harga (price impact) karena kolam bergerak sepanjang kurva.
  • Biaya 0,3% menjadi imbalan penyedia likuiditas — yang juga menanggung risiko impermanent loss.
Dari satu rumus yang muat di satu baris, lahir seluruh ekosistem bursa terdesentralisasi yang berjalan 24 jam tanpa perlu satu pun order book.