委托
slisBNBx 是一种不可转让的凭证,因此持有人无法通过正常的 ERC-20 transfer 进行转移。相反,该协议允许账户选择哪个钱包持有代表其铸造的 slisBNBx。这被称为委托,它是用于将一个仓位的 slisBNBx(因此其 Binance Launchpool 资格)路由到另一个钱包(例如 Binance Web3 MPC 钱包)的机制。
委托由 SlisBNBxMinter 管理,这是 slisBNBx 的铸造和销毁引擎,部署在 BNB Smart Chain 上,地址为 0x2959c423bfe5Cc6E41516599D982A29C0773F11a。有关其他 slisBNBx 地址,请参见 Lista Lending BSC Core — 本页的智能合约仅列出 Launchpool/提供者合约,而不包括 SlisBNBxMinter。
委托模型
范围
每个账户,而不是每个仓位。 单个受托人持有账户在所有抵押模块(slisBNB 提供者和 slisBNB/BNB LP 提供者)中的全部记录 slisBNBx 仓位。请注意,这仅是用户的部分 — 每个模块会铸造一部分费用给 Lista 钱包,这不属于委托金额的一部分。
细粒度
通过铸造器无法进行部分委托。 SlisBNBxMinter.delegateAllTo 是全有或全无的。传统的 CDP 提供者是一个独立的、仍然活跃的路径,支持按金额委托 — 请参见下面的说明。
默认值
如果账户从未设置过受托人,则持有人默认为账户本身。请注意,此默认值是延迟应用的:delegation[account] 在第一次余额变化的再平衡期间写入,因此在此之前读取会返回 address(0),而不是账户。将零结果视为“委托给自己”,而不是未设置和损坏。
可变性
可以随时通过 delegateAllTo 更改。 它不是在铸造时固定的。
对抵押品的影响
委托仅更改谁持有 slisBNBx 凭证。它不会移动、重新拥有或以其他方式影响 Moolah 中的基础抵押品。
铸造器将委托存储为单个映射,delegation[account] => delegatee,并在 userTotalBalance[account] 中跟踪每个账户在每个模块中的 slisBNBx(用户部分,不包括铸造给 Lista 的每个模块的费用部分)。两者都是只读的,并且可以在链上查询。
更改受托人
重新分配受托人是原子的:铸造器从旧持有人处销毁账户记录的 userTotalBalance,并在一次调用中将相同数量铸造给新的受托人(一个受托人可能为多个账户持有,因此这不一定是他们的全部余额)。在切换期间不会对抵押品进行再平衡 — 只有持有人发生变化。
delegateAllTo(由账户调用)
function delegateAllTo(address newDelegatee) external;由账户本身调用(msg.sender)。它将账户的整个 slisBNBx 余额委托给 newDelegatee。
如果
newDelegatee已经等于当前受托人,则无操作(此相等性检查首先运行)。否则,零地址作为新受托人被拒绝。
内部:读取
userTotalBalance[account],从当前持有人(旧受托人,或如果未设置则为账户本身)销毁该金额,记录delegation[account] = newDelegatee,然后将销毁的金额铸造给newDelegatee。
模块专用变体 syncDelegatee(address account, address newDelegatee) 从注册的抵押模块执行相同操作。它不能由集成商调用。
传统的 SlisBNBProvider.delegateAllTo 已禁用
SlisBNBProvider 抵押模块还从早期设计中公开 delegateAllTo(address)。一旦该提供者连接到铸造器,其自身的 delegateAllTo 将以 "not supported" 失败,并且必须通过 SlisBNBxMinter.delegateAllTo 进行委托。
同一个
slisBNBx代币有多个铸造器,传统的 CDP 提供者仍然活跃且未暂停。它们支持按金额委托,并且不受铸造器限制,因此“所有委托都通过铸造器”适用于铸造器拥有的模块,而不适用于整个代币。在假设适用哪个路径之前,请阅读特定提供者。
事件
这些事件跟踪委托和由此产生的凭证移动。请注意,它们的参数都没有被 indexed,因此您无法在节点上按账户过滤 — 按地址和 topic0 获取,然后在客户端侧过滤:
ChangeDelegateTo
SlisBNBxMinter
ChangeDelegateTo(address account, address oldDelegatee, address newDelegatee, uint256 amount)
受托人重新分配;amount 是实际从旧持有人销毁并铸造给新持有人的 slisBNBx。
UserModuleRebalanced
SlisBNBxMinter
UserModuleRebalanced(address account, address module, uint256 userPart, uint256 feePart)
在再平衡期间为账户重新计算的每个模块的 slisBNBx。
Rebalance
SlisBNBxMinter
Rebalance(address account, uint256 latestModuleBalance, address module, uint256 latestTotalBalance)
模块触发了再平衡;latestTotalBalance 是账户在各模块中的新总额。
SlisBNBProvider合约仅从传统的、现已禁用的路径发出其自身的ChangeDelegateTo(address account, address oldDelegatee, address newDelegatee)(注意:没有amount字段)。对于当前的铸造器架构,请监听上面的SlisBNBxMinter事件。
集成注意事项
读取,不要期望转移。
slisBNBx是不可转让的。要查找账户的凭证持有人,请读取delegation[account]— 零结果意味着账户本身,而不是错误;要查找账户自己的金额,请读取userTotalBalance[account]。提款从持有人处销毁,而不是从您处销毁。 当抵押品离开 Moolah 时,铸造器从当前持有它的钱包中销毁
slisBNBx— 如果您设置了受托人,则从受托人处销毁。您不需要持有凭证或控制该钱包即可提款。如果持有人的余额不足以销毁所需金额,铸造器会销毁现有的部分而不是失败,因此提款在凭证方面永远不会失败。委托不会自动再平衡。
delegateAllTo按原样移动现有余额。后续的抵押品供应/提款将凭证重新平衡到当前受托人。新持有人获得 Launchpool 资格。 因为资格是根据
slisBNBx余额在链下计算的,所以委托后持有凭证的钱包是获得奖励的。
Last updated
Was this helpful?