> 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/liquidations-and-earn.md).

# Likuidasi dan Earn

Penghapusan utang likuidasi, pembagian agunan, dan pencatatan setoran Pool Stabilitas

Likuidasi menutup Trove dengan CR di bawah minimum cabang `MCR`. Pool Stabilitas memakai USDHN setoran untuk menghapus sebagian atau seluruh utang dan menerima agunan. Sisanya didistribusikan ke Trove lain dalam cabang.

## Alur likuidasi

CR memakai oracle cabang dan utang terbaru termasuk bunga serta redistribusi.

1. Pemanggil mengirim ID ke `TroveManager.batchLiquidateTroves`.
2. Kontrak memeriksa Trove aktif atau `zombie`, lalu melikuidasi yang CR-nya benar-benar di bawah `MCR`.
3. Trove ditutup dan dihapus dari posisi aktif peminjam.
4. Setoran pool menghapus utang; USDHN dibakar dan agunan diterima.
5. Sisa utang dan agunan diredistribusi lewat DefaultPool.
6. Likuidator menerima kompensasi gas; surplus dicatat di CollSurplusPool untuk peminjam.

Jika dana pool kurang, Trove tetap ditutup dan sisa utangnya berpindah melalui redistribusi.

## Utang yang diserap pool

Misalkan `pool` adalah setoran USDHN dan `D` utang likuidasi. Jumlah di atas 1 USDHN dapat dipakai:

$$
\text{AvailableUSDHN} = \max(pool - 1, 0)
$$

$$
\text{DebtOffset} = \min(D, \text{AvailableUSDHN})
$$

Pool di bawah 1 USDHN tidak menyediakan offset. Utang yang melebihi offset masuk redistribusi.

Alokasi agunan awal mengikuti fraksi utang yang dihapus. Kontrak mengurangi kompensasi gas agunan lalu membatasi agunan ke pool menurut penalti likuidasi cabang. Surplus dapat dipakai jalur redistribusi sebelum surplus akhir peminjam dicatat.

Pool menerima token agunan cabang: WKAIA untuk KAIA, wEarnUSDT untuk EarnUSDT.

## Perubahan tiap pihak

| Pihak                 | Perubahan                                                                                        |
| --------------------- | ------------------------------------------------------------------------------------------------ |
| Peminjam terlikuidasi | Trove tutup, utangnya dihapus dari posisi itu, agunan dibagikan; surplus tercatat dapat diklaim. |
| Penyetor pool         | USDHN menyusut sebanding offset, reward agunan bertambah.                                        |
| Peminjam Trove lain   | Utang dan agunan redistribusi menambah posisi menurut stake.                                     |
| Likuidator            | Menerima kompensasi gas.                                                                         |

Setoran Pool Stabilitas tidak memiliki ambang likuidasi individu seperti pinjaman. Saat pool menyerap likuidasi, saldo USDHN berkurang sesuai porsi setoran.

## Pencatatan setoran dan agunan

Untuk satu event:

* `pool`: total USDHN sebelum offset.
* `you`: setoran Anda sebelum offset.
* `offset`: USDHN dibakar untuk menghapus utang.
* `collGain`: agunan yang benar-benar masuk pool.

Perhitungan proporsional:

$$
you\_{after} \approx you \times \left(1 - \frac{offset}{pool}\right)
$$

$$
yourCollateralGain \approx \frac{you}{pool} \times collGain
$$

Kontrak memakai produk setoran `P`, akumulator agunan `S`, dan snapshot penyetor. Reward USDHN memakai `B` terpisah. Pembagian integer membulatkan ke bawah dan pencatatan mencakup perubahan scale.

Contoh mengabaikan reward bunga dan setoran pengguna lain. WKAIA dinilai $2. Agunan yang disebut adalah hasil masuk pool setelah alokasi likuidasi.

### Contoh 1: satu likuidasi

| Komponen      | Jumlah                 |
| ------------- | ---------------------- |
| Pool sebelum  | 10,000 USDHN           |
| Setoran Anda  | 1,000 USDHN, 10% pool  |
| Utang dihapus | 500 USDHN              |
| Agunan masuk  | 250 WKAIA senilai $500 |

