作者: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 区块之后。