在本教程中,我们将探讨如何使用 Relayers 发送交易。我们将介绍:

  • 检查 relayer 信息。

  • 发送交易。

  • 检查 relayer 状态。

在本教程结束时,您将对如何使用 Relayer 与智能合约交互有一个基本的了解。

前提条件

1. 设置 Relayer

让我们从创建一个 Relayer 开始:

  • 在 Web 浏览器中打开 Defender Operate & Automate

    管理 Relayer
  • 使用名称 ETH Sepolia Relayer 和 Sepolia 网络点击 创建 Relayer

    创建 Relayer
  • 用一些 Sepolia ETH 为其提供资金。此 relayer 将发送并支付自动交易的费用。

  • 要为 Relayer 创建 API 密钥,请点击 Relayer,然后点击 更多 按钮以展开下拉菜单并选择 创建 API 密钥

    创建 Relayer API
  • 现在您可以以分钟、小时或天为单位设置 API 密钥过期时间。

    保存 Relayer API
  • 创建 API 密钥后,请务必写下密钥。API 密钥仅在创建期间可见一次——如果您不写下来,它将永远丢失。

    保存 Relayer API

2. 检查 Relayer 信息

  • 让我们从检查我们的 relayer 的信息开始。

  • .env 文件中添加 Relayer

  • 在您的项目根目录中编辑 .env 文件并添加您的 Relayer API 密钥和密钥:

    RELAYER_API_KEY=your_api_key
    RELAYER_SECRET_KEY=your_api_secret
  • 在项目中创建一个名为 storeObject.ts 的文件。

  • 现在让我们添加以下代码:

    const { Defender } = require('@openzeppelin/defender-sdk');
    
    const dotenv = require('dotenv');
    
    dotenv.config();
    
    async function main() {
    
    const client = new Defender({
    
    relayerApiKey: process.env.RELAYER_API_KEY,
    relayerApiSecret: process.env.RELAYER_SECRET_KEY,
    });
    
    const info = await client.relaySigner.getRelayer();
    console.log('Relayer Info:', JSON.stringify(info, null, 2));
    
    }
    
    main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
    });
  • 执行脚本以检查 relayer 信息:

    ts-node storeObject.ts
    或者,如果您想直接使用 Node:
    node storeObject.js

3. 发送交易

接下来,我们将使用 relayer 发送交易。

  • 让我们编辑同一个文件并添加以下代码:

    const tx = await client.relaySigner.sendTransaction({
        to: '0x1B9ec5Cc45977927fe6707f2A02F51e1415f2052',
        speed: 'fast',
        data: '0x6057361d000000000000000000000000000000000000000000000000000000000000000a',
        gasLimit: '80000',
      });
    console.log('Transaction sent! Hash:', tx.hash);

在这里,我们使用 Sepolia Box 合约作为目标,它是:

0x1B9ec5Cc45977927fe6707f2A02F51e1415f2052

并且数据是带有 ‘10’ 作为输入参数的 store() 函数的编码版本。

0x6057361d000000000000000000000000000000000000000000000000000000000000000a
  • 执行脚本以发送交易:

    ts-node storeObject.ts
    或者,如果您想直接使用 Node:
    node storeObject.js

4. 检查交易状态

最后,让我们检查我们的交易状态。

  • 再次编辑文件并添加以下代码:

    const txUpdate = await client.relaySigner.getTransaction(tx.transactionId);
    console.log('Tx Status', JSON.stringify(txUpdate, null, 2));
  • 执行脚本以检查 relayer 状态:

    ts-node storeObject.ts
    或者,如果您想直接使用 Node:
    node storeObject.js

5. 下一步

恭喜!您已成功使用 Relayer 来检查信息、发送交易和验证交易状态。通过遵循本教程,您已经对如何使用 Relayer 与智能合约交互有了基本的了解。

  • 有关使用 Relayer 的更多信息,请参阅 Relayers 文档。

  • 探索 Actions 以自动化您的智能合约运营任务,并轻松与 Defender 的其余部分集成。