使用 OpenZeppelin Defender 自动化智能合约交易以实现每小时活动

本文介绍了如何使用 OpenZeppelin Defender 自动化智能合约的交易。通过创建一个每小时执行一次的 Action,该 Action 会向指定合约发送交易,从而实现自动向 Box 合约中添加对象并增加对象数量的功能。

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

Defender 允许你自动化智能合约操作任务,并可以轻松地与 Defender 的其余部分集成。本教程展示了如何构建一个 action,该 action 每小时发送一个链上交易,将一个对象添加到 box 中并增加其中的对象数量。

前提条件

  • OpenZeppelin Defender 账户。你可以在这里注册 Defender。
学习如何通过 Defender 部署监控 合约!

1. 设置 action

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

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

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

  3. 点击 创建 Relayer,名称为 Actions Relayer,网络为 Sepolia。

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

  5. 打开 Defender Actions

  6. 点击 创建 Action

  7. 将 action 命名为 Hourly object add

  8. 选择 Schedule 作为触发器,Timespan 为 1 小时作为时间表。

  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()` 函数的编码版本。
  1. 点击 保存 Action

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

Actions action card

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

2. 验证活动

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

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

Actions alert

下一步

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

除了 action 之外,我们还建议使用访问控制通过 Defender 管理合约的权限。 通过其教程此处 了解如何使用访问控制。

参考

← 监控

访问控制 →

  • 原文链接: docs.openzeppelin.com/de...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
OpenZeppelin
OpenZeppelin
江湖只有他的大名,没有他的介绍。