Перейти к основному содержанию

Обзор

Узнайте, как использовать Simulation API в вашем dapp’е, чтобы позволить пользователям предварительно просматривать результаты транзакций перед их отправкой в сеть. Так вы сможете помочь им избежать финансовых потерь из-за неудачных или некорректных транзакций и повысить их уверенность при использовании вашего dapp’а. Чтобы интегрировать Simulation API от Tenderly в ваш dapp для обнаружения потенциальных сбоев транзакции ещё до её отправки в сеть, вам нужно:
  1. Сформировать сырые транзакции из библиотеки ethers.js.
  2. Симулировать транзакции перед их отправкой.
  3. (опционально) Обернуть каждое взаимодействие с блокчейном в симуляцию Tenderly.
Подробности запроса и ответа для отдельного вызова см. в разделе одиночные симуляции.

Формирование сырых транзакций из ethers.js

Первый шаг — создать объект транзакции, который будет отправлен в наш эндпоинт симуляции. Мы сгенерируем его непосредственно из библиотеки ethers.js. В приведённом ниже примере показано, как это можно сделать для функции transfer() поверх контракта DAI:
example.tsx

Симуляция транзакций перед отправкой

Теперь, когда мы извлекли неподписанную сырую транзакцию, давайте симулируем её перед отправкой в сеть (в Ethereum Mainnet):
example.tsx

Оборачивание каждого взаимодействия с блокчейном в симуляцию Tenderly (опционально)

Чтобы гарантировать, что каждое взаимодействие с блокчейном сначала симулируется, напишите простую обёртку вокруг объекта signer из ethers.js, которая всегда будет симулировать транзакции. Кроме того, в дальнейшем вы можете ввести типизированные ошибки, с которыми может взаимодействовать ваша логика:
example.tsx
Вот репозиторий на GitHub, где вы можете найти пример этой реализации.