跳转到主要内容
Tenderly SDK 是一个 TypeScript 库,提供一组实用工具,让您在使用 Tenderly 的各个开发阶段中能够更快地推进。 它允许您模拟交易、模拟交易捆绑、管理合约与钱包,以及从代码中验证智能合约。该 SDK 对于希望将 Tenderly 强大工具集成到其 dapp 或开发工作流中的区块链开发者尤为有用。

介绍

Tenderly SDK 提供了通过 API 与 Tenderly 交互的易用接口。 SDK 的关键特性包括:

安装

Tenderly SDK 以 npm 包 的形式提供。在您的项目目录中运行以下命令进行安装: npm
example
npm install @tenderly/sdk
yarn
example
yarn add @tenderly/sdk
pnpm
example
pnpm add @tenderly/sdk

快速开始

以下示例向您展示如何在 5 分钟内完成一次简单的模拟。要了解 SDK 背后的概念,请参见 Tenderly SDK 常见问题

初始化 SDK

要使用 Tenderly SDK,您必须先导入必要的库并创建一个新的 Tenderly 类实例。此处传入您的 Tenderly 配置详情。 配置对象应包含您的账户名称、项目名称、访问密钥和网络。
example.jsx

const tenderlyInstance = new Tenderly({
  accountName: 'my-account',
  projectName: 'my-project',
  accessKey: 'my-access-key',
  network: Network.MAINNET, // Replace with the appropriate network
});
如果您不想将 API 密钥等敏感信息硬编码,可以使用环境变量存储这些信息,如下所示:
example.jsx

const tenderlyInstance = new Tenderly({
  accountName: process.env.TENDERLY_ACCOUNT_NAME,
  projectName: process.env.TENDERLY_PROJECT_NAME,
  accessKey: process.env.TENDERLY_ACCESS_KEY,
  network: Network.MAINNET, // Replace with the appropriate network
});
受支持的网络 列表可在此处查看。

如何获取账户名称、项目 slug 和密钥

按照这些分步指南获取所需的配置详情:

交易模拟示例

SDK 提供了 Simulator 类用于模拟交易。要运行模拟,请在 Tenderly 实例上调用 simulator 命名空间中的 simulateTransaction 方法:
example.jsx
const transaction = await tenderly.simulator.simulateTransaction({
  transaction: {
    from: callerAddress,
    to: counterContract,
    gas: 20000000,
    gas_price: '19419609232',
    value: 0,
    input: counterContractAbiInterface.encodeFunctionData('inc', []),
  },
  blockNumber: 3237677,
});
上面的代码产生以下结果:
example.js
{
  status: true,
  gasUsed: '46838',
  cumulativeGasUsed: undefined,
  blockNumber: '3237677',
  type: undefined,
  logsBloom: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA==',
  logs: [ { raw: [Object] } ],
  trace: [
    {
      type: 'CALL',
      from: '0xDBcB6Db1FFEaA10cd157F985a8543261250eFA46',
      to: '0x93Cc0A80DE37EC4A4F97240B9807CDdfB4a19fB1',
      gas: '19978936',
      gas_used: '25774',
      value: '0',
      input: '0x371303c0',
      trace_address: [Array]
    }
  ]
}

后续步骤

有关使用 Tenderly SDK 运行模拟的更多指导,请尝试以下教程,学习如何模拟单个和捆绑交易。

如何使用 Tenderly SDK 模拟交易

如何使用 Tenderly SDK 执行模拟捆绑

在您继续学习 Tenderly SDK 工作原理的过程中,建议查阅以下有用的资源:

如何管理钱包

实用示例与代码片段

基本概念