tBTC 是如何做到安全且去中心化地進行比特幣資產跨鏈?主網上線後的漏洞是如何被修復的?

撰文:潘致雄,鏈聞研究總監

以去中心化實現 比特幣資產跨鏈 的方案中, tBTC 是近期最受矚目的項目。當 BTC 可以安全且無需信任地遷移到以太坊網絡之後,相當於 BTC 能享受到圖靈完備的 智能合約 ,想象空間更大。比如,這樣一來,比特幣資產可以應用在 去中心化金融 (DeFi) 生態中——畢竟比特幣擁有最多的用戶、最高的市值、最顯著的網絡效應。

tBTC 是由 Thesis 公司旗下 Keep Network 開發的一個子項目,這甚至有點像是他們「不務正業」推出的實驗項目。原本 Keep Network 是一個爲以太坊提供 隱私層 的方案,利用鏈下的容器存放隱私數據;而 tBTC 則是一個比特幣跨鏈方案,聽起來好像與 Keep 本身的方向毫無關聯。不過,兩者還是存在一些交集的,比如利用了相同的代幣 KEEP多簽名機制 等。

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救

另外 SummaCross-Chain Group 也是 tBTC 項目的參與方。按照介紹,這些合作方是這樣分工的:

  • Keep 將 ECDSA 門限簽名 運用在比特幣去中心化託管的邏輯中,且 tBTC 的原生代幣使用的是 KEEP;
  • Summa 專注 跨鏈解決方案 ,也就是 tBTC 協議中負責如何在以太坊區塊鏈中驗證比特幣交易的部分 (SPV 方案) ;
  • Cross-Chain Group 則負責 跨鏈技術 的研究、設計和實施。

Keep 的投資者包括了數家美國的主流機構,如 Polychain Capital、a16z、Draper Associates、Fabric Ventures、Distributed Capital Partners 等。其中 a16z 還是多家 DeFi 協議的投資者,包括穩定幣協議 Maker、借貸協議 Compound、交易協議 dYdX 等,這三家也是目前 DeFi 協議中的頭部項目 ,如果他們後續能集成 tBTC,或許是一個雙贏的策略:比特幣可以支持 DeFi,DeFi 可以使用比特幣。

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救目前集成 tBTC 的項目

在 tBTC 之前,加密資產的跨鏈、尤其是比特幣資產的跨鏈方案,絕大多數都是通過 中心化機構託管 方式實現的,比如 WBTC、imBTC 或 HBTC。雖然這些方案也考慮到了安全性和透明度,但對於加密貨幣社區而言,人們更想要一個完全去中心化、非託管、無准入門檻、無需許可的資產跨鏈基礎設施。畢竟,資產從一個地方挪到另一個地方是一個很基礎的權利,不應該牽扯到其他因素、不應該增加額外風險、也不應該犧牲隱私。

雖然 tBTC 已完成審計並 上線主網 ,但項目仍處於早期階段,仍有很多未知風險等待早期用戶探索。而且 tBTC 的整套機制也存在一些爭議,比如 引入了預 言機 這個外部不可控的因素。此外,tBTC 網絡的參與者的質押率較高資金效率較低,這也會帶來參與者的參與動機較弱。不過 tBTC 項目還是有機會對這些現有的問題進行優化和調整的。

總體而言,tBTC 的兩個最重要的優勢爲:

  1. 原資產 抵押:由於 tBTC 通過 質押比特幣 而跨鏈生成的等價 TBTC 代幣,所以不會產生額外的比特幣。相反的,像 Synthetix 這類資產合成協議,是通過其他代幣鑄造出「 模擬 」比特幣價值的代幣 sBTC,事實上增加了比特幣的流通量。
  2. 去中心化協議 託管:在 tBTC 協議內的比特幣資產是被去中心化的協議託管的,而且也設置了一系列的安全機制確保整個流程 無法作惡

