Conflux 进阶课
在这里,Conflux 团队成员将敞开心扉,权威解析 Conflux 网络最新进展、生态构建进程等信息,没有八卦、没有小道消息,绝对干货、绝对知无不言,想要 360° 无死角了解 Conflux,来这里就够了!
在比特币为代表的无许可区块链共识系统中,为了保证安全性,系统的出块速度和交易吞吐率都必须被限制在一个较低的水平。Conflux 通过采用独创的树图结构,允许基于工作量证明(Proof of Work, PoW)的区块链系统通过并发出块的方式来提升吞吐率,从而实现了不牺牲安全性与去中心化的效率提升。
上篇文章我们为大家介绍了以比特币、以太坊为代表的主流项目的矿工激励模型。和这些项目相似,Conflux 的矿工奖励也包括区块奖励和交易奖励。除此之外,Conflux 的矿工奖励还包括存储维护奖励。今天,我们先来说明区块奖励部分是怎么分配的。
Conflux 的区块奖励由基础区块链奖励和惩罚系数决定。
区块奖励 = 基础区块奖励 × (1 – 惩罚系数)
基础区块奖励的具体数值会在经济白皮书中公开。目前我们可以透露的是,基础区块奖励的数值由 Conflux 系统生成的总区块数量确定。系统运行时间越长,基础区块奖励越低。
在上期内容中我们提到,Conflux 的共识协议不丢弃任何区块。也就是说,攻击者的区块也会保留。为了使攻击者为攻击行为付出代价,Conflux 的区块奖励是在基础区块奖励的基础上,扣除一定的比例。我们希望诚实区块的惩罚系数很小,而攻击区块的惩罚系数很大。
为了搞明白惩罚系数怎么设计,我们就必须分析攻击者的行为特点。下图中以一个例子,说明了一个坏人如果想挖分叉链,就必须刻意无视一些区块。
要描述这个机制,就要先回顾一个之前讲过的概念——光锥外区块 (anticone-block)。在有向无环图(DAG)中,如果两个区块之间没有一条有向路径,则称这两个区块互为对方的 “光锥外区块”。如果把有向边的关系理解成时间的先后顺序或者因果关系,那么光锥外区块就是相互之间无法通过有向边确定先后顺序的区块。比如在下图中,B 和 C 互为对方的光锥外区块。
在 Conflux 中,一个区块的区块奖励与它的光锥外区块的数量有关:光锥外区块的数量越多,则这个区块的奖励越少。这样,当攻击者在分叉链上挖出一个新的“坏人区块”时,那些被他无视的区块,都会成为坏人区块的“光锥外区块”,从而减少坏人区块的区块奖励,对攻击者造成经济上的惩罚。而且这个惩罚是永久性的,因为即便攻击成功回滚了枢轴链,也不会改变光锥外区块的关系和数量。
实际上,从 Conflux 中所有区块构成的树图结构来看,攻击者发起分叉攻击的情况下,与自私挖矿(将挖出来的新区块雪藏一段时间后再广播,以减少其他矿工在主链上挖矿的时间,让自己在主链上占有更大优势)的情况下,形成的树图结构是非常相似的。所以分叉攻击与自私挖矿在树图结构上无法区分,表现出来都是有一些区块似乎广播得特别慢,有很多光锥外区块。不过其实也不需要区分到底是分叉攻击还是自私挖矿,反正都一样惩罚总没错。
在目前 Conflux 的系统中,一个区块 b 因“光锥外区块”受到的惩罚是按照如下步骤计算的:
1.确定该区块所在的 epoch ;
2.在所有 epoch 不晚于 n+10 的区块中,计算在区块 b 的光锥外区块的数量 x;
3.如下图,取:
则 η 就是区块 b 的惩罚比值。如果在没有惩罚的时候,区块 b 的基础区块奖励是 y,那么此时,区块 b 获得的区块奖励就是(1-η) ·y。
在正常网络环境下,一个诚实矿工挖出的区块一般只有不超过 5 个光锥外区块,这意味着诚实矿工只会损失不超过 0.25% 的区块奖励。而随着攻击者藏块时间和数量增加,区块奖励会迅速降低。此外,尽管在这个过程中攻击者藏起来的区块也会同时增加诚实矿工区块的光锥外区块数量,但是由于诚实矿工本来的光锥外区块数量很少,所以并不会在区块奖励上受到太大影响。
我们通过实验验证了在攻击者进行分叉攻击时,区块奖励收益随藏块时间增加而受到的影响。在下图中,横轴代表了攻击者在这一攻击中的藏块时间,纵轴代表了攻击者“实际收益”与“诚实行为收益”的比值,四种颜色对应攻击者控制全网 10%, 20%, 30%, 40% 算力的情况。可以看出,随着藏块时间的增加,攻击者获得的区块奖励会随着藏块时间增加而迅速降低,最终在一分钟到一分半的时候降为 0。
下一期我们将为大家介绍 Conflux 矿工激励模型中的交易奖励机制是怎样设置的。