下载
关闭菜单 -

同步链 同步侧链可提升安全性和可用性

Published on: 24 四月, 2020

By Sergio Demian Lerner, IOV Labs Chief Innovation Scientist

[TL;DR]我们发明了一种新型合并挖矿侧链,并将其称为同步链(SyncChain)。它能够快速进行转入挂钩和转出挂钩(针对比特币和 RSK 进行,转入挂钩用时最短为 30 分钟,转出挂钩用时最短为 2 小时),并且可以参数化,无条件地保护挂钩不被双重支付。现有侧链需要数百个区块确认,且其安全性仅基于加密经济假设。因此与其相比,此新型合并挖矿侧链实现了巨大提升。同步链协议基于我们在 2016 年发表的一些想法而构建,与用于解除转出挂钩的方法成正交关系,这种有趣的设计是为了创建联盟同步链。最后,我们探讨了 RSK 从比特币 SPV 侧链向比特币同步链迁移的利弊,并提出了同步链网络升级的设想。

前言

最初设计 RSK 时,其中的一个目标便是尽可能使 RSK 独立于比特币,以防止 RSK 受到比特币崩坏的影响。2015-2016 年期间,比特币面临着持续的压力,受到饱受争议的硬叉威胁,交易费用大幅上升,比特币的使用与需要低廉支付的金融包容也相背而行。基于此,RSK 采用了一种合并挖矿共识,并非类似拥有合约对方叠加协议。合并挖矿保证了完整的独立性(包括独立于比特币区块撤销),而叠加协议则无法实现这一点。出于同样的原因,我们使用了 SPV 证明来证实外国共识。

随着时间的推移,比特币分崩离析的风险在逐渐减小。因此,我们可以重新思考对于双向挂钩的要求,并对设计空间进行重新检查,寻求更优解决方案。

SPV 桥安全性

 

在前面几篇博文中,我们对 RSK 挂钩的原理进行了分析。RSK 挂钩的一个特点是对比特币区块链的撤销不代表对 RSK 区块链进行撤销。因此,为避免出现双重支付,RSK 需要最大程度确保比特币区块链不会恢复过去的转出挂钩交易,例如等待 100 比特币区块确认。假设合并挖矿参与率约为 50%,现在有一个称之为 Malloy 的大型恶意矿池,该矿池拥有 RSK 哈希率的 51%(比特币哈希率的25%)。Mallory 可以尝试使用其所有的哈希率创建一个伪区块链(只有标头)并将其馈送至桥,使桥接受 Mallory 声称的任何虚假交易。该伪造的标头链并非有效的比特币区块链,因此 Mallory 不会破坏比特币区块链,但她将无法在攻击准备期间收集区块奖励。目前,RSK 不会遭受该类攻击,因为如果联盟工作人员的本地最佳链与桥合同中加载的比特币最佳链不匹配,他们则不会发送转入挂钩注册消息。但是,我们可以设想,如果基于 SPV 的转入挂钩被最大程度地去中心化,不再受到联邦的干预,那么攻击可能会成功。我们称此为“伪转入挂钩”攻击。在未受保护的 RSK 变体中,Mallory 实施一次伪转入挂钩的成本约为 1000 万美元。虽然通过查看比特币 coinbase,即可知道伪转入挂钩攻击出自“失踪矿工”之手,但 Mallory 可以声称其系统遭到黑客攻击,并将责任推给未知方。

同时,还存在转入挂钩双重支付攻击。该攻击要求向网桥合同告知备用最佳链,同时隔离联邦工作人员,让其相信该备用最佳链为唯一存在的链。该攻击的电力成本仍为 1000 万美元,同时工作人员遭遇黑客攻击,但其目的不再是随机数额的比特币,而是将最初的投资额翻一番。

与其相对的攻击叫做转出挂钩双重支出。在这类攻击中,Mallory 做出的动作首先是转出挂钩,然后将 RSK 区块链还原到命令进行转出挂钩交易的点。此类攻击的电力成本同样很高,但是如果被盗的比特币数量足够多,也会带来风险。须注意的是,RSK 拥有叫做 Armadillo 的网络监督攻击,实现去中心化预警,避免“免费”合并挖矿攻击,但该攻击仍有可能发生。

SPV 桥的另一个缺点在于,无论是转入挂钩还是转出挂钩,其都需要 100 个比特币区块确认(或同等的 RSK 区块,用于相同的累积难度)。该情况会降低可用性。在安全性和可用性方面,和 SPV 桥相比,我们有哪些优势?

