5 个版本 (主要破坏性更新)

4.0.0 2024 年 7 月 18 日
3.0.0 2024 年 7 月 12 日
2.0.0 2024 年 6 月 21 日
1.0.0 2024 年 5 月 23 日
0.0.0 2024 年 5 月 15 日

#256 in 魔法豆

Download history 125/week @ 2024-05-14 168/week @ 2024-05-21 226/week @ 2024-06-18 389/week @ 2024-06-25 170/week @ 2024-07-02 583/week @ 2024-07-09 724/week @ 2024-07-16 537/week @ 2024-07-23 600/week @ 2024-07-30

每月下载量 2,505
7 crate 中使用(直接使用 3 个)

Apache-2.0

2MB
37K SLoC

委托质押模块

本模块实现了sp_staking::DelegationInterface,为delegatorsagents提供委托功能。它旨在与StakingInterface一起使用,并依赖于Config::CoreStaking提供基本的委托功能。

目前,它没有暴露任何可调用的函数,但设计有未来暴露它们的愿景,以便任何外部账户、链下实体或xcm MultiLocation(如 parachain 或智能合约)都可以使用。

关键术语

  • 代理:接受其他账户的委托并代表他们进行委托资金质押的账户。有时也称为Delegatee
  • 委托人:将资金委托给agent的账户,并授权他们使用这些资金进行质押。
  • 代理账本:一个数据结构,用于存储有关agent的重要信息,例如他们接收到的总委托、对他们的任何惩罚等。
  • 委托:一个数据结构,存储了delegator委托给agent的资金数量。

目标

直接在质押模块上进行提名扩展性不佳。为了解决这个问题,创建了提名池,将委托人的资金汇集到一个账户中,然后进行质押。但这有一个非常关键的局限性,即资金从委托人账户移动到池账户,因此委托人失去了对资金的控制权,无法用于其他目的,如治理。本模块旨在通过将质押模块扩展到支持一个新的基本功能:将资金委托给agent进行质押,来解决这个问题。然后,代理可以代表委托人将委托的资金质押到Config::CoreStaking

提款管理

代理解押不管理委托人连续提款的顺序。这取决于此模块的消费者来实现,即如何让委托人从Config::CoreStaking提取不可解押的资金。

奖励和惩罚

本模块不强制执行任何特定的奖励或惩罚应用策略。这由agent账户决定如何应用奖励和惩罚。

这重要地允许此模块的客户构建自己的奖励/惩罚策略。例如,一个agent账户可以选择先对奖励池进行惩罚,然后再对委托人进行惩罚。或者部分奖励可以进入一个保险基金,可以用来弥补任何潜在的惩罚。目标是最终允许外国MultiLocations(智能合约或另一条链上的模块)构建自己的类似NominationPools的池化质押解决方案。

核心功能

懒式削减

直接提名人在抵押 pallet 中无法很好地扩展的原因之一是所有提名人同时被削减。这是昂贵的,并且需要受限制的操作。

本 pallet 实现了懒式削减机制。对代理的任何削减都将其记录在其AgentLedger中,作为待处理的削减。由于实际金额持有在多个委托人账户中,此 pallet 无法知道如何应用削减。这是代理的职责,逐个委托人地应用削减。抵押 pallet 确保待处理的削减不超过抵押金额,并会在所有待处理的削减清零之前冻结进一步的提现。

此 pallet 的用户可以使用DelegationInterface::delegator_slash来应用削减。

从提名人到代理的迁移

更多详情这里

提名池与委派抵押

本 pallet 不是提名池的替代品,而是在抵押 pallet 之外增加了新的原语,提名池可以使用它来支持基于委派的抵押。它可以看作是提名池相关抵押 pallet 的扩展。技术上,这些更改也可以在那些 pallet 中进行,但那将意味着重大的重构和高度可能引入回归的风险。采用这种方法,我们可以保持现有的 pallet 最小化更改,并引入一个可选用于提名池的新 pallet。愿景是以可配置的方式构建它,使得运行时可以选择是否使用此 pallet。

话虽如此,以下是以下两者之间的主要区别

无委派支持的提名池

  1. 从委托人将资金转移到池账户,并且
  2. 作为直接提名人从池账户抵押。

有委派支持的提名池

  1. 从委托人将资金委派到池账户,并且
  2. 作为抵押 pallet 上的代理账户从池账户抵押。

区别在于,在第二种方法中,委派资金将锁定在用户的账户中,使他们能够参与允许使用持有资金的用例,例如参与治理投票。

提名池仍然在池管理、奖励分配、懒惰削减等方面承担所有繁重的工作,因此不应被这个组件所替代。

局限性

  • 奖励不能自动复利。
  • 削减是懒惰的,因此可能会出现一段时间,账户可以使用资金进行诸如治理投票等操作,尽管它们应该被削减。

依赖关系

~17–32MB
~533K SLoC