Eots

关于babylon的EOTS的简单说明

Posted by Lengzhao Blog on April 23, 2024

babylon的EOTS

Babylon 项目设计了可扩展比特币的安全协议,以确保去中心化世界的安全。为此,巴比伦利用了比特币的三个主要方面:比特币作为资产,比特币作为 PoW 保护的时间戳服务器,以及比特币作为世界上最能抵抗审查的区块空间。通过发明开创性协议,Babylon 设想了一个更安全、以比特币为中心的去中心化世界。

为了实现这一愿景,我们构建了Babylon,这是一套比特币安全共享协议。目前,它包括两个协议:

  1. 比特币时间戳:该协议将任何数据(例如 PoS 区块链)的简洁且可验证的时间戳发送到比特币;
  2. 比特币质押:该协议允许比特币资产通过去信任(和自我托管)质押为任何去中心化系统提供经济安全。

EOTS:Extractable One-Time Signature

EOTS 管理器生成 EOTS 公共/私有随机性对。最终性提供者将这些对的公共部分提交给巴比伦,用于他们打算为其提供最终性签名的每个未来区块高度。 如果最终确定性提供者在同一高度上投票给两个不同的区块,他们将不得不重复使用相同的私有随机性,这将导致他们的底层私钥被暴露,从而导致他们及其所有委托人被惩罚。

目的

让投票者不能够恶意投票,如果恶意投票,会直接损失质押资产。 现有的其他DPOS,都是基于事后惩罚的方式。 EOTS的机制让惩罚变成立即惩罚,且允许信任度更高的公链参与治理。

原理

  1. 标准的密码学(ecdsa/eddsa/schnorr等),随机数是不允许泄露和冲突的。
  2. 如果随机数冲突(不同消息使用相同随机数),将导致私钥泄露

     Schnorr签名者已知的是:G-椭圆曲线, H()-哈希函数,m-待签名消息, x-私钥。
    
     - 选择一个随机数 k, 令 R = kG
     - 令 s = k + H(m \|\| R \|\| P)\*x
     - 默认k=H(m\|\|x),能够保证同一个消息的签名结果永远一致,避免钓鱼签名。
    
     公钥 P 对消息 m 的签名就是:(R, s),这一对值即为 Schnorr 签名。
    
  3. 在不能泄露r的情况下,只能通过R冲突从而实现EOTS的机制
  4. R必须和区块高度强相关
    1. 实现方式1:预注册R,这种方式需要额外的存储和交互,实际使用会非常麻烦
    2. 实现方式2:R是可以验证的(零知识证明),又不需要存储,可以参考bip32的hd wallet机制
    3. 实际的使用方式就是用方式2,且不是完全不需要存储,client需要记录已经对哪些高度签名过,避免双签导致私钥泄露

这种机制应该是跨时代的,可以解决大部分POS链公信力不足的问题,这也是babylon要解决的问题。