Babylon 如何實現BTC 「去信任化質押」?

作者:Portal_Kay 來源:X,@portal_kay

– 上週 Babylon 社區測試活動bbn-test-3 已經結束,不知道大家都參與了沒有?

– Babylon 這個專案最大的亮點就是讓BTC 實現了「去信任化質押」。簡單說就是,BTC 資產可以不脫離自己錢包的控制就參與質押活動,並獲得收益。

– 之前參與測試的時候,發現Babylon 的質押流程總共需要進行5 個步驟。而所謂的「去信任化質押」就透過這5 個步驟實現,接下來我們一起來看看這5 個步驟到底是怎麼運作的。

【致謝】在拆解整個質押過程時,我向X用戶@raylin51 長老濕請教了BTC UTXO 交易構建和不同簽名方式的實現機制,牆裂感謝。但是,我們都看不到Babylon 實現質押的具體源碼,所以拆解的過程可能有誤,歡迎隨時打臉批判。

建立質押交易(BTC 網路)

– 第一個步驟是在BTC 網路創建一筆質押交易,這筆交易需要實現兩種功能:1)利用了BTC 的time-lock 腳本,將參與質押的BTC 鎖定起來不允許使用;2)懲罰交易,這是為了預防用戶後續作惡時(例如利用自己質押BTC 來攻擊POS 鏈)可以進行處罰(Slashing),這筆質押的BTC 將被銷毀。

– 這裡的處罰是使用了EOTS 簽章(Extractable one-time signatures,可提取的一次簽章方案),當使用者作惡時允許從惡意行為產生的簽章中自動提取私鑰。 Babylon 會將質押交易的「輸出」 花費到一個銷毀地址上,將其變成不可花費的交易輸出。

創建質押合約和解除質押交易(BTC 網路)

– 這一步主要實現了兩個操作。第一個是創建了一個質押的合約,即創建一種限制條款(covenants)來將上面第1 步的操作以合約的形式確定下來;另外一個操作是創建了一個解除質押交易(unbonding transaction),這個操作的核心目的是為了在鎖定期結束後,使用者才能使用他們的私鑰來贖回這些資產,並重新使用這些BTC。

建立解除質押合約(BTC 網路)

– 這一步驟是為了創建解除BTC 質押的限制條款(covenants)。即建構一個解除質押的合約,最終實現BTC 贖回的操作。

– 上面3次簽名,最終都在同一筆BTC 交易中實現(如下圖所示)。這裡其實是透過多個簽名實現了一個交易內的多個分支,可以理解為一個交易就實現質押、處罰、贖回三項操作。

– 此外,我們發現在這筆交易中,我們的BTC 仍然發送給了一個陌生的錢包。我當時對此非常好奇,Babylon 不是號稱資金不脫離錢包控制嗎?怎麼還把BTC 打到了一個陌生錢包?後來經過諮詢才明白,因為私鑰原本是BTC UTXO 的唯一條件,但是當增加了類似time-lock 之類的條件以後,那麼最終就必須創建一個新錢包才能實現多條件解鎖。而我們原付款錢包的私鑰是解鎖新錢包UTXO 的必要條件之一,所以最終要贖回這筆UTXO,也還是需要使用我們付款錢包的私鑰才可以。

質押

綁定領獎帳號(Babylon 網路)

– 到了最後兩步,整個質押的流程基本上已經完成了。步驟4 主要是在Babylon 網路上將你的錢包位址和前3 步驟完成的BTC 質押事件進行綁定,讓你的Babylon 錢包擁有獲取質押獎勵的資格。

綁定領獎帳號(BTC 網路)

– 最後一步依然在BTC 網路完成,目的是將你的BTC 錢包與Babylon 在POS 鏈上的質押行為相綁定(這一步疑問比較大,只是看字面意思進行的解讀,實際上我不理解這一步操作的必要性)。

好了,到這一步咱們的這次質押操作就完成了,最終確認交易還需要再7 個BTC 區塊之後。

質押

Total
0
Shares
Related Posts