双向挂钩的安全性

为更好地说明双向挂钩,我们定义了 8 种保护措施,以防止矿工进行重复支付攻击或盗取比特币。我们不考虑任何其他组发起的攻击。将这些保护措施应用于任意挂钩系统 S, 该系统接受两个工作量证明区块链上的跨链传输。保护将根据安全假设或攻击成本(攻击者预算的假设)进行定义。保护措施的强度从最强(1)到最弱(8),但一个系统可提供多个保护。系统 S 不能完全由所述保护的组合来表征,因为对于转入挂钩和转出挂钩,系统可以使用不同的保护措施。由于转出挂钩通常采用安全性较弱的子协议,且攻击者选择安全性最薄弱的点发出攻击,因此我们将重点关注本节中所有协议的转出挂钩安全性。同样,每个系统可能需要不同的稳定性和活跃度假设,但是在这个分类中,我们关注的是稳定性。简便起见,我们将忽视网络上的其他补充性攻击,例如隔离节点的可行性。值得注意的是,通常双重支付攻击不会导致攻击者丢失区块奖励:如果攻击者将区块链还原为私人创建新的最佳链,则此新链将向其支付奖励,因此只是其他矿工会损失奖励。此规则的唯一例外是 Armadillo 提供的保护,或者一些(通常是被破坏的)共识算法,这些算法按接收时间划分块[1][2][3]。

由于比特币无法评估其他侧链的累积工作证明,因此我们假设存在某种形式的静态或动态多签名组来签发转出挂钩和接收转入挂钩。但是,我们忽略了任何涉及恶意持有多个签名的人发出的攻击,通过这些攻击,他们可以收到挂钩比特币。我们假设关键持有人是完全诚实的,或他们的硬件安全模块(HSM)可以像 RSK 一样保护他们免于访问私人密匙。

在下表中,我们对比了 RSK 和其他类型的双向挂钩,对其进行了修改,以将比特币和联合挖矿侧链相联系。该表可以更清楚地对各个协议进行对比。

第一种保护是“绝对安全”,即根据 S 协议的规则,不会出现双重支付。接下来为“计算不可行性”(2),它表示在假设攻击者无法执行困难的计算任务时,不可能对 S 进行双重支付。下一级保护为“比特币 M.A.D”(3)。M.A.D 表示相互保证毁灭。比特币 M.A.D. 用以保护协议。如果出现双重支付,攻击者将被迫恢复主链,从而影响主链本地代币价格,因此,保持主链不受损害的长期矿工激励措施也适用于挂钩情况。这一概念也适用于(5)中的侧链。保护措施“长攻击意识”(4)是指网络能够提前检测到一组矿工的恶意行为。RSK 加上 Armadillo监控系统具备长攻击意识的密码经济变体:攻击者要么显示其正在准备攻击,要么需要放弃他私下生成区块的区块奖励。下一级保护是“失去侧链区块奖励(7)”,即对于基于 SPV 证明的所有加密经济系统,攻击者需要利用伪交易挖掘区块,以诱骗系统解锁未锁定在相反链中的链代币。目前的 RSK 挂钩协议(带有 Armadillo 监测系统)也有这种保护措施,XCLAIM 和 TBTC 也可提供这种保护。其他类别的自我解释。

同步链设计 

同步链 提供的安全保证比加密经济学提供的安全保证更为强力。该设计保证转入挂钩和转出挂钩的绝对安全。通过同步链,我们可以消除双重支付风险,无需过多关注合并挖矿网络。在此白皮书中,我们描述了同步链所有不同版本的设计。在这个较短的博客中,我们将仅介绍同步链背后的思想及其最简单的版本。所有版本都基于三个组成部分:延迟双重养育、挂钩交易链接和 coinbase 锚定。同步链(双重养育)背后的根源已在 2016 年我们的博文之一中概述。其想法是,侧链块必须同时指定侧链父区块和主链⽗区块。处理侧链区块之前的继承状态对应于处理完双父区块之后的状态,而单父区块的逆转会导致侧链子区块的逆转。但是该技术不能用于区块率比主链更高的侧链,因为主链区块的逆转可能会导致许多侧链区块的逆转。因此需要一种新的纠缠形式来支持更高的区快速率,同时不受长逆转的影响。

延迟双重养育

