Horizen ZEN
$5.31 -4.94%
初识Horizen侧链(2)
牛币圈


献给对区块链技术有一定了解的读者的一份白皮书摘要。


许多人没有业余时间或动力去研究白皮书,但仍希望了解区块链领域的最新发展并对该技术有一个大致的了解。对于那类人士,我想概述一下为什么许多团队正在研究侧链以及Horizen提出的侧链工作是如何实现的。


TL; DR:由Alberto Garoffolo领导的Horizen工程团队在最近的白皮书中提出了一种新的侧链结构,该白皮书基于股权证明原则。主要的创新是一种新的后向传输协议,允许从可能很多的侧链之一返回到主链,而主链不必跟踪侧链,也不需要引入集中的验证器联合。本文将提一个可实施的侧链共识协议以供参考,当然也可以实现更宽广的侧链共识协议。


以前发生了什么


在本文的第一部分中,我谈到了为什么侧链可以成为区块链生态系统中可扩展性和治理受限性的有效解决方法。

第一部分最后介绍了侧链实现的两个主要部分:


侧链共识协议 - SCP


跨链传输或双向挂钩协议 - CCT


前提条件


对于本文的第二部分,我将浅要解释对一般区块链技术概念的基本理解,例如:

块结构(Header,Block Hash,Merkle trees ......)

POW / POS的概念

侧链的概念一般(第1部分会有所帮助)


尽管如此,我会尽量让非技术人员可以阅读。



侧链共识协议


拟议的SCP协议是基于IOHK为Cardano项目开发的Ouroboros协议,只在上面稍作了轻微修改。这是一个基于POS的共识协议,它使用了委托的概念,通常这样工作:


时间被划分为k个时隙。它尚未指定,但我们假设k为参数为8(并匹配下面的图形)。


每个时隙代表在特定时间段内创建侧链块的机会。研究表明,20秒是合理的时间,可以在全球范围内实现网络同步。在一个时期内,最多可以伪造k个块。


对于每个时隙,都有一个领导者,他有权在此时间段内生成一个块。


在一个时隙开始之前,有一个时隙领导者“选择程序”,旨在选择为下一个时隙选出一个领导者(在我们的例子中,每个竞选程序/时期将选择8个时隙领导者)。


如果时隙领导者错过了他的时间段来制造一个区块,那么下一个领导者将处理先前未完成的交易。



一个时隙的一般方案。请注意,即使每个时隙有一个指定的领导人,领导人也可以跳过1个生成块,在这种情况下,时隙保持为空。


对Ouroboros协议的修改


软件的安全性通常在某些假设下评估。共识协议也不例外。


在POW共识协议中,假设诚实区块占多数的情况下,Ouroboros POS协议安全性所基于的核心假设是一个真正随机的“选择程序”。任何一方都无法预测,在给定时间段内谁将成为指定的领导者。


为了实现这一目标,需要一个随机源,创造真正的随机性比人们想象的要难。最初的Ouroboros POS协议引入了基于可验证秘密共享的抛硬币协议,以保证公正的随机性。(修改后的)解决方案利用POW主链进行此操作。这是一个简单而有效的解决方案。


随机性是从在给定时间段内主链上的最小块哈希值得出的。为此,在随机生成期开始之前,将修复符合条件的合格验证人。如果要破坏这种机制,需要大量的哈希算力。假设在诚实的算力占多数的情况下,这应该是不可行的并且在经济上无利可图。对此类攻击的正式分析将单独进行。


另一个修改是在实施Ouroboros协议时,对侧链区块和主链区块的修改。在介绍“完全参照”概念时,我将在跨链传输协议的背景下详细讨论这个问题。


活跃性与持久性


Garay,Kiayias和Leonardos说,证明区块链共识协议安全性的标准程序需要证明协议满足分布式分类账的两个基本属性的能力:活跃性和持久性。


“持久性表明,一旦交易超过k块”深入“到一个诚实玩家的区块链中,那么它将以极大的概率被纳入其他诚实玩家的区块中,并且它将被永久计入账本。- Garay,Kiayias和Leonardos,2014年


持久性与不变性的性质密切相关,实际上可能是相同的,但我不太愿意提出这种说法。


“[...] Liveness表示,所有来自诚实账户持有人的交易最终都会在诚实玩家的区块链中超过k个区块,因此对手无法对诚实账户持有人进行选择性的拒绝服务攻击。” - Garay,Kiayias和Leonardos,2014年


这与审查阻力的性质密切相关,但与以前一样,我不会声称它们是相同的。


(注意,这与描述每个时隙的块数k是不同的)


