蜘蛛俠也防不住的"雙花"攻擊?Botanix用蜘蛛鏈織就防盜網

原文標題:How Botanix Secures against Double-Spends

原文作者:botanixlabs

原文來源:

編譯:Daisy, 火星財經

Botanix如何防範雙花攻擊

比特幣側鏈面臨的主要挑戰之一,是維持鏈上與比特幣網路之間的資金流入流出平衡。這一原則既適用於存款(錨定存入)交易,也適用於取款(錨定取出)交易。若缺乏有效管理,系統將因雙花交易和衝突輸入的出現迅速陷入資產失衡。Botanix通過Spiderchain優雅地解決了這一問題——這是一個基於輪換式多重籤名錢包架構、專爲比特幣設計的聯合權益證明鏈。

該設計自然衍生出兩類交易:錨定存入與錨定取出。錨定存入的運作方式是將BTC發送至當前多重籤名錢包,同時在Botanix上鑄造對應的BTC表徵資產。對於錨定取出,用戶銷毀Botanix上的BTC表徵資產後,Spiderchain會以多重籤名UTXO作爲輸入,將真實BTC返還。在Botanix上,這類比特幣交易需由當前輪值的Spiderchain協調者多重籤名驗證。另一關鍵設計在於:Botanix將每筆交易與前一交易綁定,並嵌入所有"衝突"輸入數據,確保任何重復或重放企圖都會被比特幣共識機制自動拒絕。

在此語境下"多重籤名"意味着什麼?

這裏的核心在於"多重籤名"(multisig)。大多數web3用戶對這個術語應該不陌生——它通常指多個用戶共同簽署一個錢包交易的能力。但在Botanix的語境中,"多重籤名"(multi-signature的縮寫)特指那些需要多方聯合授權(通常採用n-of-k密鑰模式)才能執行交易的比特幣地址。

Botanix的每個Spiderchain週期都會創建一個新的"3選2+"比特幣多重籤名錢包(未來計劃調整爲12/16模式,仍保持超過2/3比例),由協調器節點共同控制。這意味着任何從該地址發起的交易(例如錨定取出)都需要至少67%指定協調器的籤名。這些多重籤名錢包會隨着每個比特幣區塊輪換更新,由此構建出一條托管BTC存取款的鏈式結構。

因此,這裏的"多重籤名"不僅是共享錢包——它更是Botanix最小化信任設計的基礎,以及比特幣與其側鏈之間的橋梁。這種機制既防止了單方面提取BTC的可能,又通過輪換的可驗證籤名者羣體來保障錨定存取流程的安全。看似簡單甚至在其他鏈上司空見慣的功能,在比特幣生態中卻發揮着至關重要的作用。

"衝突輸入"機制解析

該機制的核心原理在於:前一次錨定取出交易所產生的輸入,已在當前交易中被花費。根據比特幣的UTXO模型,一旦某個UTXO被納入已確認交易的輸入,便無法再次使用。Botanix正是利用這一特性——將前次錨定取出已花費的輸出作爲新錨定取出交易的輸入,任何試圖廣播重復錨定取出的行爲都會違反比特幣的雙花規則而被拒絕。

若協調器或用戶嘗試重復使用同一UTXO進行錨定取出,生成的交易將包含"衝突輸入"(即兩個交易試圖花費同一UTXO)從而失效。換言之,已花費的多重籤名UTXO不可復用,系統會檢測到衝突並拒絕重復交易。

具體示例:

假設TXₙ是上一次錨定取出的比特幣交易,其輸出中包含未花費的找零UTXO Uₙ(用於爲下一個多重籤名錢包注資)。當發生下一次錨定取出時,Botanix協調器將構建TXₙ₊₁交易,其中Uₙ作爲輸入之一。此時Uₙ已被TXₙ₊₁消耗。如果任何一方(無論是否惡意)試圖重新廣播TXₙ₊₁的副本,或構建另一個花費Uₙ的交易,網路將識別到Uₙ已被首次TXₙ₊₁花費,並將後續副本視爲雙花。這些重復交易不僅無法被打包上鏈,甚至無法在節點間可靠傳播——因爲比特幣共識機制禁止對同一UTXO進行二次花費。本質上,將已花費UTXO作爲輸入的設計,使得所有錨定取出交易天然具備防重放特性,從機制上確保單次使用原則。

該機制類似於比特幣交易鏈:每個新交易都明確花費前一個交易的輸出。完全相同的交易無法被二次確認,任何試圖復用相同輸入的新交易都會被視爲無效。簡言之,Spiderchain通過UTXO模型強制保證每次錨定取出的唯一性。

交易鏈邏輯演示:

前一多重籤名UTXO(M1)→ [錨定取出交易] → 用戶地址(金額)+ 新多重籤名UTXO(M2)

下一區塊中,M2成爲"前次錨定取出UTXO",被下一次錨定取出交易消耗

任何重復的錨定取出交易若試圖再次花費M2,都會因M2已花費而失敗

通過這種設計,兩個錨定取出交易不可能花費同一個比特幣輸出——因爲每筆交易都必須將最新輸出作爲輸入包含其中。比特幣節點會自動拒絕任何雙花該輸入的企圖,無論是意外還是惡意觸發的重放交易都將立即失效。

防範意外或惡意重放攻擊

