从Conflux的树图再谈DAG

我今天偶尔看了一下,号称自己很厉害的Avalanche共识协议介绍,看了一遍感觉啥都没说
应该也是基于DAG结构的算法

Avalanche本质上是一个基于 DAG 的联盟链算法,论文讲的还是比较细致的。对安全性什么的也有比较细致的考虑也分析。

但是 Avalanche 的 DAG 中,矿工如何选区块作为父亲区块,是一个不好设计的规则。如果像Conflux一样引用所有看到的区块,在Avalanche中会有问题。

@DHG 请问你提到如果限制引用的数目会产生安全问题 可否说下大概的思路 还有conflux不限制引用的数目 是否也包括不限制引用的深度

就是说我 新出的区块可以去引用 创世节点?

@Dahai 这个从激励机制上来说,应该会被惩罚,但是我不清楚其余节点如何确认你这个违规情况

激励是一方面 我这边主要还是关注作恶者或者对于激励不敏感的矿工

@Dahai 应该引用“叶子区块”,即只能引用还没有被任何一个(已知的)其他区块引用过的。如果引用创世块就不能引用任何其他直接间接引用了创世块的区块

这个叶子区块很难定义 毕竟每个矿工的视角不一样 所以我比较关心可以引用多少层

我就假装,我现在只看到创世节点,没看到其余节点,然后引用了创世节点。

其余节点应该如何确认,你是一种恶意引用的行为?

当然 如果我引用的节点之间有拓扑关系 这个肯定是比较容易排查的
我说的这种情况是 如果我引用的节点之间没有拓扑关系 是不是其中一部分节点可以很老 一部分很新
或者所有都很老

我觉得,我们可能理解错了,创世节点应该只能被认做父节点,而不能被引用
如果你引用的是pivot上的非创世节点,其实也可以引出同样的问题

@Dahai 不自相矛盾即可。如果引用了之前很多层的一个区块,那么就不可以再引用所有在拓扑上引用了这个块的其他块了

辰星同学也提到了 以太。以太是做了限制的 我记得应该是不能引用超过8层之前的节点
但是辰星又说conflux没有做限制 是处于安全考虑 但从我的观点来看 这个如果可以限制最好 毕竟去确认老的节点 对于网络安全没有好处

@DHG 原则上所有正常区块最终都要指向创世块,如果引用创世块就必须假装别的什么都没看到…

@Regulus_YG 等于就是没有限制咯 我指的没有限制就是指没有拓扑矛盾情况下 是否不做深度限制

@Dahai 没有直接限制。计划通过 anticone 区域内区块数量对引用过老区块的行为做惩罚,使得这样的恶意区块拿不到块奖励

@Regulus_YG 谢谢杨老师 看样子主要是靠激励了
”Avalanche本质上是一个基于 DAG 的联盟链算法“ 这个不太理解 应该是个公链的协议
我到感觉跟SPECTRE有点像 少数服从多数 快速收敛 Avalanche的问题 我个人感觉倒是可能有女巫攻击的风险

Avalanche 本身没有涉及如何抵抗女巫攻击。所以对于参与者的资格比较容易实现的方案是采用类似联盟链那样的准入机制。如果采用pos的方式也行,需要另外搭配相应的pos选举协议。

@Dahai 我来再解释一下这两个问题

  1. 关于深度控制。

相信你也了解过 Phantom, Phantom 通过共识将区块标成红色和蓝色两种区块。红色区块没有权重,类似于一个无效区块。Phantom 在证明中,直接假设一个好人生成的区块高概率是蓝色区块,然而这是不对的,我们也找到了这个假设的反例。

所以为了避免这种情况,Conflux 在“将区块标为无效,将区块权重置为 0 ”这件事情上,是非常谨慎的。避免我们的理论分析过程中,陷入循环论证的错误。

但是,在共识上面不标为无效,不意味着在激励机制方面没有作为。杨光刚才也提到了,主要通过激励机制惩罚这种行为。区块权重有效,但是没有收益。