本文介绍了如何使用 OpenZeppelin Defender 自动化智能合约的交易。通过创建一个每小时执行一次的 Action,该 Action 会向指定合约发送交易,从而实现自动向 Box 合约中添加对象并增加对象数量的功能。
Defender 允许你自动化智能合约操作任务,并可以轻松地与 Defender 的其余部分集成。本教程展示了如何构建一个 action,该 action 每小时发送一个链上交易,将一个对象添加到 box 中并增加其中的对象数量。
学习如何通过 Defender 部署 和监控 合约! |
你将配置一个 action,该 action 使用 addObject()
函数每小时将交易发送到 Sepolia 中的 0xC64f7ace6127bc7B0bAb23bD1871aC81e6AEC074
合约,这是在部署教程中部署的 Box 合约示例。 为此,请按照下列步骤操作:
在终端中运行以下命令:
在 Web 浏览器中打开 Defender Relayers。
点击 创建 Relayer,名称为 Actions Relayer
,网络为 Sepolia。
用一些 Sepolia ETH 为其注资。 此 relayer 将发送并支付自动交易的费用。
打开 Defender Actions。
点击 创建 Action。
将 action 命名为 Hourly object add
。
选择 Schedule 作为触发器,Timespan 为 1 小时作为时间表。
选择 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()` 函数的编码版本。
保存后,Actions 页面应如下所示:
你的 action 现在将每小时运行一次! 你可以查看 Defender Logs 以获取有关活动的更多详细信息。
在 action 运行一段时间后,你可以验证是否每小时发送一次交易。为此,请打开 Etherscan 合约页面 并查找来自配置的 Relayer 的交易。另一种方法是在 Etherscan 中搜索你的 Relayer,并查找发送到合约的交易。
如果 action 失败(例如,如果 Relayer 耗尽 gas),你也会收到警报。 它们看起来像这样:
恭喜! 你可以修改 action 以自动化其他合约并构建更复杂的交易。 如果你对高级用例感兴趣,我们正在编写与 action 相关的指南。
除了 action 之外,我们还建议使用访问控制通过 Defender 管理合约的权限。 通过其教程此处 了解如何使用访问控制。 |
- 原文链接: docs.openzeppelin.com/de...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!