代幣遷移的兌換比例怎麼算

2026-09-03

代幣遷移的兌換比例怎麼算

一個項目遷到新合約,公布一個比例,開一個兌換窗口。你的錢包裡顯示的還是舊代幣餘額,而你最後會拿到多少,哪裡都沒寫。把一個公布出來的比例變成真正到帳的餘額,要過三道各自獨立的檢查,而出問題的那一道,往往不是你以為的那次乘法。

代幣遷移的兌換比例怎麼算:從公布的比例到到帳餘額的幾個步驟

兌換比例說的到底是甚麼

兌換比例是兩個帳本之間的一個固定兌換率:舊代幣的每一個單位能換到多少個新代幣單位。比例由項目設定,由兌換合約執行,而且不隨行情變動。無論你兌換那天這兩個代幣在市場上是甚麼價,你拿到的比例就是當初寫下的那個比例。

第一件要先弄清的事是方向,因為一個寫成「一比四」的比例可以有兩種讀法。它可以是每四個舊單位換一個新單位,也可以是每一個舊單位換四個新單位,而這兩種讀法之間差着十六倍。把讀法錨在一個你能獨立核對的東西上:拿新的總供應量與舊的比一比。如果新供應量是兩者中較小的那個,那麼每一個舊單位換到的必然不足一個新單位,任何說反了的讀法都是倒着的。

第二件要弄清的事是這個比例適用於哪一筆餘額。一次遷移會劃定一個合格集合:某個快照時點持有的餘額、仍然留在舊合約裡的餘額,或者在兌換合約停止支付之前被送進去的餘額。這個集合之內所有人適用同一個比例,所以下面所有算法都假定你的餘額在集合裡。而兌換窗口現在還開不開着,是另一個問題,與「如果開着它會付多少」不是一回事。

這個數是從哪裡來的

比例是一個決定,而這個決定背後有一根算術骨架。項目先定下新帳本的規模,再拿它去除以這次遷移必須吸收掉的舊單位數量。商就是比例,這也是為甚麼比例與兩個供應量數字總能對上:把合格的舊供應量乘以比例,就應該得回為兌換預留的新供應量。

設一個項目把新供應量定在 400,000,000 個單位,而合格遷移的舊單位是 1,000,000,000 個。比例就是前者除以後者,於是每一個舊單位換到一個新單位的 40%。反過來讀,就是五個舊單位產出兩個新單位。

這條推導給了你一個可以拿去核任何公告的檢查。如果一個項目同時公布了兩個供應量數字和一個比例,這三個數必須互相對得上。對不上的時候,要麼這三個裡有一個是錯的,要麼合格集合比你以為的窄;而弄清是哪一種,比拿一個對不上的數去重算自己的餘額更重要。

算你自己該拿多少

方向和比例都定下來之後,你自己那個數就是一次乘法:舊餘額乘以比例。12,500 個舊單位、比例 40%,換到 5,000 個新單位。這一步不依賴任何價格,也不依賴你在窗口裡的哪一天去兌換。

這次乘法要用你錢包顯示的那種單位來做,因為那才是你能拿去和公告對照的形態。合約做的是同一次乘法,但用的是另一套單位體系,而兩者只有在小數位對齊時才一致。那是下一道檢查,也是最容易把答案整個差出若干個數量級的那一道。

你需要甚麼 去哪裡讀 少了它會怎樣
比例,以及它是朝哪個方向的 公告,並與兩個供應量數字對帳 算出來的結果是倒的
兩個代幣各自的小數位 每個代幣合約上的 decimals 函數 結果差出若干個數量級
取整規則 兌換函數內部的整數運算 有一筆餘數留在舊合約裡
哪一筆餘額是合格的 公告,以及合約實際會接受甚麼 你把兌換不會收的單位也算了進去

小數位是第二次換算,也是最容易被跳過的那次

代幣合約不存小數量。它們存的是整數,另有一個值記着小數點該放在哪裡。在 ERC-20 標準裡,可選的 decimals 函數返回這個代幣使用的小數位數;規範用一個取值為八的代幣來舉例說明:儲存的數量要除以一億,才得到它面向用戶的表示。

正因為這個函數是可選的,標準寫明:介面與其他合約不得預設這個值一定存在。當它不在時,小數位數就成了一個你得用別的辦法確定下來的約定,而拿一個你自己假定的預設值去填這個空缺,正是一筆餘額被讀錯若干個數量級的來路。