双重养育是缠绕主链和侧链的一种技术。该技术基于让每个侧链区块有双父块,一个位于侧链,另一个位于主链。但我们未按照该方式使用该技术,我们采用的是双重养育的变体,即延迟双重养育(DDP)。首先,简便起见,我们将主链父块称为“检查点”,但请勿将同步链检查点与基于权限的其他检查点系统相混淆[4][5]。通过 DDP,检查点通过基于时间戳和主链区块确认计数的若干区块(平均K个区块)设置为滞后状态。例如,若 K 的实际值为3,则检查点平均延迟应设置为30分钟。下图显示了 K=3 的示例。

延迟双重养育

如前所述,即时纠缠的问题在于比特币区块的逆转会自动导致大约 20 个RSK区块的逆转,从 UX 的角度来看,该情况是不可容忍的,但更重要的是,该情况还带来了交易结算安全风险。使用延迟检查点,只有在超过 K 个主链区块恢复时,RSK 区块链才会恢复。简单来讲,我们在这篇博文中假设 RSK 平均区块间隔为 30 秒,比特币平均区块间隔为 10 分钟。然后,如果比特币区块链在 R>K 处恢复为 R 区块,则 RSK 区块链将恢复(R-K)*20 区块。在下图中,我们可以看到,如果只有一个比特币区块出现逆转,则 RSK 中不会出现意外移除。

单个主链区块的移除不会导致同步链出现移除情况

K 的最小值为 1,这也就意味着,如果有多余 1 块的待确认的区块,就需要对区块进行检查。

双节点

同步链要求每个侧链客户端均运行主链节点和特定于侧链节点的实例。我们发明同步链主要原因是为了防止无效比特币区块链分支作为有效 SPV (仅标头)生成基于 SPV 的桥合同,因为可以从诚信网中隐藏SPV证明,从而减少 M.A.D. 张力。为了最大程度地提高张力,我们希望透明性能够在矿工开始为攻击进行挖掘时并在攻击结束之前立即对其进行检测、判断和最终对其进行处罚。因此,我们必须确保,无论桥接受何种区块来验证转入挂钩或转出挂钩,这些区块必须充分被暴露(标头和交易有效载荷),并且这些区块可以是 Bitcoin Core 参考软件定义的比特币区块链的一部分。因此,同步链节点应与侧链节点一起运行主链引用节点。换言之,同步链节点运行 bitconid 实例和 rskj 实例。

用户仍然只能运行侧链节点(rskj),但无法验证转入挂钩和转出挂钩。也就是说,只要存在转入挂钩或转出挂购交易,它就会自动成为一个 SPV“轻量级”节点,具有与 SPV 客户端获得的相同安全模型。

创建延迟双重养育,需要检查点选择算法(CSA)。作为一种共识算法,CSA 用于选择主链检查点并验证检查点选择是否正确。CSA 必须基本上基于区块时间戳来做出选择。但是,比特币中的区块时间戳并不能反映钟表时间,更不能反映全球各地的时间。《同步链白皮书》介绍了两种简单的RTA算法(MedianTime11AdjustedTime),因此我们在这里不再赘述。

检查点与区块处理

在侧链区块标头,由主链区块数量(checkPointBN)和主链区块散列(checkPointHash)对检查点进行定义。可以使用较小的散列摘要标头,以节省空间。

每个侧链节点必须运行一个主链节点(RSK 的 bitcoind),监控 RSK 区块标头检查点的正确性。如果 RSK 检查点散列与区块个数参考的比特币区块散列不匹配,则认定 RSK 区块为“暂时性无效”。如果比特币最佳链得以重组,稍后可对 RSK 区块进行重新考量。

并非每个比特币区块都是检查点:checkPointBN 值并未覆盖所有区块,缺口还是存在的。若区块 checkPointBN 是比特币区块中的转入挂钩交易,或通过跳过该区块而跳过转入挂钩交易,RSK 共识表示相关 RSK 区块必须包含向网桥合同发送转入挂钩信息的交易,从而立即释放已转入挂钩的相关代币。共识还要求转入挂钩交易优先于其他交易,也就是说,在区块中转入挂钩交易优于其他交易。

挂钩交易链接 