衝突輸入機制的設計能同時防範意外和故意的重復錨定取出行爲。從意外情況來看,用戶或節點無法創建兩筆完全相同的取款交易,因爲第二次嘗試會與已花費的輸入產生衝突。從惡意攻擊來看,協調器或外部攻擊者無法僞造針對同一筆資金的第二次錨定取出交易。若攻擊者試圖雙花,就必須創建另一筆花費相同UTXO的比特幣交易;但由於前次合法錨定取出交易已消耗該UTXO,任何使用相同輸入的二次交易都會被判定爲雙花而失效。

更重要的是,Botanix治理機制會對任何試圖簽署或廣播衝突錨定取出交易的協調器實施懲罰。系統規則明確將"在Spiderchain中進行不當多重籤名——包括簽署錯誤的錨定取出交易或參與雙花行爲"列爲可罰沒抵押金的違規操作。由於跨鏈橋代碼通過鏈上共識確定性構建完整交易(輸入、輸出、金額),運營者無法私自篡改輸入內容。因此,若協調器故意簽署與其他交易衝突的交易(例如嘗試雙花),該節點將面臨抵押品被罰沒的風險。

通過這種方式,Botanix既依托比特幣共識機制(自動拒絕雙花交易),又通過自身的挖礦與罰沒規則,雙重保障了錨定取出的唯一性約束。

運作流程分步解析

在深入理解機制原理後,讓我們逐步拆解實際運作流程。盡管涉及多項技術環節,但從宏觀視角看整體邏輯卻異常清晰:

錨定存入(存款)

生成網關地址

Botanix協議通過結合聯盟FROST公鑰與用戶以太坊地址,生成唯一的Taproot"網關"地址。

向多重籤名地址轉入BTC

用戶向該網關地址轉入BTC。實際資金進入由協調器控制的Spiderchain聯盟多重籤名錢包。原始BTC始終鎖定在比特幣多重籤名地址中,並未真正離開比特幣網路。

在EVM上鑄造合成BTC

當存款交易獲得足夠確認後,Sidecar(或用戶通過橋接合約)構建Merkle包含證明,並調用Spiderchain EVM上的Botanix鑄幣合約。該EVM交易會銷毀鏈上錨定存入"證明"調用並觸發鑄幣事件,系統隨即向用戶EVM帳戶鑄造等值合成BTC(扣除比特幣及EVM gas費用)。

最終結果是:用戶在Botanix EVM上持有由Spiderchain多重籤名錢包鎖定的BTC 1:1支持的合成BTC。已花費BTC將作爲新UTXO出現在多重籤名錢包的UTXO集中。Botanix驗證節點通過自有比特幣實例監控鏈上狀態,相應更新UTXO集並驗證證明,確保每筆存款僅觸發一次EVM代幣鑄造。

錨定取出(提款)

在EVM上銷毀

用戶通過在Spiderchain EVM發送交易銷毀合成BTC來發起錨定取出。該EVM交易將從用戶餘額中扣除(銷毀)指定金額(含EVM gas費)。

構建比特幣交易

被銷毀的合成BTC價值需在比特幣鏈上解鎖。協調器(同時作爲EVM驗證節點可獲取該數據)監測到銷毀事件後,在下一個比特幣週期由指定的週期領導者協調器匯總所有待處理提款請求。根據Spiderchain設計規則,從資金池中選擇要花費的UTXO——採用後進先出(LIFO)策略優先使用最新存入的UTXO,從而保護早期存款免受潛在惡意接管。

交易構造

協調器持續篩選UTXO直至總價值覆蓋提款金額加比特幣礦工費。隨後構建原始比特幣交易:輸入爲選定UTXO,輸出包括(a)用戶目標比特幣地址(接收提款金額),(b)找零輸出至新的Spiderchain多重籤名地址(確保剩餘資金留在體系內)。

閾值籤名與廣播

交易構建完成後,聯盟成員使用FROST密鑰分片聯合籤名。當達到≥t-of-n籤名閾值時,完整籤名的比特幣交易即被廣播至比特幣網路。此時Spiderchain上的BTC銷毀正式兌現爲鏈上比特幣支出,用戶最終收到扣除總費用(EVM銷毀金額減去比特幣網路費)的BTC。

共識保障與罰沒機制

爲確保可信環境並維持機制的穩健性,Botanix同時借助了比特幣的簡潔可靠性與現代系統的先進能力。這種混合方案通過簡單與復雜的結合強化了安全性。

一方面,該機制僅需遵循比特幣最基礎的UTXO/花費規則:"UTXO一經花費即不可重復使用"。這是比特幣共識中的根本性原則,因此衝突輸入機制本質上只是依托比特幣現有規則運作。只要協調器在每次新錨定取出交易中包含前次交易的UTXO,比特幣節點就會自動拒絕任何重放或復制交易。

另一方面,若協調器出現惡意行爲(例如簽署第二筆衝突交易以破壞多重籤名),Botanix的PoS協議與罰沒條款將對其進行懲罰。這種機制能有效遏制潛在的惡意操作。本質上,"衝突輸入"策略直接利用UTXO模型本身來強制實現錨定取出的單次性——通過將每次錨定取出的輸入與前次交易的輸出相連結,Botanix確保只有首筆有效交易能夠成功,任何重復交易都會因構成雙花被比特幣網路自然拒絕。這種設計巧妙地防範了意外重復交易與惡意重放攻擊,其安全性同時受到比特幣共識規則和Botanix內部罰沒機制的雙重保障。

查看原文
本頁面內容僅供參考,非招攬或要約,也不提供投資、稅務或法律諮詢。詳見聲明了解更多風險披露。
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)