從上述兩個角度來看,目前與 tBTC 類似的項目可以這麼分類:

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救

tBTC 是如何運作的?

像穩定幣協議 Maker 爲了維持價格所設計的各種機制一樣,tBTC 在整套方案中也考慮到了各種可能會對 系統安全 帶來的特殊情況,如果將這些模塊一一拿出解釋或輔以案例說明,可能是一篇論文的長度,或不亞於白皮書。

畢竟對於大多數 tBTC 系統或者是 TBTC 代幣的使用者而言,並不需要接觸到這麼多繁雜的邏輯。只有對於系統的深度參與者或者原生代幣的交易者而言,才應該徹底瞭解整個系統的運作機制,就算很費時間也需要仔細讀一讀他們的白皮書。

不過,在此之前,也可以將本文作爲了解 tBTC 的入門手冊,以快速建立起對 tBTC 協議的概念和系統運作的 核心工作流程 。簡而言之,這裏主要解答的是這個問題: 爲什麼 tBTC 可以安全且去中心化地進行資產跨鏈?

先做一些說明和解釋:

tBTC 是這個項目和協議的名稱,而 TBTC 是由比特幣跨鏈後在以太坊上流通的代幣名,也就是 TBTC = BTC。
在 tBTC 的方案中,涉及到這幾方:

  • 存款人 (depositor) :希望把 BTC 挪到以太坊上的用戶;
  • 驗證人 / 簽署人 (signer) :維護 tBTC 網絡安全且能賺取收益的用戶;
  • 贖回者 (redeemer) :希望把以太坊上的 TBTC 換成真正 BTC 的用戶。

BTC -> TBTC 鑄造流程

對於比特幣與以太坊的資產跨鏈解決方案,兩個主要的挑戰是:

  1. 用戶如何確保抵押的資產 不會被盜 :tBTC 選擇的方案是將資產保存在由 3 人共同保管的 多簽名地址 中 (由 Keep 實現的技術) ,沒有任何一個人可以挪動資產,且需要抵押超額資產。
  2. 如何在以太坊的鏈上 確認比特幣的交易和所有權 :tBTC 採用了由 Summa 設計的 SPV (簡單支付驗證) 技術實現跨鏈的交易驗證。

所以,從 BTC 換成 TBTC 的流程分爲兩大步驟:

1. 存款人 申請資產跨鏈 ,在 tBTC 協議的分配下由驗證人輔助負責資產託管,然後存款人將比特幣轉至由三個人 共同託管的 比特幣地址中。

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救

2. 轉賬至 比特幣託管地址的 6 個區塊後,存款人向協議提交已完成轉賬的證明,然後就可以 鑄造 相應數量的 TBTC 了。

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救

簡單介紹一下 TDT:tBTC 系統爲了記錄不同存款人不同的託管數量或者時間,在鑄造 TBTC 之前還會發行一枚非同質化代幣 (NFT) ,稱爲 TDT (tBTC Deposit Token) 。雖說叫代幣,但其實類似於一張「 憑證 」,不可分割且獨一無二,後續贖回 BTC 需要用到這張憑證。

當然,在協議的設計中還需要考慮其他可能的問題以及相應的處理方式,最常見的是如果 ETH 價值相比 BTC 價值 貶值 後,可能會產生驗證人抵押不足的情況,導致驗證人就有動機作惡了,所以 tBTC 設計了相應的 清算模塊 以應對。

tBTC 協議包含了 預清算強制清算 兩個階段,和其他的清算系統的設計目標類似,在強制清算階段將會啓動 拍賣流程 ,將 ETH 以折扣價拍賣給 TBTC 的持有者以保證抵押品 ETH 價值大於 TBTC (也就是 BTC) 的價值。而如果清算後還有剩餘資金,則根據不同的情況進行收益分配。

BTC -> TBTC 贖回流程

