区块链常用的是“区块+链”的数据结构,简单来说,所谓的“区块”指的是单位时间内由记账者将交易整体打包,新生区块与上一个区块衔接在一起,形成区块链。
而这种链状结构虽然具备比较简单、快速确认等优点,但也存在固有的顽疾。首当其冲的就是链状结构难以提升吞吐量,所以效率一直很低,而且整个网络中只能存在一条单链,无法并发执行。如果区块过小,势必造成交易的大幅延迟,而如果区块过大,又会造成数据量膨胀,普通节点用户将不堪重负,受到DDos攻击等问题。此外,还存在能耗问题、安全问题等潜在的问题。
DAG(Directed Acyclic Graph,有向无环图)原本是计算机领域的一种常用的数据结构,由于其具备良好的多线程特点,能够将区块链从一维的线状单点写入升级为三维多点并行工作,现在成为区块链世界中越来越重要的发展方向。
AITD Blockchain采用了多层共识方法,即请求网络吞吐时使用DAG,确认时使用链式结构。因为DAG属于异步通讯方式,如果把事务操作进行异步处理,那么就可以显著的增加网络吞吐量。为此AITD设计了DAG的吞吐缓存共识层。
这里解释一下同步&异步通讯。同步通讯意味着客户端和服务强耦合,与同步通讯相反,异步通讯不要求捆绑所有的服务和层,允许存在一定的时间差。
AITD针对现有区块链系统容易出现双花、重放攻击、交易速度慢、Coordinator的引入导致中心化等问题。以流式图计算为基础,设计出的一套新的DAG共识层。
在AITD设计的DAG共识层中,它的每个节点(site)代表一个交易,而有向边则代表交易之间的确认关系。如下图所示,site0表示创世交易(Genesis),理论上讲是100%被确认的交易。在图中,site1表示其中的第一笔交易,被后续的site2,3,4确认。而未被确认的交易我们称之为tip,如site6,就是一个tip。
与链式结构相比,DAG结构的交易速率得到了显著的提升,但随之而来的问题是,如何选择未被确认过的新交易(tip)呢?
一、DAG中的交易共识
目前交易的确认在AITD所设计的DAG共识层中主要有三种方式:
第一种方式:所有tip覆盖到的公共节点是被完全确认的。举一个例子,下图中,tip1引用或间接引用的交易为蓝线条和黄线条覆盖,而tip2引用或间接引用的交易为黄线条覆盖。那么被tip1和tip2共同覆盖到的就是标绿的交易,也就是被完全确认的交易。
第二种方式:系统每隔1分钟会发送一个Coordinator的tip附着在DAG共识层上,这个tip被称之为里程碑(milestone),所有被Coordinator引用的交易都是被确认的。
第三种方式: 蒙特卡洛随机游走(MCMC)方式,即使用基本的随机tip选择算法来选择一个tip,如果一个交易被这个tip引用,那么它的可信度便增加1,经过N次选择后如果有M次被引用到了,那么其可信度便是M/N。
二、DAG共识层的主要算法
AITD所设计的DAG共识层的主要算法是基于中心度的去COO起点选择算法。现阶段,在DAG中选择tip的时候,不会从创世交易开始,而是会简单的以某个Coordinator作为起点出发来选择tip ,这就会造成一个中心化的问题。所以AITD在设计DAG共识层的时候,首先要考虑的问题就是如何弱化COO而实现真正的分布式DAG,所以我们需要找到一个共识的交易作为起点,而不是由中心化节点强制规定的Coordinator作为起点。
在此我们选择Katz中心度作为选择起点的标准。因为DAG共识层中的交易是不断进入到网络中的,如果每一笔新交易的选择都重新计算一次Katz中心度的话,那计算量会非常大,因此我们采用增量算法来计算:
其中,A表示交易之间的链接关系,k次方表示k阶链接矩阵,α表示重要性权值向量,I是一个全部为1的矩阵。
值得注意的是,在计算的结果中,我们并不需要寻找到Katz中心度最大的交易,因为这永远是创世交易(Genesis),所以我们应该在Katz中心度和离当下时间最近的交易中找到这个初始节点。
1、考虑边信息的交易权值算法
双花问题的一个典型场景便是侧链攻击,攻击者往往会在短时间内发出多个交易快速增长侧链,并在它们相互之间进行批准,一系列的欺骗性侧链可能就会导致双花成功。
为阻止这种情况发生,我们在两个approve交易之间会做加权的set join,而这个权值的判定由边的信息所确定,而边的信息则由时间来确认。通过使用边的信息来对交易进行重调,从而将攻击效应进行衰减,维护了网络的平稳运行。
2、基于流式图计算的权值更新算法
静态的图算法在更新节点权值的时候,需要从初始节点开始从头计算每个节点的权值,这个计算的复杂度是非常高的。而如果我们把静态计算的信息缓存起来,只在新的tip加入的时候更新已经缓存的信息,那么新tip加入时计算的复杂度将会大大降低。
现在DAG的方案已经陆续从研讨走向落地,业界有很多新颖的DAG方案正在被提出,从技术角度来说,DAG或许会对现有的区块链项目带来一次冲击,一定程度上改变现有的区块链设计思维。
DAG具有速度快,吞吐量高的优势,随着越来越多项目参与到DAG的生态发展中来,长期看来,DAG是非常有前景的机制。AITD Blockchain作为采用DAG技术的公链,通过拓展多层协议的方式,创造性的设计了基于DAG的吞吐缓存层,从理论和现实率先做出了突破,在公链之争中占得先机。
领取专属 10元无门槛券
私享最新 技术干货