[超越白皮书3] DAG技术分析和测量

发布时间:2019-03-13 08:06 来源:未知 作者:odHrs3ud 编辑:admin
更多
.wqpc_wechat_view * {max-width: 100%!important; box-sizing: border-box!important; -webkit-box-sizing: border-box!important;自动换行: break-word!important;}

微信号

功能介绍

摘要

Firecoin区块链应用研究所从技术角度对基于有向无环图(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(有向无环图)是一种表示有向图的数据结构,在该图中,它不能从任何顶点返回到该点(无循环),如图所示。所示:

在近年来提出基于DAG技术的分布式总账(以下简称DAG)技术之后,许多人认为有必要从狭义上取代区块链技术。因为DAG在设计时的目标是保留区块链的优点并改善区块链的缺点。

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

3.2.DAG特性

由于与以前的区块链的数据结构不同,基于DAG的分布式账本技术具有高可扩展性,高并发性的特点,适用于物联网场景。

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

传统线性区块链(如以太坊)的数据同步机制是同步的,可能导致网络拥塞。 DAG网络采用异步通信机制,允许并发写入。多个节点可以同时以不同的节奏进行交易而无需清晰的序列。因此,网络的数据可能同时不一致,但最终会同步。

3.2.2.适用于物联网场景

在传统的区块链网络中,每个块中有许多事务。矿工被打包并统一发送,涉及多个用户。在DAG网络中,没有“块”的概念,即网络的最小单元。它是一个“交易”,每个新交易都需要验证前两个交易,因此DAG网络不需要矿工传递信任,转移不需要收费,这使得DAG技术适合小额支付。

4.技术思路分析

Trilemma或“trilemma”意味着在特定情况下,只能选择三个有利选项中的两个,或者必须选择三个不利选择中的一个。这种选择困境在宗教,法律,哲学,经济学和商业管理等各个领域都有相关案例。区块链也不例外。区块链中不可能的三角形是:可伸缩性,分散性和安全性只能选择其中的两个。

如果我们根据这个想法分析DAG技术,根据之前的介绍,那么DAG无疑占据了分散和可扩展性这两个方面。由于DAG数据结构带来的异步计费功能,DAG的分散性和可扩展性可以被认为是双向的,同时实现了参与网络节点的高度分散和可扩展性。交易。

5.存在问题

由于数据结构的特征同时带来了分散性和可扩展性,因此推测根据不可能三角形理论,安全性是一种隐患。但是因为DAG是一个相对创新和特殊的结构,它可以更完美地实现安全性吗?实际结果并非如此。

5.1.双花问题

DAG异步通信的特性使得双花攻击成为可能。例如,攻击者在网络上的两个不同位置添加两个冲突的事务(双重花费),并且在网络中持续前向检查事务,直到它们出现在同一事务的验证路径上,并且网络发现冲突。此时,两个事务聚集在一起的共同祖先节点可以确定哪个事务是双花攻击。

如果交易路径太短,就会出现像“Blowball”这样的问题:当大多数交易在极端情况下“懒惰”时,只有早期交易,交易网络才会形成少数。早期交易是中央拓扑的核心。对于依赖不断增加的事务来提高网络可靠性的DAG来说,这不是一件好事。

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

5.2.影子链问题

由于双花的潜在问题,当攻击者可以建立足够数量的交易时,有可能从真实网络数据中分叉欺诈分支(影子链),其中包含双花交易,然后这个分支被合并到DAG网络中,在这种情况下,该分支可以替换原始的事务数据。

6.目前改进方案简介

目前,该项目主要通过牺牲一些DAG的本土特征来保证安全。

IOTA项目使用马尔可夫链蒙特卡罗(MCMC)方法来解决这个问题。 IOTA为交易引入了累积权重的概念,以记录交易被引用的次数,以表明交易的重要性。 MCMC算法通过对累加权重的随机权重进行加权来选择当前网络中的现有事务作为新添加的事务的参考。也就是说,事务路径引用的越多,算法就越容易选择它。步行策略还在1.5.0版中进行了优化,以将事务拓扑的“宽度”控制在合理的范围内,从而使网络更加安全。

但是,在平台启动开始时,由于参与节点和事务的数量有限,很难防止恶意组织通过大量节点发送大量恶意事务,导致整个网络被影子链攻击。因此,需要权威的仲裁机构来确定交易的有效性。在IOTA中,该节点是协调器,它定期快照当前的事务数据网络(Tangle);快照中包含的事务被确认为有效事务。但协调员并不总是存在。随着整个网络的运行和发展,IOTA将在未来某个时候取消协调员。

Byteball改进计划以见证和主链为特色。由于DAG的结构带来了大量与部分订单关系的交易,为了避免双花,有必要为这些交易建立完整的订单关系以形成交易主链。主链上的早期事务被视为有效事务。由知名用户或机构持有的证人通过不断发送交易以确认其他用户交易来形成主链。

上述解决方案还可以基于DAG结构对平台进行不同的改变。以IOTA为例,由于协调器的引入,分散特性有所降低。

7.实际运行情况

7.1.正面效果

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

由于DAG的原生特征引起的两个潜在问题:(1)交易持续时间是不可控制的。当前请求重传的机制需要在客户端设计一些复杂的超时机制,希望有一个简单的一次性确认机制。 (2)没有全局排序机制,导致系统支持的操作类型有限。因此,在基于DAG技术的分布式账本平台上,很难实现图灵的完整智能合约系统。

为了确保智能合约能够运行,需要一个组织来完成上述工作。当前的协调员或主链可以达到类似的效果。

7.2.负面效果

作为最直观的指标之一,DAG的TPS在理论上应该是无限的。如果将IOTA平台的最大TPS与工厂的容量进行比较,则TPS的日常运行是工厂的日常生产。

对于最大的TPS,2017年4月的IOTA压力测试显示该网络具有112 CTPS和895 TPS的事务处理能力。这是由250个节点组成的小型测试网络的结果。

对于TPS的日常运营,从目前公开的数据来看,近期主网络的平均TPS约为8.2,而CTPS(每秒确认的交易数量)约为2.7。

测试网络的平均TPS约为4,CTPS约为3.

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

这与协调员的存在有关吗?需要进行实际测试以进一步证明。

8.实测分析

开放测试网络的运行统计数据与许多因素有关。为了进一步分析,我们继续使用IOTA平台作为示例,为技术测量分析构建私有测试环境。

8.1.测试架构

我们构建此测试的组件之间的关系如下所示。

其中:

为了避免其他因素对主网络或测试网络的影响,我们建立了一个40节点的小型私有IOTA测试网络。构建过程是指“私有IOTA Testnet”项目(https://github.com/schierlm/private-iota-testnet.git),并将其中使用的IRI(IOTA参考实现)版本更新到最新的v1.5.0版本。此外,在测试期间,该工具提供的协调器模拟工具用于定期生成快照以确认事务。

使用基于Python的开源负载测试工具Locust(https://locust.io /)来控制事务数据的发送。测试开始后,交易数据被随机发送到所有专用网络中的节点。

当节点启动时,添加“--zmq-enabled”参数以启动IOTA的ZeroMQ支持,并且由节点获得的事务数据通过消息队列发送到观察端。在观察端使用ZeroMQ事件解析脚本(https://github.com/lunfardo314/tps_zmq.git)来观察节点事务数据。

8.2.测试硬件环境

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

8.3.测试场景及结果分析

8.3.1.默认PoW难度值

虽然没有诸如“矿工”之类的概念,但IOTA节点仍然需要在发送交易之前证明工作量,以避免发送大量事务来泛滥网络。最小重量大小与比特币类似。 PoW的结果应该是“9”的位数,其中9位是IOTA使用的三元组中的“000”。可以在节点启动之前设置IOTA难度值。

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

由于每个IOTA的捆绑包含多个传输,因此实际处理的TPS将高于发送速率。但是通过执行解析zmq的脚本,可以观察到当前的TPS非常低。另一个现象是每秒可成功发送的请求数也很少。

经过分析,原因是测试使用VPS,因此在PoW中,CPU主要用于计算,因此事务速度主要受传输速度的影响。

8.3.2.降低PoW难度值

重新测试难度值为1并得到以下结果。

从结果可以看出,在难度降低后TPS会增加。因此,IOTA项目的当前TPS没有达到协调器所在的瓶颈,但主要是因为发送事务的客户端本身的硬件和网络。 IOTA社区目前正致力于实现基于FPGA的Curl算法和CPU指令集优化。我们的测试结果也证实我们可以通过这种方式继续探索DAG平台的性能潜力。

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

由于DAG的特性,平台的实际TPS和网络节点的数量也可能是相关的。因此,当难度值保持为1时,网络节点的数量减少到10并且重复测试以获得以下结果。

从结果可以看出,随着节点数量的减少,TPS的实际处理也减少,并且低于传输速率。这表明在DAG环境中,维护足够大小的节点将有助于处理事务。

9.参考资料

https://www.iota.org/

https://en.wikipedia.org/wiki/Trilemma

https://blog.iota.org/new-tip-selection-algorithm-in-iri-1-5-0-61294c1df6f1

https://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo

https://byteball.org/

https://www.iotachina.com/iota.html

https://www.iotachina.com/iota_tutorial_1.html

该报告由一个火区链产生的信息研究所:Yuanyu Ming,胡志伟

百度搜索“北京赛车计划群”,专业资料,生活学习,尽在这里,您的在线图书馆!

转载保留链接:http://www.hzqsz.com/844.html

责任编辑:admin

相关图文