与软件的整体安全性一样,活跃性和持久性等属性也在一系列假设中得到证明,例如诚实玩家占多数。可以在最初的Ouroboros论文中找到这些假设及其定义的详尽列表。


启用不同的SCP


分别开发SCP和CCT的动机是启用各种可能的SCP。尽管以下对跨链转账协议的描述会涉及上述改编的Ouroboros协议中的一些概念,但它可以与许多其他共识机制相结合。Horizen目前正在研究Block-DAG(有向无环图)结构,该结构很可能被部署为侧链。另一个POW侧链或Block-DAG侧链与CCT协议之间的互操作性将受到额外的研究。



跨链转账协议


“CCT协议是侧链结构中最重要的部分,因为它定义了主链和侧链之间通信的整体结构。”


摘自侧链白皮书 - Garoffolo,Viglione


在第1部分中,我定义了CCT的两个子协议:


第一个子协议是处理正向交易,即从主链到侧链的交易。


第二个子协议处理反向交易,即从侧链到主链的交易。


主链向侧链的交易与完全参照


它的目标是实现跨链转移,因此需要在链之间建立一种沟通方式。首先,侧链需要知道主链上发送资产到侧链(前向)地址的所有交易。其次,需要有一种主链来验证传入的后向交易的机制。


前一个功能,即正向交易,通过一个称为完全参照的概念来实现。它同时解决了两个问题:以直接的方式实现从主链到侧链的转账,并做结算。



丢失的侧链区块(SC)通过参照主链区块(MC)来弥补的例子。


“完全参照意味着侧链区块拥有同主链区块一样的完整链。即使一些区块制造者错过了新生成下一个区块的机会,在它下面的一些块伪制者将弥补上面丢失的主链区块数据。”


摘自Horizen 侧链白皮书


那么完全参照如何实现上述目标?


参照可以是两件事之一:


如果主链块不包含所考虑的侧链的交易,则仅使用区块哈希作为参照。


如果在最后一个块中存在一个或多个前向交易,则将整个块头,前向交易和交易中的Merkle路径作为参照。


通过同步前向交易的块头和Merkle路径,侧链节点可以轻松地验证传输。您可以将两个分类帐(侧链和主链)视为两本独立的账本。由于侧链簿记员不断监控主链账本,因此他们可以轻松地将交叉链交易添加到他们的账本中。通过将交易与其Merkle路径和相应的块头部同步在一起,如果交易有效,侧链上的每个其他实体也将能够自己验证,而不必与主链进行核实。



从主链(MC)到侧链(SC)的正向交易(TX)的同步以及侧链中的区块结构。


启用正向传输协议意味着会更改当前的主链逻辑。需要引入新类型的交易,要燃烧掉硬币并提供一组元数据,并允许用户在侧链上声明新创建的硬币的相同金额(减去TX费用)。向后交易也是如此:侧链上的硬币被烧毁,等量的金额减去主链上创建的TX费用。具有锁定和解锁程序的结构也是可行的。


解决的另一个问题涉及使用“中本聪共识”的POW链的终结性问题。有效的正向交易可能首先被包含在主链区块中,但是包含要分叉的交易区块在不久之后会变为孤块。如果交易已经添加到侧链分类帐中,这可以创建双花的机会(一次在主链上,一次在侧链上)。但这种绑定使得这种情况不会发生。为了防止主链中有一个分叉,那么引用分叉的主链区块所对应的侧链区块也将被回退至原始状态。


反向交易和验证人


现在让我们进入有趣的部分:如果主链不跟踪侧链的话,主链应该如何验证来自侧链传入的反向交易。类似于之前的记账员,必须解决以下问题:主链记账员需要将来自侧链的交易添加到他们的书中,但是永远不能查看周围的其他账本。


在这里,我想回到前面提到的侧链和驱动链的区别。对于挂钩侧链结构,有两种操作模式,涉及反向交易的执行:同步和异步。


“同步模式意味着主链和侧链都相互了解并且可以直接验证交易,而异步模式依赖于验证器来处理交易。”----摘自Horizen 侧链白皮书


正如我之前提到的,Horizen团队决定彼此独立地开发SCP和CCP。由于实现各种不同SCP的既定目标,主链跟踪每个侧链是不可行的,因为它必须知道每个单独的共识协议。严格来说, 这意味着这个执行的过程只有资格作为驱动链而不是侧链,因为其操作模式是异步的:主链不跟踪侧链。


把侧链的交易数据放到主链


从数据的角度来看,为了完成所有这些工作,需要在侧链上启动一个传递机制,用于通知主链从侧链转入的反向交易。这是通过引入一种称为交叉链证书(CCCert)的新型数据容器来完成的。



