Eigenlayer ServiceManagerBase 介绍

  • Layr-Labs
  • 发布于 2025-03-13 13:21
  • 阅读 17

本文档介绍了ServiceManagerBase合约,该合约是AVS将要部署的ServiceManager合约的最小实现。

文件 类型 代理
ServiceManagerBase.sol Singleton(单例) 透明代理

库和 Mixin:

文件 注释
BitmapUtils.sol bitmap(位图)操作
LibMergeSort.sol sorting(排序)实用程序

优先阅读

概述

ServiceManagerBase 合约是一个抽象合约,它充当 AVS 将部署的 ServiceManager 合约的最小实现。本文档将通过 ServiceManagerBase 的实现的视角来查看此合约。鼓励 AVS 扩展此合约以满足他们自己的功能,例如为运营商集合实现白名单。

ServiceManager 是 AVS 在 EigenLayer 中的身份,负责:

  • 管理来自 SlashingRegsitryCoordinator 的回调,用于AVS和运营商集合的运营商注册。调用将被转发到 AVSDirectory
  • 处理向 EigenLayer 的 RewardsCoordinator 提交的奖励
  • 通过 PermissionController 管理访问权限

概念

用户访问管理

ServiceManagerBase 实现了用户访问管理(UAM),如 ELIP-003 中定义的那样,允许对哪些地址可以代表 AVS 执行各种操作进行细粒度控制。UAM 函数主要由合约所有者用于委派权限。有关建议的 UAM 模式的更多信息,请参阅 AVS 快速入门 指南。

方法:

addPendingAdmin

function addPendingAdmin(
    address admin
) external onlyOwner

此函数允许合约所有者为 AVS 添加 pending admin(待定管理员)。新的管理员必须通过 PermissionController 合约接受管理员身份才能激活。

影响:

  • 调用 PermissionController 合约上的 addPendingAdmin 以将 admin 设置为此 AVS 的 pending admin

要求:

  • 调用者必须是合约的所有者

removePendingAdmin

function removePendingAdmin(
    address pendingAdmin
) external onlyOwner

此函数允许合约所有者从 pending admin 列表中删除地址。

影响:

  • 调用 PermissionController 合约上的 removePendingAdmin 以从 pending admin 列表中删除 pendingAdmin

要求:

  • 调用者必须是合约的所有者

removeAdmin

function removeAdmin(
    address admin
) external onlyOwner

此函数允许合约所有者从 AVS 中删除管理员。

影响:

  • 调用 PermissionController 合约上的 removeAdmin 以从管理员列表中删除 admin

要求:

  • 调用者必须是合约的所有者
  • 删除后必须至少剩余一个管理员

setAppointee

