Meme Atlas AZ · bridge-supply-reconciliation

跨鏈橋原理:鎖定與鑄造、銷毀與鑄造下兩條鏈的 totalSupply

跨鏈橋靠來源端鎖定或銷毀、目的端鑄造或解鎖來移動代幣;兩條鏈上的 totalSupply 能不能相加,要看橋的設計,快照裡的差額也要先對照在途轉帳,再對照資料商各自的加總規則。

發布
更新
編輯責任
Meme Atlas AZ

先看一組假設的數字。某枚代幣原本只在 A 鏈發行,合約的 totalSupply 是 1,000 單位;後來有一座橋把它帶到 B 鏈,B 鏈上的表示合約顯示 totalSupply 為 200。研究者手上有了兩個數字,最省事的寫法是相加,記成 1,200。

這個加法對不對,要看那 200 單位是怎麼來的。若 A 鏈那端是把 200 單位鎖進橋的保管合約、B 鏈照數鑄造,A 鏈的 1,000 本來就含著被鎖住的 200,相加等於把同一批單位算了兩次。若 A 鏈那端是把代幣銷毀,A 鏈的 totalSupply 應已降到 800,兩條鏈相加才回到 1,000。同樣是「B 鏈 200」,換一種橋就從不能加變成必須加。

再讓快照落在一筆轉帳的半路上:A 鏈的保管合約又多鎖了 50,B 鏈還沒鑄出來。此刻保管合約裡是 250,B 鏈仍是 200,兩端差 50。這 50 是一筆還沒走完的轉帳,記成增發或遺失都不對。本文的數字都是為了說明對帳而假設的,不描述任何一枚真實代幣。

跨鏈橋原理:代幣在兩端各發生了什麼

ethereum.org 的跨鏈橋開發者文件(官方繁中譯本)說,跨鏈橋的設計類型很多,「但有三種促進資產跨鏈轉移的方式最為突出」:

  • 「鎖定與鑄造 – 在來源鏈上鎖定資產,並在目標鏈上鑄造資產。」
  • 「銷毀與鑄造 – 在來源鏈上銷毀資產,並在目標鏈上鑄造資產。」
  • 「原子兌換 – 與另一方將來源鏈上的資產兌換為目標鏈上的資產。」

這三種方式對供應的影響各不相同,研究時要先分辨的就是這一點。下面引到的英文句子都是原文,中文說明為本文轉述。

Wormhole 的 Native Token Transfers 文件把兩種部署模式寫得很直白。hub-and-spoke 在中心鏈鎖定、在其他鏈鑄造等量代幣,"maintaining the total supply on the hub";burn-and-mint 在來源鏈銷毀、在目的鏈鑄造,"distributing the total supply across multiple chains"。前一種總量留在中心鏈,後一種總量分散在各條鏈。

LayerZero 對 OFT 的描述是送出端扣帳、接收端入帳:送出端 "burn or lock",接收端 "mint or unlock"。新發行的代幣可以在所有鏈上都用銷毀與鑄造;既有代幣若沒有 owner 或 mint authority,文件給的是 OFT Adapter,在原始鏈上用鎖定與解鎖。所以同一個協議名稱底下,兩端的供應行為仍可能不同,對帳前要先確認手上這座橋走的是哪一種。

Chainlink CCIP 給代幣發行方的指南,在選擇轉移模式時列了三種:Burn and Mint、Lock and Mint、Lock and Unlock。最後一種兩端都用鎖定/釋放池,指南的說明是 "Requires liquidity provisioned on both chains and active rebalancing by the token issuer",並寫明目的端的 lock box 必須事先持有代幣,才能釋放給收款人。

能不能相加,資料商也分成幾路處理

CoinGecko 的 Supply Update FAQ(該頁最後編輯於 2025-09-24)把橋接到多條鏈的代幣分開處理:

  • 多條鏈都是原生發行:Total Supply 是各原生鏈 Total Supply 之和,減去各鏈已銷毀的量。
  • 鎖定與鑄造:"Total Supply is based on the source chain’s Total Supply, minus any burned tokens on the source chain."
  • 銷毀與鑄造:Total Supply 是來源鏈(扣除來源鏈已銷毀)加上新鏈新鑄的量。

三種情形的流通量,都要扣掉 "Uncirculated Wallets across both chains",涉及多條鏈未流通錢包的申請,要逐鏈附上這類錢包的清單。至於經橋接或包裝的代幣,FAQ 說仍會追蹤其總量與流通量,但不計入平台的 Global Market Cap,理由是 "to prevent double counting"。