所有比特币转入挂钩和转出挂钩交易均具有关联性。原因如下。首先,是为了避免受到攻击,即攻击者对比特币和 RSK 区块链进行重组,通过挂钩多重签名进行双重支付。在该攻击中,攻击者自身进行了转入挂钩和转出挂钩。链接大大减少了攻击面。第二个原因与转出挂钩的保护原理相关,也让我们证明了转出挂钩双重支付的不可行性。下图描述了联邦侧链(如 RSK)的转入挂钩和转出挂钩。挂钩资金有联邦多重签名保护,持有该多重签名个人密匙的相关方被称为职能机构。所展示的链中有两个额外的内部交易:链入和链出。我们会在稍后内容中对其进行解释。红线代表使用“虚拟”输入/输出的参考链。职能机构签发的所有交易均与该链有关。因为每个交易消耗一个虚拟输入,并创造一个虚拟输出,并且只有一个未用交易输出。我们将其称为特殊 UTXO,链币(loken)(链接代币值简称)。我们使用链币链指代消耗和创造链币的交易。链币的价值与比特币灰尘上限相比,高出些许。

链币链

通过添加或移除成员以更新职能机构时要格外小心。该操作会触发 RSK 出现冗长且强制延迟的过程,资金会自动从旧的联邦多重签名转移到新的联邦多重签名。我们尚未提出适用于同步链的迁移操作,但我们相信可以十分安全地完成迁移。

转入挂钩

桥智能合约控制所有转入挂钩和转出挂钩流程,自动命令职能机构将在转入挂钩交易中收到的代币转发至不同的 UTXO,其地址可以与转入挂钩中的地址相同,也可以不同,但都由同一联邦控制。最初的代币转发是在我们称作链入的比特币交易中进行的。链入交易会消耗链币,并创造一个新的链币。以下示例图展示了主链区块 1 中用户发起的交易(图中的“转入挂钩 Tx”)在侧链区块 A 对区块 1 进行检查时如何触发桥的动作。第一个动作是 3 个侧链区块的初始等待期。接下来,在区块 B 中,桥会命令职能机构签发和广播链入交易,该交易会立即消耗转入挂钩资金,然后将其发至最终的多重签名挂钩地址。

转入挂钩流程

侧链代币在区块 A 立即释放,但只有在主链纳入链入交易时,才会出现转出挂钩。

转出挂钩

我们在上一篇文章中表明,如果没有矿工在转入挂钩/转出挂钩过程中的协作,工作量证明侧链则无法提供转入挂钩和转出挂钩的完全一致性。攻击者可以选择还原主链,之后还原侧链,然后还原主链,最后成功保留主链代币和侧链代币。现在,我们将展示如何在没有矿工帮助的情况下实现加密经济保护,以及如何在矿工的帮助下实现全面的无条件保护。

我们注意到,可能基于 PBFT 类型共识的完全联盟侧链系统(例如 Liquid)不能提供完全的转出挂钩的一致性,因为它具有结算的最终确定性。一旦 Liquid 中的交易已结算,即使比特币恢复,侧链也不会恢复为与净比特币最佳链匹配。

转出挂钩协议

基于添加至标准中本聪共识的不同假设,我们确定了三种实现 M.A.D. 和绝对保障的协议。下文会对各个协议进行简单介绍。

  • 对更多人口链获胜(MPCW)同步链的转出挂钩
  • 对 T 同步(TS) 同步链的转出挂钩
  • 对 GHOST-CSC(非 T 同步)同步链的转出挂钩

在上一篇文章中,我们讨论了所有三种变体版本。在本文中,我们将仅显示TS同步链。为了将代币从 RSK 账户移回比特币,需要创建名为转出挂钩请求 (Peg-out Request) 的 RSK 交易,该交易将 RBTC 转移至桥智能合约。在下图中,本交易已被纳入标记为 A 的区块。在进行几个 RSK 区块确认 (例如 3 个)后,桥会创建含有占位符的链出交易模版,让联邦职能机构插入其签名。该模版可以使用部分签署的比特币交易(PSBT)标准然后,桥会请求联邦职能机构进行签署,该事件被称为链出请求。本图的 RSK 区块 B 展示了该事件情况。链出交易必须含有特殊数据输出(含有 OP_RETURN)、区块 A 区块散列以及 A 的区块数量。 我们将该种数据有效负责称为侧链检查点槽。该槽可能含有一个或多个真实侧链检查点。我们注意到侧链检查点和主链检查点共同产生相互检查点参考

转出挂钩流程