function setAppointee(
    address appointee,
    address target,`
    bytes4 selector
) external onlyOwner

此函数允许合约所有者将特定函数权限委派给 appointee(被任命者)。

影响:

  • 调用 PermissionController 合约上的 setAppointee 以授予 appointee 调用由 targetselector 标识的函数的权限

要求:

  • 调用者必须是合约的所有者

removeAppointee

function removeAppointee(
    address appointee,
    address target,
    bytes4 selector
) external onlyOwner

此函数允许合约所有者撤销从 appointee 委派的权限。

影响:

  • 调用 PermissionController 合约上的 removeAppointee 以撤销 appointee 调用由 targetselector 标识的函数的权限

要求:

  • 调用者必须是合约的所有者

运营商注册

ServiceManagerBase 将状态更新传播到 AVSDirectory(用于向后兼容)。

方法:

registerOperatorToAVS

function registerOperatorToAVS(
    address operator,
    ISignatureUtils.SignatureWithSaltAndExpiry memory operatorSignature
)
    public
    virtual 
    onlyRegistryCoordinator

当运营商为 AVS 注册时,SlashingRegistryCoordinator 会调用此函数。它将调用转发到 EigenLayer 核心 AVSDirectory

影响:

  • 使用运营商的地址和签名将调用转发到 AVSDirectory.registerOperatorToAVS

要求:

  • 调用者必须是 SlashingRegistryCoordinator

deregisterOperatorFromAVS

function deregisterOperatorFromAVS(
    address operator
) 
    public 
    virtual 
    onlyRegistryCoordinator

当运营商从 AVS 取消注册时,SlashingRegistryCoordinator 会调用此函数。它将调用转发到 EigenLayer 核心 AVSDirectory 合约,以保持向后兼容性。

影响:

  • 使用运营商的地址将调用转发到 AVSDirectory.deregisterOperatorFromAVS

要求:

  • 调用者必须是 SlashingRegistryCoordinator

deregisterOperatorFromOperatorSets

function deregisterOperatorFromOperatorSets(
    address operator,
    uint32[] memory operatorSetIds
)
    public
    virtual
    onlyRegistryCoordinator

SlashingRegistryCoordinator 调用此函数以从特定运营商集合中注销运营商。

影响:

  • 使用运营商的地址、AVS 地址和运营商集合 ID 创建 DeregisterParams struct(结构体)
  • 使用构造的参数调用 AllocationManager.deregisterFromOperatorSets

要求:

  • 调用者必须是 SlashingRegistryCoordinator

奖励管理

ServiceManagerBase 允许 AVS 向 EigenLayer 的 RewardsCoordinator 合约提交奖励。

方法:

createAVSRewardsSubmission

function createAVSRewardsSubmission(
    IRewardsCoordinator.RewardsSubmission[] calldata rewardsSubmissions
)
    public
    virtual
    onlyRewardsInitiator

此函数允许 rewards initiator(奖励发起人)为 AVS 创建 rewards submission(奖励提交)。此提交将根据 stake weight(权益权重)将奖励发送给所有符合条件的运营商。

影响:

  • 对于每个 RewardsSubmission
    • 将 token(代币)从调用者转移到 ServiceManager
    • 批准 RewardsCoordinator 花费这些代币
  • 使用提供的 submissions 调用 RewardsCoordinator.createAVSRewardsSubmission

要求:

  • 调用者必须是指定的rewards initiator
  • 代币转账和批准必须成功

createOperatorDirectedAVSRewardsSubmission

function createOperatorDirectedAVSRewardsSubmission(
    IRewardsCoordinator.OperatorDirectedRewardsSubmission[] calldata
        operatorDirectedRewardsSubmissions
) 
    public
    virtual
    onlyRewardsInitiator

此函数允许 rewards initiator 创建 operator-directed rewards submission(运营商定向奖励提交),该 submission 可以更好地控制如何将奖励分配给特定运营商。

影响:

  • 对于每个 OperatorDirectedRewardsSubmission
    • 计算所有运营商奖励中的总代币数量
    • 将代币从调用者转移到 ServiceManager
    • 批准 RewardsCoordinator 花费这些代币
  • 使用提供的 submissions 调用 RewardsCoordinator.createOperatorDirectedAVSRewardsSubmission

要求:

  • 调用者必须是指定的 rewards initiator
  • 代币转账和批准必须成功

setClaimerFor

function setClaimerFor(
    address claimer
) 
    public
    virtual
    onlyOwner

此函数允许所有者设置一个可以代表 AVS 申领奖励的地址。

影响:

  • 调用 RewardsCoordinator.setClaimerFor 以设置申领者地址

要求:

  • 调用者必须是所有者

setRewardsInitiator

function setRewardsInitiator(
    address newRewardsInitiator
)
    external
    onlyOwner

此函数允许所有者更新允许代表 AVS 提交 rewards submission 的地址。

影响:

  • 更新 rewardsInitiator 存储变量
  • 发出 RewardsInitiatorUpdated 事件

要求:

  • 调用者必须是所有者

元数据管理

方法:

updateAVSMetadataURI

function updateAVSMetadataURI(
    string memory _metadataURI
)
    public
    virtual
    onlyOwner

此函数允许所有者更新与 AVS 关联的 metadata URI(元数据 URI)。

影响:

  • 使用提供的 URI 调用 AVSDirectory.updateAVSMetadataURI

要求:

  • 调用者必须是所有者

View(视图)函数

方法:

getRestakeableStrategies

function getRestakeableStrategies()
    external
    view
    virtual
    returns (address[] memory)

此函数返回 AVS 支持用于 restaking(重新质押)的 strategy(策略)地址列表。 这旨在由奖励计算系统离线调用。

返回:

  • AVS 支持跨所有 quorum(仲裁)进行 restaking 的 strategy 地址数组

getOperatorRestakedStrategies

function getOperatorRestakedStrategies(
    address operator
)
    external
    view
    virtual
    returns (address[] memory)

此函数返回特定运营商可能已使用 AVS 重新质押的 strategy 地址列表。 这旨在由奖励计算系统离线调用。

返回:

  • 运营商可能已与 AVS 重新质押的跨所有已注册 quorum 的 strategy 地址数组

avsDirectory

function avsDirectory()
    external
    view
    override
    returns (address)

此函数返回 EigenLayer AVSDirectory 合约的地址。

返回:

  • EigenLayer AVSDirectory 合约的地址
  • 原文链接: github.com/Layr-Labs/eig...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Layr-Labs
Layr-Labs
江湖只有他的大名,没有他的介绍。