比特币质押: 技术概述与安全分析

图片
近日,Babylon 在 Testnet-4 上推出了比特币质押活动,引发社区对于比特币质押的讨论。今天,Chakra 研究团队将带领您了解最新的比特币质押方案。
在 Babylon 最近的 Testnet-4 中,质押过程被分为三种类型的交易:质押交易(Staking Tx)、解绑交易(Unbonding Tx)和惩罚交易(Slashing Tx)。这些交易分别生成三种类型的比特币输出:质押输出(Staking Output)、解绑输出(Unbonding Output)和惩罚输出(Slashing Output)。转换过程如下图所示。
图片
质押交易
质押交易必须包括两个特殊的输出。一个是持有质押资产的 Taproot 输出,必须包含巴比伦定义的 BTC 质押脚本。另一个是零金额输出,该输出通过 OP_RETURN 保存巴比伦质押可识别的信息。
下图显示了一个质押交易的示例,其中第一个输出是质押输出,第二个是 OP_RETURN 输出,第三个是找零输出。
图片
质押输出
质押输出是一个 Taproot 输出,正如Chakra之前写过的文章所提到:
Taproot 输出有两种支付方式,分别为密钥支付路径和脚本支付路径。巴比伦通过将内部密钥设置为“Nothing Up My Sleeve” (NUMS)点,禁用了密钥支付路径,使得质押输出只能通过脚本支付路径进行支付。
质押输出可以通过三条脚本路径花费,对应于过程图:
1、时间锁路径
时间锁路径实现了质押功能,同时也作为活性保证。
OP_CHECKSIGVERIFY OP_CHECKSEQUENCEVERIFY
时间锁脚本将质押者的 BTC 锁定一定的区块数量。定时锁路径不需要其他实体,因此为质押者提供了活跃性保证。即使最终性提供者和契约委员会变得不活跃,质押者在锁定期过后仍然可以取回他们的 BTC 资产。
2、解绑路径
如果 BTC 被时间锁锁定,用户如何提前结束质押?巴比伦通过引入解绑路径来解决这个问题。
OP_CHECKSIGVERIFY OP_CHECKSIG OP_CHECKSIGADD ... OP_CHECKSIGADD OP_GREATERTHANOREQUAL
这条路径不仅需要质押者的签名,还需要来自契约委员会超过 CovenantThreshold数量成员的签名。引入契约委员会的主要原因是人为地创建一个解绑期,防止质押者通过解绑路径逃避惩罚。
3、惩罚路径
为了确保 PoS 的安全,惩罚是必要的。如果最终性提供者行为恶意,就有必要没收其自有及委托资金以提供经济安全。巴比伦通过引入惩罚路径提供了惩罚功能。
OP_CHECKSIGVERIFY OP_CHECKSIGVERIFY OP_CHECKSIG OP_CHECKSIGADD ... OP_CHECKSIGADD OP_GREATERTHANOREQUAL
在质押状态转为 Active 前,质押者必须预先签署惩罚路径交易,以防他们在最终性提供者行为恶意时扣留签名以避免 BTC 损失。在收到质押者的签名后,契约委员会首先验证签名,一旦确认有效,将释放他们自己的签名。
BTC 质押中的可惩罚行为是最终性提供者在同一高度上签署两个冲突的区块,此时任何用户都可以通过 EOTS 获得恶意最终性提供者的私钥。由于质押者和契约已经预先签署了惩罚交易,获得恶意最终性提供者私钥的用户可以签署交易,通过惩罚路径将部分质押资金发送到燃烧地址作为处罚。
OP_RETURN 输出
虽然 Taproot 输出以较小的 ScriptPubKeys 表达复杂的使用条件,但这也使得在比特币网络中区分质押交易和其他交易具有挑战性。因此,有必要通过其他方式披露与质押相关的信息,以便用户可以根据这些信息识别惩罚交易。
巴比伦序列化需要披露的信息,将信息嵌入 OP_RETURN 脚本中,并附加在质押交易的另一个输出中。格式如下图所示,数据必须与 Taproot 脚本中的数据相对应。
type V0OpReturnData struct { MagicBytes []byte Version byte StakerPublicKey []byte FinalityProviderPublicKey []byte StakingTime []byte}
根据以前的交易快照,OP_RETURN 输出携带的有效数据确实总共为 4+1+32+32+2=71 字节。在图中,质押交易的 FinalityProviderPublicKey 为 f4940b238dcd00535fde9730345bab6ff4ea6d413cc3602c4033c10f251c7e81,属于 Chakra。
MagicBytes 用于快速定位质押交易,而 Version 是为未来更新保留的字段,以便区分。
根据以前的交易快照,OP_RETURN 输出携带的有效数据确实总共为 4+1+32+32+2=71 Bytes字节。在图中,质押交易的 FinalityProviderPublicKey为f4940b238dcd00535fde9730345bab6ff4ea6d413cc3602c4033c10f251c7e81,属于 Chakra。
MagicBytes用于快速定位质押交易,而 Version是为未来更新保留的字段,以便区分。
解绑交易
当质押者想要提前解锁其质押的 BTC 时,他们可以通过在质押输出中花费解绑路径,提交解绑交易。解绑交易要求它只接受单个质押交易作为输入,并输出单个承诺到解绑脚本的 Taproot 输出。
下面是解绑交易的截图,对应于之前的质押输出。
其中,以 ’20’ 为开头的倒数第二段字段为解绑路径的 tapscript,以 ‘c1’ 为开头的则是 Taproot 内部密钥与解绑路径的 Merkle Proof,其中可以很明显的观察到 NUMS point 0x50929b74c1a04954b78b4b6035e97a5e078a5a0f28ec96d547bfee9ace803ac0。在解绑交易的 Witness 字段中,我们可以观察到质押者的签名与契约委员会的签名。
解绑输出可以在两种条件下花费:定时锁路径和惩罚路径,这两者与质押输出中的路径相同。在更高层面上,解绑输出是一个中间状态,旨在防止质押者立即撤回他们的股份并逃避惩罚,最终导致提款交易的稳定状态。
惩罚交易
惩罚交易以一个质押交易或解绑交易为输入,通过 Taproot 脚本中的惩罚路径花费,并产生两个输出。一个输出将部分质押的 BTC 发送到一个燃烧地址,而另一个将剩余的 BTC 返回给质押者。
更严格地说,巴比伦实施了对不当行为的部分没收,而不是一次性焚烧所有由质押者质押的 BTC。这种方法提供了更高的容错率,并保护了质押者的利益。
惩罚交易只能在质押者、契约委员会和最终性提供者的联合签名下发生。因此,即使个别方被破坏,也不会导致整个质押系统的崩溃。惩罚交易充当威慑作用,经济上阻止参与者恶意行为。只要不当行为的惩罚超过任何潜在收益,参与者就可能遵守规则。
安全分析
与巴比伦相关的安全有两种类型:
第一种安全关乎质押者,确保只要质押者及其委托的最终性提供者不进行任何恶意行为,他的质押资产就永远不会被惩罚。
第二种安全涉及 PoS 系统本身,保证如果参与者行为恶意,则协议必须能够识别并惩罚他们。
质押者的视角
对于质押者来说,一旦通过巴比伦的质押交易质押了 BTC,资金只有三种转移方式。
第一种是定时锁路径,只需要用户自己的签名即可支出。这确保了即使 FP 和巴比伦停止运营,质押者在质押期结束后仍然可以取回原始 BTC。
第二种是解绑路径,作为中间状态,创建一个解绑输出并允许更短的解锁时间。这为质押者提供了提前取回其质押资金的功能。
第三种是惩罚路径,这是唯一可能损害质押者利益的路径。如果外部人员试图攻击惩罚路径,他们必须同时提供质押者的签名、最终性提供者的签名和超过门槛的契约委员会的签名,这是极其困难的。即使契约委员会恶意,只要最终性提供者诚实,质押者的 BTC 就是安全的。
PoS System's Perspective
从 PoS 系统的角度来看,其安全来源于在最终性提供者恶意行为时能够惩罚他们的能力。
巴比伦采用 EOTS 机制,如果最终性提供者对一个区块双重签名,任何用户都可以从这两个不同的签名中提取最终性提供者的私钥。这使他们能够签署并提交一个惩罚交易,部分惩罚对应于最终性提供者持有的所有投票权的 BTC。
这种惩罚措施阻止了最终性提供者的恶意行为,从而使他们的激励与为与巴比伦连接的 PoS 共识服务提供最终性保持一致,确保了具有大量质押 TVL 的 PoS 系统的安全。
未来,Chakra 将继续与巴比伦合作推出一系列质押活动,为用户提供多重收益,同时解决流动性和互操作性挑战,释放比特币在所有加密生态系统中的巨大价值。