> 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/th/mechanics/deep-dives/stableswap.md).

# StableSwap

เส้นโค้ง StableSwap สองสินทรัพย์ ค่าธรรมเนียมผันแปร ขีดจำกัด และมูลค่า LP เมื่อหลุดราคาเป้าหมาย

พูล Hann StableSwap ถือ USDHN และ USDT ใกล้สมดุล amplification ลดผลกระทบต่อราคา เมื่อการซื้อขายใช้ทุนสำรองด้านหนึ่งมากขึ้น ผลกระทบจะสูงขึ้น ราคาเสนอสะท้อนยอด พารามิเตอร์ ค่าธรรมเนียม และทศนิยมปัจจุบัน

## ทุนสำรองและ amplification

พูลปรับยอดเป็น 18 ทศนิยมก่อนใช้สมการสองสินทรัพย์ USDT มี 6 และ USDHN มี 18 ทศนิยม จึงต้องปรับหน่วยก่อนเปรียบเทียบ

สำหรับยอดปรับสเกลบวก `x`, `y` ให้ `A` เป็นค่าจาก `currentA()` และ `D` เป็น invariant เมื่อแยกการปัดจำนวนเต็มออก:

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

ยอดเท่ากันให้ `D = x + y` สวอปเพิ่มยอดเข้าแล้วแก้ยอดออกที่รักษา `D` จากนั้นคิดค่าธรรมเนียมและปัด

amplification สูงทำให้เส้นโค้งใกล้สมดุลแบนขึ้น จำนวนออกยังขึ้นกับทุนสำรอง และอัตราแลกเปลี่ยนตามความไม่สมดุลหลังหลุดราคาเป้าหมาย `A` เปลี่ยนตาม ramp ที่ตั้งไว้ได้

## ค่าธรรมเนียมผันแปร

ค่าพื้นฐานคือ `swapFee` ตัวคูณความไม่สมดุลคือ `offpegFeeMultiplier` ใช้ตัวหาร `10,000` basis points ค่า `4` bps เท่ากับ `0.04%` แอปอ่านอัตราปัจจุบันจากพูล

เมื่อตัวคูณเกิน `10,000` ค่าธรรมเนียมเพิ่มตามความห่างสมดุล ให้ค่าพื้นฐาน `f` ตัวคูณ `m`, `B = 10,000` และยอดปรับ `x`, `y` รูปต่อเนื่องคือ:

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

เมื่อ `x = y` ค่า `4xy/(x+y)^2` เป็นหนึ่ง ค่าธรรมเนียมกลับ `f` เมื่อด้านหนึ่งน้อยลง เศษส่วนลดและค่าเข้าใกล้ `mf/B` สัญญาคิดด้วยจำนวนเต็ม ราคาเสนอรวมการคำนวณนี้ หาก `m ≤ B` หรือค่าพื้นฐานศูนย์ ใช้ค่าพื้นฐาน

ค่า admin เป็นส่วนหนึ่งของค่า swap ส่วนที่เหลือเข้าพูล ฝากไม่สมดุลมีค่าความไม่สมดุลก่อนคำนวณ LP

## กำหนดยอดเข้าและยอดออก

เส้นทาง USDHN/USDT มีหนึ่งพูล รองรับ:

| คำสั่ง        | จำนวนคงที่ | ตรวจบนเชน                     |
| ------------- | ---------- | ----------------------------- |
| ยอดเข้าแน่นอน | ยอดจ่าย    | ผลรับอย่างน้อย `amountOutMin` |
| ยอดออกแน่นอน  | ยอดรับ     | จ่ายไม่เกิน `amountInMax`     |

ราคาเสนอ `995` โทเคน สลิปเพจ `0.5%` (`50` bps):

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

ยอดออกแน่นอนใช้ราคาเสนอยอดเข้าบวกสัดส่วนเผื่อเป็นยอดจ่ายสูงสุด ทั้งสองปรับตามทศนิยมโทเคน ราคาเสนอรวมค่าใช้จ่ายแล้ว สลิปเพจยอมให้เปลี่ยนระหว่างราคาเสนอกับทำจริง

router ตรวจ factory ลำดับโทเคน และ allowlist สำหรับราคาเสนอ สวอป และฝาก การเรียกพูลตรงใช้กฎสัญญาพูลของตน

## กำหนดเวลาและความล้มเหลว

