> For the complete documentation index, see [llms.txt](https://docs.hann.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hann.finance/id/mechanics/deep-dives/stableswap.md).

# StableSwap

Kurva dua aset StableSwap, biaya dinamis, batas eksekusi, dan nilai LP saat depeg

Pool Hann StableSwap memegang USDHN dan USDT. Di dekat keseimbangan, amplifikasi mengurangi dampak harga. Saat perdagangan menghabiskan satu sisi, dampaknya membesar. Kuotasi mencerminkan cadangan, amplifikasi, biaya, dan presisi saat ini.

## Cadangan dan amplifikasi

Pool menormalisasi saldo ke 18 desimal sebelum menerapkan invariant dua aset. USDT memakai 6 dan USDHN 18 desimal, sehingga satuannya perlu disamakan.

Untuk cadangan normal positif `x`, `y`, nilai `A` dari `currentA()`, dan invariant `D`, dengan mengabaikan pembulatan:

$$
2A(x+y)+D=2AD+\frac{D^3}{4xy}
$$

Saat cadangan sama, `D = x + y`. Kontrak menambah cadangan input, mencari output yang mempertahankan `D`, lalu menerapkan biaya dan pembulatan.

Amplifikasi tinggi meratakan kurva dekat keseimbangan. Output tersedia tetap mengikuti cadangan, dan nilai tukar berubah bersama ketidakseimbangan setelah depeg. `A` juga dapat berubah melalui ramp terkonfigurasi.

## Biaya dinamis

Biaya dasar adalah `swapFee`; pengali ketidakseimbangan `offpegFeeMultiplier`. Penyebutnya `10,000` basis poin. `4` bps setara `0.04%`; aplikasi membaca tarif pool terkini.

Jika pengali melebihi `10,000`, biaya tumbuh saat saldo perhitungan menjauh dari keseimbangan. Dengan biaya dasar `f`, pengali `m`, `B = 10,000`, dan saldo normal `x`, `y`:

$$
f\_{dynamic}=\frac{mf}{B+(m-B)\frac{4xy}{(x+y)^2}}
$$

Pada `x = y`, `4xy/(x+y)^2` bernilai satu sehingga biaya kembali ke `f`. Saat satu sisi kecil, pecahan menurun dan biaya mendekati `mf/B`. Kontrak memakai aritmetika integer dan kuotasi menyertakannya. Jika `m ≤ B` atau biaya dasar nol, biaya dasar dipakai.

Biaya admin mengambil bagian biaya swap; sisanya masuk likuiditas. Setoran tidak seimbang juga dikenai biaya sebelum jumlah LP dihitung.

## Input tepat dan output tepat

Rute USDHN/USDT aplikasi memakai satu pool:

| Pesanan      | Jumlah tetap    | Batas on-chain                 |
| ------------ | --------------- | ------------------------------ |
| Input tepat  | Jumlah dibayar  | Output minimal `amountOutMin`. |
| Output tepat | Jumlah diterima | Input maksimal `amountInMax`.  |

Untuk kuotasi `995` token dengan slippage `0.5%` (`50` bps):

$$
minOut\approx995\left(1-\frac{50}{10{,}000}\right)=990.025
$$

Pada output tepat, maksimum input didapat dengan menambah toleransi pada kuotasi input. Keduanya dikonversi ke presisi token. Kuotasi sudah memasukkan biaya; slippage mengizinkan pergerakan sampai eksekusi.

Router memvalidasi factory, urutan token, dan allowlist untuk kuotasi, swap, serta setoran. Panggilan langsung pool mengikuti aturan kontrak pool sendiri.

## Deadline dan kegagalan

Deadline adalah waktu terakhir swap atau transaksi likuiditas bisa berjalan. Kedaluwarsa, batas jumlah tidak terpenuhi, pool dijeda, likuiditas kurang, atau token dengan biaya transfer yang tidak didukung menyebabkan revert.

Perdagangan lain tetap dapat mengubah saldo setelah kuotasi. Deadline membatasi waktu, minimum output dan maksimum input membatasi hasil.

Revert membalikkan perubahan pool serta transfer dalam transaksi. Persetujuan sebelumnya tetap ada dan gas transaksi gagal tetap digunakan.

## Arti token LP

LP mewakili bagian saldo setelah pencatatan biaya. Jika porsi LP Anda `s`, penarikan proporsional mengembalikan sekitar `s` kali setiap cadangan tersedia, dengan pembulatan dan minimum yang ditentukan.

Penarikan aplikasi membakar LP dan mengembalikan USDHN serta USDT. Penarikan satu koin lewat kontrak adalah operasi tersendiri dengan efek kurva dan biaya. Penarikan proporsional tetap tersedia saat pool dijeda.

Harga virtual berasal dari `D` per LP dan mengukur nilai normal pool menurut invariant. Nilai dolar saat depeg juga mengikuti harga eksternal aset.

LP yang di-stake mempertahankan eksposur pool. RewardStaker mencatat saldo dan reward; setelah klaim, bagian aset pool yang diwakili LP tetap sama.

## Pengaruh depeg

Jika USDHN lebih murah dari USDT di pasar luas, pedagang membeli USDHN murah lalu menjualnya ke pool untuk USDT. Cadangan USDHN naik, USDT turun, dan LP memegang lebih banyak aset yang melemah.

Jika USDHN lebih mahal, pedagang membelinya dari pool dengan USDT lalu menjual di luar. Cadangan USDHN turun dan USDT naik; LP memegang lebih sedikit aset yang menguat.

### Dua contoh saldo

Awal `1,000,000` USDHN dan `1,000,000` USDT, masing-masing `$1`. Bagian `10%` mewakili `100,000` tiap token senilai `$200,000`.

Perhitungan berikut memakai saldo akhir yang diberikan sebagai input contoh dan porsi tetap `10%`, dengan biaya serta setoran/penarikan LP lain dikecualikan.

| Nilai                          | USDHN turun ke `$0.90`                      | USDHN naik ke `$1.05`                       |
| ------------------------------ | ------------------------------------------- | ------------------------------------------- |
| Saldo akhir                    | `1,800,000` USDHN + `200,000` USDT          | `200,000` USDHN + `1,800,000` USDT          |
| Porsi `10%`                    | `180,000` USDHN + `20,000` USDT             | `20,000` USDHN + `180,000` USDT             |
| Nilai porsi                    | `180,000 × $0.90 + 20,000 × $1 = $182,000`  | `20,000 × $1.05 + 180,000 × $1 = $201,000`  |
| Nilai jika token awal disimpan | `100,000 × $0.90 + 100,000 × $1 = $190,000` | `100,000 × $1.05 + 100,000 × $1 = $205,000` |
| Selisih terhadap penyimpanan   | `−$8,000`                                   | `−$4,000`                                   |

Selisih berasal dari perubahan komposisi. Minimum penarikan membatasi jumlah, sementara harga pasar menentukan nilainya. Evaluasi biaya pool dan reward bersama eksposur tersebut.

Langkah aplikasi ada di [Pertukaran, bridge, dan likuiditas](/id/protocol/stableswap-dex.md). [Zapper](/id/protocol/zapper.md) membahas izin serta LP gabungan.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.hann.finance/id/mechanics/deep-dives/stableswap.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
