理解DMCH区块账本结构BLOCK-DAG技术背后的战略意图

我们在DARMA Cash匿名公链技术(二)一文向大家阐述了DMCH项目使用libp2p框架对整个项目可扩展性的重要性。在这篇文章中我们重点阐述DMCH项目使用的BLOCK-DAG技术,我们知道在关于区块链账本结构这个问题上有过一段时间的激烈讨论,目前的研究方向主要有链式结构、图式结构和树图式(块图式)结构。DMCH使用的是树图式结构,并通过BLOCK-DAG技术实现。通过这篇文章的分析,我们希望社区成员能够理解DMCH具有超高TPS的潜力,同时社区成员应该有能力看懂DMCH的区块浏览器的信息。本文最后将给出总结,时间紧的社区成员可以直接看结论。

区块链的账本结构





从本质上说,区块链的本质是个账本。像任何其他数据库一样,它包含有关各方之间交易的信息。但是,如果您希望此数据库不易受到攻击,并且最重要的是同时保持在许多设备上的相同状态,则它会很棘手。

1.链式结构

链式结构(见下图)的账本代表是大家熟知的比特币。比特币通过他的共识机制确保只有一条合法主链,但是工作量证明会增加网络延迟,以确保网络同步并能抵御大多数攻击。同时我们看到图中的Block1被链主链丢弃了,

理解DMCH区块账本结构BLOCK-DAG技术背后的战略意图

但是这个Block也是矿工挖出来的,也就是他耗费了我们的资源(计算资源、电费)却是一个无用功,这就导致了比特币的TPS非常低,只有7TPS。当然比特币正在进行测试的闪电网络(Lighting Network)可以达到10000的TPS,不过这是另一个技术层面的问题,我们以后有机会与大家讨论。

2.图式结构(DAG)

图式结构(见下图)的账本代表是IOTA和ByteBall。DAG是具有方向且没有任何循环的图形。您可以将其视为创建区块链过程中的一个中间环节–它的某些块已经与边缘连接(因此是有序的),而有些则没有,因此需要额外的精力来构建基于DAG的最终链,而这正是基于DAG的共识协议所需要的。

理解DMCH区块账本结构BLOCK-DAG技术背后的战略意图

图式结构比链式结构具有抗双花攻击、交易费低(IOAT可以做到0)且可以达到上万的超高TPS,Alpha Zero项目的DAG协议在128节点下可以达到100000TPS。但是图式结构有两个最大问题那就是容易造成中心化和不支持智能合约。DAG的应用场景在于支付和物联网,我们在这里不做过多的讨论,有兴趣的社区成员可以自行在互联网上学习。

3.树图式(块图式)结构

树图式结构(见下图)的账本代表是DMCH。这种结构其实是综合了链式和图式结构的优点。


理解DMCH区块账本结构BLOCK-DAG技术背后的战略意图

树图式(块图式)结构的具有抗双花攻击、去中心化、支持智能合约、高TPS的特点。DMCH在实验室环境中TPS达到了5000。当然我们并不是说DMCH性能有多么优秀,因为网络情况、硬件水平等约束条件不一样会导致TPS峰值的差异,我们希望大家能够对树图式(块图式)结构TPS的量级有所概念。目前DMCH主网的TPS保持在70TPS,这是个什么水平呢?目前比特币是7TPS,以太坊是25TPS,莱特币是56TPS,门罗是4TPS,Zcash是27TPS,DASH是35TPS。不好意思,写到这里老祖又去买了点DMCH。

DMCH BLOCK-DAG原理-大道至简

经我们与DMCH开发人员在社区Discord沟通DMCH BLOCK-DAG技术细节后,在这里给社区成员讲解下DMCH BLOCK-DAG树图式(块图式)结构的实现原理,之所以我们在这里与大家讲解原理,是因为DMCH的开发人员把技术讲解的非常简单,正所谓大道至简,如果别人能把复杂的问题用简单的语言讲清楚,那么这个人一定是值得信赖的。

1.使用BLOCK-DAG技术的目的

·        实现DMCH链上扩容,解决DMCH链的吞吐能力,提高TPS。
·        提高DMCH链安全性,抵御51%算力攻击、先天免疫双花攻击。

2.BLOCK-DAG技术提高DMCH链性能的原理

DMCH BLOCK-DAG技术与传统比特币为代表的链式结构最大的不同是在同一个区块高度上允许有多个块。这意味着区块的组织是以图为基础,而非“链”。为了兼容传统表述,后文仍然用“区块链”来描述整个树图式(块图式)区块结构。总结起来有以下两个核心点:

·        同一链高度同时有n个区块,意味着同一高度交易量增大n倍。
·        极大地减少了比特币因为激活最佳链切换时丢弃块的低效率操作。

3.BLOCK-DAG技术实现过程中解决的问题

DMCH BLOCK-DAG技术在同一个区块高度上允许有多个块的特点引发了下面两个问题:

·        解决同一链高度上所有的块的交易去重和双花问题。因为BLOCK-DAG技术允许块的并发,所以BLOCK-DAG技术把全部合法交易都打进了块,然后广播上链,导致一个链高度对应多个块,而这些交易有可能是重复的、双花的。

·        解决交易的顺序性、确定性问题。因为某些交易之间存在关联性,例如B交易引用了A交易,典型的情况是智能合约,如果在DMCH上创建了合约交易,那么就会有调用合约的交易。

老祖请教了DMCH开发后,发现他们真的是天才,技术有时候真的就是一张纸,捅破了就那样,以下是解决思路,方案非常简单:

