同一條鏈上把一種代幣換成另一種,按下「Swap」背後其實沒有任何「對手方」在跟你交易——你是在跟一條數學曲線做買賣。這篇拆解去中心化交易所(DEX)怎麼用自動做市商取代訂單簿、價格與滑點怎麼算出來,以及一筆 swap 在鏈上實際送出了什麼。
傳統交易所 vs. DEX
在傳統交易所,你要賣 ETH 換 USDC,系統得「撮合」——找到另一個剛好想用 USDC 買 ETH 的人,這叫訂單簿(order book)。沒有對手方,你的單子就掛在那裡成交不了。
去中心化交易所(DEX,如 Uniswap)走的是另一條路:自動做市商(AMM, Automated Market Maker)。這裡沒有買賣雙方互相等待,你永遠是在跟一個「資金池」交易。
流動性池與恆定乘積
想像一個池子裡放了兩種幣,比如 ETH 和 USDC,由很多人(流動性提供者,LP)一起存進去。這個池子用一條簡單到不可思議的數學公式決定價格:
x × y = k(恆定乘積公式)
x 是池裡 ETH 的數量,y 是 USDC 的數量,k 是一個固定的乘積。任何一筆交易都必須讓 x 乘以 y 維持等於 k。
舉個具體例子。假設池裡有 10 顆 ETH 和 20,000 USDC,那麼 k = 10 × 20,000 = 200,000。此時 1 顆 ETH 的「價格」就是 20,000 / 10 = 2,000 USDC。
現在你要用 USDC 買 1 顆 ETH。買走後池裡剩 9 顆 ETH,為了讓乘積維持 200,000,USDC 必須變成 200,000 / 9 ≈ 22,222。也就是說,你得付 22,222 − 20,000 ≈ 2,222 USDC 才能換到那 1 顆 ETH——比「牌價」2,000 貴。
滑點(slippage)就是這樣來的
你付的 2,222 比牌價 2,000 貴的這一段,就是價格衝擊(price impact),俗稱滑點。原因很直觀:你的買單把池子裡的 ETH 變少了,東西變稀有,價格自然往上跑。交易量相對池子越大,滑點越嚴重;池子越深(流動性越多),同樣一筆交易的滑點越小。 這就是為什麼大池子能讓價格穩、小池子一動就劇烈跳動。
這也回答了「為什麼能即時換」:因為你不需要等任何對手方,那條曲線本身就是你的對手方。公式隨時都能算出一個成交價,合約收下你的幣、按公式吐出對應數量的另一個幣,一筆交易就結束了。
滑點設定本身也是一個坑(設太低會白付 gas、設太高會被夾),這部分整理在 橋的安全與常見的坑。
手續費去哪了
每筆 swap 會被抽一小段費用(Uniswap V2 是 0.3%),這筆錢不歸平台,而是分給把幣存進池子的 LP——這是他們願意提供流動性的誘因。新一代的 AMM(如 Uniswap V3)讓 LP 可以把資金集中在某個價格區間,提高資金效率、進一步壓低滑點,但核心邏輯仍是同一條「用公式取代訂單簿」的思路。
一筆 swap 實際發生什麼
當你在介面按下 swap,背後其實常常是兩筆動作:
- Approve(授權):ERC-20 代幣有個規定——你要先「准許」某個合約動用你錢包裡的這個幣,DEX 合約才碰得到它。所以第一次用某個幣去 swap,錢包會先跳一個 approve 簽名。
- Swap(兌換):授權後,真正的兌換交易才送出。合約把你的 A 幣收進池子、按 x×y=k 算出 B 幣、扣掉手續費,把 B 幣轉給你。
整個過程在同一條鏈上、同一個區塊時間內完成,所以「即時」。這也是它跟 跨鏈橋 最大的差別:跨鏈牽涉兩條鏈,沒辦法在一個區塊內結束。
這一步在實戰裡是整條路徑的第一關,見 實戰流程:從 USDT 到 YES/NO 份額 的 ① USDT → USDC。
🔍 待解問題
- 穩定幣對為什麼用 Curve 的 StableSwap 曲線而不是 x×y=k?兩條曲線在數學上差在哪?
- Uniswap V3 的「集中流動性」具體怎麼把滑點壓低?對 LP 的無常損失(impermanent loss)有什麼影響?
- 聚合器(如 1inch)怎麼把一筆大單拆到多個池子來降低總滑點?
🔗 參考連結
- What is an Automated Market Maker?|Uniswap Blog
- Uniswap V2: Calculating the Settlement Price of an AMM Swap|RareSkills
💬 想深入?複製下面這段到 AI(ChatGPT、Claude…),再打上你的問題
你是我的「區塊鏈」學習教練。我正在搞懂「同鏈換幣(swap)的運作原理」,重點包括:AMM 與恆定乘積公式 x×y=k、流動性池與 LP、滑點 / 價格衝擊怎麼算、為什麼能即時成交、手續費怎麼分、approve+swap 兩步驟。請用淺白、可操作的方式回答我接下來的問題,需要時給例子和步驟。我的問題是:
↑ 複製整段,貼到 AI,最後接上你的問題即可。
🕒 更新紀錄
- 2026-06-22 — 從原文《區塊鏈換幣與跨鏈原理》拆分建立