- 第一种,具有足够安全性的 Layer 1 (通常是以太坊)作为 Rollups 的下三层或部分功能层,这种方案具备最高安全性、正统性,也可吸纳主链生态中的资源。但对于特定的 Rollup(应用链、长尾链等)来说吞吐量及成本不是特别友好;
- 第二种,即再造一个与比特币、以太坊安全性接近且成本性能更优的存在,比如我们熟知的 Celestia 就是通过纯 DA 功能架构、最大程度降低节点硬件要求、低 gas 成本等,删繁就简的方式,以求在最短的时间内创造一个足够媲美以太坊安全性与去中心化且性能强劲的 DA 层。该方案的劣势在于安全性与去中心化程度还需要一定时间补全,且缺乏正统性并与以太坊构成明面上的竞争关系,被以太坊社区排斥。
- 锁定资金
- 用户将资金发送到一个由多重签名控制的地址。通过 OP_CTV(OP_CHECKTEMPLATEVERIFY,允许创建预定义的交易模板,确保交易只能按照特定的结构和条件执行),合约可以指定只有在满足特定条件时,这些资金才能被花费。资金被锁定后,生成一个新的 UTXO,表示这些资金已被质押;
- 条件验证
- 调用 OP_CSV(OP_CHECKSEQUENCEVERIFY,允许设置一个相对时间锁定,基于交易的序列号,表示在某一相对时间或区块数之后才能花费 UTXO)可实现时间锁定,可确保资金在一定时间内不能被取出。结合上文所诉的 OP_CTV,就可实现质押、解质押(在满足质押时间的情况下,质押者就可以花费被锁定的 UTXO)、罚没(Slashing,质押者出现作恶的情况下,将强制花费 UTXO 到锁定地址,并限制为不可花费的状态,类似于黑洞地址);

- 状态更新
- 每当用户进行质押或取回质押资金时,都会涉及到 UTXO 的创建和花费。新的交易输出会生成新的 UTXO,而旧的 UTXO 会被标记为已花费。这样每个交易和资金流动都被准确记录在区块链上,确保透明性和安全性;
- 收益分发
- 根据质押金额和质押时间,合约会计算应得的奖励,并通过生成新的 UTXO 进行分配。这些奖励可以通过脚本条件在满足特定条件后进行解锁和花费。
- 时间格式:时间戳记录的是自 1970 年 1 月 1 日 00: 00: 00 UTC 以来的秒数,这种格式称为 Unix 时间戳或 POSIX 时间;
- 作用:时间戳的主要作用是标识区块的生成时间,帮助节点判断区块的顺序,以及协助网络难度调整机制;
- 时间戳和难度调整:比特币网络每隔 2016 个区块(大约每两周)会进行一次难度调整。时间戳在这个过程中起到关键作用,因为网络会根据最近 2016 个区块的总生成时间来调整挖矿难度,使新区块的生成速度接近 10 分钟一个;
- 有效性检查:节点在接收到新区块时,会对时间戳进行验证。一个新区块的时间戳必须大于之前若干区块的中位时间,并且不能超出网络时间 120 分钟(即未来 2 小时)。


- 检查点:只有 Babylon Epoch 的最后一个区块被比特币检查。检查点由区块的哈希以及单个聚合 BLS 签名组成,该签名对应于已签署区块以进行最终确定的 2/3 验证者集的签名。Babylon 检查点也包含 Epoch 编号。PoS 区块可通过 Babylon 检查点分配比特币区块的时间戳。例如,前两个 PoS 区块由 Babylon 区块设置检查点,而 Babylon 区块又由时间戳为 t_ 3 的比特币区块设置检查点。因此,这些 PoS 区块被分配了比特币时间戳 t_ 3 。

- 规范 PoS 链:当 PoS 链上出现分叉时,时间戳较早的链被视作规范 PoS 链。如果两个分叉具有相同的时间戳,则平局被打破,有利于具有 Babylon 上较早检查点的 PoS 区块。

- 提款规则:要提款,验证者向 PoS 链发送提款请求。包含提款请求的 PoS 区块由 Babylon 检查,然后再由比特币检查,并分配时间戳 t_ 1 。一旦时间戳为 t_ 1 的比特币区块深度变为 k,就在 PoS 链上授予提款。此时,如果已提取质押权益的验证者进行长程攻击,则攻击链上的区块只能被分配一个晚于 t_ 1 的比特币时间戳。这是因为,一旦时间戳为 t_ 1 的比特币区块变为 k 深度,它就无法回滚。然后,观察比特币上这些检查点的顺序,PoS 客户端可以区分出规范链和攻击链,随后可以将攻击链忽略掉。