一旦链出交易收集到大部分职能机构签名后,该交易会被广播,并预计不久便被纳入比特币区块链。本图的比特币区块 4 描述的正是本事件。链出交易必须是链币链的一部分(它必须消耗链币并创造新链币)。 在链出交易被纳入比特币区块 4 后,RSK 区块的检查点需要参考区块 4 (或被检查点跳过,效果相同)。区块 4 的检查点通常会延迟约 30 分钟。在本图中,RSK 区块 C 参考了区块 4。随后,桥将等待某些区块(本图中为166个区块)。等待期结束后,桥会创建转出挂钩交易模版 (Peg-out Transaction Template),并要求联盟职能机构签名。转出挂钩交易为最终交易,该交易实际向比特币用户返还了要求的额度。由于所有其他挂钩和链接交易都由联邦签署,因此都与链币链相关。链出挂钩交易将被纳入比特币区块,具体可见图中的区块 11。大约 30 分钟后,将由 RSK 检查点对其进行参考,其他链入或链出交易也可以使用链币。整个转出挂钩流程平均只需 2 小时 10 分钟,需要两轮联盟签名并生成两次比特币交易。如果在消耗链币的交易正在等待被纳入主链时确认了转入挂钩交易,则转入挂钩进入排队队列。事实上,许多链入和转出挂钩交易可以在同一批次中开展,只需创建单个链币以及销毁输入/输出。

转出挂钩安全性

以下内容分析了几种理论攻击,并说明了同步链抵御相关攻击的情况。对于任何加密货币接收系统而言,最严重的攻击莫过于双重支付。在进行双重支付攻击时,攻击者可以尝试恢复 RSK、恢复比特币或将二者都恢复。目前, RSK 由 35% 至 50% 的比特币矿工合并采矿。在本文中,我们假设 RSK 哈希率低于比特币,因此如果攻击者由于合并采矿恢复比特币,他也有机会恢复两种链。

通过仅恢复 RSK 进行双重支付转出挂钩 

在假设 RSK 哈希率低于比特币的情况下,恢复 RSK 似乎是进行双重支付攻击最简单的方法。由于 RSK 区块依赖于比特币区块,我们也明白了转入挂钩交易同步的原理。但是,从另外角度来看,同步是无法保证的。因此,针对转出挂钩,我们强制对比特币进行链出交易。链出交易的时间戳确定了一定范围,在未提出相应的转出挂钩请求时,RSK 不得超过该范围。

中本聪 (Nakamoto) 共识针对区块链处理的各个方面制订了清晰的规则,但对于已结算的交易,尚未推出相关规则。这个难题需要各个用户解决,该共识做出的唯一指导就是区块确认数越多,逆转的可能性就越小。为确保不对转出挂钩进行双重支付攻击,我们必须在侧链的中本聪共识中添加一个条件,在达到该条件后方可接受交易。首先,我们先了解一个定义:如果网络节点的本地最佳链比当前本地时间晚 T 秒,我们就称该网络节点为 T 同步节点。想要构建同步链,侧链必须满足一下新条件:对于 T 同步节点,只能接受已结算的交易。如果交易 W 由巨大数量的累积难度所确认,则我们也可接受该交易,但我们目前将依据最简单的定义。

通过 T 同步属性,我们了解到,任何恢复侧链的攻击必须添加至少一个侧链区块,且该区块的时间戳应晚于区块 C 的时间戳,即区块 4 被检查的时间。 因此,只要区块 4 和区块 C 之间的时间长于 T,则进攻者链(在侧链上)就不可能确认交易。这是假定节点本地时间未被还原。

通过恢复比特币和风险进行双重支付转出挂钩(但稍后重新进行转出挂钩交易)

进行双重支付攻击的一种可能方式是在链出交易之前尝试恢复比特币区块链,同时在发出转出挂钩请求之前恢复 RSK 区块链,从而创造出新的比特币分支,该分支就有链出交易也有转出挂钩交易,但是在较靠后的区块中出现。例如,攻击者恢复 10 个比特币区块,然后挖矿另外 10 个没有转出挂钩交易的区块,最终其第 11 个 区块将含有链出和转出挂钩交易。假设不诚实的理性矿工进行 10 个区块的逆转大约需要花费 150 万美元 (1),因此这将是转出挂钩交易可以转移的最大金额。但是,如果我们不想要无条件的安全性,那么我们必须在锚定方面做得更好。通过锚定,我们可以防止将链出交易转移到将来的区块中。

转出挂钩锚定

