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 |
|
#1059 in 神奇豆子
每月下载量 4,209
在 35 个crate中使用(直接使用23个)
2.5MB
45K SLoC
许可证:Apache-2.0
lib.rs
:
收集器选择模块。
用于管理并行链收集器的模块。
概述
收集器选择模块管理并行链的收集器。 收集不是一项安全活动,并且此模块不实现任何博弈论机制来满足所选集合的 BFT 安全假设。
术语
- 收集器:并行链的区块生产者。
- 抵押:为候选人注册预留的
Balance
金额。 - 无敌:保证在收集器集中的账户。
实现
最终的 Collators
从两个单独的列表中聚合而成
Invulnerables
:由治理机构指定的集合。这些账户将始终担任验证者。CandidateList
:这些是验证者任务的候选人,可能或可能不被选为最终验证者。
当前实现通过简单的拍卖机制解决CandidateList
的拥堵。候选人投标以获取验证者槽位,在会话结束时,拍卖结束,前几名候选人被选为验证者。选定的候选人数量由DesiredCandidates
的值决定。
在达到满员容量之前,候选人可以通过在register_as_candidate
中放置最低保证金来注册。然后,如果某个账户想参加验证者槽位拍卖,他们必须通过在take_candidate_slot
中放置更高的保证金来取代现有的候选人。现有的候选人可以通过update_bond
来提高他们的投标。
在任何时候,如果一个账户提供了比目标账户更高的保证金,他们可以取代目标账户在候选人名单中的位置。虽然新加入者希望尽可能少地存款以参加拍卖,但替代威胁激励候选人尽可能接近他们的预算进行投标,以避免被取代。
名单中不在“获胜”槽位的候选人也可以通过update_bond
降低他们的保证金,但试图降低其保证金并处于顶部槽位的候选人将失败,以强制执行拍卖机制并具有有意义的投标。
如果验证者的总数低于MinEligibleCollators
,则不允许候选人被踢出或leave_intent
。这是为了确保始终存在一些验证者,即有人有资格产生一个区块。
当新的会话开始时,将按照最高存款的顺序选择候选人,直到达到所需的验证者数量。候选人在会话之间可以增加或减少他们的存款,以确保他们在验证者名单中有一个槽位。
奖励
验证者选择模块维护一个链上账户(“奖金池”)。在每个区块中,编写该区块的验证者将获得
- 奖金池一半的价值。
- 区块内交易费用的一半。交易费用的另一半存入奖金池。
要启动奖励,必须将ED转移到奖金池地址。
注意:最终,奖金池的分配可能会根据这个问题中讨论的内容进行修改。
依赖关系
~18–33MB
~561K SLoC