- 罚没规则:如果验证者在检测到攻击时没有撤回其质押,则可以对具有双重签名冲突 PoS 区块的验证者进行罚没。恶意的 PoS 验证者知道,如果他们等到提款请求被批准后再进行长程安全攻击,他们将无法迷惑客户端,客户端可以查看比特币来识别规范链。因此,他们可能会在为规范 PoS 链上的区块分配比特币时间戳时分叉 PoS 链。这些 PoS 验证者与恶意 Babylon 验证者以及比特币矿工合作,将 Babylon 和比特币分叉,并将时间戳 t_ 2 的比特币区块替换为另一个时间戳 t_ 3 的区块。在后来的 PoS 客户端看来,这将规范 PoS 链从顶部链更改为底部链。虽然这是一次成功的安全攻击,但它会导致恶意 PoS 验证者的权益被罚没,因为他们有双重签名的冲突区块,但尚未提取其质押权益。

- 不可用 PoS 检查点的停止规则:PoS 验证者在观察到 Babylon 上不可用的 PoS 检查点时必须暂停他们的 PoS 链。在这里,一个不可用的 PoS 检查点是由 2/3 的 PoS 验证者签名的哈希,其假定对应于无法观察到的 PoS 区块。如果 PoS 验证者在观察到不可用的检查点时没有停止 PoS 链,那么攻击者可以揭示以前不可用的攻击链,并在后来的客户端视图中更改规范链。这是因为稍后显示的阴影链的检查点出现在 Babylon 的早期。上面的暂停规则揭示了我们要求作为检查点发送的 PoS 区块哈希由 PoS 验证者集签名的原因。如果这些检查点没有签名,那么任何攻击者都可以发送任意哈希,并声称它是 Babylon 上不可用的 PoS 区块检查点的哈希。然后,PoS 验证者将不得不暂停检查点。请注意,创建不可用的 PoS 链是困难的:它需要破坏至少 2/3 的 PoS 验证者,以便它们用签名完成 PoS 区块,但不向诚实的验证者提供数据。然而,在上面假设的攻击中,恶意对手在没有攻击任何一个验证者的情况下,就停止了 PoS 链。为了防止此类攻击,我们要求 PoS 检查点由 2/3 的 PoS 验证者验证。因此,只有当 2/3 的 PoS 验证者确实被攻击者控制时,Babylon 才会有不可用的 PoS 检查点。由于破坏 PoS 验证者的成本,这种攻击极不可能发生,并且不会影响其他 PoS 链或 Babylon 本身。
- 不可用 Babylon 检查点的暂停规则:PoS 和 Babylon 验证者必须在观察到比特币上不可用的 Babylon 检查点时暂停区块链。在这里,不可用的 Babylon 检查点是具有 2/3 Babylon 验证者的聚合 BLS 签名的哈希,据推测它对应于无法观察到的一个 Babylon 区块。如果 Babylon 验证者没有停止 Babylon 区块链,那么攻击者可以揭示一条以前不可用的 Babylon 链,从而在后期客户端的视图中更改规范的 Babylon 链。类似地,如果 PoS 验证者没有停止 PoS 链,那么攻击者可以揭示以前不可用的 PoS 攻击链以及以前不可用的 Babylon 链,从而在后期客户端的视图中规范 PoS 链。这是因为后来揭示的深色 Babylon 链在比特币上具有较早的时间戳,并且包含后来揭示的 PoS 攻击链的检查点。就像不可用 PoS 检查点的暂停规则一样,上述规则揭示了为什么我们要求作为检查点发送的 Babylon 区块哈希必须附有一个聚合 BLS 签名,以证明 2/3 的 Babylon 验证者的签名。如果 Babylon 检查点没有签名,那么任意对手都可以发送任意哈希,并声称它是比特币上不可用 Babylon 区块检查点的哈希。然后,PoS 验证者和 Babylon 验证者将不得不等待一个在其原像中没有任何不可用 Babylon 或 PoS 链的检查点!创建不可用的 Babylon 链需要破坏至少 2/3 的 Babylon 验证者。然而,在上述假设的攻击中,攻击者停止了系统中的所有链,甚至没有破坏单个 Babylon 或 PoS 验证者。为防止此类攻击,我们要求 Babylon 检查点通过聚合签名进行证明;因此只有当确实有 2/3 的验证者被损坏时,才会有不可用的 Babylon 检查点。由于破坏 Babylon 验证者的成本,这种数据可用性攻击极不可能发生。但在极端情况下,它就会通过迫使它们停止来影响所有 PoS 链。

