> ## 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 предоставляет удобный интерфейс для взаимодействия с Tenderly через его API.

**Ключевые возможности 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, см. [FAQ по 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`** для симуляции транзакций. Чтобы запустить симуляцию, вызовите метод **`simulateTransaction`** в пространстве имён **`simulator`** у экземпляра Tenderly:

```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>
