> 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/ja/protocol/stableswap-dex.md).

# ConvertとStableSwap

USDHNとUSDTの交換、Kaiaへのブリッジ、StableSwapの流動性提供とLPステーキング。

Hann FinanceはStableSwapプールでUSDHNとUSDTを交換します。両方のトークンを預けると、プールの持分を表すLPトークンを受け取ります。LPトークンをRewardStakerにステークすると報酬が蓄積します。

| 操作              | アプリの場所                | 結果                                                  |
| --------------- | --------------------- | --------------------------------------------------- |
| USDHN ↔ USDTの交換 | `/convert` → スワップ     | 交換先のトークンをウォレットで受け取ります。                              |
| Kaiaへのブリッジ      | `/convert` → ブリッジ     | 他のチェーンの対応USDC・USDTをKaiaのUSDTとして受け取ります。              |
| 流動性の提供・引き出し     | `/earn/usdt` → 流動性    | 両方のトークンを預けてLPトークンを受け取るか、LPトークンをバーンして両方のトークンを受け取ります。 |
| LPのステーク・アンステーク  | `/earn/usdt` → ステーキング | ウォレットとRewardStakerの間でLPトークンを移動します。                  |

![USDTとUSDHNをプールへ預けるとLPトークンが発行され、LPトークンを返すと両資産の持分を受け取ります。](https://3703202746-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FijRIWLhwa2WiTrn7wCdn%2Fuploads%2Fgit-blob-0d73fa781849b9196175157a1d16aea0b5945c83%2Fswap-liquidity.svg?alt=media)

*両資産を預けるとLPトークンが発行されます。LPトークンをバーンすると、現在のプール残高に対する持分を受け取ります。*

## USDHNとUSDTを交換する

1. ウォレットを接続し、`/convert`のスワップタブを開きます。
2. USDHN → USDTまたはUSDT → USDHNを選びます。
3. 支払う数量か受け取る数量を入力します。もう一方の数量はプールの見積もりから計算されます。
4. 設定でスリッページ許容率と取引期限を指定します。見積数量、手数料、最小受取量または最大支払量を確認します。
5. ウォレットが要求するトークン承認またはPermit2署名を行い、スワップのトランザクションを承認します。
6. 確定後、受け取ったトークンの残高と取引内容を確認します。

アプリは設定された`UsdtUsdhnPool`を`StableSwapRouter`経由で利用します。任意のプールやトークンペアを選ぶ機能はありません。ルーターはプールのファクトリー登録と許可トークンを確認します。プールが一時停止中の場合、スワップは実行できません。

### 支払量と受取量

| 入力する数量               | コントラクトの上限・下限        | トランザクションがリバートする条件 |
| -------------------- | ------------------- | ----------------- |
| 支払量を固定するexact input  | 最小受取量`amountOutMin` | 実際の受取量が下限を下回る。    |
| 受取量を固定するexact output | 最大支払量`amountInMax`  | 必要な支払量が上限を超える。    |

exact inputの見積受取量が`995`、スリッページ許容率が`0.5%`なら、最小受取量は約`990.025`です。

$$
minOut \approx quote \times \left(1-\frac{slippageBps}{10{,}000}\right)
$$

1bpsは`0.01%`です。最終的な数量はトークンの小数桁数に合わせて計算します。許容率を上げると見積もりと実際の交換結果の差を広く許容しますが、プールの手数料は変わりません。取引期限を過ぎると実行されません。

見積もりの手数料は現在のプール設定と残高を反映します。資産の比率が偏ると、価格インパクトと動的手数料が増えることがあります。USDHNとUSDTの交換レートは1対1に固定されていません。

## Kaiaへブリッジする

ブリッジはRhino.fiを通じて、他のEVMチェーンの対応USDC・USDTをKaiaのUSDTとして届けます。送信元チェーンと資産の選択欄には、ブリッジサービスが返す経路が表示されます。送信先はチェーンID`8217`のKaiaメインネット、受取トークンはUSDTです。

1. `/convert`のブリッジタブで送信元チェーンと資産を選びます。
2. 数量と受取アドレスを入力します。送信元チェーンのネットワーク手数料に使うネイティブトークンを用意します。
3. 受取量、ブリッジ手数料、所要時間の見積もり、KAIAガス補充の設定を確認します。
4. ウォレットを送信元チェーンに切り替え、見積もりのトークン数量を承認してから送信元の入金トランザクションを承認します。
5. Kaiaでの受け取りまで転送状況を確認します。送信元の確定は入金を確定し、送信先での支払いが転送を完了します。

KAIAガス補充は転送価値の一部をネイティブKAIAに換えて、送信先の手数料に使えるようにします。その費用は見積もりに含まれます。ブリッジはKaiaメインネットのアプリで利用でき、Kairosテストネットのアプリには表示されません。実行には送信元チェーンへ切り替えられるEVMウォレット接続が必要です。アプリのモバイル接続モードとKaia専用ウォレット接続は、この送信元チェーンでの実行に対応していません。

ページを開き直しても、転送履歴と再開機能で送信済みの転送を追跡できます。新たに入金する前に、その転送の状態を確認してください。チェーン間の転送は複数のトランザクションにまたがり、進行状況と払い戻しの状態を個別に表示します。

## 流動性を提供する

1. `/earn/usdt`で流動性 → デポジットを選びます。
2. USDTとUSDHNをそれぞれ0より大きい数量で入力します。プール比率、見積LP数量、最小LP数量、取引期限を確認します。
3. デポジットのみを選ぶか、LPトークンを直接ステークをオンにします。
4. 両方のトークンを承認するか、要求されたPermit2署名を行ってからデポジットのトランザクションを承認します。

プールは固定の預入比率を強制しません。現在の比率と異なるデポジットはLPの見積数量に影響し、不均衡手数料がかかります。一方の数量が0、または発行LP数量が`minLiquidity`未満の場合は失敗します。

| デポジット方法    | 新しいLPトークンの保管先                              | 追加の権限                                     |
| ---------- | ------------------------------------------ | ----------------------------------------- |
| デポジットのみ    | `StableSwapRouter`経由でウォレットに届く。             | ルーターへのトークン使用承認。                           |
| デポジットとステーク | `StableSwapZapper`経由でRewardStakerにステークされる。 | Zapperへのトークン使用承認とRewardStakerのoperator承認。 |

operator承認は、Zapperがユーザーに代わってステーク・アンステークするためのオンチェーン権限です。トークン使用承認とは別です。未設定の場合、アプリは複合トランザクションの前にこの権限を要求します。

## ステーク・アンステーク・報酬の請求

`/earn/usdt`のステーキングタブで、ウォレットのLPトークンをステークするか、既存のステークを解除します。ステークするとLPトークンはRewardStakerへ移り、アンステークするとウォレットへ戻ります。どちらもプールの流動性を引き出す操作ではありません。

報酬を請求すると、ステーク済みLP残高を維持したまま蓄積したUSDHNを受け取ります。未請求の報酬がある場合、デポジットとステーク、またはLPのステーク時にも報酬の受け取りを選べます。

## 流動性を引き出す

1. `/earn/usdt`で流動性 → 引き出しを選び、引き出すLP数量を入力します。
2. USDT・USDHNの見積受取量と、それぞれの最小受取量を確認します。
3. ウォレットのLPは`StableSwapRouter`への承認または署名を行って引き出します。ステーク済みLPはアンステークして引き出しを選びます。アプリはZapperのoperator承認を先に確認します。
4. 確定後、LPトークンがバーンされ、両方のトークンがウォレットに届きます。

アプリは現在のプール残高に比例して両方のトークンを引き出します。元の預入数量をそのまま返す保証はなく、この操作で受取資産を一方だけに指定することもできません。コントラクトはプールが一時停止中でも比例引き出しを許可します。スワップと新規デポジットは停止されます。

## LPの価値が変わる理由

LPトークンは両方のプール資産の価値変動を受けます。USDHNがペッグを下回ると、取引者はUSDHNをプールに売ってUSDTを受け取れます。プール内のUSDHN比率が増え、USDT比率が減ります。ユーザーの持分もこの構成に従います。ステーキング報酬はこの資産へのエクスポージャーを消さず、最小引出数量もドル価値を保証しません。

[StableSwapの仕組み](/ja/mechanics/deep-dives/stableswap.md)では曲線、手数料、デペッグ時の例を説明します。[Zapper](/ja/protocol/zapper.md)では流動性とTroveの複合操作を説明します。


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.hann.finance/ja/protocol/stableswap-dex.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
