外匯天眼APP訊 : tBTC 平台起步於追逐密碼學貨幣社區夢寐以求的理想:讓比特幣進入以太坊的 DeFi 生態,在密碼學貨幣領域中彼此獨立的兩大網絡之間架起橋樑。然而,其第一個版本非常短命。
在本文中,我們會深入探索tBTC ,闡明其背後的設計意圖,分析內部的運作原理,瞭解失敗的根本原因,最後預測其前景。
比特幣和以太坊的混搭
作為密碼學貨幣領域的領頭羊,比特幣擁有最高的市值,最多的用户以及最充足的流動性(目前為 1700 億美元),但是它除了作為價值貯藏物(“長期持有”)之外沒多大用途。
另一方面,去中心化金融(DeFi)已經利用以太坊區塊鏈上的智能合約功能,實現了真正的飛躍。DeFi 協議越來越受歡迎。通過以太坊網絡上的智能合約,用户現在可以通過完全去中心化的方式交換、交易並借貸各種代幣和 ETH 。
如果能在兩大獨立的網絡之間架起橋樑,就可以讓用户利用其持有的比特幣在 DeFi 中獲得收益。雖然有一些解決方案試圖在比特幣網絡上構建 DeFi ,但是讓比特幣進入以太坊的 DeFi 領域似乎更容易一些。
讓比特幣進入以太坊的 DeFi 領域
迄今為止,所有試圖打破 BTC 和 DeFi 之間壁壘的方案中,最引人矚目的一種是 BitGo 的 WBTC(Wrapped BTC)—— 基於以太坊的(ERC 20)代幣。一方面,由於 wBTC 是 ERC20 代幣,wBTC 持有者可以使用 DeFi 服務。另一方面,發行方承諾 wBTC 是由足額比特幣背書的,因此其價值錨定比特幣。也就是説,以太坊上每發行一個 wBTC ,都會鎖定一個比特幣為其背書。這樣一來,在 DeFi 中使用類似 比特幣的代幣的目標就實現了。
wBTC 以及類似解決方案的問題在於,用於背書的比特幣是由中心化託管機構持有的。普通用户無法直接用比特幣換出 wBTC ,wBTC 必須先由託管機構鑄造出來。
這既限制了 wBTC 代幣的發行數量,又迫使用户必須信任 wBTC 託管機構會像承諾的那樣鎖定足額的比特幣。
為了緩解這些問題,tBTC 項目應運而生。
去中心化解決方案 tBTC
去中心化是 KEEP 開發的 tBTC 項目與 wBTC 的主要區別,因為 tBTC 可以讓任意用户通過一個簽署者網絡來利用比特幣(和一些以太幣)鑄造 tBTC 。不同於之前的解決方案,tBTC 不依賴於某個中心化託管機構持有被鎖定的比特幣。簽署者是隨機選擇的,每鑄造一個新的 tBTC 時,系統都會選擇一組不同的簽署者。這組簽署者提供以太幣作為質押品,來確保他們不會攜款跑路。
所有比特幣存款都是由超額質押品背書的。每存入一個比特幣,簽署者必須提供價值 1.5 個比特幣的以太幣作為質押品。在鎖定以太幣作為質押品之後,簽署者會得到手續費作為獎勵,手續費會在用户贖回 BTC 時支付。
另一個有趣之處是,簽署者通過門限簽名協議創建一個唯一的地址。這就意味着,不可能出現某個簽署者攜款跑路的情況。一切操作都必須由所有被選中的簽署者合作執行。
同樣地,如果要違反協議,偷走被鎖定的比特幣,一定得所有簽署者合謀才能成功。
如果簽署者違反協議,任何人都可以提供簽署者作惡的證據。作為回報,簽署者的質押品會被獎勵給舉報者。由於簽署者是超額質押,如果他們帶着比特幣跑路的話,他們將得不償失。
tBTC 的鑄造流程
如果存款者想要鑄造 tBTC ,他們會向 tBTC 平台發送一個交易,支付用於設置存款合約的 gas 費
系統會隨機選擇一組簽署者來持有該比特幣
簽署者提供 150% 比特幣價值的以太幣作為質押品
簽署者創建一個門限簽名地址併發布
存款者將比特幣發送至該地址,並等待比特幣區塊鏈的確認
一旦收到了足夠多的確認(6 個區塊),存款者就會證明付款已完成,合約就會為存款者生成 tBTC
同樣地,任何 tBTC 持有者都可以使用 tBTC 從簽署者手中贖回比特幣。贖回流程與鑄造流程相反。
贖回者向合約支付 tBTC ,並提供自己的比特幣地址,也就是打款地址
簽署者創建了一個門限簽名,並生成了一筆支付交易,將比特幣發送給由贖回者提供的地址
資金髮回給贖回者之後,簽署者就會提供一個已向合約付款的證明,從而解鎖其以太幣質押品
tBTC 解決方案的關鍵在於能夠向以太坊合約證明比特幣付款已完成。要做到這點並不容易,因為以太坊和比特幣是兩條不同的區塊鏈。存款智能合約需要知道是否可以為該用户生成 tBTC 。為此,存款者必須提供已向簽署者付款的 證明 。為了生成證明,智能合約需要執行簡化的比特幣驗證流程(類似比特幣的 SPV(簡化支付驗證)客户端)。存款者提供付款的哈希值,以及付款已完成並在比特幣區塊鏈上獲得了 6 個驗證的證明。鑑於比特幣的工作量證明共識機制,這個證明是可靠的。簽署者在贖回比特幣的過程中需要提供相同的證明。只有這樣,簽署者才能贖回他們的質押品。
官方 tBTC 去中心化應用(DApp)於 5 月 16 日上線。在 5 月 18 日(運行約 48 小時後),Keep Network 項目的 CEO 宣佈其團隊啓動了一次性切斷開關,暫時關閉了該平台的比特幣存款功能。
Keep 團隊在 5 月 20 日發佈的詳細覆盤中指出,根本問題出在贖回協議上。
正如覆盤中所説,在贖回期間,贖回者會提供一個比特幣地址,簽署者應該將由他們託管的比特幣發送至這個地址。有效的比特幣地址有好幾個版本。每個版本在長度和前綴上都略有區別。
例子:
新格式:bc1qngsulfgcudt8ztwv9quef9k5sv0ld2px0jh8nw
舊格式:1PPhYgecwvAN7utN2EotgTfy2mmLqzF8m3
由於合約的贖回流程出了 bug ,簽署者無法證明他們正確地將比特幣發送到了舊格式的地址上。
這對誠實的贖回者不會產生任何影響。贖回者可以提供任意比特幣地址並收到他們的比特幣。問題出在簽署者這邊。簽署者在試圖證明他們已經向贖回者付款時,如果贖回者使用的是舊格式的地址,即使簽署者是誠實的,合約也不會接受他們的證明。因此,簽署者會因為沒有及時提供付款證明而被系統認為是作惡者。在這種情況下,任何用户都可以指控簽署者的 “惡行”,並獲得簽署者的部分質押品作為獎勵。
一旦這一 bug 被利用,簽署者(協議的支柱)就會同時失去比特幣(被髮送給了贖回者)和以太幣(被獎勵給了指控者)。發現了這個 bug 的惡意贖回者會發起多個惡意贖回流程,不僅能取回比特幣,還能獲得簽署者的以太幣。
編寫完美的代碼本身就很難,更何況是上傳一次就再也不能更改的智能合約的代碼。
Keep 團隊選擇不在智能合約上加入 “升級” 功能。這種做法肯定有其優勢,也會帶來很大的風險。也正是因此,他們不能簡單地用新的合約來代替舊的合約,解決將來的問題。Keep 團隊的覆盤提到了原本可以採取的預防措施,以及如何避免 tBTC 2.0 出現同樣問題的未來計劃。
根據我們在該協議正式上線之前的實驗經驗來看,我們認為測試網 DApp 測試階段應該更久一些,在主網上線前應該有更廣泛的測試和用例。例如,我們在嘗試贖回時,無法完成該流程,卡在了下面這個界面上。
雖然初次上線就慘遭失敗,但是 tBTC 還有翻盤的機會。好在 99.87% 的 tBTC 都找了回來並歸還給了持有者(剩下的 tBTC 很可能就成了這次事件的紀念品),沒有造成什麼經濟損失。tBTC 團隊全程在溝通和信息披露方面做得非常好。
這次失敗是因為合約出了 bug 。在系統被關停之前,沒有時間測試更加複雜的運作環節(價格信息輸入機制、簽署者分佈、清算等)。
更重要的是,在連接比特幣和以太坊的 DeFi 方面有很大的需求和潛力。我們終將在二者之間架起橋樑。如果 tBTC 做不到,還會有後來者。