CKB 挖矿奖励一览
CKB 挖矿奖励实例
我们先来看两个区块,区块高度 #88888 和区块高度 #88877。
我们可以看到几个简单的内容:
- 挖出区块 #88888 的矿工是
ryq
,但是这个区块的 cellbase 是给到了尾号为7cq
的地址 - 挖出区块 #88877 的矿工是
7cq
,但是这个区块的 cellbase 是给到了尾号为v0m
的地址 - 一个区块的奖励有四个部分:基础奖励、二级奖励、提交奖励、提案奖励
也就是说区块 #88877 的区块奖励是在区块 #88888 才发放的,这是由于 Nervos CKB 采用了新型的共识机制 —— NC Max(一个基于中本聪共识的改进版本)。简单来说,在区块奖励这边,一个区块高度为 N 的区块的出块奖励会在区块 N+11 通过 cellbase 发放。所以在 CKB 的网络里面挖出区块了不要着急哦,区块奖励可能需要飞一会儿。
另一个关于区块奖励共分成四个部分,这是由 Nervos CKB 的经济模型和 NC Max 共识机制共同决定的,我们会在下方向大家详细地进行解释。
区块高度 #88888
区块高度 #88877
CKB 区块奖励
CKB 的区块奖励主要会被分成四个部分的,分别是:
Base Reward(基础奖励)
首先我们来说的是 Base Reward(基础奖励),也就是我们经常提到 CKB 基础发行通常会把它和比特币的发行进行类比,根据 CKB 的规则,CKB 的基础发行和比特币同样是有固定上限的,而且也是每四年产量减半一次。
但是不同于比特币每个区块固定的出块奖励和固定的每 2016 个区块进行一次难度调整。目前的 CKB 采用的是 NC Max 共识协议即一个中本聪共识的改良版的共识协议,在难度调整时会计算上一个周期内的孤块率然后根据一系列参数的调节计算,进行难度调整努力确保整个网络维持一个较为恒定的孤块率水平。每次难度调整时,会计算出下一个周期的区块数量,因此每个周期内出块的数量是会发生变化的,因此如果还是采用比特币的每个区块固定的出块奖励,将无法保证 CKB 按照确定的每四年产量减半的设定。
因此 CKB 的调整是根据周期进行调节的,每个周期内的总出块奖励是一个固定值,目前一个周期的目标时间为 4 小时,也就是说当一个周期的出块间隔时间变长,出块数量减少的时候,每个区块的出块奖励会随之增多,反之依然。通过这种方式可以使得 CKB 网络按照每 4 小时的整数周期计算时,始终发放的是一个确定的固定数量的区块总奖励,这样就可以确保每四年产量减半的系统设定。
Secondary Reward(二级奖励)
接下来我们要说的是 Secondary Reward(二级奖励),也就是二级发行部分。
二级发行是 CKB 的发行中比较不同于比特币的地方。因为同比特币一样,如果网络只有基础发行的话,随着减半次数的增多,矿工挖矿获得的出块奖励将会越来越少,矿工只能寄希望于获取更多的手续费来维持收支平衡,而在一个比较固定 TPS 的网络中,不断增长的手续费是会抑制用户转账的,当矿工无法获得足够多的奖励的时候,可能会使得整个网络的算力下降,影响整个网络的安全性,因此为了在多次减半后仍能激励矿工持续地维护网络安全,CKB 的发行中设置了二级发行。
二级发行是和基础发行同步进行的,二级发行每年发行的数量是固定的,二级发行的 CKB 和基础发行的 CKB 是完全一样的 Nervos Layer1 原生 Token。当然在 CKB 的经济模型提案的设计中,二级发行并不是全部给到矿工的,而是会根据 CKB 实际处于的不同状态进行划分的。因为 CKB 不仅仅是一种原生的 Token,拥有 1 CKB 还代表着拥有 1 Byte 的全球状态的存储空间。因为矿工会为不断增长的全球状态数据付出了持续的硬件成本,因此存储了数据的正在使用中的 CKB 部分对应的二级发行会补偿给矿工。而对于那些未存储数据占用全球状态的始终处于流动状态的 CKB 或者锁定在 Nervos DAO 中无法存储数据的 CKB,矿工已经收取了交易转账的手续费,而且并没有付出额外的持续的硬件存储成本,因此这一部分对应的二级发行将不会给到矿工,而是按照别的分配方式。
我们可以通过以下两张图了解 CKB 的三种不同的状态和二级发行的具体分配规则:
CKB 的三种不同状态
二级发行的具体分配方案
在这里我们主要关注的是二级发行中补贴给矿工的这一部分,我们目前并不清楚二级发行的具体发行规则,但是我们可以有大致以下几个比较笼统的概念。
- 首先根据 CKB 经济模型提案可以明确二级发行每年发行的总量是一个定值。
- 二级发行中分配到矿工的部分受 CKB 的使用率影响,CKB 使用率越高,矿工可获得二级发行中 CKB 的比例越高。
Proposal Reward(提案奖励)和 Commit Reward(提交奖励)
最后我们要说的是 Proposal Reward(提案奖励)和 Commit Reward(提交奖励)。
这两部分的奖励都是来自于交易转账的手续费。至于为什么交易转账费会分成两个部分:Proposal Reward 和 Commit Reward,这也和 CKB 网络采用的 NC Max 共识算法息息相关。NC Max 中为了消除区块传播延迟的瓶颈采用了两步交易确认的方案。简单来说在 CKB 网络中,一笔交易需要经历的周期是:
- 用户发送交易;
- 交易进入交易池;
- 交易进入区块结构的提案区(Proposal zone);
- 交易进入区块结构的提交区(Commitment zone)(既一般意义的交易打包进入区块)。
因此一笔交易会被放入区块结构两次,一次是 Proposal,一次是 Commit,根据目前暂定的规则,针对一笔非 Cellbase 交易,最早将交易放置入提案区的矿工将获得该交易的交易费的 40%,而将交易放置入提交区的矿工将获得该交易的交易费的 60%。
而在当前发布的版本中,区块高度为 N 的区块提案的交易只能在之后的2到10个区块之间进入提交区并最终在区块链中确定。
因此,挖出区块 N 的矿工可以获得的 Proposal Reward 只有在区块 N+11 才能够真正算清:在区块 N+2 至区块 N+10 所 Commit 的交易中,找到区块 N 首次 Proposal 的交易,挖出区块 N 的矿工可以获得这些交易的手续费的 40%。这解释了为什么区块 N 的挖矿收入最终要在区块 N+11 发放,因为之前是无法计算出 Proposal Reward 的。
当然同样的,区块 N 的矿工也只能打包区块 N-10 至区块 N-2 的提案区内的交易,当然前提是需要确认这些交易并没有被前面的区块打包过。
按照上面的图去理解的话,挖出区块高度 N 的矿工可以获得:
- Commit Reward:Block N-10 ~ Block N-2 中被 Proposal 但是没有被 Commit 并最终在 Block N 中完成 Commit 的所有交易的交易手续费的 60%;
- Proposal Reward:在 Block N 中被 Proposal,并在 Block N+2 ~ Block N+10 中完成 Commit 的所有交易的交易手续费的 40%;
- 另外,挖出区块高度 N 的矿工,最终会在 Block N+11 中获得所有收益。