将交易锚定到特定区块的最简单方法是将比特币添加至新的操作码 OP_CHECK_INPUT_BLOCK_HASH,该操作码将区块散列当做堆栈的论点进行接收,且如果区块散列与消耗输入而创建的区块散列不匹配,该操作码则会将该区块无效化。我们认为这种新的操作码不会被比特币社区接受,因为它所产生的比特币比其他比特币的可替代性要差。另一个可以实现该结果的操作码是 OP_CHECK_INPUT_BLOCK_TIME。如果和消耗输入相对应的区块所带时间戳晚于操作码论点,本操作码则将使该交易无效。相反,此操作码更改的可替代性要小得多。但是,在没有新操作码的情况下,还有其他方法可以实现相同结果,那就是在转出挂钩交易中消耗来自 coinbase 交易的输出,该 coinbase 交易存在于区块 B,即链出和转出挂钩交易区块之间。如果 B 被恢复,则该转出挂钩交易则会无效,而移除链出交易的唯一方法就是恢复 B。该方法的不足是由于 coinbase 交易输出的成熟期为 100 区块,因此该等转出挂钩交易的延迟为 100 区块。虽然,在 100 区块期间之前,无法纳入转出挂钩交易,但可以较早地对其进行签署和发布,因此,用户可以十分确保转出挂钩交易将会发生。为了将转出挂钩与 coinbase 相关联, RSK 可以请求 RSK合并矿工纳入额外输入支付 1 satoshi (2) 至特定联盟地址,同时可以请求在转出挂钩交易中消耗该 satoshi。

(1) 根据 crypto51.app 网站

(2) 没有必要超过“粉尘” (dust) 上限,因为 coinbase 交易在被纳入区块前不会通过网络转发

带有 coinbase 锚定的转出挂钩流程

将 RSK 迁移至同步链

虽然同步链的益处多于 SPV 侧链,但现在说 RSK 何时以及如何过渡到同步链还为时过早。迁移就像一把双刃剑,有其益处的同时也有其风险。编码、测试、模拟和安全审计必须验证每个设计决策。然而,这样一个干净的设计还能带来如此多的受益,从可用性和安全性而言,令人十分欣慰。一旦所有的研发阶段都结束,我们会探讨向同步链的迁移,希望在 RSK 社区的反馈下,我们可以在 2020 年或 2021 年实现迁移。

总结

在这篇文章中,我们介绍了一种新型侧链,同步链。它使转入挂钩的时间从 16 小时减少到 30 分钟,减少了32倍。如果我们保留速率限制器,每小时传输的 BTC 不超过38 个,那么转出挂钩的用时也可以从 16 小时减少到 1.6 小时左右。我们还提出了一个使用 coinbase 锚定的变体,以提供绝对转出挂钩安全性,转出挂钩时间为 16 小时,与 RSK 目前只需要加密经济安全性的要求相比,该时间较短。我们还提出了一种新的比特币操作码 OP_CHECK_INPUT_BLOCK_HASH,它可以在数小时内绝对安全地对比特币进行转出挂钩,并且不受任何速率限制。

即使目前的 RSK-SPV 挂钩也可以实现较少的转出挂钩和转入挂钩区块确认,但如果合并采矿参与度增加,同步链为相同参与度提供的确认次数也较低。

同步链还可以带来其他益处:

  1. 它减少了 RSK 在 rskj 中一致运行的代码量:一些代码功能现在由 bitcoind 直接提供。
  2. 根据选择的协议,它提供绝对安全性,或者将对 RSK 的攻击强制变成对比特币的攻击:博弈论中的 M.A.D. 属性。
  3. 它允许跨地址转入挂钩,比如直接从比特币投资一个众筹

同步链也有一些小小的不足。例如,同步链不能提供短期结算终局性。综合考量,同步链无疑是比特币侧链的一个十分出色的协议。

参考文献

[1] Ren Zhang and Bart Preneel.出版或消亡:比特币自私挖矿的向后兼容防御。密码学家在 RSA 会议上的动向,第 277-292 页。Springer, 2017

[2]修改中本聪共识,强化对 51% 攻击的防护。对延迟提交区块的处罚制度。

https://www.horizen.global/assets/files/A-Penalty-System-for-Delayed-Block-Submission-by-Horizen.pdf

[3] 延迟链重组

 https://bitslog.com/2013/06/26/the-bitcoin-eternal-choice-for-the-dark-side-attack-ecdsa/

[4] 通过分类帐检查点的交易最终性 (https://ieeexplore.ieee.org/document/8975825https://github.com/MuhammadNurYanhaona/checkpoint-paper/blob/master/checkpoint-paper-reviewed.pdf)

[5] 通过检查点确保工作台账证明
(https://eprint.iacr.org/2020/173.pdf)