Qitmeer课堂:区块链最天然的扩容方法——DAG技术

原创
1016 天前
13442

区块链作为去中心化的记账技术,早期技术不成熟的时,在众多扩容方案也纷纷登台亮相,正如上一期所聊的那样,众多的扩容方案总结起来主要分为了链上扩容和链下扩容两个方向,也是俗称一层扩容和二层扩容。


由于链下扩容是无需交易存放在底层公链上验证,故没有区块链全体共识的成本,不存在理论上的扩容上限,但是不如链上安全性高,而且存在交易信息丢失的问题。链下扩容是链上扩容的重要补充,理想的方案是在强健的链上扩容方案的基础上接入链下扩容方案。这样既保证底层公链稳定高效也能尽可能地扩容。因此本文以讨论链上扩容技术为主,其中最具代表性的,也是最天然的区块链扩容方案则是DAG技术。


DAG技术

DAG(Directed Acyclic Graph), 有向无环图之所以受到广泛关注是因为其天然符合比特币经典的中本聪共识模型,并在此基础上进行了拓展,在保证安全性和去中心化的同时解除了共识层面扩容的限制,理论上可以达到网络带宽和节点处理的极限。换言之,区块链是特殊状态下的DAG, 因此DAG继承了区块链绝大多数成熟的特性,包括UTXO交易模型,POW工作量证明机制等。

做个对比:

DAG 其实是账本(区块和交易只是打包单位不一样,对于这里要讨论的问题而言没有本质区别,下面就只提区块了,交易也是一样的逻辑)最自然的结构,由于交易传播需要时间,所以在某个区块传播过程中,是存在新的区块产生的可能。如果所有并行产生的区块都能被节点确认并形成,那就天然形成了图式账本。试想如果所有的区块都能确认,那交易吞吐量一定会极大地提升,上限只会收到节点处理能力限制,比如节点的CPU验证区块的能力,存储账本的容量,或者网络的带宽等物理因素。


显然如果没有针对DAG定制的共识协议,天然形成DAG账本虽然解决了交易的吞吐量的问题,但是会存在严重的安全隐患。因为DAG中的区块聚集的算力是分散的,只聚集了该区块及其子孙区块的算力,远远达不到比特币50%算力的安全性。所以为了保证安全性,不得不通过增加难度强行减少分叉的个数,极端情况下就变成了只有一个分叉,也就是退化成链式结构了,所以区块链是退化了的DAG,是为了提高安全性不得不降低交易吞吐量的妥协结果。



我们都听说过区块链的不可能三角的学说,即区块链的存在去中心化,可扩容性,安全性的不可能三角。在我理解是分布式系统的CAP(一致性,可用性,分区容错性)不可能三角理论在区块链领域的一个应用。分区容错性,对应区块链的去中心化,确保不存在共识集中风险;一致性对应与安全性,即保证网络中绝大多数的账本数据是一致的;可用性对应于区块链的可扩容性,交易的吞吐量是区块链是否大规模应用的关键性指标。区块链不可能三角的学说容易产生歧义,因为去中心化本身就是区块链网络安全性来源之一,鉴于学说十分流行,故本文也会沿用该学说,读者可以按照我刚才的理解对应到CAP理论。


由此可知,可扩容性(本文没有采用更流行的“可扩展性”这个术语,避免和extensibility产生歧义 )与安全性以及去中心化确实存在内在矛盾,这也就是比特币为了安全性和去中心化而牺牲可扩容性的原因。DAG技术极大提升了交易吞吐量,也因此很多人认为DAG不安全,其实这是对DAG技术的误读。事实上区块链和DAG都只是账本的数据结构,是否安全和可用还取决于共识协议的设计,虽然可扩容性和安全性以及去中心化存在内在矛盾,但是合理的共识协议还是可以达到这三者之间的最优平衡。在区块链技术诞生的早期,共识协议的研究不是很成熟。比特币的中本聪共识为了限制分叉过多而产生的安全问题,采取了非常简单粗暴的增加难度的方案,确保十分钟的出块周期内只能稳定产生一个区块,多产生的区块也会被抛弃。在2009年网络的网络基础设施不完善以及区块链技术不够普及的背景下,为了安全性和去中心化牺牲可扩容性是合理的,而在十多年后的今天,这样的设定显然无法满足现实的需要。因此,许多项目在不断探索DAG的共识技术,希望能找到最适合DAG的共识协议。


