《大咖说》:靠什么创新,一个项目估值超过了4亿美元?
区块链苦效率久矣。图结构降低了区块产生的顺序要求,能够突破共识算法的效率瓶颈,清华大学的一篇论文提到,理论上通过DAG,可将中本聪协议扩展至每秒数千次,基于此技术的项目估值超过4亿美元,并获得约3500万美元的融资。
那么,DAG究竟是何方神圣?以下是王俊清先生带来的精彩分享,对DAG做一个易懂的介绍。
王俊清,资深开发八分量高级后端开发,硕士毕业于北京大学信息安全系,曾就职于中移动研究院,负责云计算虚拟网络部分研发,对Openstack社区中的多个开源项目有贡献。 热衷于区块链系统的设计与实现,目前专注于DAG方向。
一、什么是DAG
传统的区块链是基于块状+链的数据结构来实现的,这种产生链的方式天生有局限,就是在任意时刻产生区块时,都是由“记账者”单点完成的。
这种单点写入区块链最明显的问题是:无法处理高吞吐量。区块链的吞吐量受限于区块大小,如果区块过小,无法及时打包系统内的交易;如果区块过大,整个区块链系统的数据量将膨胀,普通用户无法运行全节点而造成中心化问题。
Directed Acyclic Graph(DAG)成为区块链的一个越来越重要的发展方向,可以简单类比成并发多线程的区块链,其将区块链从一维单点写入升级成三维多点并行工作,理论上每秒交易可达亿级。
二、业界的翘楚——IOTA
说到业界最知名的DAG实现,不得不说IOTA,IOTA是为物联网(IoT)设计的一种革命性的新型区块链平台,其定义了一种独特的底层网络结构名为Tangle(缠结)。与传统区块链不同的是,Tangle不是由挖矿者单点记账模式来加入交易,而是通过全网参与者的平行验证,即通过全网参与者在加入新的交易的同时进行交易的验证工作来完成的。
在细节上,Tangle本质上就是一个有向无环图,所有发出的交易最后都会成为图的一部分,也就是用于存储交易的“点”来表示。所有的交易在发送时,都需要确认两笔之前的交易,交易的确认是通过“边”来表示的。
随着Tangle的不断发展,越来越多的参与者都将发起交易,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。但目前Tangle网络中并没有那么多节点,于是IOTA开发了一个由IOTA基金会控制的节点,也就是调节者(Coordinator),它每两分钟会发出一个不包含任何价值的交易,称之为里程碑(milestone),这种中心化的策略非常简单,所有被里程碑直接或间接指向的交易都是被确认的,反之就是未被确认的交易。背后的逻辑是,Tangle是一个足够大的网络,但目前还处在引导阶段。
三、一个简单的落地实践
如何将DAG结合到现有方案来提高吞吐量?这里提供一个简单的思路,可以将DAG作为缓存接入系统中,由DAG缓存接收交易数据,再由主链定时从DAG缓存中提取数据,或DAG缓存定时的推数据给主链。值得注意的是,这里DAG只是作为交易的缓存,不负责校验交易的有效性,有效性由主链校验。
实践中,可以使用IOTA作为DAG缓存。这里的关键是如何确定DAG缓存中每笔交易的状态,即怎么才能区分出未同步和已同步的交易呢?这里就要提到IOTA中每笔交易的Tag字段,它恰好可以满足这个需求。Tag字段在IOTA中根据每笔交易予以保留,我们用它来标识交易的状态。至此,一个简单的落地方案设想就可以完成了。
四、展望
上述落地方案还比较简单,目前可以欣喜地看到,业界已经有越来越多的新颖的DAG方案正在被提出。
在一次区块链会议上,来自上海交大的一位教授提出了一种分层的DAG架构,他的核心思想是,在上层的DAG结构层中,找到一条主chain,然后根据主chain来序列化所有的交易,即根据主chain的交易来标定被直接引用或间接引用的其他交易并使它们有序;而在下层的结构则用于推选出委员会,并产生上层DAG结构层中的主chain,最简单的实现可以是由委员会作为一个整体来产生交易作为主chain,这位教授还在即将发表的论文中证明了这一过程。
而清华大学已经发表的论文中提出了一种DAG架构conflux,其核心思想在于每个新出的块都会选择一个前置块作为中心链对应的块,然后选择未被确认的块作为引用块,这样每个节点上都会有一个由块所组成的DAG。通过GHOST算法可以算出一个主链(主链中的每一个节点都是DAG的最小生成树中拥有最多子节点的点),就可以对DAG做一个基于拓扑序列的全排序,相当于将其通过一系列的交易冲突检测和解决方法拉平为一条链,达到扩展共识速度的目的。
来自多伦多大学的教授龙凡称,项目旨在解决区块链技术无法大规模应用的难题,如果conflux成功,智能合约可实现更广泛的应用并成为金融和保险业的新生力量。