从区块链到DAG(四)--DAG共识之PHANTOM协议

这篇文章我们着重介绍一下PHANTOM这种账本协议。与上一篇的SPECTRE不同,PHANTOM可以对整个账本做一个线性排序,满足了智能合约网络对账本的时序性的要求。(具体内容参考《从区块链到DAG(三)--DAG共识之SPECTRE协议》)

PHANTOM协议主要分为两个内容:

1. 通过投票判定诚实区块和恶意区块

2. 对区块做线性排序

下面将逐一对这两点进行说明。这里重申一下账本共识有效的大前提:网络中大多数节点都是诚实的。我们不考虑集中超过51%算力的这种恶意攻击,因为无论用什么账本共识这样的攻击都会奏效。

 1  PHANTOM的投票原则

从《从区块链到DAG(三)--DAG共识之SPECTRE协议》 里的描述可以看出:“双花”攻击时,攻击区块在发布以前几乎不会与诚实节点产生的区块相关联,因为在这个阶段诚实区块不知道这些攻击区块的存在,所以自然不会引用它们。在censorship攻击中,攻击节点产生的区块也有类似的倾向:不与诚实节点所产生的包含“冲突交易”的区块相关联。综和来看这些恶意攻击都有一个显著特点:恶意节点产生的区块与诚实节点产生的区块之间的连通度比较低,反之诚实节点产生的区块之间的连通度会比较高。

PHANTOM的投票原则正是基于这个原理,通过判断不同区块间的连通度进行投票。为了描述清楚这个投票过程,我们先介绍几个有关的概念,见图片1。

图片1 一个典型的DAG图例

来源:Yonatan Sompolinsky, Shai Wyborski, and Aviv Zohar,PHANTOM and GHOSTDAG A Scalable Generalization of Nakamoto Consensus

  

以区块H作为例:

past(H)={Genesis, C, D, E}--在H创建之前直接或间接指向H的过去区块。

future(H)={J,K,M}--在H创建之后直接或间接指向H的未来区块。

anticone(H)={B, F, I, L}--除开past(H),future(H)之外的区块,这些区块与H并没有直接或间接的指向关系。如何对这些区块的排序是DAG共识的主要难点。

tips(G)={J, L, M}--树叶区块,或者末端区块;这些区块会成为新区块的块头引用。

接下来再引入一个在《从区块链到DAG(二)--DAG的基本结构》里提到过的概念:分叉系数k,直观上看这是一个描述网络允许分叉的个数。严格来说k被定义为传播系数(propagation parameter),用来描述网络延迟(propagation delay)这个现象。在《

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值