参与分数
参与分数是 ZooBC 衡量已注册节点工作完成得如何的指标。它的范围是 0 到 100%,每个节点都从 20% 起步。当节点自己的区块携带它因转发数据而赚得的回执时,分数上升;当节点在跳过一个轮次后处于缺席状态时,分数下降。分数决定节点在分配新 ZBC 的 coinbase 抽奖中的机会,而分数降到零的节点会失去席位。它不会改变由谁出块。
刻度
在内部,分数是一个 0 到 10^13 的整数,显示为 0 到 100%。每个节点都从默认值 2 × 10^12(即 20%)起步,创世席位也不例外。队列中的节点没有分数;准入时写入默认值。分数由每个节点根据链本身计算得出。它不是用户给出的评分,也不是质押。
如何上升:节点自己区块中的回执
转发赚取的是回执,而不是分数。分数在节点轮到出块时才会变动:在它产出的区块中,它发布其赚得回执的一个样本,每个验证者都会检查这些回执。出示的回执数量会与一个基准值比较:
pivot = floor(min(|S| − 1, P) / 2)
其中 S 是抽签集合(未被暂停的活跃节点),P 是优先对等节点的数量,在 mainnet 上为 12。有 11 个可选节点时,基准值为 5;从 13 个可选节点起,基准值为 6。换句话说,基准值大约是出块者本可出示数量的一半。
出示的回执多于基准值,出块者的分数就上升;少于基准值,分数就下降。变动的幅度还会按活跃节点的数量缩放。结果始终保持在 0 到 100% 之间。因此,区块中回执很少的节点即使从不错过轮次,分数也会逐渐下滑。
上升的速度是有意放慢的:节点少于 2,880 个时,一个产出全部区块并附带回执的节点需要 30 天才能从 0 升到 100%,平均每个 12 小时的分数单位约升 1.67 分。
如何下降:缺席
从任何一个被跳过的轮次起,直到其下一个自己的区块,节点都处于缺席状态,每个单位(节点少于 2,880 个时为 12 小时)损失 5 分,下降速度是完美节点上升速度的三倍。节点少于 2,880 个时,沉默的节点从 20% 降到零需要 2 天,从 100% 降到零需要 10 天。见 错过轮次、暂停与除名。
有些事情完全不会影响分数。存储证明失败不会扣分:在投票中被多数否决的存储持有者只会失去该纪元的存储奖励(见 去中心化存储池)。在高度 40 之前,链处于预热阶段,分数不会有任何变化。而且没有每小时的签到,也没有投票:分数只来自区块所携带的内容和节点跳过的轮次。
分数决定什么
收入。 每个区块的新币和手续费都通过 coinbase 抽奖 分配。该区块的奖励池(它的 coinbase、它的手续费以及长效池的一部分)被切分成相等的份额,每次抽奖一份。每次抽奖都以与分数成正比的概率选出一个节点,所用的生成器以前一个区块的种子和标签 zbc-coinbase 初始化,因此每个节点算出的中奖者都相同。一个节点可能在同一个区块中赢得多次抽奖,分数低的节点也可能中奖。前两个区块之间的间隔每有一秒就进行一次抽奖,最多 600 次,而且抽奖次数永远不超过抽奖券持有者的数量(奖励池较大时可以提高次数,但限制相同)。抽奖券持有者是已经成熟、既不处于缺席状态也未被暂停的已注册节点。如果他们都没有任何分数,奖励池就平均分配。
席位。 分数降到零的节点会被除名,除非这会使剩余的活跃节点少于三个。
仅此而已。分数不是出块者抽签的输入,也不计入分叉选择中的区块权重。
为什么把权力与收入分开
让分数不参与抽签是有意为之。分数高的节点不会因此获得额外的链上权力:它产出的区块不会更多,选择的种子不会更多,把交易排除在外的机会也不会更多。出块权力对每个席位都是均等的,而收入则跟随所衡量的工作。质押在两者中都不起作用:它只是让节点进入队列。
每一个与分数相关的数字,例如起始的 20% 以及上升和下降的速率,都是该链的创世参数。