Setoran menjadi `1,000 × (1 − 500 / 10,000) = 950` USDHN. Reward agunan `10% × 250 = 25` WKAIA.

Hasilnya **950 USDHN setoran dan 25 WKAIA reward**.

### Contoh 2: dua likuidasi berturut-turut

Mulai lagi dari pool 10,000 dan setoran 1,000 USDHN.

| Event | Pool sebelum | Setoran sebelum | Offset      | Agunan pool | Setoran setelah | Agunan Anda |
| ----- | ------------ | --------------- | ----------- | ----------- | --------------- | ----------- |
| 1     | 10,000 USDHN | 1,000 USDHN     | 500 USDHN   | 250 WKAIA   | 950 USDHN       | 25 WKAIA    |
| 2     | 9,500 USDHN  | 950 USDHN       | 1,900 USDHN | 950 WKAIA   | 760 USDHN       | 95 WKAIA    |

Offset kedua memakai 20% sisa setoran:

$$
950 \times \left(1 - \frac{1{,}900}{9{,}500}\right) = 760
$$

Setelah keduanya, **760 USDHN setoran dan 120 WKAIA reward terkumpul**. Reward agunan tetap dicatat sebagai WKAIA.

### Contoh 3: menambah setoran di antara likuidasi

Mulai dari pool 10,000 dan setoran 1,000 USDHN.

1. Offset pertama 200 USDHN dan 100 WKAIA masuk. Setoran menjadi 980, reward 10 WKAIA, pool 9,800 USDHN.
2. Anda menambah 500 USDHN. Setoran 1,480 dan pool 10,300 USDHN.
3. Event berikutnya menghapus 2,060 USDHN dan mengirim 1,030 WKAIA.

Setoran dan hasil baru:

$$
1{,}480 \times \left(1 - \frac{2{,}060}{10{,}300}\right) = 1{,}184
$$

$$
\frac{1{,}480}{10{,}300} \times 1{,}030 = 148\ \text{WKAIA}
$$

Hasil akhir **1,184 USDHN setoran dan 158 WKAIA reward terkumpul**. Tambahan setoran mengubah porsi sebelum likuidasi kedua.

## Reward bunga USDHN

ActivePool menerbitkan bunga peminjam agregat dan biaya awal, lalu mengirim bagian Pool Stabilitas. `triggerUSDHNRewards` memasukkannya ke pencatatan reward.

Reward terakumulasi terpisah dari setoran setelah likuidasi. Jika setoran kurang dari 1 USDHN, hasil baru tertunda sampai ambang distribusi tercapai.

| Tindakan                                  | Reward USDHN                                | Reward agunan                                  |
| ----------------------------------------- | ------------------------------------------- | ---------------------------------------------- |
| Setor/tarik dengan `claimRewards = true`  | Ke dompet                                   | Ke dompet, termasuk agunan tercatat sebelumnya |
| Setor/tarik dengan `claimRewards = false` | Ditambah ke setoran                         | Disimpan di `stashedColl`                      |
| Klaim saat setoran aktif                  | `withdrawFromSP(0, true)` mengirim USDHN    | Panggilan yang sama mengirim agunan            |
| Setor ulang saat aktif                    | `withdrawFromSP(0, false)` menambah setoran | Tetap dicatat di pool                          |
| Klaim agunan tanpa setoran                | Saldo setoran USDHN tetap kosong            | `claimAllCollGains()` mengirim `stashedColl`   |

Semua penarikan, klaim, dan setor ulang melalui `withdrawFromSP` harus menyisakan minimal 1 USDHN di seluruh pool.

## Mengapa hasil berubah

Reward bunga mengikuti utang, suku bunga, dan ukuran setoran pool. Hasil likuidasi mengikuti offset serta agunan diterima. Nilai pasar agunan berubah dengan harga dan likuiditas keluar.

Pantau sisa setoran, reward USDHN, dan agunan terpisah. [USDHN dan Earn](/id/protocol/usdhn-and-earn.md) memuat langkah aplikasi; [Pinjaman dan likuidasi](/id/protocol/borrowing-and-liquidation.md) membahas peminjam; [Pengungkapan risiko](/id/security/risk-disclosure.md) membahas pasar, kontrak, dan oracle.


---

# 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/liquidations-and-earn.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.
