#pallet #selection #collator #polkadot #substrate #parachain #collators

无 std pallet-collator-selection

一个简单的模块,用于选择并行链的收集器。 (polkadot v1.15.0)

30 个版本 (16 个重大变更)

18.0.0 2024 年 7 月 18 日
17.0.0 2024 年 7 月 12 日
16.0.0 2024 年 6 月 24 日
15.0.0 2024 年 5 月 24 日
0.0.0 2022 年 11 月 21 日

#1059 in 神奇豆子

Download history 613/week @ 2024-04-16 1715/week @ 2024-04-23 890/week @ 2024-04-30 606/week @ 2024-05-07 850/week @ 2024-05-14 1089/week @ 2024-05-21 1153/week @ 2024-05-28 1080/week @ 2024-06-04 1034/week @ 2024-06-11 917/week @ 2024-06-18 1515/week @ 2024-06-25 793/week @ 2024-07-02 1015/week @ 2024-07-09 1150/week @ 2024-07-16 1018/week @ 2024-07-23 941/week @ 2024-07-30

每月下载量 4,209
35crate中使用(直接使用23个)

Apache-2.0

2.5MB
45K SLoC

许可证:Apache-2.0


lib.rs:

收集器选择模块。

用于管理并行链收集器的模块。

概述

收集器选择模块管理并行链的收集器。 收集不是一项安全活动,并且此模块不实现任何博弈论机制来满足所选集合的 BFT 安全假设。

术语

  • 收集器:并行链的区块生产者。
  • 抵押:为候选人注册预留的 Balance 金额。
  • 无敌:保证在收集器集中的账户。

实现

最终的 Collators 从两个单独的列表中聚合而成

  1. Invulnerables:由治理机构指定的集合。这些账户将始终担任验证者。
  2. CandidateList:这些是验证者任务的候选人,可能或可能不被选为最终验证者。

当前实现通过简单的拍卖机制解决CandidateList的拥堵。候选人投标以获取验证者槽位,在会话结束时,拍卖结束,前几名候选人被选为验证者。选定的候选人数量由DesiredCandidates的值决定。

在达到满员容量之前,候选人可以通过在register_as_candidate中放置最低保证金来注册。然后,如果某个账户想参加验证者槽位拍卖,他们必须通过在take_candidate_slot中放置更高的保证金来取代现有的候选人。现有的候选人可以通过update_bond来提高他们的投标。

在任何时候,如果一个账户提供了比目标账户更高的保证金,他们可以取代目标账户在候选人名单中的位置。虽然新加入者希望尽可能少地存款以参加拍卖,但替代威胁激励候选人尽可能接近他们的预算进行投标,以避免被取代。

名单中不在“获胜”槽位的候选人也可以通过update_bond降低他们的保证金,但试图降低其保证金并处于顶部槽位的候选人将失败,以强制执行拍卖机制并具有有意义的投标。

如果验证者的总数低于MinEligibleCollators,则不允许候选人被踢出或leave_intent。这是为了确保始终存在一些验证者,即有人有资格产生一个区块。

当新的会话开始时,将按照最高存款的顺序选择候选人,直到达到所需的验证者数量。候选人在会话之间可以增加或减少他们的存款,以确保他们在验证者名单中有一个槽位。

奖励

验证者选择模块维护一个链上账户(“奖金池”)。在每个区块中,编写该区块的验证者将获得

  • 奖金池一半的价值。
  • 区块内交易费用的一半。交易费用的另一半存入奖金池。

要启动奖励,必须将ED转移到奖金池地址。

注意:最终,奖金池的分配可能会根据这个问题中讨论的内容进行修改。

依赖关系

~18–33MB
~561K SLoC