> 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/ko/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://712079754-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FtaxYsiNM19tBweW3qRw5%2Fuploads%2Fgit-blob-06286b5992106334f67039c4af4cbf3826561793%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`  | 필요한 입력 수량이 최대값보다 많습니다. |

예상 수령량이 `995`개이고 슬리피지 허용치가 `0.5%`라면 최소 수령량은 약 `990.025`개입니다.

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

1bps는 `0.01%`입니다. 최종 한도는 토큰의 소수점 자릿수에 맞춰 계산합니다. 슬리피지 허용치를 높이면 견적과 실제 체결 사이에 더 큰 차이를 허용하며, 풀 수수료는 바뀌지 않습니다. 거래 기한이 지나면 실행이 중단됩니다.

견적의 수수료는 풀의 현재 설정과 잔액을 반영합니다. 풀의 자산 비중이 치우치면 가격 영향과 동적 수수료가 커질 수 있습니다. USDHN 1개와 USDT 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가 사용자를 대신해 스테이킹·해제할 수 있는 온체인 권한입니다. 토큰 사용 승인과 별개입니다. 아직 설정되지 않았다면 앱이 결합 트랜잭션 전에 요청합니다.

## LP 스테이킹·해제·보상 수령

`/earn/usdt`의 스테이킹 탭에서 지갑의 LP 토큰을 스테이킹하거나 기존 스테이킹을 해제합니다. 스테이킹하면 LP 토큰이 RewardStaker로 이동하고, 해제하면 지갑으로 돌아옵니다. 두 작업 모두 풀의 유동성을 회수하지 않습니다.

리워드 받기로 누적 USDHN 보상을 수령하면 스테이킹한 LP 잔액은 유지됩니다. 누적 보상이 있으면 예치·스테이킹과 LP 스테이킹 과정에서도 보상 수령을 선택할 수 있습니다.

## 유동성 회수하기

1. `/earn/usdt`에서 유동성 → 출금을 선택하고 회수할 LP 수량을 입력합니다.
2. 예상 USDT·USDHN 수령량과 각 토큰의 최소 수령량을 확인합니다.
3. 지갑의 LP 토큰은 `StableSwapRouter`의 사용 승인이나 서명을 거쳐 출금합니다. 스테이킹한 LP 토큰은 언스테이킹과 동시에 출금을 선택합니다. 앱이 Zapper의 operator 승인 여부를 먼저 확인합니다.
4. 트랜잭션이 확정되면 LP 토큰이 소각되고 두 토큰을 지갑으로 받습니다.

앱은 풀의 현재 잔액 비율대로 두 토큰을 인출합니다. 처음 예치한 수량을 그대로 돌려준다는 보장은 없으며, 이 회수 과정에서 한 토큰만 선택할 수는 없습니다. 컨트랙트는 풀이 일시 정지된 동안에도 비례 인출을 허용합니다. 스왑과 신규 예치는 정지 상태를 따릅니다.

## LP 가치가 바뀌는 이유

LP 토큰은 두 풀 자산의 가치 변동을 함께 반영합니다. USDHN이 페그 아래로 하락하면 거래자가 USDHN을 풀에 팔고 USDT를 가져갈 수 있습니다. 풀의 USDHN 비중은 늘고 USDT 비중은 줄어듭니다. 사용자의 지분도 그 구성을 따릅니다. 스테이킹 보상은 이 자산 노출을 없애지 않으며, 최소 인출 수량은 달러 가치를 보장하지 않습니다.

[StableSwap 작동 원리](/ko/mechanics/deep-dives/stableswap.md)에서 곡선·수수료·디페그 예시를 설명합니다. [Zapper](/ko/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/ko/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.
