Skip to content

XODE 质押 ​

Xode 共识 ​

Polkadot 采用混合共识模型。在该模型中,区块最终性组件与出块机制是相互分离的。因此,平行链只需专注于生成区块,而依靠中继链来验证状态转换。

Xode Blockchain 作为一条平行链,必须以无需信任且去中心化的方式解决以下问题。

  1. 哪些节点被允许创建区块?
  2. 如果有多个节点被允许创建区块,那么在特定时间应由哪一个节点出块?因为在任意时刻都只能有一个出块者。

Xode 共识由此而生。Xode 共识是一个用于在基于 Cumulus 的平行链上构建基于时隙 (slot) 的共识算法的框架。它致力于为此类共识引擎的流程性部分提供标准实现,并为研究人员和开发者希望自定义的组件(过滤器)提供实用的 trait。这些过滤器可自定义,用于定义何为出块时隙,并且可以组合使用,从而通过多个步骤将出块权限限制在一部分收集人之中。

在 Xode Blockchain 中,我们将采用双层过滤器方案。

  1. 质押:第一层是平行链质押过滤器,它根据质押量排名,从所有收集人候选者中选出活跃收集人池。
  2. 分配:第二层增加了另一个过滤器,将每个时隙的收集人数量缩小到一个子集。

Xode 共识只能回答哪些收集人有资格在下一个可用时隙中生成平行链区块。将该平行链区块标记为最佳区块的是 Cumulus 共识机制,而最终将该平行链区块纳入中继链并使其最终确定的,是(中继链的)BABE 与 GRANDPA 混合共识模型。一旦中继链层面的分叉得到解决,该平行链区块即被确定性地最终确认。

质押 ​

收集人只需通过一笔外部交易 (extrinsic) 绑定一定数量的 XON,即可加入候选者池。进入候选者池后,XON 持有者可以通过委托(也称为质押)来增加该候选者的质押量。

Nimbus 会根据网络中质押的 XON 数量(包括候选者自身的绑定量以及 XON 持有者的委托量)选出排名前 36 的候选者。经过筛选的池称为已选候选者,已选候选者每一轮(持续 1,200 个区块)更新一次。

分配 ​

Aura 协议 (PoA) 在 Xode Blockchain 的出块机制中发挥着关键作用。具体而言,对于 Nimbus 生成的候选者列表,Xode Blockchain 采用 Polkadot 的标准 Aura 协议来分配出块职责。在这种设置下,每个时隙的出块者以确定性的轮询方式决定。

这意味着 Xode 收集人集合中的全部 36 个候选者会按固定顺序排列,每个时隙依次分配给列表中的下一个收集人。轮询方式确保每个收集人都能获得均等且可预期的出块机会。当最后一个收集人出块后,序列将从第一个收集人重新开始。

借助 Aura,Xode Blockchain 在保持与 Polkadot 共识设计兼容的同时,确保了出块的公平性、高效性和可预测性。该协议还将出块冲突的风险降至最低,因为只有被分配到特定时隙的收集人才有权创建区块,从而确保区块链的稳定性与连续性。

不可替换候选者 ​

Xode Blockchain 共识中的不可替换 (invulnerable) 候选者,是指被指定为网络运行所必需的特定收集人节点。这些节点被标记为"不可替换",因为它们在维护共识方面承担着特殊角色,并且在特定条件下受到保护,不会被罚没或被强制移除。具体说明如下:

对网络运行至关重要: ​

  • 这些收集人在 Xode Blockchain 中是预先配置的。
  • 在网络早期阶段或运行测试网时,它们对于确保稳定性和可靠性至关重要。

不会被罚没: ​

  • 与其他候选者不同,不可替换节点不受罚没等惩罚的影响,即使其行为不当(例如离线或发生双重签名)。
  • 这种保护确保网络不会失去关键的收集人节点。

纳入 Nimbus 候选者选择: ​

  • 不可替换节点不受常规 Nimbus 候选者选择流程的约束。
  • 它们会被自动纳入活跃验证人集合。

Xaver 不可替换节点 ​

