Darma Cash DMCH
$0.28 -4.27%
Dmc Blockdag 技术详解
牛币圈

1、目的

链上扩容,解决链的吞吐能力,提高Tps;


提高安全性,抵御51%算力攻击。


2、为什么性能能够提高?


与传统比特币最大的不同是,dmc 采用blockdag 机构,在同一个区块高度上允许有多个块。这意味着区块的组织是以图为基础,而非“链”。为了兼容传统表述,后文仍然用“区块链”来描述整个区块结构。

a、同一高度同时有多个区块,意味着同一高度交易量增大n倍;

b、极大地减少了比特币因为激活最佳链切换时丢弃块的低效率操作。


3、要解决的问题

a、同一高度的块,交易的去重和双花处理。 因为允许块的并发,意味着同一笔交易、双花可能同时被打进了多个块。需要对这些交易按照规则筛选和排序、确定那些交易是真正合法有效的;blockdag 和普通区块链的区别就是blockdag 把全部合法交易都打进了块上了链,而这些交易有可能是重复的、双花的,每个全节点钱包客户端根据共识规则自动挑选有效交易并且按照规则生成顺序存入单独的交易数据库。

b、交易的顺序性、确定性问题。 因为某些交易之间存在关联性,例如B交易引用了A交易,典型的是智能合约,有了创建合约交易,才有调用合约的交易。

在这种情况下,需要对区块链进行收敛和排序,生成所谓的Full Order,这称为“拓扑排序”。这个收敛算法应该具有高效,一致性的特点。 dmc 这里一个高度下最多允许3个块,每往前推8个块根据累计难度最大值挑选出一条主链、这个主链区块高度我们称之为链高度;同一链高度因为存在多个区块,系统也按照难度从大到小的顺序进行排序最终实现全网每个块的拓扑顺序,这个高度我看称之为拓扑高度;所以dmc 有两个高度,而且拓扑高度总是大于链高度。


4、为什么能降低51%算力攻击

拥有统治性算力的矿工,不能再随意发动双花,强制链回滚等行为,因为低算力矿工的产生的新块也会被链上接纳。也会得到部份奖励。dmc 设计是8个高度块后不允许重组,每个高度是3个块,所以总计24个块,只要一个块被加入进去链就不能发动51% 攻击,所以在dmc 不能回滚交易,只能打空块阻止交易、其最低算力要求是23/24=95.8%


5、流程


假设:

为了提升收敛的性能,区块的收敛只在指定的区块高度范围内进行,这是共识的一部份,当前收敛高度区间为8。当新到达的块高度不在收敛区间内,则直接丢弃。


流程处理


a、在矿工生成新块的时候,取得所有的未端区块集合,称为Tips,按累计难度对Tips进行排序,取前K个Tip,当前K = 3;新块记录这些Tips的块Hash,这类似于区块链中的父块Hash。


b、在收到新块后,如果合法性检查通过,则开始按以下步骤进行收敛:


Step1

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

Step2

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

Step3

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

Step4

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

Step5

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

Step6

当有新块出现时,依次类推。

- [ ]


2020年04月13日 16:04图文分享