跨链证书的基础结构


CCCert包含基本信息:例如侧链标识符(SCid)和CCCert ID作为标题。所有跨链交易都在反向交易清单中收集。最后三个数据字段涉及验证者,它们履行上面引用中提到的验证器的作用。


主链记账员不能看其他(侧链)的账本,但主链必须知道什么时候发生与主链的账本相关的交易。这时就需要有人来告诉主链,被告知的方式需要标准化。验证者可以告诉主链记账员收到的相关交易,以及用标准化的方式告知主链是通过跨链证书实现的。


验证者通过在主链上注册特殊类型的交易,包括他们注册的侧链ID和被锁定的存款。这个锁定的股份是为了防止在一分钟内就有欺诈交易,做为抵押作用。主链上的每个利益相关者都有资格成为认证者。有多个验证者可以用来验证侧链上的反向交易,在反向交易列表中收集它们,使用聚合签名对生成的CCCert进行签名并将其发送到主链。


促进反向交易也是一种工作。需要有利益驱动去做这项工作。此外,必须设计激励措施,以鼓励诚实行为,并且恶意行为不得盈利。主要目标是以某种方式设计协议,这将让跨链验证的过程更加去中心化。


通过收集他们正在处理的所有交易的交易费来激励认证者。如果他们提交欺诈性证书,他们将无法解锁他们所抵押的股份。在主链上锁定组合存款X的一组验证者仅允许签署总计0.5X的CCCert。这称为最大证书金额(MAX_CERT_AMOUNT)。


如果每个证书的金额没有上限,就有可能锁定存款,并签署一个价值超过存款本身的欺诈性CCCert,将其发送到主链上的自已控制地址,作恶者也不会失去抵押的赌注。


举报欺诈行为


执行这项措施是基于诚实者多数的假设。您可能已经注意到,CCCert中包含一个名为欺诈报告列表的数据字段。如果发生欺诈,将按以下方式使用此字段:


1.欺诈性证书CCCert(i)由私人创建,并由(i)组中的大多数证明者签名。


2.然后将其发送到主链并包含在块(i)中,因为主链无法验证证书并检测欺诈本身。


3.欺诈性证书现在已同步回侧链。


4.下一组验证者(i + 1)验证侧链上的先前CCCert(i),检测欺诈并在其证书CCCert(i + 1)中包括欺诈报告。

5.主链接收包含欺诈报告的CCCert(i + 1),恶意认证者组(i)将无法解锁其存款。


6.如果组(i + 1)里不包括欺诈报告,则他们之后的组(i + 2)将来自(i和i + 1)之前的两个欺诈组将丢失其抵押的存款。


如果检测到的欺诈而不报告主链,那么这一个群体以及最初的恶意群体将面临失去抵押存款的风险。同样重要的是要注意,协议设计不可能在验证者组中背靠背地拥有一个验证者。


反向交易的实际内部工作有点复杂,但如果您想更详细地了解它们,我建议您查看原始来源。(见官网白皮书)

最后,为了保护主链免受通货膨胀的影响,如果出现其他问题,那么最后一道防线也是如此。安全措施是主链上的一种机制,它跟踪已转移到每个单独侧链的资产总量。从侧链中取出的硬币数量不可能超过首先从那里移动的金额,因此可以防止通货膨胀。


结论


我希望能够帮助你理解为什么侧链可以成为克服区块链生态系统中可扩展性和治理受限制性的解决办法。本文的主要贡献是提供一种新的反向传输协议,该协议不依赖于集中的验证器组。如果他愿意,每个利益相关者都有资格成为认证者,将采用去中心化的跨链验证过程。


从安全角度来看,最重要的是去设计一个“侧链不能损害主链”的协议。


关于SCP,必须保证真正随机分配时隙领导者,活跃性和持久性。


关于CCT安全性是通过在侧链每个块中添加对主链的参考(完全参考)来实施的,对一组验证者可以签署的总金额(MAX_CERT_AMOUNT)引入上限,并且保护跟踪已转移到侧链的总金额。既能给予侧链又可以从侧链撤回。


侧链将极大地增强在现有公链之上构建的可能性。从这里开始会有很多工作,实际上在Horizen主网上部署了第一个侧链。这包括严格的安全测试和对侧链共识协议的进一步评估。


正如我前面提到的,Horizen项目的侧链的第一个用例之一很可能是一个方便财政系统的侧链,使项目更接近成为一个真正分散的自治组织。如果你想知道Horizen项目的全部内容,你可以在这里查看我们的网站https://horizen.global。

2019年11月19日 19:31图文分享