贖回流程相比較而言簡單一些,當用戶希望將持有的 TBTC 換回 BTC 時,只需將 TBTC 以及一小筆「 費用 」提交給以太坊的智能合約,同時附上收款的比特幣地址,三位驗證人就必須共同簽署一筆比特幣鏈上交易,將 BTC 轉至規定的地址。如果有驗證人不配合呢?那抵押的 ETH 就只能被清算了。

也正因爲驗證人提供了聯合的託管業務,並付出了 ETH 抵押資產,所以贖回者需要支付一小筆額外的費用給他們作爲 經濟激勵

所以作爲驗證人,可以將 tBTC 系統作爲一種收益穩定的資產管理工具。據白皮書計算,驗證人的年化收益約爲 1.875%,考慮到 150% 的抵押率,真實的年化收益約爲 1.25% 。這是讓社區中不少人吐槽 tBTC 的地方:很多人認爲目前設定的收益率較低,可能會導致驗證人的參與動機不足。當然,這也就意味着目前參數設定,對於存款人和贖回者更友好一些。

KEEP 代幣:付出勞動才能獲得回報

在 tBTC 的系統裏,原生代幣 KEEP 是一種工作型代幣,這也就意味着持有 KEEP 不能帶來任何收益,但是在持有 KEEP 的同時又 付出勞動 ,才能因此獲得收益。

回顧一下鑄造 TBTC 的環節,在「步驟 2」中,tBTC 系統需要從包含一羣驗證人的池子中抽取其中的三個,是以什麼作爲依據抽取的?沒錯,就是按照 KEEP 代幣持有量 作爲依據的。舉個例子,持有 1000 枚 KEEP 的人是持有 100 枚 KEEP 的人被抽中概率的十倍,也就是如果放在一個很長的時間跨度中,前者幹活的數量是後者的十倍。

持有更多 KEEP 意味着驗證人可以更多的 參與託管 BTC ,也就有機會獲得更多的潛在收益。

上線兩天就被發現的 Bug,怎麼回事?

在 tBTC 上線的兩天後,官方發現了一個協議的嚴重問題,於是按下了之前預留的全局開關,將整個系統的充值功能暫停 10 天。
在此之前需要先介紹一個背景知識,比特幣在 10 多年的發展過程中,隨着技術的演進誕生了 多種地址類型 ,由不同類型的腳本生成:

  • 最初的比特幣地址以「 1 開頭 」,這類腳本稱爲 P2PKH (Pay to Public Key Hash) ;
  • 後來誕生了由「 3 開頭 」的地址,這類腳本稱爲 P2SH (Pay to Script Hash) ,功能比較強大, 支持多籤 以及可以和後來的隔離見證組合;
  • 最後誕生的是 原生隔離見證 地址,由「 bc1 開頭 」,這類腳本稱爲 P2WPKH (Pay To Witness Public Key Hash) ,也會被稱爲 Bech32。

最初 tBTC 在協議設計時,限定並強制要求贖回的地址必須是 P2WPKH (bc1 開頭) 。但是到了今年 2 月,tBTC 的工程負責人提交了一個變更, 放鬆了這個限制 ,也就是支持了 P2WPKH 之外的腳本 (1 或 3 開頭) 。

這個調整可以提升用戶體驗,贖回者可以以任意地址贖回,畢竟 Bech32 的普及程度並不高。據 txstats 的數據顯示,目前儲存在 Bech32 中的 BTC 數量約 3%。但 tBTC 的系統卻沒有因爲增加支持其他腳本而做相應的調整。

不過這樣也不一定會產生問題,軟件開發中設置的測試流程,就是爲了及早發現這樣的問題,但他們表示,測試用例中竟然 沒有覆蓋到「非 P2WPKH」腳本 。雖然後來在測試網中總算測試了 P2SH 地址 (3 開頭) ,但是又由於贖回 DApp 流程中的前端漏洞,導致團隊誤認爲該測試通過了。

問題未被發現的一整個流程爲:

