同樣是「換幣」,按下「Swap」和按下「Bridge」走的是兩套完全不同的底層機制:Swap 是在同一條鏈上、透過智能合約把一種代幣換成另一種;Bridge(跨鏈橋)則要把資產從一條鏈「搬」到另一條鏈,所以更慢、風險也更高。這篇文章把它們拆開講清楚:一筆 swap 交易裡到底發生了什麼、跨鏈橋怎麼把一個幣搬到另一條鏈、為什麼跨鏈比較慢也比較危險,以及你按下按鈕時錢包實際上簽了什麼、該注意哪些坑。
先講一個關鍵前提:區塊鏈之間天生互不相通。以太坊不知道 Solana 上發生了什麼,比特幣也讀不到以太坊的帳本。每條鏈都是一個封閉的帳本世界。理解這一點,後面所有的「為什麼」都會變得很自然。
一、同鏈換幣(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 變少了,東西變稀有,價格自然往上跑。交易量相對池子越大,滑點越嚴重;池子越深(流動性越多),同樣一筆交易的滑點越小。 這就是為什麼大池子能讓價格穩、小池子一動就劇烈跳動。
這也回答了「為什麼能即時換」:因為你不需要等任何對手方,那條曲線本身就是你的對手方。公式隨時都能算出一個成交價,合約收下你的幣、按公式吐出對應數量的另一個幣,一筆交易就結束了。
手續費去哪了
每筆 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 幣轉給你。
整個過程在同一條鏈上、同一個區塊時間內完成,所以「即時」。
二、跨鏈(Cross-chain):把幣「搬」到另一條鏈
同鏈 swap 再快,也跨不出那條鏈。問題來了:以太坊上的 USDC 要怎麼跑到 Solana 上?
答案是——它根本沒有「跑過去」。 幣不會真的離開原本的鏈。跨鏈橋做的事,本質上是一套「在 A 鏈鎖住、在 B 鏈生出對應物」的把戲。以下是幾種主流機制。
機制 1:鎖定 + 鑄造(Lock-and-Mint)
最常見的模式,可以用「寄物櫃 + 提領憑證」來理解:
- 你把 100 顆原生代幣存進 A 鏈上的橋接合約,它們被鎖住(lock),動不了。
- 橋在 B 鏈上**鑄造(mint)**出 100 顆「包裝代幣(wrapped token)」給你。
這個 wrapped token(例如 WBTC、wrapped ETH)就是一張「提領憑證」——它代表「A 鏈那邊有 100 顆真貨被鎖著」。要換回去時,B 鏈上的 wrapped token 被銷毀(burn),A 鏈上的鎖才解開、把原幣還你。鎖住的真幣數量,永遠等於外面流通的包裝幣數量,這個 1:1 對應是整個系統的命根子。
機制 2:銷毀 + 鑄造(Burn-and-Mint)
如果發幣方自己同時掌控多條鏈上的代幣合約(像 Circle 的 USDC 用 CCTP 這樣做),就能更乾淨:
- A 鏈上把你的 100 顆幣直接銷毀。
- B 鏈上鑄造出 100 顆原生的真幣給你。
沒有寄物櫃、沒有包裝幣,兩邊的總供應量永遠一致。好處是不必養一大筆鎖定資金,缺點是只有「握有鑄幣權」的發行方才能這麼做。
機制 3:流動性池橋(Liquidity Pool / Lock-and-Unlock)
這種橋兩邊各備好一桶資金(流動性池):
- 你在 A 鏈把幣存進池子。
- 橋直接從 B 鏈那桶現成的資金裡,把等值的原生幣解鎖給你。
你拿到的是 B 鏈上「真正的原生幣」而不是包裝幣,通常更快、體驗更好,但代價是橋必須在每條鏈都預先囤著足夠的資金,否則池子被抽乾就換不了。
橋怎麼「知道」對面發生了什麼?驗證層
上面三種機制都有一個共同的致命問題:B 鏈的合約憑什麼相信「A 鏈上真的鎖了 100 顆」? 兩條鏈互不相通,B 鏈看不到 A 鏈的帳本。中間一定要有人或某種機制來「傳話並擔保」,這就是橋的驗證層(messaging / verification layer),常見幾種:
- 外部驗證者(多簽 / MPC):一群指定的節點盯著 A 鏈,看到鎖定事件後共同簽名,通知 B 鏈放行。信任假設是「這群簽名者不會作惡、私鑰不會外洩」——這也是最常被攻破的一環。
- 輕客戶端(light client)+ 中繼者(relayer):在 B 鏈上跑一個能驗證 A 鏈區塊頭與密碼學證明的精簡程式,由中繼者把證明搬過來。信任假設最接近底層鏈本身,安全性較高,但開發複雜、成本也高。
- 樂觀式(optimistic):先假設訊息是真的,留一段「挑戰期」讓任何人提出反證。安全但慢。
一句話總結:跨鏈橋的安全性,等於它「驗證對面狀態」這套機制的安全性。
為什麼跨鏈比同鏈慢
同鏈 swap 在一個區塊內就結束;跨鏈卻牽涉兩條鏈各自的出塊與確認,外加中間的驗證與中繼。橋通常要等來源鏈「確認到一定區塊數」才敢放行(避免來源鏈發生重組讓鎖定被反悔),這段等待從幾分鐘到更久都有可能。慢,是為了安全買的保險。
三、實際操作層面:你按下按鈕時發生什麼
把前面拼起來,從使用者視角看一次完整流程:
- Approve(授權):跟 swap 一樣,動用 ERC-20 代幣前要先授權橋接合約。很多釣魚就藏在這一步(後面詳述)。
- 簽名送出交易:你在錢包簽的,是「把幣鎖進 / 銷毀於來源鏈合約」這筆交易。簽名代表你授權這個動作,不是「把私鑰給對方」。
- Gas 怎麼算:gas 是付給區塊鏈本身(礦工 / 驗證者)的運算費,不是給 DEX 或橋。費用 ≈ 這筆交易的運算複雜度 × 當下的網路擁擠程度(gas price)。跨鏈通常兩條鏈都要付 gas:來源鏈付鎖定 / 銷毀,目的鏈付鑄造 / 解鎖(有些橋會把目的鏈那段折算進費用裡)。
- 到帳要等什麼:等來源鏈確認 → 等驗證層傳話並擔保 → 等目的鏈把幣鑄造 / 解鎖給你。任何一段塞車,到帳就變慢。
四、安全與常見的坑
跨鏈與 swap 的便利背後,藏著幾個真實會讓人賠錢的地雷:
-
滑點設定:滑點容忍度設太低,價格稍動交易就失敗、白付 gas;設太高(或用「無限滑點」),則可能被三明治攻擊 / MER 機器人夾在中間,用極差的價格成交。一般主流幣設 0.5%–1% 即可,冷門小池才需放寬。
-
代幣授權(approve)風險:這是最大的坑。很多介面預設請你授權無上限額度(unlimited approval),圖方便。問題是只要你授權過的那個合約有漏洞、或它根本是釣魚合約,對方就能在日後把你錢包裡那個幣全部搬走。對策:盡量只授權「這次要用的數量」,並定期到 Etherscan 之類的工具撤銷(revoke)不再用的舊授權。
-
假代幣 / 假合約:任何人都能發一個叫「USDC」的山寨幣,或架一個長得一模一樣的釣魚網站。永遠從官方管道取得合約地址,別在搜尋廣告、空投連結裡隨手點 approve。
-
橋的信任假設:這是跨鏈獨有的系統性風險。2022 年是橋的災難年——Ronin 橋因為多簽驗證者的私鑰被社交工程釣走(駭客拿到 9 個驗證節點中的 5 個控制權),被盜超過 6 億美元;Wormhole 橋則因為合約沒有正確驗證簽名,讓攻擊者無中生有鑄造代幣,損失約 3.26 億美元。共通教訓是:橋把大量資產集中在少數驗證者或一段合約邏輯上,一旦那個信任點被攻破,鎖在裡面的真幣就全沒了,而你手上的包裝幣會瞬間變成沒有抵押的廢紙。用橋前,先問一句:「這座橋的安全靠誰擔保?那個擔保者被攻破會怎樣?」
五、實戰流程拆解:從 USDT 到 YES/NO 份額
前面的 swap、bridge、wrap 不是各自獨立的概念,真實操作裡它們常常一個接一個串成一條鏈路。最典型的例子,是到預測市場(以 Polymarket 為例)下注:你手上是穩定幣 USDT,最後要變成「某個事件會發生 / 不會發生」的 YES/NO 結果份額。整條路徑長這樣:
USDT
│ swap(同鏈兌換)
▼
USDC
│ bridge(跨鏈到 Polygon)
▼
USDC(Polygon)
│ wrap(包裝成協議抵押品)
▼
pUSD(Polymarket USD)
│ CTF split(拆分成互補的結果代幣)
▼
1 份 YES + 1 份 NO四個箭頭,對應四種完全不同的鏈上動作。逐一拆開,看每一步你手上實際握著什麼、為什麼非走這步不可。
① USDT →(swap)→ USDC:同鏈把穩定幣換成「對的那一種」
USDT 和 USDC 都是錨定美元的穩定幣,但它們是不同公司發行、不同的合約地址,對協議來說是兩種完全不同的代幣。目標協議只認 USDC 當抵押品,你手上卻是 USDT,所以第一步要先在同一條鏈上把 USDT 換成 USDC。
這就是文章開頭那段 swap:在 DEX 上跟資金池交易,按 x×y=k(穩定幣對通常用 Curve 那種專為「兩個幣價格幾乎相等」設計的曲線,滑點極小)換出 USDC。換完,你錢包裡的代幣從 USDT 變成 USDC,還在原本那條鏈上(例如以太坊主網)。
② USDC →(bridge)→ USDC(Polygon):把抵押品搬到協議所在的鏈
Polymarket 跑在 Polygon 上,而你的 USDC 還在以太坊。這一步就是第二節講的跨鏈橋:以太坊上的 USDC 被鎖定 / 銷毀,Polygon 上對應生出等量的 USDC。
要特別認清一件事——「Polygon 上的 USDC」不一定等於 Circle 原生發行的 USDC。很多情況下它是透過橋過來的 bridged USDC(USDC.e),本質上是一張「以太坊那邊有等量 USDC 被鎖著」的提領憑證(就是第二節的 wrapped token 概念)。對使用者來說它一樣是 1 美元,但它的價值是靠那座橋擔保的。走完這步,你手上是一筆躺在 Polygon 上的 USDC,但它還不是 Polymarket 內部能直接使用的抵押品。
③ USDC(Polygon) →(wrap)→ pUSD:包裝成協議自己的抵押單位
這裡的 wrap(包裝)和跨鏈無關,是發生在同一條鏈(Polygon)上的「換殼」:把 USDC 存進 Polymarket 的 CollateralOnramp 合約、呼叫 wrap(),合約鎖住你的 USDC,鑄給你等量的 pUSD(Polymarket USD)。pUSD 是 Polymarket 自己的 ERC-20 抵押代幣,1:1 由 USDC 撐腰,沒有演算法錨定、沒有部分準備,純粹就是「一張 USDC 的提領憑證」,隨時能透過 CollateralOfframp 的 unwrap() 換回 USDC(2026 年的交易所升級後,pUSD 取代了舊的 bridged USDC.e,成為平台統一的結算單位)。
協議為什麼要多這一層?因為當所有市場、所有訂單都用同一種內部抵押品結算,帳務、撮合與清算的邏輯會乾淨非常多,資金效率也更好。對你而言,pUSD 不是什麼新的風險資產,它的價值始終等於背後那 1 顆 USDC。走完這步,你手上是 pUSD,終於是能拿去「下注」的抵押品了。
④ pUSD →(CTF split)→ YES/NO 份額:把抵押品拆成互補的結果代幣
這是整條鏈路的核心,也是「預測市場份額」真正被造出來的一步。Polymarket 的份額建立在 Gnosis 條件代幣框架(Conditional Token Framework, CTF) 上,核心合約繼承自 ERC-1155。
關鍵動作叫 split(splitPosition,拆分):你把 1 pUSD 交給 CTF 合約,合約把它鎖住,回鑄給你一組互補的結果代幣——在一個二元市場裡,就是 1 份 YES + 1 份 NO。這組代幣有兩個關鍵性質:
- 同時握有整組(1 YES + 1 NO),等於沒下注:因為無論結果是 YES 還是 NO,你都拿得到那 1 美元,所以隨時可以把這組合併(
mergePositions)換回 1 pUSD。 - 下注 = 只留你看好的那一邊:你把不要的那一份(例如 NO)在訂單簿上賣掉,換回一些 pUSD,手上就只剩 YES。這時你才真正押注「YES 會發生」。
所以「買份額」在底層其實是兩件事的組合:先 split 把抵押品拆成 YES+NO,再把另一邊賣掉。實務上你在 App 上只按一個「Buy」,這些拆分與撮合都被交易所合約包在背後一次做完。
市場結算後怎麼領錢? 等預言機(oracle)回報結果(reportPayouts),你就能用 redeemPositions(贖回) 把手上的代幣換回抵押品:贏的那一邊每份兌 1 美元,輸的那一邊歸零。 這就是為什麼一份 YES 的市價會落在 0 到 1 美元之間——它本質上是「這件事會發生」的機率,乘上結算時的 1 美元。
為什麼要這麼多步?
每一步只解決一個問題,串起來才走得通:swap 解決「穩定幣種類不對」、bridge 解決「資產不在協議的鏈上」、wrap 解決「不是協議的內部結算單位」、CTF split 則把一筆死的抵押品,變成一個能漲能跌、可買賣、可贖回的「部位」。看懂這條鏈,你按下那顆「Buy」時,就知道你的錢實際上經過了哪四道關卡。
一句話收尾
同鏈 swap 是跟一條數學曲線做沒有對手方的買賣;跨鏈不是搬錢,而是「這邊鎖住、那邊生出對應物」,再靠一套驗證機制讓兩條互不相通的鏈彼此相信。 看懂這兩件事的差別,你就能判斷一筆操作的速度、成本與風險各自來自哪裡。
🔗 參考連結
- What is an Automated Market Maker?|Uniswap Blog
- Uniswap V2: Calculating the Settlement Price of an AMM Swap|RareSkills
- What is a Cross-Chain Bridge?|Chainlink Education Hub
- 7 Cross-Chain Bridge Vulnerabilities Explained|Chainlink
- Polymarket USD(pUSD)|Polymarket Docs
- Conditional Token Framework Overview|Polymarket Docs
- Conditional Tokens Developer Guide(splitPosition / merge / redeem)|Gnosis
💬 想深入?複製下面這段到 AI(ChatGPT、Claude…),再打上你的問題
你是我的「區塊鏈」學習教練。我正在搞懂「換幣(swap)與跨鏈(bridge)的實際運作原理」,重點包括:AMM 與恆定乘積公式 x×y=k、流動性池與滑點、為什麼能即時換、跨鏈橋的鎖定+鑄造/銷毀+鑄造/流動性池橋三種機制、wrapped token、驗證層(多簽/MPC、輕客戶端、樂觀式)、approve 授權風險、橋為什麼會被攻擊。請用淺白、可操作的方式回答我接下來的問題,需要時給例子和步驟。我的問題是:
↑ 複製整段,貼到 AI,最後接上你的問題即可。