OmniLedger是Chainspace的一个很好的升级版。这两个系统在同一时间独立开发。OmniLedger结合了Visa级别的可扩展性水平(注意:作者与平均Visa tps进行比较,Visa网络中的tps峰值相当高)并带有安全性的分布式账本。
这也证明了该领域的进展速度有多快,以及如果您一直从事于分布式系统开发,但到目前为止你还是忽略了区块链技术的发展,这给你带来一些启发。标准构建模块以新颖的方式正在兴起,还有很多东西需要学习!
本文主要介绍了OmniLedger,这是第一个可提供“水平扩展”事务处理能力的分布式账本体系结构,与Visa等中心化支付处理系统相媲美,同时又不会影响安全性和兼具去中心化的特点。
OmniLedger的目标如下:
1.完全去中心化,无需第三方背书的可信性,兼容单点故障的高容灾容错性。
2. 分片健壮性(OmniLedger将状态分区再并行处理多个分片处理) - 每个分片必须正确且持续处理分配给它的事务。
3. 在内分片和跨分片中确保安全的原子事务。
4. 吞吐量的扩展性能在参与的验证器数量上呈线性增长。
5. 减低存储账本的需求,使验证节点不需要存储完整的交易历史记录。
6. 许多移动端聚集在一起以支持所有交易确认的低延迟。
首先我们需要一种方法来启用新的验证器来加入系统,以及一种安全的方法来对验证器进行分片,这样恶意者就不能轻易地对一个分片进行攻击。
支撑这部分系统的是一个identity blockchain,以及与RandHound(一种可在拜占庭协议中提供无偏向分布式随机性的可扩展安全多方计算协议)和加密分类(Algorand算法)进行安全分布式随机生成。
接下来,我们需要一种安全可靠的方法来处理分片中的事务,OmniLedger引入了Omnicon协议,该协议将基于组的树通信模式与类似PBFT的视图更改过程相结合,交易记录在分类帐中。
UTXOs(未使用的交易输出模型)为我们提供了一个(明确的)因果+一致性模型,这意味着我们可以并行识别非冲突事务并处理这些事务块。因果关系图在跨块之间进行维护,而不是个别单独的事务,从而减少了一些元数据的需求。 在分片中达成的共识还是不够的,我们还需要进行跨分片的原子事务处理。 为此OmniLedger引入了基于锁定的解锁协议-Atomix协议(将验证和监督工作放在产生交易的两个群组之间,减少被整个系统网络状态的影响,也就是两个小组之间发生交易,就由两个小组的同学用特殊方式决定,不给整个群体带来影响)。
这些分片都是这样的:
安全的进行分片
我们不能让验证者自己选择一个分片加入,因为这样会允许恶意者将所有验证者集中在一个分片组中。
如果将验证器分配给分片是随机的,那么很可能所有分片都有相同比例的恶意节点。假设我们有一个合适的随机性来源,就可以这样做:
想要参与从epoch e(时期)开始的分类账的验证节点首先必须在global identity blockchain注册。
通过epoch e-1中的Sybil攻击抵抗机制创建identity,并且最多在epoch e-1结束之前连同相应的证据下在gossip网络上广播。
Randomness被用来为epoch 选举一个领导者并将节点分配给分片(稍后会有更多介绍)
领导者在一个块上请求一个(BFT)集体签名,并且可以证明迄今为止所有的identity。 如果这些验证器中至少有2/3支持该块,那么它将变为有效,而领导者将其附加到identity blockchain。
OmniLedger验证器分配机制的安全性被模拟为随机抽样问题,其中包含两种可能的结果(诚实或恶意)。假设有无限可能的验证器,我们可以使用二项分布...
失败的结果是允许一个恶意者控制一个分片的。对于给定的抵抗能力(受控节点的百分比),下面的图表显示了所需的分片大小以将失效概率固定在$10^{-6}$中。
但是随机性的来源从何而来呢?
我们要求分布式的随机生成协议提供了不可比性、不可预测性、第三方可验证性和可扩展性。
有多种方案。我们关注的是RandHound,因为它有更好的文档和开源的实现。
RandHound本身依靠领导者协调协议运行的。所以现在我们需要选择一个验证器来作为这个角色。密码学就是用来做这个的。加密分类是基于可验证的随机函数-VRFs。
在epoch e的开始,每个验证者i计算一张票 ticket i,e,v=VRF ski,(leader ||config e ||v),conng e包含了所有正确注册的epoch的验证者(存储在identity blockchain中)的配置,而是一个视图计数器。
验证器会对一个时间值的票据进行讨论,在此之后,他们锁定了迄今为止所见过的最低价值有效的票据,并接受相应的节点作为RandHound协议的领导者。
为了在过渡阶段保持可操作性,OmniLedger在每个时期的每个分片中逐渐在新的验证器中进行总分类。 详情请参阅第IV.B部分。
跨分片交易
在UTXO模型(OmniLedger采用的模型)中,交易的输出创建新的UTXO,并输入完全“花费”现有的UTXO。 随着UTXO随机分配到分片进行处理,我们可以预期跨分片交易是常见的。
OmniLedger使用称为Atomix的Byzantine Shard Atomic Commit(拜占庭分片原子确认)协议来自动处理跨越分片的事务(为了保证信息的一致性)。
它建立在这样的事实之上:全局可信的、不会无限的崩溃以及在内部运行ByzCoin(提供BFT共识)的基础上。
该协议是由客户端驱动的,分三个阶段进行:
1. 在初始化阶段,客户端创建一个跨分片交易,消耗一些输入分片的UTXO,并在某些输出分片中创建新的UTXO。该交易在网络上被讨论并最终到达所有输入分片中。
2. 在锁定阶段,与交易相关联的所有输入分片首先验证交易以确保输入可以花费。 然后,如果交易有效,则交易记录在分片分类账中,并且接受证明是有讨论的。(在经典2PC中认为“PREPARE”)。
如果交易没有被接受,那么拒绝证明就会变成讨论内容。交易输入现在被锁定,但交易尚未提交。
客户端可以检查输入的分片账簿来验证证据,并确认交易确实被锁定。客户持有足够的证据来提交交易或中止交易并回收任何锁定的资金,但不能同时回收这2种。
3.在解锁阶段,客户端可以通过创建一个适当的解锁交易来解除锁定或取消锁定。每一个涉及的输出分片都有验证交易,并将其包含在其分类帐的下一个区块中,以便更新状态并启用新资金的支出。
如果你以前在分布式系统上有过操作经验,那么你可能想知道如果客户崩溃或不继续入第三阶段,在分类帐中留下可疑交易,会发生什么情况。在这种情况下,资金不会自动回收,这些资金本身为客户提供了完成交易的动机。
我们认为,无限期崩溃的客户等同于失去私钥的客户,这使得他无法使用相应的UTXO。此外,系统中的任何实体(例如验证者在交易中的费用)都可以为客户创建解锁交易,因为所有必要的信息都是被讨论过的。
可扩展的BFT与Omnicon的共识
OmniLedger基于ByzCoin拜占庭式共识方案,该方案使用集体签名(CoSi)使PBFT更具可扩展性。 ByzCoin使用多点传送树型结构来提高性能,并且将块分配到一种扩展性更小的星型拓扑结构以实现容错。
不冲突的交易可以在不同的区块中进行,并以并行方式安全地处理。一个基于块状的DAG,其中每个块有多个母节点可以捕捉区块的并发处理。跟踪因果关系的元数据消耗,减少了UTXO之间传递的依赖关系,因此我们只需要跟踪块之间的因果关系,而不是块内的单个交易。
低延迟交易
对于频繁使用低延迟价值交易的客户,OmniLedger支持一种可选的“信任并验证”模式。 良好的验证程序可以快速处理交易,核心验证程序随后再次验证交易以提供最终结果并确保可验证性。
这样可能会犯下一些不良交易,但最终核心验证者会验证所有临时的验证结果,发现任何不一致及其欺诈者,从而可以惩罚恶意验证者并赔偿被欺诈的客户的损失。
减轻账本
比特币的区块链每天增长大约144MB,但具有Visa级吞吐量(例如4000 tps和500 B / tx)的下一代系统每天可以产生超过150GB的数据。 如果新的验证者需要下载并处理整个分类账以便引导,那么这是一个很苦恼问题。
所以OmniLedger采用了稳定的检查点状态块。 在一个epoch结束时,分片的领导者将UTXO存储在有序的Merkle树中,并将Merkle树的根哈希放入状态块的头部。 验证者在这个块上运行共识,如果被批准,它就成为下一个epoch的创始块。
OmniLedger和Chainspace
OmniLedger的方法与Chainspace相辅相成,因为我们专注于开放式可扩展UTXO风格的DL(分布式账本),而Chainspace则专注于可以共享的智能合约和小规模分片(例如:在允许的设置中)。
因此,OmniLedger和Chainspace的结合极有可能创建一个开放式可扩展的智能合约平台,在与其他分片协议对比,提供了更强大的可扩展性和安全性。