Botanix 如何防範雙重支付
作者:Botanix 中文
對於比特幣鏈(Bitcoin Chains)而言,面臨的主要挑戰之一是維持鏈與比特幣主網之間資金流入和流出的平衡。這既適用於存入(peg-in)交易,也適用於提取(peg-out)交易。如果這些資金流動無法被妥善管理,系統將很快出現資產失衡,進而引發雙重支付交易和衝突輸入的問題。Botanix 通過 Spiderchain 優雅地解決了這一難題。Spiderchain 是 Botanix 構建的一個基於輪換多重簽名錢包結構的聯邦式權益證明(Proof-of-Stake)比特幣鏈。
因此,該設計形成了兩種交易類型:peg-in(鎖定比特幣)和 peg-out(解鎖比特幣)。Peg-in 操作是將 BTC 發送至當前的多重簽名錢包,並在 Botanix 上鑄造對應的 BTC 表徵資產。而在 peg-out 操作中,用戶會銷毀 Botanix 上的 BTC 表徵資產,Spiderchain 則利用其多重簽名錢包中的未花費交易輸出(UTXO)作為輸入,將實際 BTC 發還給用戶。在 Botanix 上,這筆比特幣交易由當前輪值的 Spiderchain 協調者組成的多重簽名組進行簽名。
另一個關鍵機制是,Botanix 會將每筆交易與前一筆交易相鏈接,並嵌入任何可能存在"衝突"的輸入,從而確保任何複製或重放的嘗試都會被比特幣共識機制自動拒絕。
本文語境下的多重簽名是什麼意思?
在這個上下文中,「多重簽名」是關鍵概念。Web3 用戶可能對這一術語已不陌生,它通常指多個用戶可共同管理同一個錢包並對交易進行簽名的能力。在這裡,「multisig」(multi-signature 的縮寫)是指:一類比特幣地址,只有在多個密鑰持有者(通常為 n-of-m,即 m 個中至少 n 個簽名)共同授權的情況下,才能執行交易。
在 Botanix 中,每個 Spiderchain 紀元(epoch)都會創建一個新的比特幣多重簽名錢包,目前為超過 2-of-3 的形式(未來計劃擴展為 12-of-16,即超過三分之二簽名者),由 orchestrator(協調者)節點控制。這意味著任何從該地址發起的交易(如 peg-out 提幣)都必須獲得至少 67% 協調者節點的簽名。這些多簽錢包會隨著每個比特幣區塊輪換,構成 BTC 存取的托管鏈條。
因此,在這裡的「多重簽名」不僅是一個共享錢包,更是 Botanix 去信任化設計的基石,也是其與比特幣主網之間的橋樑。它確保了沒有任何單方可以擅自提取 BTC,同時實現了由可驗證、輪換簽名者組保障的 peg-in/peg-out 流程。一個看似常見的機制,在比特幣場景下發揮著極為重要的作用。
衝突輸入機制
這個機制的核心思想在於:前一次 peg-out 使用的輸入(UTXO)在當前交易中已被花費。在比特幣的 UTXO 模型中,一旦某個 UTXO 被確認交易用作輸入,它就不能被再次使用。Botanix 正是利用了這一特性:每一次新的 peg-out 都會使用上一次 peg-out 剩餘的輸出(change UTXO)作為當前交易的輸入,從而確保任何重複廣播的 peg-out 交易都會違反比特幣的雙花規則並被拒絕。
如果某個協調者或用戶試圖使用同一個 UTXO 重複進行 peg-out 操作,那麼生成的交易將包含「衝突輸入」(即兩個交易試圖花費同一個 UTXO),因此該交易是無效的。換句話說,已經被花費的多重簽名 UTXO 無法被重複使用,系統會檢測到衝突並拒絕重複操作。
舉例說明:
假設 TXₙ 是上一次 peg-out 的比特幣交易,它的輸出中包含一個未花費的找零 UTXO,記為 Uₙ(該找零 UTXO 用於下一輪多簽錢包)。下一次 peg-out 時,Botanix 的協調者會構造 TXₙ₊₁,並將 Uₙ 作為輸入之一。此時,Uₙ 就被 TXₙ₊₁ 花費掉了。如果此時有惡意者或錯誤地再次廣播 TXₙ₊₁ 的副本,或創建一個也使用 Uₙ 的新交易,網絡將識別出 Uₙ 已被前一筆 TXₙ₊₁ 使用,並將後續交易視為雙花交易。該交易無法被打包進區塊,也難以在網絡中成功廣播,因為比特幣的共識規則禁止對同一 UTXO 重複花費。
本質上,一筆 peg-out 交易因使用了已花費的 UTXO 作為輸入而天然具有「不可重放性」,確保每一筆提款都只能使用一次。
這個機制類似於比特幣的交易鏈結構:每一次輸出都會顯式地花費前一次的輸出。重複的(完全相同的)交易無法再次確認,而任何新交易如果試圖使用相同的輸入,也會被視為無效。
簡而言之,Spiderchain 利用比特幣的 UTXO 模型,強制每一次 peg-out 的唯一性。
以下是 peg-out 交易輸入輸出鏈條的邏輯示意:
● 上一個多簽錢包輸出(M1) → [peg-out 交易] → 用戶地址(提現金額)+ 新多簽錢包輸出(M2)
● 在下一個區塊中,M2 成為"前一次 peg-out 的輸出",並作為下一筆 peg-out 的輸入。
● 若有重複 peg-out 交易試圖再次花費 M2,由於 M2 已被使用,嘗試將失敗。
通過這樣的設計,任何兩筆 peg-out 交易都無法使用相同的比特幣輸出,因為每一筆交易都引用上一次的輸出作為輸入。比特幣網絡節點會自動拒絕任何重複使用該輸入的交易,因此不論是意外還是惡意重放行為,都無法成功。
防止意外或惡意重放
「衝突輸入」機制不僅能防止惡意攻擊,還能有效應對用戶或節點的無意重複操作。
在意外情況下,用戶或節點無法創建兩筆完全相同的提現(peg-out)交易,因為第二次嘗試會因其使用了已被花費的輸入而衝突,導致交易無效。
在惡意攻擊場景下,協調者或外部攻擊者也無法偽造第二筆針對同一筆資金的提現交易。為了進行雙花攻擊,攻擊者必須創建一筆試圖再次花費相同 UTXO 的比特幣交易;但由於該 UTXO 已被有效交易使用,任何第二筆使用相同輸入的交易都會被比特幣網絡識別為雙重支付並標記為無效。
此外,Botanix 的治理機制會懲罰任何試圖簽署或廣播衝突 peg-out 交易的協調者。系統規則將"在 Spiderchain 中不當簽名多重簽名交易------無論是簽署錯誤的提現交易,還是參與雙花行為"視為可懲罰(slashing)的違規操作。
由於跨鏈橋代碼會通過鏈上共識確定性地構造完整交易(包括輸入、輸出、金額等),操作節點無法私下篡改交易輸入。因此,如果某協調者故意簽署與另一交易存在衝突的交易(例如試圖雙花),其節點將面臨質押資產被罰沒的風險。
通過這種機制,Botanix 不僅依靠比特幣本身的共識機制(自動拒絕雙花交易)來保障安全,還通過自身的共識與懲罰機制(如 slashing)進一步強化對唯一 peg-out 行為的強約束。
工作原理分步解析
在了解了 Botanix 機制的整體邏輯後,讓我們以更具體的步驟來梳理 Peg-In(充值)和 Peg-Out(提現)流程。儘管各步驟中涉及多個技術模塊,但從宏觀層面來看,這一系統的運作其實相當清晰:
Peg-In(充值流程)
1. 生成網關地址
Botanix 協議通過將聯邦 FROST 公鑰與用戶的以太坊地址結合,派生出一個唯一的 Taproot 網關地址。
2. 將 BTC 轉入多簽地址
用戶將 BTC 打入上述生成的網關地址。實質上,這些 BTC 被發送至由 orchestrators(協調者)控制的 Spiderchain 聯邦多重簽名錢包中。此時 BTC 並未離開比特幣主網,而是被鎖定在多簽地址中。
3. 鑄造 EVM 上的合成 BTC
一旦充值交易獲得足夠的確認,Sidecar(或用戶通過橋)會生成一個 Merkle 包含證明,並調用 Spiderchain EVM 上的 Botanix 鑄幣合約。該 EVM 交易消耗該筆充值"證明",並觸發 Mint 事件,系統隨後按 1:1 的比例(扣除比特幣和 EVM 燃料費)將合成 BTC 發放至用戶的 EVM 賬戶。
結果:用戶在 Botanix EVM 上獲得了等值的合成 BTC,其背後由 Spiderchain 多簽錢包中鎖定的真實 BTC 所支撐。
Botanix 的驗證者運行著獨立的 Bitcoin 節點,以追蹤鏈上 UTXO 狀態並校驗交易證明,確保每筆充值只鑄造一次代幣。
Peg-Out(提現流程)
- 在 EVM 上銷毀代幣
用戶通過 Spiderchain EVM 發起一筆交易,銷毀其持有的合成 BTC。該交易會從用戶餘額中扣除相應數量(扣除 EVM gas 費)。
- 構建比特幣提現交易
現在,這部分被銷毀的合成 BTC 對應的真實 BTC 需要從 Bitcoin 主網釋放。協調者節點監測到銷毀事件(因為他們同時也是 EVM 驗證者),在下一個比特幣紀元(epoch)開始時,輪值協調者會收集所有待處理的提現請求。
按照 Spiderchain 的設計,它會從可用的 UTXO 池中選擇對應的 UTXO。Botanix 使用"後進先出"(LIFO)策略,即優先使用最近充值產生的 UTXO,從而保護較早充值的資產免受潛在惡意行為影響。
- 構造原始比特幣交易
協調者會持續選取 UTXO,直到其總額足以覆蓋用戶提現金額和礦工費。然後構造一筆比特幣原始交易,交易結構如下:
● 輸入:被選中的 UTXO
● 輸出:
○ 用戶的 BTC 地址(提現金額)
○ 找零地址(新生成的 Spiderchain 多簽地址)
- 閾值簽名與廣播
交易構建完成後,所有聯邦成員會使用各自的 FROST 密鑰份額進行聯合簽名。當完成 t-of-n(例如 12-of-16)個簽名後,交易被完整簽署,並廣播到比特幣網絡。
最終結果:用戶的 Spiderchain 合成 BTC 被銷毀後,其對應的 BTC 被從多簽錢包中釋放並發往用戶指定的比特幣地址。用戶收到的 BTC 金額等於銷毀金額減去比特幣網絡礦工費。
這個流程確保了 Botanix 的雙向橋操作既安全又可驗證,結合 EVM 上的靈活性和比特幣 UTXO 模型的不可篡改性,提供了一套結構清晰、機制可靠的跨鏈資產系統。
共識保障與懲罰機制
為了維持一個可信的運行環境,並確保整個機制的穩健性,Botanix 結合了比特幣的簡潔可靠性與現代系統的先進能力。這種混合式設計通過將「簡單」與「複雜」相結合,大大增強了整體安全性。
一方面,Botanix 並不需要引入任何特殊的比特幣共識規則,而是直接依賴比特幣原生的 UTXO 規則:"一旦某個 UTXO 被花費,就不能再次使用。"
這是一項比特幣共識機制中的基礎校驗邏輯,因此 Botanix 的「衝突輸入機制」可以天然地建立在這條規則之上。只要協調者在每一筆新的 peg-out 交易中,始終包含上一次 peg-out 的 UTXO 作為輸入,比特幣網絡便會自動拒絕任何重放或重複交易,將其判定為無效。
另一方面,若協調者行為惡意(例如試圖簽署第二筆衝突交易,破壞多簽邏輯),Botanix 的 PoS 協議與 slashing(懲罰)機制將對該協調者進行處罰。這種機制從激勵角度有效抑制潛在惡意行為。
本質上,衝突輸入"機制正是利用比特幣的 UTXO 模型來強制實現"一次性提現"規則。通過讓每一筆 peg-out 的輸入鏈接至前一筆 peg-out 的輸出,Botanix 保證了只有第一筆有效交易能夠成功執行,而任何重複交易都會被視為雙重支付並自動被比特幣網絡拒絕。
這種機制優雅地同時防止了意外重複交易和惡意重放攻擊,其安全性一方面依賴於比特幣的原生共識規則,另一方面由 Botanix 的內部權益證明(PoS)共識和懲罰體系加以強化。














