> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Tenderly SDK 简介

> 借助 Tenderly SDK，从代码中模拟单笔或捆绑交易、管理合约与钱包，并验证合约。

Tenderly SDK 是一个 TypeScript 库，提供一组实用工具，让您在使用 Tenderly 的各个开发阶段中能够更快地推进。

它允许您模拟交易、模拟交易捆绑、管理合约与钱包，以及从代码中验证智能合约。该 SDK 对于希望将 Tenderly 强大工具集成到其 dapp 或开发工作流中的区块链开发者尤为有用。

### 介绍

Tenderly SDK 提供了通过 API 与 Tenderly 交互的易用接口。

**SDK 的关键特性包括：**

* [模拟交易](/platform/sdk/simulating-transactions)
* [管理与验证合约](/platform/sdk/managing-contracts)
* [管理钱包](/platform/sdk/managing-wallets)

### 安装

Tenderly SDK 以 [npm 包](https://www.npmjs.com/package/@tenderly/sdk) 的形式提供。在您的项目目录中运行以下命令进行安装：

**npm**

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
npm install @tenderly/sdk
```

**yarn**

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
yarn add @tenderly/sdk
```

**pnpm**

```bash title="example" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
pnpm add @tenderly/sdk
```

### 快速开始

以下示例向您展示如何在 5 分钟内完成一次简单的模拟。要了解 SDK 背后的概念，请参见 [Tenderly SDK 常见问题](/platform/sdk/concepts)。

#### 初始化 SDK

要使用 Tenderly SDK，您必须先导入必要的库并创建一个新的 **`Tenderly`** 类实例。此处传入您的 Tenderly 配置详情。

配置对象应包含您的账户名称、项目名称、访问密钥和网络。

```jsx title="example.jsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

const tenderlyInstance = new Tenderly({
  accountName: 'my-account',
  projectName: 'my-project',
  accessKey: 'my-access-key',
  network: Network.MAINNET, // Replace with the appropriate network
});
```

如果您不想将 API 密钥等敏感信息硬编码，可以使用环境变量存储这些信息，如下所示：

```jsx title="example.jsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

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
});
```

<Note>
  [受支持的网络](/platform/supported-networks) 列表可在此处查看。
</Note>

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

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

* [如何获取账户名称](/platform/account/projects/slug#username)
* [如何获取组织名称](/platform/account/projects/slug#organization-name)
* [如何获取项目 slug/名称](/platform/account/projects/slug#project-name-or-slug)
* [如何查找、创建和管理 API 密钥](/platform/account/projects/api-tokens)

### 交易模拟示例

SDK 提供了 **`Simulator`** 类用于模拟交易。要运行模拟，请在 Tenderly 实例上调用 **`simulator`** 命名空间中的 **`simulateTransaction`** 方法：

```jsx title="example.jsx" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const transaction = await tenderly.simulator.simulateTransaction({
  transaction: {
    from: callerAddress,
    to: counterContract,
    gas: 20000000,
    gas_price: '19419609232',
    value: 0,
    input: counterContractAbiInterface.encodeFunctionData('inc', []),
  },
  blockNumber: 3237677,
});
```

上面的代码产生以下结果：

```js title="example.js" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  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 运行模拟的更多指导，请尝试以下教程，学习如何模拟单个和捆绑交易。

<CardGroup cols={2}>
  <Card title="如何使用 Tenderly SDK 模拟交易" href="/platform/sdk/tutorials/simulate-transactions" />

  <Card title="如何使用 Tenderly SDK 执行模拟捆绑" href="/platform/sdk/tutorials/simulation-bundles" />
</CardGroup>

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

<CardGroup cols={3}>
  <Card title="如何管理钱包" href="/platform/sdk/managing-wallets" />

  <Card title="实用示例与代码片段" href="/platform/sdk/examples" />

  <Card title="基本概念" href="/platform/sdk/concepts" />
</CardGroup>
