Перейти к основному содержанию
Tenderly SDK — это библиотека на TypeScript, предоставляющая набор полезных утилит, которые позволяют быстрее проходить различные этапы разработки с использованием Tenderly. Он позволяет симулировать транзакции, симулировать бандлы транзакций, управлять контрактами и кошельками, а также верифицировать смарт-контракты прямо из кода. SDK особенно полезен блокчейн-разработчикам, которые хотят интегрировать мощные инструменты Tenderly в свой dapp или процесс разработки.

Введение

Tenderly SDK предоставляет удобный интерфейс для взаимодействия с Tenderly через его API. Ключевые возможности SDK:

Установка

Tenderly SDK доступен как npm-пакет. Установите его, выполнив следующую команду в каталоге вашего проекта: npm
example
npm install @tenderly/sdk
yarn
example
yarn add @tenderly/sdk
pnpm
example
pnpm add @tenderly/sdk

Быстрый старт

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

Как управлять кошельками

Практические примеры и сниппеты кода

Основные концепции