请问有大佬能解释一下conflux 中 timerchain 吗?

请问有大佬能解释一下conflux 中 timerchain 吗?

conflux的论文对timerchain的描述是“Figure 6 presents the definition of TimerChain(b), which is the longest chain of blocks in the past sub-graph of b whose PoW qualities are h0 times higher than the normal difficulty.”,翻译为:“图6给出了TimerChain(b)的定义,TimerChain(b)是b过去子图中区块最长的链,其PoW质量比正常难度高h0倍”。

我理解的是conflux通过在树中权重最大的一条链定义为枢轴链,长度最长的定义为timer链,两者共同定义老区块,当老区块过多时,判断收到liveness攻击,全部正常节点自动转为生成权重ho的超重区块,进而防止枢轴链被不成熟者的私生成链。ps:conflux论文对timerchain的解释为“仅计算一个枢轴块的子树下的块的数量不足以检测该枢轴块是否足够老。为此,Conflux使用计时器链机制来获得攻击者对每个区块产生时间的弹性估计。”

1 Like

因为觉得这个timerchain挺有新意的,但是没怎么看懂有啥用

如果timerchain是最长的区块组成的链,为什么必须pow是正常难度的ho(文中360)倍呢?那不是每个元素都是最重区块?

我理解了一下,timerchain是不是某个节点b之前所有pow_quality超过ho*D的重节点的集合

不一定是枢轴链那样连续的链

有种里程碑的意味

是这样的,我们可以理解成,从 tree-graph 的区块中选了一些代表,这些代表又构建了一条链,那么这条链有什么用呢?

这条链的主要作用是,为解决 liveness attack 的问题提供一个“时钟”。

GHOST 协议有 liveness attack 问题,论文里讲了。所以 Conflux 的设计是,如果一个节点发现:一个足够老的 pivot 区块,还没有选出一个有压倒性优势的孩子,就可能发生了 liveness attack, 此时要采取一些措施。

有压倒性优势的孩子很好判断,老大的子树权重比老二大 1000 为压倒性优势。但是,“足够老”并不好定义。用子树大小吗?我们找到了攻击策略,可以让一个很老的 pivot block (已经生成很长时间了)子树很小。

最后,我们找到了一个方式:时钟链。让好人节点维护一个单独的链,出块速度很慢,用比特币的最长链规则。然后每个区块出生的时候,会引用时钟链最新的区块,来表示自己是什么时候出生的。已有的研究表明,攻击者只能对时钟链进行有限的操作。

在设计中,时钟链是一条单独的链。在实现中,时钟链变成了从 Tree-Graph 中选区块构造了,这是出于一些其他细节的考虑。

多谢指教

关于liveness attack攻击的说明文章太少了。。。请问。。我能理解为比特币的双花吗?

不一样。

好吧,看来要完全看懂必须先更深入理解一下liveness attack了,谢谢大佬指导!

首先,Conflux 的确认规则和比特币、以太坊是不一样的,不仅要看确认的子树大小,还要看兄弟子树的大小。(还有一些其他的细节)

在出块速度慢时,可以不用看,这个有论文证明过。但出块快时,像 Conflux 一定要看。

所谓 Liveness Attack, 其中一个例子就是,让好人挖出了两个大小差不多的子树。那么按照确认规则,哪个子树都不能确认。

已经确认的区块依旧很安全,但没有新区块被确认了。这就是 Liveness Attack.

我的理解:正常情况下一条pivot可以实现几乎所有区块的依附,现状出现两个子树,按照权重都可以作为pivot 枢轴链,就无法让所有区块依附了,有的区块如果被认为是真实那么另一条pivot的交易就会被丢弃造成损失,所以虽然一直有新区块接父亲区块和兄弟区块却无法再被承认—否则导致另一条链的交易被否认,新块的验证无法确认,整个链安全性降低

可以这么理解吗