IOTA,OByte和NANO便是早期被人熟知的使用DAG技术的项目, 他们是早期交易型 DAG 的代表作品。他们有一个共同的特点就是账本结构每个节点都是一笔交易,而且都没有用工作量证明参与共识。这造成了一个误解,让很多人认为DAG项目就是无区块,无PoW。其实这也是DAG技术的一个误区,通过我们之前的分析可知,DAG技术能否解决不可能三角的关键在于共识协议。组成账本的单位是交易还是区块影响的主要还是账本存储效率,而存储效率是影响去中心化的一个重要指标。道理其实很好理解,如果账本膨胀过快,那有能力提供全账本的节点的门槛会越来越高,势必会造成共识节点的集中。所以,Qitmeer 的MeerDAG 支持以区块为单位的DAG账本,BlockDAG 就是这样的技术,后面会提到。


所以这几个项目作为知名的DAG项目的问题,不在于是否是交易型DAG还是区块型DAG,主要的问题还是在共识协议有欠缺的地方。这几个项目共同的问题在于为了保证可扩容性都牺牲了去中心化,IOTA引入了协调器,OByte 有见证人,NANO本质是代理权益证明,DPoS。在现今区块链的的可扩容性问题日益尖锐的今天,如果不关注区块链技术,去中心化是最容易被忽略的因素。然而去中心化是区块链区别于传统分布式系统最关键的特性,也是网络安全性的重要来源。抛弃去中心化的区块链项目其实没有意义,因为区块链相对于中心化的记账技术并没有技术优势可言。


Qitmeer 在立项之初就在探索能在不牺牲去中心化(分区容错性)和安全性(一致性)解决可扩容性(可用性)的共识协议,直到发现了 区块图(BlockDAG) 技术。值得注意的是,此处的BlockDAG 是狭义上的BlockDAG技术,即采用工作量证明的区块组成DAG账本的,并要求共识协议能保证在不牺牲去中心化和安全性的基础上解决可扩容性的DAG技术框架所以,不是说只要账本是区块组成的DAG就是Qitmeer认可的BlockDAG技术。只有狭义的BlockDAG的区块链技术才是回归区块链的本质,才是Qitmeer认可的经典区块链。同理,业界认可的区块链技术也是狭义的区块链技术,是指满足了去中心化和安全性的区块链技术而非简单的区块组成的链式账本。


BlockDAG 的区块链框架概念最早由 DAGlabs 提出的,同时他们也有许多研究基于BlockDAG的共识协议的研究成果。最早的Inclusive 协议对BlockDAG框架的方方面面都提出了解决方案,虽然还不是很成熟,但是已经奠定了BlockDAG的基础;其后的GHOST协议将BlockDAG的图式数据结构简化成了树形结构的区块树BlockTree,并采用最重树的规则解决了Inclusive中不安全的简单图遍历的规则,虽然相对中本聪共识提高了出块率,但是只有最重树的主干能打包交易,本质也是退化成了一条链,仍然会造成大量的区块浪费;其后的SPECTRE协议则解决了GHOST协议区块浪费的问题,所有的区块都能打包交易,而且确认速度极快,但是引入了交易无法线性排序的问题,无法满足链上智能合约的需求;最新的GhostDAG(Phantom协议的前身),则完美地解决了这一问题,唯一的不足就是需要预估全网最大延迟,所以无法做到像SPECTRE协议那样,每个节点都可以根据自身网络延迟无限逼近自身的确认速度极限。但是由于GHOSTDAG的确认速度已经非常快了,这点不足可以说是瑕不掩瑜。


Qitmeer 的MeerDAG协议 站在了巨人的肩膀上,融合并优化了DAGlabs多个BlockDAG 协议。协议的基础模块主要参考了Inclusive协议,并改进了奖励部分,尽可能地做到多劳多得,按劳分配的公平性原则,比如Qitmeer的所有区块不论红蓝都是可以领取最优先打包的交易手续费奖励,确保努力做工的低算力矿工也能有必要的奖励;其次区块定序算法则主要参考了GhostDAG的规则,并优化了算法运行效率,确保攻击者无法利用算法的漏洞恶意拖垮整个网络,同时也融入了SPECTRE协议进一步提高了GHOSTDAG协议的确认速度。

DAG 技术仍然在不断进步,BlockDAG 技术仍然不能说是完美。过高的出块率带来的账本膨胀问题,为了去中心化而采取的挖矿共识带来的能源消耗仍有进一步优化空间。Qitmeer团队永远保持谦虚倔强的态度,在坚持经典区块链价值观的基础不妥协的基础上,不断引进新技术,为了打造一条真正可用的区块链不断努力。