快捷搜索: 王者荣耀 脱发

DAG(有向无环图)易懂介绍(*)

DAG看他的结构挺唬人的,但是原理还是蛮简单的。DAG改变的是传统区块链的数据结构。首先简单介绍一下什么是图。一个图(graph)是由两部分组成:点(vertex)和边(edge)。所谓有向无环图其实就是:有方向的边;这些边在一个图中不会构成一个闭合的环路。 1. Tip的概念 在DAG中,如图所示,方块(vertex)表示的是一笔笔的交易,而虚线(edge)表示的是验证关系。每一个新加入的交易都需要挑两个没有被验证过的交易来验证这两个交易的合法性。方块6就是还未被验证过的交易,也称为tip。tip是DAG最重要的概念。

2. 交易到达率和网络延迟对DAG的影响 两个网络指标会对DAG的结构有影响,分别是:交易到达率lambda和网络延迟 au

我们假设交易到达率lambda满足泊松过程(Poisson point rocess):其物理意义是在单位时间内有多少交易会到达DAG网络。

那么会存在两种特殊情况

当lambda=0.1时,DAG就变成了区块链网络,如下图所示。因为新加入的交易只能验证一个未被验证过的tip,例如:新加入的交易11只能验证tip10。 当lambda特别大时,且DAG网络只有一个创世区块时,就会发现如下图所示的情况。 那么为什么交易11不能验证交易1呢?这是因为网络时延 au的存在,使得交易11不知道1的存在。灰色方块表示的是在网络延迟 au内到达的数据,从而使得他们互相都不知道彼此的存在,因此不能够进行验证。

3.新交易的Tip选择策略 那么讨论完特殊情况,在一般情况下,一个新加入的交易是如何选择哪一个tip去验证呢?要设计一种策略,防止lazy tip的产生。所谓的lazy tip指的是喜欢验证旧的交易,而不是最近的交易。 那么有两种思维方式:基于概率的策略和非基于概率的策略。

(2)基于概率的策略 基于概率的策略在白皮书中指的是累积加权随机游走策略(当时实际情况可能会调整)。当一个新交易加入到DAG网络,他需要通过一定的策略来选择验证网络中哪一个最新出现的tip。

具体操作流程为:让一个walker从创世区块开始走,然后根据下一个交易的权重来计算选择概率,就这么不断选择不断走,直到到达tip。例如:Walker 从交易0开始走,他有四个选择(2,3,1,4),根据交易(2,3,1,4)的各自权重来计算其被Walker选择到的概率。

一个交易的权重的计算公式为:1 + 直接或者间接验证过他的交易的数目。如图所示,交易3的权重的计算方式为:1(红色线) +4(交易5 7 8 10)=5 (2)非基于概率的策略 那么如果不用基于概率的策略,而是采用非基于概率的策略,也就是超权重随机游走策略。其策略思想是:Walker只选择权重最大的交易,而不是以一定的概率来选择概率。这样做的会导致: 灰色代表的是tips,他会随着时间越积攒越多。

4. DAG的优缺点 根据区块链的不可能三角理论:分布式,安全性,高效性不可能同时兼得。DAG理论上可以实现分布式和高效性,因此安全性可能就会被诟病。

DAG优点: (1)支持并发交易,所以吞吐量高。 (2)没有交易费用。

DAG缺点: (1)天生不支持智能合约,限制了其应用场景。 (2)只有当形网络形成一定规模时,DAG才可以安全的被应用。现有的DAG的项目还是暂时采用的中心化的共识策略,因为网络规模不够。 (3)安全性有待验证。

经验分享 程序员 微信小程序 职场和发展