自动化智能合约交易以执行每小时活动
Defender 允许你通过与 Defender 其余部分的简单集成来自动化智能合约操作任务。本教程展示了如何构建一个 action,该 action 每小时发送一次链上交易,用于向 box 中添加一个对象并增加其中的对象数量。
1. 设置 action
你将配置一个 action,该 action 使用 addObject()
函数每小时向 Sepolia 中 0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074
合约发送一次交易,这是在 部署教程中部署的 Box 合约的示例。 要做到这一点,请按照下列步骤操作:
-
在你的终端中运行以下命令:
-
在 Web 浏览器中打开 Defender Relayers。
-
使用名称
Actions Relayer
和 Sepolia 网络单击 Create Relayer。 -
使用一些 Sepolia ETH 为其充值。 此 relayer 将发送并支付自动交易的费用。
-
打开 Defender Actions。
-
单击 Create Action。
-
将 action 命名为
Hourly object add
。 -
选择 Schedule 作为触发器,并选择 1 小时的 Timespan 作为计划。
-
选择 Actions Relayer 作为连接的 relayer。
-
将以下代码粘贴到 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()
函数的编码版本。 -
单击 Save Action。
保存后,Actions 页面应如下所示:

你的 action 现在将每小时运行一次! 你可以查看 Defender Logs 获取关于活动的更多详细信息。
2. 验证活动
在 action 运行一段时间后,你可以验证交易是否每小时发送一次。 为此,请打开 Etherscan 合约页面,并查找来自已配置 Relayer 的交易。 另一种方法是在 Etherscan 中搜索你的 Relayer,并查找发送到合约的交易。
如果 action 失败,你也会收到警报(例如,如果 Relayer 的 gas 用完)。 它们看起来像这样:

下一步
恭喜! 你可以修改 action 以自动化其他合约并构建更复杂的交易。 如果你对高级用例感兴趣,我们正在开发与 action 相关的指南。
除了 action 之外,我们建议使用 Access Control 通过 Defender 管理合约的权限。 学习如何通过其教程 这里 使用 Access Control。 |