包与模块
AftermathLSD 包

包的功能分布在多个模块中。关键模块如下:
staked_sui_vault 模块
该模块本质上是与协议交互的接口,为协议用户提供主要入口点。可使用以下功能:
请求质押:用户向协议提供 SUI 代币,并按当前 Epoch(纪元)的 SUI <-> AFSUI 汇率立即收到相应数量的 AFSUI。
请求解除质押:用户提供 AFSUI,换回相应数量的 SUI。有两种方式:常规解除质押,用户在下一个 Epoch 开始时收到 SUI;原子解除质押,用户立即收到 SUI。此外还可以对 StakedSui 对象进行再质押。
Epoch 切换处理:Sui 质押框架的工作流与 Epoch 切换处理紧密耦合。在每两个 Epoch 之间,Sui 框架会执行若干操作,其中最重要的是收集奖励和激活质押。为了在协议中同步这些变化,需要触发一个 crank 函数。受 Sui 框架限制,该函数很可能需要触发多次。在 Epoch 切换处理完成之前,协议处于未定义状态,暂停运作。触发 crank 函数的一方会获得激励费用。为使 Epoch 切换处理顺畅,Aftermath 运行了一个机器人,监控 Sui 链上状态并及时发起 Epoch 处理。
更新验证者费用:若协议已登记某验证者,该验证者会收到一个 Operation Capability 对象,可用于修改对应验证者的费用。验证者费用从每笔铸造的 AFSUI 中扣取,并直接发送到验证者地址。

actions 模块
该模块实现协议的业务逻辑,即前文 staked_sui_vault 模块描述中讨论的内容。
staked_sui_vault_state 模块
该模块提供 staked sui vault 的具体实现,拥有铸造和销毁 AFSUI 的权限,同时负责协议配置。其主要职责是保管全部 StakedSui 对象和 SUI 余额。StakedSui 通过一个 Storage 实体来组织。
storage 模块
Storage 是一层抽象,用于保管 StakedSui 对象并实现解除质押逻辑。解除质押是 LSD 协议的关键环节,某种意义上决定了协议的表现。为此,Storage 维护一个按验证者表现升序排列的解除质押队列,来自非活跃和低表现验证者的质押会被优先解除。为避免瞬间抽空单个验证者,每笔解除质押会分摊到多个验证者上。
validator 模块
该模块实现 Operation Capability 对象的逻辑。持有该对象即可修改对应验证者的费用值。
Aftermath LSD 协议还使用了以下附加包。
Safe 包
该包提供一个名为 Safe 的模块。该实体可存放任意类型的对象,并向被授权的模块提供该对象的可变引用;同一时间只能授权一个模块。LSD 协议用它来存放 AFSUI Treasury,并向 staked sui vault state 模块提供授权访问。
ReferralVault 包
Aftermath LSD 协议的用户可以使用推荐系统。该模块提供管理推荐人与被推荐人关系以及收取分成的逻辑。
Treasury 包
协议会收取多种费用。Treasury 实体用于归集费用中的特定部分,供日后不同用途使用。
Utilities 包
Aftermath 的高性能数学原语与函数集合。
LinkedSet 包
LinkedSet 基于 Sui 框架的 LinkedTable 实现,用于实现解除质押队列。
SuiSytemUtils 包
与 Sui System 交互的方法集合。
Last updated