Xaver 节点是 Xode Blockchain 中指定的不可替换节点,在确保网络稳定性和可靠性方面发挥着关键作用。它由安装在专用设备上的轻客户端组成,能够以高效、轻量的方式参与网络。作为不可替换节点,Xaver 不会被罚没,并且无需经过标准的收集人候选者选举流程,从而保证其持续运行。这一设计确保即使在收集人可用性降低或网络中断的情况下,Xaver 节点仍能维持出块,防止潜在的停滞。借助其客户端配置的轻量特性,Xaver 节点还提升了资源利用效率,同时作为维护 Xode 网络无需信任、去中心化运行的中坚力量。

质押流程 ​

质押流程从生成节点密钥和设置会话密钥开始,这些是节点参与网络所必需的。在确认节点拥有有效的会话密钥后,即可注册该节点,使其开始参与出块和质押活动。注册完成后,可以通过多种方式管理节点:可以将其暂时下线、重新上线,或在必要时将其从网络中永久移除。

节点注册并激活后,必须进行绑定才能参与出块流程。如果节点在某个会话期间创建了区块,它将保持活跃并继续参与。然而,如果节点在其会话期间未能创建区块,它将被罚没并被自动设置为离线,从而降低其参与后续会话的机会。该机制确保只有活跃且可靠的节点留在网络中。

此外,节点运营者可以设定佣金比例,用于决定奖励在节点与其质押者(委托人)之间的分配方式。质押者可以将其 XON 代币委托给某个节点,从而根据其质押量获得奖励。奖励在扣除节点佣金后发放。如果质押者希望改变其参与方式,可以解除质押其 XON 代币,撤销委托并取回代币。这一流程有助于维持一个动态且安全的质押系统,使活跃的节点和参与者能够持续获得奖励。

出块流程 ​

注册节点并绑定一定数量的代币后,节点将被自动赋予 Waiting(等待中)状态。在下一个会话中,处于 Waiting 状态且拥有有效会话密钥的节点会被加入 Aura 验证人队列。这些节点从随后的会话开始具备出块资格。然而,已排队但在两个会话后仍未开始出块的验证人,将不会参与当前会话的出块。这一分阶段流程确保只有配置正确且处于活跃状态的节点才会参与出块。

当节点成功创建一个区块时,奖励将在国库 (Treasury)、出块者和质押者之间分配。具体而言,20% 的奖励归国库,其余 80% 由出块者和质押者共享。质押者根据其质押量占总质押量的比例获得奖励,出块者则在从其佣金中扣除质押者奖励后保留剩余部分。反之,如果节点在其会话期间未能创建区块,slashedAuthors 机制会跟踪其表现。在规定的最长期限内持续无响应的节点将被自动设置为 Offline(离线)。离线节点会被逐步降级,并最终从网络中移除,以维护质押系统的完整性和可靠性。

奖励计算示例 ​

奖励分配基于总奖励 22,114,400 进行计算。首先,20% 的奖励(4,422,880)分配给国库,其余 80%(17,691,520)在出块者和质押者之间分配。出块者的佣金设定为 50%,另一半(8,845,760)则根据各质押者的质押比例在质押者之间分配。例如,质押者 1 的比例为 6%(1/15),获得 530,746,该金额被加到其初始余额 90,000,000,000,000 上。后续质押者按比例获得相应份额(例如,比例为 13% 的质押者 2 获得 1,115,451,比例为 20% 的质押者 3 获得 1,604,533,依此类推),每次计算后都会减少留给下一位质押者的剩余金额。

最后,在所有质押者获得奖励后,剩余的 10,490,511 将被加到出块者的余额中,这部分体现了其佣金份额以及所有未分配的奖励。这确保了基于质押比例的精确、公平分配,同时通过断言将计算出的余额与预期值进行比对来验证结果。

候选者排序 ​

sort_proposed_candidates 函数根据三项标准对候选者列表进行排序,以确保顺序公平合理。首先,它根据候选者的离线状态进行优先排序,未被标记为离线的候选者优先。其次,它考虑候选者绑定量与总质押量之和,数值较高者优先。如果候选者仍然并列,则使用最后更新时间戳,时间戳较早者优先。这一排序逻辑确保活跃、质押充足且经验丰富的候选者排名更高。

排序完成后,更新后的列表会被写回区块链状态。排序使用 then_with 方法依次应用这些标准,仅当前一项标准无法确定顺序时才进入下一项标准。这种方法确保了确定性且公平的排名,从而优化质押或验证等任务中的候选者选择。