区块链周周记:共识算法

.wqpc_wechat_view *{max-width: 100%!important;box-sizing:
border-box!important;-webkit-box-sizing: border-box!important;
word-wrap: break-word!important;} 微信号 功能介绍
摘要火币区块链应用研究院从技术角度对基于有向无环图(DAG)数据结构的分布式账本技术进行研究,并通过对典型代表项目IOTA的具体技术测试,主要得到以下研究结果:DAG技术与狭义的区块链技术相比,有其创新之处,理论上在不考虑作恶情况下可实现高可扩展性和高去中心化,因此存在一些安全隐患。DAG项目往往以偏中心化的方式来实际运行,即降低去中心化程度来提高安全度,但同时其交易速率并没有接近理论上限。采用基于VPS(CPU进行PoW)的40个节点网络对代表性项目IOTA进行交易压力测试,可发现TPS很低:可达到的最优结果为4.19。经分析,其性能瓶颈目前主要还在于硬件的算法实现本身。如果采用FPGA等其他方式来实现,应可进一步挖掘出DAG的性能潜力。同时,为保持良好的交易处理能力,应建立足够规模的节点网络。报告正文1.引言区块链是一种分布式账本技术,而分布式账本技术却不局限于“区块链”这一种技术形式。在数字经济发展的浪潮中,为了改进原有技术、满足更多的实际业务应用场景,更多的分布式账本技术正在被探索和应用当中。有向无环图(Directed
Acylic
Graph,以下简称“DAG”)是其中的代表之一。DAG技术以及它背后的设计思想是什么?实际应用效果如何?我们尝试通过对DAG技术进行深层解析以及对代表性项目IOTA的实际测试运行获得分析结论。另外需要注意的是:测试得到的指标数据结果不是也不应被视为是对IOTA平台或项目最终效果的证明或确认。特此声明。2.主要结论经过研究与测试分析,我们得到以下主要结论及技术建议:DAG技术与狭义的区块链技术相比,有其创新之处,理论上在不考虑作恶情况下可实现高可扩展性和高去中心化,因此存在一些安全隐患。DAG项目往往以偏中心化的方式来实际运行,即降低去中心化程度来提高安全度,但同时其交易速率并没有接近理论上限。采用基于VPS(CPU进行PoW)的40个节点网络对代表性项目IOTA进行交易压力测试,可发现TPS很低:可达到的最优结果为4.19。经分析,其性能瓶颈目前主要还在于硬件的算法实现本身。如果采用FPGA等其他方式来实现,应可进一步挖掘出DAG的性能潜力。同时,为保持良好的交易处理能力,应建立足够规模的节点网络。3.DAG介绍3.1.DAG原理简介DAG(Directed
Acyclic
Graph,有向无环图)是一种数据结构,表示的是一张有向图,并且在这个图中,从任意顶点出发都无法回到该点(无环),如图所示:
基于DAG技术的分布式账本(以下简称DAG)技术在近年来被提出后,被很多人认为有希望替代狭义上的区块链技术。因为DAG在设计时的目标就是保留区块链的优点并且改进区块链的缺点。和传统线性区块链结构不同,以IOTA为代表的分布式账本平台的交易记录之间形成的是一个有向无环图的关系结构,如下图所示。3.2.DAG特性由于采用了不同于以往块链式的数据结构,基于DAG的分布式账本技术,拥有高可扩展、高并发等特性并适用于物联网场景。3.2.1.高可扩展性、高并发性传统线性区块链(如以太坊)的数据同步机制是同步的,这可能造成网络的拥堵。DAG
网络采用异步通讯机制,允许并发写入,多个节点可以按照不同的节奏同时交易,而不必有明确的先后顺序,因此同一时刻网络的数据可能不一致,但最终会是同步的。3.2.2.适用于物联网场景在传统的区块链网络中,每个区块中有很多笔交易,矿工打包好后统一发送,涉及到多个用户;而在
DAG
网络中并没有“区块”的概念,网络的最小单元是“交易”,每笔新的交易需要验证前面两笔交易才能进行,这样DAG网络并不需要矿工传递信任,转账无需手续费,这使得
DAG
技术适用于小额支付。4.技术思路分析不可能三角(trilemma),或被称为“三难困境”,是指在特定的情形下,只能选择三个有利选项中的两个或者是在三个不利选择中必须选择一个。这一类选择困境在宗教、法律、哲学、经济学、企业管理等多种领域均有相关案例。区块链也不例外。区块链中的不可能三角为:可扩展性(Scalability)、去中心化(Decentralization)、安全性(Security)这三者中只能选择其中两个。如果按照这种思路来分析DAG技术,根据前文介绍,那么无疑DAG已占据了去中心化、可扩展性这两个方面。DAG的去中心化和可扩展性可认为是一体两面的,因为基于DAG数据结构带来的异步记账特性,同时实现了高度的参与网络节点的去中心化和交易的可扩展性。5.存在问题既然是数据结构上的特性同时带来了去中心化和可扩展性,所以按照不可能三角的理论来推测,安全性会是一个隐患。但由于DAG是一个比较创新、特殊的结构,是否也可比较完美的实现安全性?目前从实际效果来看并非如此。5.1.双花问题DAG
异步通讯的特性为双花攻击创造了可能。例如,攻击者在网络的两个不同的位置添加了两笔冲突的交易(双花),交易在网络中不断向前验证,直到它们出现在同一笔交易的验证路径上,网络才会发现冲突,这时这两笔交易汇聚成的共同祖先节点才能判断哪一笔交易是双花攻击。而如果将交易路径控制的过短又会存在类似“Blowball”的问题:当极端情况下绝大多数交易都较为“懒惰”(Lazy
Tip)、只参考早期交易时,交易网络会形成一个以少数早期交易为核心的中心拓扑。这对依赖于交易的不断增加而提高网络可靠性的DAG来说,也不是一件好事。因此,目前对于双花问题,需要综合考虑实际情况进行设计。不同的DAG网络有各自的解决方案。5.2.影子链问题由于存在双花的潜在问题,当攻击者可以构建出足够数量的交易后,就可能从真实的网络数据中分叉出一个欺诈性分支(影子链),其中包含着双花交易,然后将这个分支合并到DAG网络中,特定情况下这个分支有可能取代原有交易数据。6.目前改进方案简介目前项目主要都是通过牺牲一部分DAG的原生特性来保证安全性。IOTA项目中采用了马尔科夫链蒙特卡洛(Markov
chain Monte
Carlo,以下简称MCMC)的方式来解决该问题。IOTA为交易引入了累积权重(Cumulative
Weight)的概念用来记录该笔交易被引用的次数,目的是表示其交易的重要性。MCMC算法通过对累积权重进行加权随机游走,选择目前网络中已存在的交易作为新增交易的参考。即被参考越多的交易路径越容易被算法选中。游走策略在1.5.0版本中也进行了优化,可将交易拓扑的“宽度”控制在一个合理范围内,使得网络更加安全。但在平台启动初期,由于参与节点和交易数量均有限,所以很难避免一个恶意机构通过大量节点发送出海量的恶意交易使得整个网络受到影子链的攻击。因此就需要一个权威的仲裁机构来判定交易的有效性。在IOTA中,这一节点为Coordinator,它会定期对目前交易数据网络(Tangle)进行快照;包含在快照中的交易即被确认为有效交易。但Coordinator并不会一直存在。随着整个网络的运行和成长,IOTA会在未来某一时间取消掉Coordinator。Byteball改进方案的特色在于其对于见证人(witness)和主链的设计。因为DAG的结构带来了很多偏序关系的交易,而要避免双花则需要对这些交易建立一个全序关系,形成一个交易主链。主链上较早的一笔交易作为有效交易。而由知名用户或机构担任的见证人通过不断的发送交易确认其他用户交易,从而形成主链。以上方案也可能会对基于DAG结构的平台带来不一样的改变。以IOTA为例,因为引入了Coordinator,一定程度上降低了去中心化特性。7.实际运行情况7.1.正面效果采用了除了解决安全问题之外,以上方案还可以在一定程度上解决智能合约问题。由于DAG原生特性带来的两个潜在问题:(1)交易时长不可控,当前通过请求重发的机制需要在客户端进行一些较为复杂的超时机制设计,希望能够存在更简单的一次性确认机制;(2)不存在全局排序机制,导致系统支持的操作类型受限。因此在基于DAG技术的分布式账本平台上,较难实现出图灵完备的智能合约体系。为了保证智能合约可以运行,需要一个机构来完成上述工作。目前的Coordinator或主链可实现类似的效果。7.2.负面效果作为最为直观的指标之一,DAG的TPS在理论上应该是可以无限的。如果把IOTA平台的最大TPS比喻为一个工厂的产能,那么日常运行的TPS就是工厂的日常产量。对于最大TPS,2017年4月份的IOTA压力测试显示,网络具有112CTPS和895TPS的交易处理能力。这是在一个由250个节点所组成的小型测试网络上得到的结果。对于日常运行的TPS,从目前可公开获取的数据看到,近期主网平均TPS为8.2左右,CTPS(每秒确认交易数量)为2.7左右。而测试网近期的平均TPS为4左右,CTPS为3左右。数据来源
discord bot:
generic-iota-bot#5760这是否与Coordinator的存在有关?需要实际测试来进一步论证。8.实测分析公开测试网的运行统计数据与诸多因素都有关系。为了进一步分析,我们继续以IOTA平台为例,搭建一个私有测试环境进行技术实测分析。8.1.测试架构我们本次测试搭建的各组件间关系如下图所示。其中:为了避免主网或测试网上的其他因素对测试结果的影响,我们搭建了一个40个节点的小型私有IOTA测试网络。构建过程参考“Private
IOTA
Testnet”项目(
Reference
Implementation)版本更新为了最新的v1.5.0版本。此外,在测试过程中,使用该工具提供的Coordinator模拟工具,定期生成快照对交易进行确认。使用基于Python的开源负载测试工具Locust(
EC2 C5.4xlarge: 16 核 3GHz, Intel Xeon Platinum 8124M
CPU,32GB内存,服务器间为10Gbps局域网网络,通讯延迟(ping)小于1ms,操作系统为Ubuntu
16.04。8.3.测试场景及结果分析8.3.1.默认PoW难度值虽然没有“矿工”等概念,但在发送交易前,IOTA节点仍然需要进行工作量证明,以避免发送大量交易淹没网络。PoW难度值(Minimum
Weight
Magnitude)与比特币类似,是PoW的结果应得出“9”的位数,其中9在IOTA采用的三进制中为“000”。IOTA难度值可在节点启动前进行设置。目前对于生产网络,IOTA的难度值设置为14;测试网设置为9。因此,我们首先采用测试网的默认难度值9来进行测试,得到以下测试结果。由于每个IOTA的交易包(bundle)中会包含多笔transfer,因此实际处理的TPS会比发送速率高。但通过执行解析zmq的脚本可观察到,目前TPS很低。而另一个现象是,每秒可发送成功的请求数量也很低。经过分析,原因在于测试使用的是VPS,所以在PoW时,主要使用CPU来进行运算,因此交易速度主要受发送速度的影响。8.3.2.降低PoW难度值将难度值降低为1后重新进行测试,得到以下结果。从结果可看到,降低难度后,TPS会有所上升。所以目前IOTA项目的TPS并没有到达Coordinator所在的瓶颈,而主要是发送交易的客户端本身硬件以及网络等方面原因导致。IOTA社区目前在研发基于FPGA的Curl算法实现以及CPU指令集优化等工作。我们的测试结果也印证可通过这一方式继续挖掘DAG平台的性能潜力。8.3.3.减少测试网络节点数量由于DAG的特性,平台实际TPS和网络节点数量可能也存在着关系。因此在难度值保持为1的情况下,将网络节点数减为10后重新进行测试,得到以下结果。从结果可看到,随着节点数降低,实际处理TPS也有所下降,而且低于发送速率。这说明在DAG环境下,维持足够规模节点将有助于交易的处理。9.参考资料

图片 1

在区块链去中心化的环境里,共识算法起到了交易确认,避免“双花”的作用。在这个过程中,它需要解决:

本报告由火币区块链研究院出品,报告发布时间为2018年7月10日,作者:袁煜明、胡智威。

  • 交易的先后,即如何在去中心化的环境中建立时间序列的概念
  • 当多个节点完成交易记录时,采用谁的记录放入共识账本

火币区块链应用研究院从技术角度对基于有向无环图数据结构的分布式账本技术进行研究,并通过对典型代表项目IOTA的具体技术测试,主要得到以下研究结果:

关于流行的共识算法,这篇文章给出了详尽的说明,本文的内容也主要依据它来整理,更确切的讲,本文相当于一篇关于共识算法的摘要。

DAG技术与狭义的区块链技术相比,有其创新之处,理论上在不考虑作恶情况下可实现高可扩展性和高去中心化,因此存在一些安全隐患。

最出名同时也是最古老的共识算法,比特币和以太坊均采用了它。

DAG项目往往以偏中心化的方式来实际运行,即降低去中心化程度来提高安全度,但同时其交易速率并没有接近理论上限。

  • 优点:有效
  • 缺点:慢的要死,能耗大
  • 机制:
    • 矿工通过解决问题来完成区块的创建,问题的难度会随着全网出块速度自动进行调整,以达到控制出块速度的要求。
    • 其余矿工通过验证来证明结果的正确性,并接受这个区块。
    • 若有两个矿工同时出块,则链最长的那一个胜出。

采用基于VPS的40个节点网络对代表性项目IOTA进行交易压力测试,可发现TPS很低:可达到的最优结果为4.19。

POW的特点在于解决问题需要付出工作量,而验证却能很快完成,保证了区块生成的正确性,避免了恶意生成区块,从而遏制双花问题的产生。理论上控制全网51%的算力将可以操纵区块的产生,但这样的付出远超老实挖矿获得收益。在这样的激励机制之下,促使矿工向善。

经分析,其性能瓶颈目前主要还在于硬件的算法实现本身。如果采用FPGA等其他方式来实现,应可进一步挖掘出DAG的性能潜力。

由于比特币的走高,导致一些硬件公司专门生产针对比特币挖坑的ASIC矿机,使得算力日益集中。为了避免这种不公平的竞争,以太坊实现了Ethash,其特点在于挖矿效率基本与CPU无关,而与内存和带宽正相关。其目的在于“抗ASIC”。

同时,为保持良好的交易处理能力,应建立足够规模的节点网络。

然而,道高一尺魔高一丈。2018年4月3日,北京时间22:00,比特大陆正式推出了以太坊ASIC矿机,蚂蚁E3。

报告正文

不过,POW终究是一种高能耗算法,以太坊已经开始转向更节能的POS算法。

区块链是一种分布式账本技术,而分布式账本技术却不局限于“区块链”这一种技术形式。在数字经济发展的浪潮中,为了改进原有技术、满足更多的实际业务应用场景,更多的分布式账本技术正在被探索和应用当中。有向无环图(Directed
Acylic Graph,以下简称“DAG”)是其中的代表之一。

以太坊将在其最后一个里程碑由POW切换到POS。

DAG技术以及它背后的设计思想是什么?实际应用效果如何?我们尝试通过对DAG技术进行深层解析以及对代表性项目IOTA的实际测试运行获得分析结论。

  • 优点:攻击成本更高,更去中心化,节能
  • 缺点:权益粉碎攻击(Nothing at Stake)
  • 机制:
    • 持币量和持有时间为影响因子,每发现一个区块,则币龄清0,然后从区块中获得一定奖励。
    • 本质上是“虚拟挖矿”,任何拥有Token的用户都能参与,不像POW中那样必需购买所谓的“矿机”。
    • 用户用其手中的Token投注哪些区块有效,若遇到分叉,则花Token来支持对应的分叉。若大多数人投票正确的分叉,则那些投注在错误分叉的用户将在正确的分叉上失去其押注。

另外需要注意的是:测试得到的指标数据结果不是也不应被视为是对IOTA平台或项目最终效果的证明或确认。特此声明。

由于手中的Token越多,影响力越大,若这些大佬投注错误的分叉将导致其损失,故他们会选择不作恶。然而,对于那些“无产阶级”,情况就不一样了。

经过研究与测试分析,我们得到以下主要结论及技术建议:

由于本身分叉在POS中并不需要算力,因此分叉在POS中是常态。并且在早期的POS实现中,只有奖励而没有惩罚,即使投注的分叉错误也没有损失,因此用户可以在多个分叉上同时投票,这就是所谓的“权益粉碎攻击”。鉴于此,以太坊的POS算法“Casper协议”中引入了保证金的概念,一旦被系统认定是“坏人”,保证金将被没收。

DAG技术与狭义的区块链技术相比,有其创新之处,理论上在不考虑作恶情况下可实现高可扩展性和高去中心化,因此存在一些安全隐患。

理论上,如果收集全网超过50%的Token将可以操纵区块产生,但这种情况极难出现。

DAG项目往往以偏中心化的方式来实际运行,即降低去中心化程度来提高安全度,但同时其交易速率并没有接近理论上限。

目前大热的EOS采用的正是这个算法。

采用基于VPS的40个节点网络对代表性项目IOTA进行交易压力测试,可发现TPS很低:可达到的最优结果为4.19。

  • 优点:交易成本低,伸缩性好,节能
  • 缺点:部分中心化
  • 机制:
    • Token持有者选出委托人来代表他们投票,典型的委托人数量在21~100。委托人周期重选,负责出块。
    • 在DPOS中,矿工协助出块,而非像POW/POS中那样相互竞争。
    • 委托人越少,效率越高,并能保证每位委托人在指定时间内发布区块。若委托人不尽职(没有出块或发布无效区块),Token持有者可以让其出局,让更好的委托人替代他。

经分析,其性能瓶颈目前主要还在于硬件的算法实现本身。如果采用FPGA等其他方式来实现,应可进一步挖掘出DAG的性能潜力。

部分的中心化让DPOS的效率相当高。

同时,为保持良好的交易处理能力,应建立足够规模的节点网络。

以太坊Kovan测试网采用此算法。

DAG(Directed Acyclic
Graph,有向无环图)是一种数据结构,表示的是一张有向图,并且在这个图中,从任意顶点出发都无法回到该点,如图所示:

  • 优点:高吞吐量,性能好
  • 缺点:中心化系统
  • 机制:由系统认证过的账户来验证交易,此账户相当于其他节点的权威。

一般用在私有网络。

图片 2

FileCoin采用此算法。

基于DAG技术的分布式账本技术在近年来被提出后,被很多人认为有希望替代狭义上的区块链技术。因为DAG在设计时的目标就是保留区块链的优点并且改进区块链的缺点。

  • 优点:可定制,性能好
  • 缺点:激励机制有挑战
  • 机制:
    • 与POS基于Token数量为基准来决定发现下一区块的概率类似,PoWeight基于某种权重值为标准,比如FileCoin就是以节点存储的IPFS数据为权重。

和传统线性区块链结构不同,以IOTA为代表的分布式账本平台的交易记录之间形成的是一个有向无环图的关系结构,如下图所示。

图片 3

  • 优点:高吞吐量,低成本,性能好
  • 缺点:半信任
  • 解决问题:不可靠网络且存在恶意节点时,各节点达成状态的一致性。

由于采用了不同于以往块链式的数据结构,基于DAG的分布式账本技术,拥有高可扩展、高并发等特性并适用于物联网场景。

实用拜占庭容错算法,原始BFT的性能极低,后来出现PBFT,将算法复杂度由指数级降低到多项式级别,从而使得算法可以实际应用。节点3f+1可容错f个节点。超级账本目前采用此算法,<20个节点时,性能不错,再多节点时,性能会出现下降。优点:高交易吞吐量;缺点:中心化,需授权。

3.2.1.高可扩展性、高并发性

联邦拜占庭协议,Stellar和Ripple采用,每个节点负责自己的链,在消息到达时对它们进行排序,建立相应的事实。Ripple中,节点有基金会预选,Stellar中由用户来决定相信哪个节点。

传统线性区块链的数据同步机制是同步的,这可能造成网络的拥堵。DAG
网络采用异步通讯机制,允许并发写入,多个节点可以按照不同的节奏同时交易,而不必有明确的先后顺序,因此同一时刻网络的数据可能不一致,但最终会是同步的。

DAG又称“无块区块链(Blockless)”,它和区块链的差异:

3.2.2.适用于物联网场景

  • 单元:DAG是TX,区块链是Block。
  • 拓扑:
    • DAG是交易单元组成的网络,可异步并发写入交易,相当于多核多线程CPU;
    • 区块链是区块组成的单链,按时间依次同步写入,相当于单核单线程CPU。
  • 粒度:DAG每个单元记录一个用户的交易,区块链每个单元记录多个用户的交易。

在传统的区块链网络中,每个区块中有很多笔交易,矿工打包好后统一发送,涉及到多个用户;而在
DAG
网络中并没有“区块”的概念,网络的最小单元是“交易”,每笔新的交易需要验证前面两笔交易才能进行,这样DAG网络并不需要矿工传递信任,转账无需手续费,这使得
DAG 技术适用于小额支付。

DAG有望成为新一代的区块链基础,最出名的三个项目:IOTA、Nano、ByteBall。

不可能三角,或被称为“三难困境”,是指在特定的情形下,只能选择三个有利选项中的两个或者是在三个不利选择中必须选择一个。这一类选择困境在宗教、法律、哲学、经济学、企业管理等多种领域均有相关案例。区块链也不例外。区块链中的不可能三角为:可扩展性(Scalability)、去中心化(Decentralization)、安全性这三者中只能选择其中两个。

  • 优点:网络性能高,低成本
  • 缺点:依赖于具体实现

如果按照这种思路来分析DAG技术,根据前文介绍,那么无疑DAG已占据了去中心化、可扩展性这两个方面。DAG的去中心化和可扩展性可认为是一体两面的,因为基于DAG数据结构带来的异步记账特性,同时实现了高度的参与网络节点的去中心化和交易的可扩展性。

DAG不依赖于区块链数据结构,几乎完全用异步方式处理交易,最大的优点是理论上每秒可处理无限事务。算法变种:

既然是数据结构上的特性同时带来了去中心化和可扩展性,所以按照不可能三角的理论来推测,安全性会是一个隐患。但由于DAG是一个比较创新、特殊的结构,是否也可比较完美的实现安全性?目前从实际效果来看并非如此。

  • Tangle,IOTA,要发送一个交易,必须先验证收到的两个历史交易(采用MCMC进行选择)。理论上,若有人能产生1/3的交易,它就可说服其余人它的无效交易是有效的(因为每个节点发送前需要先验证2个交易)。目前,在能有效防止某节点产生1/3的交易量之前,IOTA采用了“复检”的方式:在被称为“协调员”的中心节点上验证所有交易。这也是IOTA最为人诟病的地方。
  • HashGraph,一种gossip协议共识,节点随机地跟其他节点共享它们知道的交易,最终使得所有交易被全网知晓。虽然非常快,但无法阻止“女巫攻击”,故非常适合私有网络,但对于公有链,不适合。
  • Block-Lattice,Nano,每个用户一个链,只有它自己能够写入,所有人保留一份所有链的副本。每个交易被分拆成两部分:发送者链上的发送区块和接收者链上的接收区块。易受Penny-Spend
    Attack,攻击者向大批的空钱包发送数量极小的交易,迫使大量节点不得不跟踪交易。
  • Spectre,POW事件序列化(Serialization of Proof-of-work
    Events),通过递归选举来确认交易,利用POW和DAG相结合来提高比特币伸缩性的建议解决方案。被挖出来的区块指向多个父区块,而非一个。由此,比特币中“最长链胜出”在此背景下变成“最多孩子的区块胜出”,目前尚未大规模应用和测试。

DAG
异步通讯的特性为双花攻击创造了可能。例如,攻击者在网络的两个不同的位置添加了两笔冲突的交易,交易在网络中不断向前验证,直到它们出现在同一笔交易的验证路径上,网络才会发现冲突,这时这两笔交易汇聚成的共同祖先节点才能判断哪一笔交易是双花攻击。

而如果将交易路径控制的过短又会存在类似“Blowball”的问题:当极端情况下绝大多数交易都较为“懒惰”、只参考早期交易时,交易网络会形成一个以少数早期交易为核心的中心拓扑。这对依赖于交易的不断增加而提高网络可靠性的DAG来说,也不是一件好事。

  • POI,重要性证明,既不需要强大的算力,也不需要雄厚的资产,只需向系统证明自己的重要性即可。比如,活跃度和交易量。
  • POB,烧毁证明,创建区块需要为创建的Token支付费用。
  • POA,此A为Asset,即资产证明。
  • ……

因此,目前对于双花问题,需要综合考虑实际情况进行设计。不同的DAG网络有各自的解决方案.

与CAP原理类似,区块链中也同样存在不可能三角形,其形式如下:

由于存在双花的潜在问题,当攻击者可以构建出足够数量的交易后,就可能从真实的网络数据中分叉出一个欺诈性分支,其中包含着双花交易,然后将这个分支合并到DAG网络中,特定情况下这个分支有可能取代原有交易数据。

图片 4image

目前项目主要都是通过牺牲一部分DAG的原生特性来保证安全性。

即:在去中心化、性能和安全三个方面最多得其二,无法全部满足。

IOTA项目中采用了马尔科夫链蒙特卡洛(Markov chain Monte
Carlo,以下简称MCMC)的方式来解决该问题。IOTA为交易引入了累积权重(Cumulative
Weight)的概念用来记录该笔交易被引用的次数,目的是表示其交易的重要性。MCMC算法通过对累积权重进行加权随机游走,选择目前网络中已存在的交易作为新增交易的参考。即被参考越多的交易路径越容易被算法选中。游走策略在1.5.0版本中也进行了优化,可将交易拓扑的“宽度”控制在一个合理范围内,使得网络更加安全。

  • A Hitchhiker’s Guide to Consensus Algorithms
  • 区块链架构及应用
  • 友善的小精灵 Casper
  • 区块链共识机制的演进
  • 共识算法: POW、POS、DPOS、POI、POA、POB详解
  • PoW,PoS,DPoS 综述
  • 白话DAG:第3代区块链技术DAG全面盘点
  • [区块链]共识算法(POW,POS,DPOS,PBFT)介绍和心得

但在平台启动初期,由于参与节点和交易数量均有限,所以很难避免一个恶意机构通过大量节点发送出海量的恶意交易使得整个网络受到影子链的攻击。因此就需要一个权威的仲裁机构来判定交易的有效性。在IOTA中,这一节点为Coordinator,它会定期对目前交易数据网络进行快照;包含在快照中的交易即被确认为有效交易。但Coordinator并不会一直存在。随着整个网络的运行和成长,IOTA会在未来某一时间取消掉Coordinator。

Byteball改进方案的特色在于其对于见证人和主链的设计。因为DAG的结构带来了很多偏序关系的交易,而要避免双花则需要对这些交易建立一个全序关系,形成一个交易主链。主链上较早的一笔交易作为有效交易。而由知名用户或机构担任的见证人通过不断的发送交易确认其他用户交易,从而形成主链。

以上方案也可能会对基于DAG结构的平台带来不一样的改变。以IOTA为例,因为引入了Coordinator,一定程度上降低了去中心化特性。

采用了除了解决安全问题之外,以上方案还可以在一定程度上解决智能合约问题。

由于DAG原生特性带来的两个潜在问题:交易时长不可控,当前通过请求重发的机制需要在客户端进行一些较为复杂的超时机制设计,希望能够存在更简单的一次性确认机制;不存在全局排序机制,导致系统支持的操作类型受限。因此在基于DAG技术的分布式账本平台上,较难实现出图灵完备的智能合约体系。

为了保证智能合约可以运行,需要一个机构来完成上述工作。目前的Coordinator或主链可实现类似的效果。

作为最为直观的指标之一,DAG的TPS在理论上应该是可以无限的。如果把IOTA平台的最大TPS比喻为一个工厂的产能,那么日常运行的TPS就是工厂的日常产量。

对于最大TPS,2017年4月份的IOTA压力测试显示,网络具有112CTPS和895TPS的交易处理能力。这是在一个由250个节点所组成的小型测试网络上得到的结果。

对于日常运行的TPS,从目前可公开获取的数据看到,近期主网平均TPS为8.2左右,CTPS为2.7左右。

图片 5

而测试网近期的平均TPS为4左右,CTPS为3左右。

数据来源 discord bot: generic-iota-bot#5760

图片 6

这是否与Coordinator的存在有关?需要实际测试来进一步论证。

公开测试网的运行统计数据与诸多因素都有关系。为了进一步分析,我们继续以IOTA平台为例,搭建一个私有测试环境进行技术实测分析。

我们本次测试搭建的各组件间关系如下图所示。

图片 7

其中:

为了避免主网或测试网上的其他因素对测试结果的影响,我们搭建了一个40个节点的小型私有IOTA测试网络。构建过程参考“Private
IOTA
Testnet”项目(
Reference
Implementation)版本更新为了最新的v1.5.0版本。此外,在测试过程中,使用该工具提供的Coordinator模拟工具,定期生成快照对交易进行确认。

使用基于Python的开源负载测试工具Locust(

在节点启动时,增加“–zmq-enabled”参数,以便启动IOTA的ZeroMQ支持,将节点得到的交易数据中通过消息队列方式发送给观测端。在观测端使用ZeroMQ事件解析脚本(

服务器采用亚马逊AWS EC2 C5.4xlarge: 16 核 3GHz, Intel Xeon Platinum
8124M
CPU,32GB内存,服务器间为10Gbps局域网网络,通讯延迟小于1ms,操作系统为Ubuntu
16.04。

8.3.1.默认PoW难度值

虽然没有“矿工”等概念,但在发送交易前,IOTA节点仍然需要进行工作量证明,以避免发送大量交易淹没网络。PoW难度值(Minimum
Weight
Magnitude)与比特币类似,是PoW的结果应得出“9”的位数,其中9在IOTA采用的三进制中为“000”。IOTA难度值可在节点启动前进行设置。

目前对于生产网络,IOTA的难度值设置为14;测试网设置为9。因此,我们首先采用测试网的默认难度值9来进行测试,得到以下测试结果。

图片 8

由于每个IOTA的交易包中会包含多笔transfer,因此实际处理的TPS会比发送速率高。但通过执行解析zmq的脚本可观察到,目前TPS很低。而另一个现象是,每秒可发送成功的请求数量也很低。

经过分析,原因在于测试使用的是VPS,所以在PoW时,主要使用CPU来进行运算,因此交易速度主要受发送速度的影响。

8.3.2.降低PoW难度值

将难度值降低为1后重新进行测试,得到以下结果。

图片 9

从结果可看到,降低难度后,TPS会有所上升。所以目前IOTA项目的TPS并没有到达Coordinator所在的瓶颈,而主要是发送交易的客户端本身硬件以及网络等方面原因导致。IOTA社区目前在研发基于FPGA的Curl算法实现以及CPU指令集优化等工作。我们的测试结果也印证可通过这一方式继续挖掘DAG平台的性能潜力。

8.3.3.减少测试网络节点数量

由于DAG的特性,平台实际TPS和网络节点数量可能也存在着关系。因此在难度值保持为1的情况下,将网络节点数减为10后重新进行测试,得到以下结果。

图片 10

从结果可看到,随着节点数降低,实际处理TPS也有所下降,而且低于发送速率。这说明在DAG环境下,维持足够规模节点将有助于交易的处理。

火币区块链应用研究院(简称“火币研究院”)成立于2016年4月,于2018年3月起全面拓展区块链各领域的研究与探索,主要研究内容包括区块链领域的技术研究、行业分析、应用创新、模式探索等。我们希望搭建涵盖区块链完整产业链的研究平台,为区块链产业人士提供坚实的理论基础与趋势判断,推动整个区块链行业的发展。

超越白皮书系列是火币研究院推出的区块链技术类研究报告。该系列从各类区块链项目的白皮书、黄皮书以及学术论文等文献资料出发,研读分析技术背后的计算机科学原理、适用场景、优缺点以及未来发展潜力等;同时,搭建平台或开发测试工具进行实测,结合技术理论探索与实测结果分析,为行业研究人员、技术开发者等提供专业的区块链技术分析结论与研发指导建议。

咨询邮箱:huobiresearch@huobi.com

简书公众号:火币区块链研究院

Twitter:Huobi_Research

Medium:HuobiResearch

Facebook:Huobi Research

1.
火币区块链研究院与本报告中所涉及的数字资产或其他第三方不存在任何影响报告客观性、独立性、公正性的关联关系。

2.
本报告所引用的资料及数据均来自合规渠道,资料及数据的出处皆被火币区块链研究院认为可靠,且已对其真实性、准确性及完整性进行了必要的核查,但火币区块链研究院不对其真实性、准确性或完整性做出任何保证。

3.
报告的内容仅供参考,报告中的事实和观点不构成相关数字资产的任何投资建议。火币区块链研究院不对因使用本报告内容而导致的损失承担任何责任,除非法律法规有明确规定。读者不应仅依据本报告作出投资决策,也不应依据本报告丧失独立判断的能力。

4.
本报告所载资料、意见及推测仅反映研究人员于定稿本报告当日的判断,未来基于行业变化和数据信息的更新,存在观点与判断更新的可能性。

5.
本报告版权仅为火币区块链研究院所有,如需引用本报告内容,请注明出处。如需大幅引用请事先告知,并在允许的范围内使用。在任何情况下不得对本报告进行任何有悖原意的引用、删节和修改。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

CopyRight © 2015-2020 普京集团娱乐网 All Rights Reserved.
网站地图xml地图