·        对于第一个去重和双花问题,解决思路是对这些交易按照规则筛选和排序、确定哪些交易是真正合法有效的,实现方式是每个全节点根据共识规则(见下文共识规则)自动挑选有效交易并且按照规则生成顺序存入单独的交易数据库。

·        对于第二个确定交易顺序性、确定性问题,解决思路是对区块链进行收敛和排序,通过进行“拓扑排序”,生成全序(Full Order),这里的收敛算法应该具有高效,一致性的特点。

DMCH共识规则是一个高度下最多允许3个块,每往前推8个块根据累计难度最大值挑选出一条主链、这个主链区块高度我们称之为链高度;同一链高度因为存在多个区块,系统按照难度从大到小的顺序进行排序,最终完成全网每个块的拓扑顺序排序工作,这个排序出来的高度我们称之为拓扑高度;因此,DMCH有链高度和拓扑高度两个高度,而且拓扑高度总是大于链高度(请大家记一下“两个高度”这个概念,后面讲解查看区块浏览器会用到)。

  4.DMCH BLOCK-DAG技术顺便解决了51%双花攻击

在理解了DMCH BLOCK-DAG技术后,老祖敢于用“顺便”这个词语。由于低算力矿工产出的新块也会被链上接纳(所谓的侧链),也会得到部分区块奖励(所谓的侧链奖励),所以拥有统治性算力的矿工,不能再随意发动双花攻击,强制进行链回滚等行为。DMCH的出块时间是15秒,区块收敛2分钟,推算得出8个高度块后不允许重组,按照每个高度最大允许3个块计算,总计24个块,在这期间只要一个块被加入进链就不能对DMCH链发动51% 攻击。所以DMCH链不能回滚交易,只能打空块阻止交易、其最低算力要求是23/24=95.8%,其实用降低比解决要好,因为当算力超过95.8%,那么攻击就有可能发生。

5.DMCH BLOCK-DAG技术程序处理逻辑

约束条件:

为了提升收敛的性能,在指定的区块高度范围内进行区块收敛,这是DMCH网络共识的一部分。经了解当前DMCH网络收敛区间为8个高度,所以当一个区块的区块高度不在收敛区间8以内,该块将被直接丢弃。

处理逻辑:

在矿工产出新块的时候,取得所有的未端区块集合,称为Tips(Tips是IOTA技术中的名词,意思是没有确认的交易),按累计难度对Tips进行排序,取前K个Tip,当前K=3;新块记录这些Tips的块Hash,这类似于区块链中的父块Hash。在收到新块后,如果合法性检查通过,则开始按以下步骤进行收敛:

第一步:
 从当前区块链的所有顶点(Tip)沿着图的路径向前追溯,找到第一个正在同 步的块(即还处在收敛状态,没有稳定确认的块),因为可能有多个顶点,则可能得到一个集合G。

第二步:
对集合G按累积难度进行排序,其中难度最低的块及其高度,设为Start。 

第三步:
取当前区块链的所有顶点中,累积难度最大的Tip对应的块及高度,设为End。

第四步:
令区块范围R为[Start,End],在区间内按累积难度排序,得到一个唯一的线性化块的顺序。

第五步:
遍历上述线性化的顺序表,去掉其中重复的交易。

第六步:
当有新块产出时,重复上述步骤。

学会查看DMCH区块浏览器

至此,我们已经对DMCH BLOCK-DAG技术进行了介绍,有了这个基础,我们来看下DMCH的区块浏览器(见下图),官方区块浏览器地址是https://explorer.darmacash.com/。


理解DMCH区块账本结构BLOCK-DAG技术背后的战略意图

我们从图中可以看到一个哈希值为f07809be41f26dbbc9e265314aecb71637a115c8cf9fd06d089c8a46858ad961的区块的链高度是109215,拓扑高度是134117,该块属于侧链,获得奖励0.0691;另一个哈希值为38f1a10ff96157159a15b52fb201b322ba06034e428246b3d009df136e35adc3的区块的链高度是109215,区块高度是134115,该块属于主链,获得奖励0.345。只要你理解了我们上文说的BLOCK-DAG技术原理,那么你就可以理解并得出这样一个结论:在DMCH中,拓扑高度与区块是一一对应的,而链高度可以最多对应三个区块。

使用BLOCK-DAG技术背后的战略意图

总结来说,传统链式结构不停地通过切换和丢弃区块来收敛顶端的区块,是造成TPS低的最重要的原因,而BLOCK-DAG通过并行出块解决上述问题,从而大幅提升TPS,这就好像比特币是单核电脑,而DMCH是多核电脑。

DMCH的BLOCK-DAG技术实际上是一个用空间换时间、换效率的经典案例。由于块的并发,DMCH的数据库会比一般的项目数据库大一些,这是牺牲的空间,但是在当前存储成本越来越便宜的情况下,这个牺牲不足挂齿,而这个牺牲换来的是TPS提升到70(综合考虑了全球硬件和网络水平,实验室里是5000TPS),15秒一个块,全网收敛2分钟,且支持匿名合约。

那么DMCH使用这个BLOCK-DAG技术战略意图是什么呢?老祖用一句话说明白:以太坊目前的TPS是25,且仅支持非匿名合约。

关键词: DMCH  DARMA Cash  

该内容来自于互联网公开内容,非区块链原创内容,如若转载,请注明出处:https://htzkw.com/archives/28893

联系我们

aliyinhang@gmail.com