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 技术文档
  2. Cobo Account

发起交易

Delegate 可通过 execTransaction() 或 execTransactions() 发起调用。

以 execTransaction() 为例,其参数是一个 CallData 结构体。

struct CallData {
    uint256 flag; // 0x1 delegate call, 0x0 call.
    address to;
    uint256 value;
    bytes data; // calldata
    bytes hint;
    bytes extra; // for future support: signatures etc.
}

结构体各个字段表示如下:

  • flag 表示合约调用的类型,使用 0 表示 call, 1 表示 delegatecall。需要注意两种 call 形式对应的授权管理通常是独立的。

  • to 表示调用的目标合约

  • value 表示合约调用时转账的 ETH 数量

  • data 表示合约调用的 calldata 数据,是合约调用的 abi.encode 后的结果

  • hint 字段用于提示 Authorizer 使用的检查规则,当设置了 hint 字段后,可以在进行权限检查时执行快速路径,从而节约一定 gas。

hint 字段不需要用户自行计算,可通过以 eth_call 的形式发起一次未设置 hint 的交易, execTransaction() 返回的 TransactionResult 的 hint 即为本次交易的 hint,此时再次进行合约调用即可。

上述过程被封装到 CoboSafe SDK 中,使用 Javascript CoboSafe SDK 与 CoboSafe 合约进行交互示例如下:

const {CoboSafeAccount} = require("./coboaccount.js");
const {ethers} = require("ethers");
const ERC20_ABI = require("./abi/ERC20.json");

require("dotenv").config();
const PRI_KEY = process.env.PRIV;
const COBO_SAFE_ADDRESS = process.env.COBOSAFE

const provider = new ethers.JsonRpcProvider("https://rpc.ankr.com/polygon")
const signer = new ethers.Wallet(PRI_KEY, provider);
const coboSafe = new CoboSafeAccount(COBO_SAFE_ADDRESS, signer)
const delegate = coboSafe.delegate;

const WMATIC_ADDRESS = "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270";

async function main(){
    const token = new ethers.Contract(WMATIC_ADDRESS, ERC20_ABI, coboSafe);

    console.log(await token.balanceOf(await coboSafe.safe()))
    let tx = await token.transfer(delegate, 1);
    await tx.wait()
    console.log(await token.balanceOf(await coboSafe.safe()))
}

main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
});

Cobo Safe 提供了 Python 和 Javascript SDK,更多 SDK 使用可参考 https://github.com/coboglobal/

PreviousCobo Smart AccountNextRole Manager

Last updated 1 year ago