兩個代幣小數位不同的遷移,會在比例之上再疊一層縮放。如果舊代幣用十八位小數、新代幣用六位,同樣一個顯示出來的數量,存成整數會差 1,000,000,000,000 倍。兌換合約內部會處理這層縮放,所以一個同時拿到兩個 decimals 值的錢包,顯示給你的數是對的。而從區塊鏈瀏覽器上直接抄下來的原始整數是另一回事:從一次合約調用裡直接讀到的值是以基本單位計的,把一個代幣的基本單位數字與另一個代幣的基本單位數字並排比較,比的是兩把不同的尺。

與其讀公告,不如把比例從合約裡讀出來

公告是散文,而真正付錢的是兌換合約。打開它已驗證的原始碼,找到兌換函數用來乘和除的那兩個常數。那兩個常數就是這個比例被強制執行的形態。如果它們與公告不一致,你的餘額會被送進去的是那兩個常數。

順手把兩個代幣合約上的 decimals 值也讀了。兩個常數加兩個 decimals 值,就是這道計算的全部,而這四個都是不花錢的公開讀取。

然後,在你把餘額交出去之前,先把結果確認一遍。兌換合約要先拿到一筆代幣授權才能動你的舊代幣,而授權可以只授一個很小的數量,不必是整筆餘額。先兌一小筆,拿到帳的數與你自己的算術對一對,然後才去授權其餘的部分 —— 這樣這道計算就從「推出來的」變成了「看見過的」。

取整,以及被留下的那些單位

合約在整數裡做運算,而整數除法是截斷的。當你的舊數量不是比例分母的整數倍時,除法會把餘下的部分丟掉,而不是進位。在十八位小數上,被丟掉的那一小片是一個小到沒有顯示形態的分數 —— 而它照樣是真的。

當支付被切得更粗時,這筆餘數就會顯出來。12,502 個舊單位,同樣按 40% 的比例,算出來是 5,000 個新單位再加一個零頭;一個只按整數單位入帳的合約會給你 5,000 個,零頭留在原地。事先算清楚:那筆剩下的東西,是一個你可以不管的取整餘數,還是一筆窗口關上之後你還會拿在手裡的舊餘額。

比例沒告訴你的那件事:價值

兌換比例定的是數量,對價值不作任何主張。你手裡單位的個數變了,而這就是比例所保證的全部。把小於一的比例讀成虧損、把大於一的比例讀成盈利,是把一次算術換算當成了一次價格變動。

遷移真正改變的,是市場給哪一個帳本定價。兩個代幣同時存在之後,它們各自獨立地交易,價格來自各自遇到的需求,而不是來自那個把兩者供應量連起來的比例。你拿到的那個 ERC-20 代幣是一份有自己市場的新合約,而比例是唯一被帶過去的固定的東西。

比例定死了甚麼 它把甚麼留給市場
你的餘額會換成多少個新單位 一個新單位值多少錢
兩個供應量數字之間的關係 新代幣會比舊代幣交易得更高還是更低
兌換合約執行的那次算術 兌換之後你這個倉位的價值

小結

兌換比例是一次乘法,外面裹着三道檢查。用兩個供應量數字對帳,定下比例是朝哪個方向的;讀出兩個代幣的小數位,好讓縮放不會把你的答案挪掉若干個數量級;找出取整規則,好知道甚麼會被留下。

然後是核實,而不是相信:兌換合約裡的那兩個常數才是真正會被套到你身上的比例,而一筆小額試兌,能把你的算術變成一次觀察。想系統學習更多加密基礎知識,可以關注 Bitbase(幣貝)學院的後續內容。

相關閱讀

幣貝上與本主題相關的其他文章:

- 如何撤回治理委託

- 代幣遷移為什麼要你在錢包裡授權

- 代幣遷移已完成,但新代幣沒有出現在錢包裡

- NFT 對敲交易的警示訊號

- ADX 與衡量趨勢強度

風險披露:本文為 Bitbase(幣貝)學院的科普內容,僅供教育與資訊參考,不構成任何投資、交易、稅務或財務建議。加密資產波動劇烈,請自行評估風險。本文撰寫於 2026 年 9 月,請以官方最新資訊為準。

參考資料

[1] 以太坊改進提案,ERC-20: Token Standard(EIP-20,Final),decimals 方法 eips.ethereum.org

[2] ethereum.org 開發者文檔,ERC-20 Token Standard ethereum.org

相關推薦

更多推薦