tBTC 協議設計中僅支持 P2WPKH 地址—> 臨時決定放鬆對 P2WPKH 限制—> 但系統未做相應調整—> 測試用例未覆蓋—> 其他功能漏洞導致誤認爲測試通過了

這些問題堆積在一起,導致了 tBTC 帶着漏洞上線主網。

後續如何改進?

在該事件的回顧報告中,tBTC 項目表示將優化他們工作流程,還將與安全團隊 Trail of Bits 合作,爲 tBTC 規劃更多的 自動化集成測試 和系統測試。

隨後,爲了進一步減少項目的整體風險,tBTC 重新定義了他們的軟件發佈流程。原來上線主網的 tBTC「正式版」將回退至「 發佈候選版 」 (Release candidates) ,版本號爲 RC0,所以下一個版本是 RC1。

補充一下,軟件開發流程中,在發佈某個正式版之前,通常會先發布數個版本稱之爲「發佈候選版」 (Release candidates) ,如果未發現任何漏洞,最後一個 Release candidates (RC) 就會成爲最終的正式版,比如比特幣的下一個大版本 0.20.0 就已經發布了兩個 RC 版本。

tBTC 認爲,另外一個可以有效降低項目風險的機制是 限制整個系統的容量 。也就是他們限制了 BTC 可以換成 TBTC 的最大數量,這樣就算出現嚴重問題,損失的也就是可控範圍內的比特幣或以太坊。

具體來說,在 RC1 版本中,第一個月的系統容量被設定爲 100 BTC ,之後按月增加,分別是 250 BTC、750 BTC、1000 BTC,這些邏輯也都是 按照智能合約預設 的執行 即可。5 個月後,該限制將自動解除,而且如果 12 個月後未發生事故,團隊將禁用緊急暫停按鈕,也就是保護了這次系統沒有受到更多損失的預留「後門」。

如何用去中心化的方式把比特幣引入以太坊:讀懂 tBTC 資產跨鏈方案與漏洞補救

最後,tBTC 還表示除了 ConsenSys 和 Trail of Bits 的安全審計外,還將組織第三次安全審計,專門針對涉及 BTC 交易和跨鏈通信的部分。同時,tBTC 還將漏洞賞金計劃的最高獎勵提高了 10 倍,至 100 萬個 KEEP 代幣

激勵初始化流動性:「質押空投」

考慮到很多潛在的驗證人可能暫時沒有 KEEP 代幣,tBTC 發起了一個爲期 6 至 12 個月的「 質押空投 」 (Stakedrop) 活動,爲項目進行額外的激勵,促進項目的初始化和流動性。

活動中將分發 KEEP 代幣總量的 20% ,期間用戶可以僅依靠質押 ETH 成爲 tBTC 網絡的驗證人 ,爲資產跨鏈提供去中心化託管服務,而活動結束後,就會按照之前的方案,以 KEEP 代幣作爲抽籤依據。

所以對於驗證人而言,這個期間內將獲得除了 1.25% 年化收益率之外的 KEEP 代幣獎勵,而數量要參考參與 tBTC 網絡的具體表現,更多細節後續也會公佈。

值得長期觀察

雖然 tBTC 在 機制設計、協議治理以及開發流程 還有很大的改進空間,比如:改用去中心化預言機、通過系統治理調整參數等,但他們設計的去中心化跨鏈解決方案依舊是目前比較完整的,且產品的實現速度也較快。

再加上該項目由三個團隊合作推進各司其職,以及背後投資方有 強大的資源支持 ,未來該協議的普及應該不是問題,被加到各種 DeFi 協議內也是遲早的事情。

更何況 tBTC 的未來將不僅限於以太坊。採用了 Keep 和 Summa 技術的開放式區塊鏈項目,或許都可以實現比特幣的資產跨鏈,因爲這將是 各個區塊鏈之間互聯互通 的重要基礎設施。因此,tBTC 這類資產跨鏈項目值得長期關注。