自动化智能合约交易以执行每小时活动

Defender 允许你通过与 Defender 其余部分的简单集成来自动化智能合约操作任务。本教程展示了如何构建一个 action,该 action 每小时发送一次链上交易,用于向 box 中添加一个对象并增加其中的对象数量。

先决条件

  • OpenZeppelin Defender 账户。

学习如何通过 Defender 部署监控 合约!

1. 设置 action

你将配置一个 action,该 action 使用 addObject() 函数每小时向 Sepolia 中 0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074 合约发送一次交易,这是在 部署教程中部署的 Box 合约的示例。 要做到这一点,请按照下列步骤操作:

  1. 在你的终端中运行以下命令:

  2. 在 Web 浏览器中打开 Defender Relayers

  3. 使用名称 Actions Relayer 和 Sepolia 网络单击 Create Relayer

  4. 使用一些 Sepolia ETH 为其充值。 此 relayer 将发送并支付自动交易的费用。

  5. 打开 Defender Actions

  6. 单击 Create Action

  7. 将 action 命名为 Hourly object add

  8. 选择 Schedule 作为触发器,并选择 1 小时的 Timespan 作为计划。

  9. 选择 Actions Relayer 作为连接的 relayer。

  10. 将以下代码粘贴到 Code 字段中:

    const { Defender } = require('@openzeppelin/defender-sdk');
    
    exports.handler = async function(credentials) {
      const client = new Defender(credentials);
    
      const txRes = await client.relaySigner.sendTransaction({
        to: '0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074',
        speed: 'fast',
        data: '0x62029d2a',
        gasLimit: '80000',
      });
    
      console.log(txRes);
      return txRes.hash;
    }

    合约地址是目标地址,即 0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074,数据是 0x62029d2a,合约的 addObject() 函数的编码版本。

  11. 单击 Save Action

保存后,Actions 页面应如下所示:

Actions action card

你的 action 现在将每小时运行一次! 你可以查看 Defender Logs 获取关于活动的更多详细信息。

2. 验证活动

在 action 运行一段时间后,你可以验证交易是否每小时发送一次。 为此,请打开 Etherscan 合约页面,并查找来自已配置 Relayer 的交易。 另一种方法是在 Etherscan 中搜索你的 Relayer,并查找发送到合约的交易。

如果 action 失败,你也会收到警报(例如,如果 Relayer 的 gas 用完)。 它们看起来像这样:

Actions alert

下一步

恭喜! 你可以修改 action 以自动化其他合约并构建更复杂的交易。 如果你对高级用例感兴趣,我们正在开发与 action 相关的指南。

除了 action 之外,我们建议使用 Access Control 通过 Defender 管理合约的权限。 学习如何通过其教程 这里 使用 Access Control。