deadline คือเวลาสุดท้ายที่สวอปหรือรายการสภาพคล่องทำได้ เกินเวลา ผิดขีดจำกัดยอด พูลหยุด สภาพคล่องไม่พอ หรือโทเคนหักค่าโอนที่ไม่รองรับทำให้ย้อนกลับ

รายการอื่นยังเปลี่ยนยอดหลังขอราคาได้ deadline จำกัดช่วงเวลา ส่วนขั้นต่ำรับกับสูงสุดจ่ายจำกัดผล

ย้อนกลับคืนการเปลี่ยนพูลและการโอนในธุรกรรม สิทธิ์ที่ยืนยันก่อนยังอยู่ และยังใช้แก๊ส

## LP แทนอะไร

LP แทนส่วนแบ่งยอดหลังบัญชีค่าธรรมเนียม หากถือสัดส่วน `s` ถอนตามสัดส่วนได้ประมาณ `s` เท่าของแต่ละทุนสำรอง โดยปัดหน่วยและตรวจขั้นต่ำ

ถอนในแอปเผา LP และคืนทั้ง USDHN กับ USDT การถอนเหรียญเดียวผ่านสัญญาเป็นอีกทางที่มีผลเส้นโค้งกับค่าใช้จ่าย ถอนตามสัดส่วนยังได้เมื่อพูลหยุด

ราคาเสมือนมาจาก `D` ต่อ LP วัดมูลค่าที่ปรับหน่วยตาม invariant ส่วนมูลค่าดอลลาร์ตอนหลุดเป้าหมายขึ้นกับราคาภายนอกของสินทรัพย์ด้วย

LP ที่สเตกคงความเสี่ยงพูล RewardStaker บันทึกยอดและรางวัล เมื่อรับรางวัล ส่วนแบ่งสินทรัพย์ที่ LP แทนยังคงเดิม

## หลุดราคาเป้าหมายเปลี่ยนพูลอย่างไร

หาก USDHN ถูกกว่า USDT ในตลาด ผู้ซื้อขายซื้อ USDHN ราคาถูกแล้วขายเข้าพูลรับ USDT ยอด USDHN เพิ่ม USDT ลด ผู้ให้สภาพคล่องถือสินทรัพย์อ่อนค่ามากขึ้น

หาก USDHN แพงกว่า ผู้ซื้อขายใช้ USDT ซื้อจากพูลไปขายภายนอก ยอด USDHN ลด USDT เพิ่ม ผู้ให้สภาพคล่องถือสินทรัพย์ที่แข็งค่าน้อยลง

### ตัวอย่างยอดพูลสองแบบ

เริ่มด้วย `1,000,000` USDHN และ `1,000,000` USDT ราคา `$1` ส่วนแบ่ง `10%` คืออย่างละ `100,000` มูลค่า `$200,000`

ตารางใช้ยอดปลายทางที่กำหนดเป็น input ตัวอย่างและส่วนแบ่ง `10%` คงที่ แยกค่าธรรมเนียมและฝากถอนของผู้อื่นออก

| ค่า                   | USDHN ลดเป็น `$0.90`                        | USDHN เพิ่มเป็น `$1.05`                     |
| --------------------- | ------------------------------------------- | ------------------------------------------- |
| ยอดพูลท้าย            | `1,800,000` USDHN + `200,000` USDT          | `200,000` USDHN + `1,800,000` USDT          |
| ส่วน `10%`            | `180,000` USDHN + `20,000` USDT             | `20,000` USDHN + `180,000` USDT             |
| มูลค่าส่วนแบ่ง        | `180,000 × $0.90 + 20,000 × $1 = $182,000`  | `20,000 × $1.05 + 180,000 × $1 = $201,000`  |
| มูลค่าหากถือโทเคนเดิม | `100,000 × $0.90 + 100,000 × $1 = $190,000` | `100,000 × $1.05 + 100,000 × $1 = $205,000` |
| ต่างจากถือเดิม        | `−$8,000`                                   | `−$4,000`                                   |

ส่วนต่างมาจากสัดส่วนโทเคนที่เปลี่ยน ยอดถอนขั้นต่ำกำหนดจำนวน ส่วนราคาตลาดกำหนดมูลค่า ประเมินค่าธรรมเนียมและรางวัลร่วมกับความเสี่ยงนี้

ดูขั้นตอนใน[สวอป บริดจ์ และสภาพคล่อง](/th/protocol/stableswap-dex.md) และสิทธิ์กับ LP รวมใน[Zapper](/th/protocol/zapper.md)


---

# 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/th/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.