這些是 CoinGecko 自己的口徑,不能當成所有資料商的共同規則。它對研究者的用處是提供一個參照:自己算出的總量和平台不同時,先問平台把這枚代幣歸在哪一路。CoinGecko 方法說明頁寫,流通量的計算來源可以點選 Circulating Supply 旁的圖示查看,鎖定地址則由代幣團隊提供。要知道某個保管地址有沒有被扣掉,就去看那份來源。

對帳式:先寫下哪兩個數應該相等

對帳的第一步,是寫出在這種橋的設計下哪兩個數應該相等。

鎖定與鑄造時,要比的是來源鏈上保管地址的餘額,和目的鏈表示合約的 totalSupply。比例以該橋文件為準,Shibarium 的 Bridge Assets 文件寫的是存入時 "Shibarium mints the same number of tokens (1:1) as pegged tokens when tokens leave the Ethereum network"。總量只看來源鏈,目的鏈的數字拿來核對保管,不拿來相加。

銷毀與鑄造時沒有保管地址可比。要比的是各鏈 totalSupply 相加,和專案文件或資料商列出的總量;每一筆轉帳都該在一端找到銷毀、在另一端找到鑄造。

兩端都用池子的 Lock and Unlock,按 CCIP 指南的表格,來源端做的是 "Locks tokens",目的端是 "Releases tokens",兩端都不鑄造也不銷毀;要核的是兩個池子的餘額變化。原子兌換是與另一方交換兩條鏈上已有的資產,對帳對象是雙方的餘額。

在途轉帳

LayerZero 的描述是送出端扣帳(銷毀或鎖定),接收端 "the same amount is minted or unlocked"。兩端不一定同時完成,接收端可能晚到:Wormhole 的速率限制文件寫,在目的鏈超出限額的轉帳會進入入站佇列,"Users or relayers must return after the queue duration has expired to complete receiving their transfer on the destination chain." 在有人回來完成接收之前,目的鏈那端就是少了這一筆。

提領方向,Shibarium 文件的寫法是 "Tokens are burned on Shibarium and unlocked on Ethereum during the withdrawal process"。

快照上的差額欄要寫什麼

研究紀錄裡,跨鏈供應這一欄至少要看得出下面幾件事:

  • 橋的設計類型,附文件網址與讀取日期;鎖定與鑄造要寫明基準端是哪條鏈。
  • 兩端讀數各自的區塊與時間。兩個數字若不是同一刻取得,先別算差額。
  • 差額的數量與方向:保管多於表示,或表示多於保管。
  • 已找到的在途轉帳:送出端的交易、接收端是否已完成、是否還在佇列裡。
  • 資料商把這枚代幣歸在哪一路,以及它列出的計算來源。
  • 扣掉在途之後還剩多少沒解釋。

最後一格最容易被省略。剩下的差額若沒有對應的交易,就原樣留著,不要用「增發」或「短缺」去填它。

在途轉帳解釋不了的差額

第一種來自讀數與範圍本身,候選解釋要逐一排除:兩端讀數時間不一致、保管地址只列了一座橋、目的鏈上的合約其實不是這座橋鑄的。ethereum.org 在跨鏈橋風險裡另外提醒:「許多跨鏈橋使用包裝資產在新鏈上鑄造原始資產的規範版本。這會使生態系統暴露於系統性風險中,正如我們所見,包裝版本的代幣曾遭到利用。」這類差額要單獨一行,不跟在途混在一起;單憑差額本身,還判斷不了有沒有出事。

第二種是第三方的表示。別的橋在另一條鏈上鑄出的包裝版本,不屬於專案自己的對帳式。CoinGecko 對這類 bridged/wrapped 代幣的處理是追蹤、但不算進全球市值;研究紀錄也可以比照,另起一行記它自己的合約與供應,不併入主幣總量。

第三種是超過正常完成時間仍對不上。完成所需的時間要看橋的文件,Shibarium 的 Bridge Assets 頁就按橋型分列了存入與提領時間,要用時回該頁看當前寫法。超過文件所列的時間,差額又對不到任何佇列中或未完成的交易,這一格就記成未解決,附上已經排除過的解釋。

回到開頭那組數字,完整的紀錄會是這樣:基準端 A 鏈,總量 1,000;B 鏈表示 200,不另外相加;保管 250 對表示 200,差 50,方向是保管較多,對應一筆來源端已鎖定、B 鏈尚未鑄造的轉帳,送出端交易已找到。數字少了哪一項,這一格就還不能結案。

本文只談資料對帳,不評價任何一座橋的安全性,也不構成買賣建議。

內容來源