Cobo Argus
(CN)
(CN)
  • 公告
    • Cobo Argus V2 正式上线
  • Cobo Argus 产品手册
    • 账户与组织
      • 注册
        • Web3 注册
        • 邮箱注册
      • 创建 Organization
        • 邀请 Member
        • 加入 Organization
      • 管理账户
        • 登录
        • 添加登录地址
        • 绑定邮箱
        • 管理双重身份验证
        • 钱包设置
          • 更改钱包名称
          • 添加 Safe Owner(s)
          • 更改多签阈值
    • Safe{Wallet} 与 Cobo Safe
      • 创建 Safe{Wallet}
      • 导入 Safe{Wallet} 至 Cobo Argus
      • 创建 Cobo Safe
      • 添加地址
        • 团队成员添加地址
    • 自定义访问控制
      • 预授权策略
        • 策略市场(Farming)
        • 交易市场(Trading)
        • 授权流程
          • 修改授权
          • 移除授权
      • Member 与 DeFi 协议交互
        • 查看被授权的角色
        • 与 DeFi 协议单签交互
      • 自定义 DeFi 权限
        • 功能入口
        • 创建 Safe Role 并设置权限
        • 授权 Role 给成员地址
        • 发起多签交易
    • DeFi 机器人
      • 策略机器人
        • 自动收菜机器人
        • 自动撤退机器人
      • 自定义机器人
      • Webhook
        • 如何在 Cobo Argus 配置 Webhook
        • 如何连接 Argus 和 Chainbot Webhook
        • 设置 Webhook 监控合约升级事件
    • 交易管理
      • Safe Owner(s) 签名确认
    • Token Approval 管理
      • Token Approval 入口
      • 取消授权
      • 批量取消授权
      • 更新授权
    • 更新日志
  • 基础使用教程
    • Curve-Convex 策略授权和机器人教程
    • EQB 自动收菜机器人教程
    • BendDAO 自动收菜和自动撤退机器人教程
    • 使用 Argus 监控稳定币价格并在脱锚时自动撤退或兑换
    • Cobo Argus 连接 Rabby Wallet 使用教程
    • 导入 Mantle Network 教程
    • 如何使用 Cobo Argus 调整保证金比例和抵押率
    • Cobo Argus 收菜机器人自动领取 Pendle 挖矿收益!
  • Cobo Safe 技术文档
    • Cobo Account
      • Cobo Safe Account
      • Cobo Smart Account
      • 发起交易
    • Role Manager
    • Authorizer
      • Authorizer 示例
      • BaseACL
      • 其他 Authorizer
      • Hint
    • Argus 的集成
    • 审计报告与开源代码
    • 部署地址
Powered by GitBook
On this page
  1. Cobo Safe 技术文档

Authorizer

Authorizer 是 Cobo Safe 中进行访问控制的合约模块。所有通过 execTransaction() 发起的交易,都应该经过 Cobo Account 中注册的 Authorizer 的检查后才能继续执行。

具体来说,Authorizer 应该实现如下接口:

interface IAuthorizer {
    function flag() external view returns (uint256 authFlags);

    function preExecCheck(TransactionData calldata transaction) external returns (AuthorizerReturnData memory authData);

    function postExecCheck(
        TransactionData calldata transaction,
        TransactionResult calldata callResult,
        AuthorizerReturnData calldata preAuthData
    ) external returns (AuthorizerReturnData memory authData);

    function preExecProcess(TransactionData calldata transaction) external;

    function postExecProcess(TransactionData calldata transaction, TransactionResult calldata callResult) external;
}

其中:

  • preExecCheck 可在交易执行前对交易的内容进行权限检查,比如检查调用的目标合约地址、调用的合约方法、转账的金额等。

  • postExecCheck 可以交易完成后进行权限检查,比如可以检查交易后余额的变动、检查借贷操作后的杠杆率等。

  • preExecProcess 可以在交易前执行一些特定的处理动作,这个处理通常与交易检查无关,比如用来记录某笔交易转账的金额。

  • postExecProcess 可以在交易后执行一些特定的处理动作。

  • flag 上述 4 个方法不一定是同时存在的,可通过 flag 进行标识。

在上述方法中,使用如下结构体来表示待处理的交易

struct TransactionData {
    address from; // `msg.sender` who performs the transaction a.k.a wallet address.
    address delegate; // Delegate who calls executeTransactions().
    // Same as CallData
    uint256 flag; // 0x1 delegate call, 0x0 call.
    address to;
    uint256 value;
    bytes data; // calldata
    bytes hint;
    bytes extra;
}
  • from 表示交易的 msg.sender,比如 Cobo Safe Account 的交易这个值应该是 Safe 的地址。

  • delegate 表示发起交易的 Delegate。Authorizer 会根据这个值来判断其具备的权限是否正确。

  • 其它字段与 CallData 结构体保持一致。

另外 postExecCheck 会有额外的两个参数,TransactionResult 类型的参数表示交易的执行结果,AuthorizerReturnData 类型的参数表示 preExecCheck 的返回结果。这些机制可以使开发者编写更为全面且灵活的检查规则。

PreviousRole ManagerNextAuthorizer 示例

Last updated 1 year ago