今天让我们聊聊 Nervos CKB 上最靓的仔 —— 矿工,矿工在 CKB 上出了一个块究竟能获得多少种奖励呢,本文就带大家来一探究竟!
这边我们截取了目前正在运行的 V0.17 版本的 CKB 测试网,区块高度为 888 的区块的区块奖励发放数据图。
我们来仔细研究一下呐,最上面的是一段 0x 开头的数字,这是这笔转账交易的哈希值,然后左边我们可以看到“Cellbase for Block 877”,这说明这笔交易是由系统的 cellbase 发出的区块奖励,而不是一笔用户之间的转账交易。“for Block 877”说明这笔系统的区块奖励是发给区块高度为 877 的区块的。
看到这里你是不是觉得有点奇怪,明明我们查看的是区块高度 888 的区块,怎么其中发的奖励是发给区块 877
的,这个怎么和比特币不太一样,别着急我们先继续看右边的内容。右边最上面的是区块奖励发送的地址,地址尾号是“jpn”,让我们分布看一下区块 888 和区块 877 的具体出块信息图,我们可以看到区块 888 的出块者的地址尾号是“cve”,而区块 877 的出块者的地址尾号是“jpn”,这也验证了前面的“Cellbase for Block 877”,区块 888 发的区块奖励的确是给到了挖出区块 877 的矿工。
区块高度 888
区块高度 877
造成这个现象的原因是因为 Nervos CKB 采用了新型的共识机制 —— NC Max,关于 NC Max
的详细信息可以参考:让中本聪共识再次伟大 (上)、(下)。
这里就不再赘述了,简单来说,根据目前暂定的参数,一个区块高度为 N 的区块的出块奖励会在区块 N+11 通过 Cellbase 发放。所以在 CKB 的网络里面挖出区块了不要着急哦,区块奖励可能需要飞一会儿。
接下来让我们继续分析上面的第一张图,我们看到地址“jpn”一共收到了 1,004.01927818 个 CKB,目前 CKB
网络暂定的小数位数为小数点后八位,最小单位为 shannon。而这么多的 CKB 是包含多个部分的奖励的,如图所示包含了:BaseReward,Secondary Reward,Proposal Reward,Commit Reward,依次可以翻译为基础发行、二级发行、提案奖励、提交奖励。接下来我们会对这几个部分进行逐一分析解答。
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 或者锁定在 NervosDAO 中无法存储数据的 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 中获得所有收益。
说了这么多,相信你对 Nervos CKB 的矿工出一个区块,能够获得哪些收益有了一个基础的了解。最后就问你要不要来 CKB 网络当这个最靓的仔呢?