Skip to main content
Safe{Wallet} симулирует транзакции через Tenderly Simulation API. Встроенная симуляция входит в Safe Pro. На других планах Safe проверка Transaction simulation в Safe Shield показывает ссылку Set, а транзакции в очереди показывают Set up simulation вместо результата. Чтобы запускать симуляции на любом плане Safe, добавьте собственный проект Tenderly в настройках Environment variables. После этого Safe отправляет каждый запрос на симуляцию в ваш проект, и каждая симуляция сохраняется там с полным трейсом вызовов.
Создание API-токенов доступа и использование Tenderly API доступны на платном плане. Чтобы включить их для вашей учётной записи, свяжитесь с нашим отделом продаж, чтобы назначить звонок и обсудить обновление плана.

Предварительные требования

  • Проект Tenderly.
  • Токен доступа с доступом к проекту. Достаточно токена проекта (область One project).
  • Аккаунт Safe, в котором подключённый кошелёк является владельцем.

Как составить Tenderly API URL

Поле Tenderly API URL принимает полный эндпоинт Simulation API, включая путь /simulate:
Tenderly API URL
Чтобы составить URL, откройте проект в Tenderly, перейдите в Settings, нажмите Copy API URL рядом с Project Access Tokens и добавьте simulate в конец скопированного URL. Для аккаунта my-org и проекта treasury получится https://api.tenderly.co/api/v1/account/my-org/project/treasury/simulate.
Copy API URL копирует базовый URL проекта, который заканчивается на /project/{project_slug}/. Safe отправляет запросы ровно на тот URL, который вы ввели, поэтому с базовым URL без simulate каждая симуляция завершается ошибкой.

Добавление проекта Tenderly в настройках Safe{Wallet}

  1. В Safe{Wallet} откройте Settings и выберите вкладку Environment variables. Ссылки Set и Set up simulation открывают ту же страницу.
  2. В разделе Tenderly вставьте URL из предыдущего раздела в поле Tenderly API URL.
  3. Вставьте токен доступа в поле Tenderly access token.
  4. Нажмите Save. Safe перезагрузит страницу и применит настройки.
Настройки Environment variables в Safe{Wallet}: Tenderly API URL, оканчивающийся на /simulate, и скрытый токен доступа

Tenderly API URL и токен доступа в настройках Environment variables Safe{Wallet}

Заполните оба поля. Safe использует ваш проект, только если заданы и URL, и токен доступа. Safe хранит значения в локальном хранилище браузера. Они действуют для всех Safe и сетей, которые вы открываете в этом браузере, поэтому повторите настройку в каждом браузере, которым пользуетесь. Чтобы вернуть значения по умолчанию, нажмите значок сброса в каждом поле, а затем Save.

Запуск симуляции транзакции Safe

  1. В Safe{Wallet} нажмите New transaction, настройте транзакцию и нажмите Next. Откроется экран Confirm transaction с панелью Safe Shield справа.
  2. Рядом с Transaction simulation нажмите Run.
  3. Проверка сменится на Simulation successful или Simulation failed. Нажмите View, чтобы открыть симуляцию в вашем проекте Tenderly.
Экран Confirm transaction в Safe{Wallet}: Safe Shield показывает Simulation successful и ссылку View

Safe Shield с успешной симуляцией и ссылкой View

Чтобы симулировать транзакцию, которая уже стоит в очереди, откройте Transactions, разверните транзакцию на вкладке Queue и нажмите Simulate. Ссылка View открывает https://dashboard.tenderly.co/{account_slug}/{project_slug}/simulator/{simulation_id}, где можно изучить трейс вызовов, изменения состояния и события симулированного вызова execTransaction.

Что Safe отправляет в Simulation API

Safe отправляет POST-запрос на Tenderly API URL с токеном доступа в заголовке X-Access-Key. Тело запроса описывает одиночную симуляцию вызова execTransaction контракта Safe (или вызова multiSend для пакетов) со следующими параметрами:

Устранение неполадок: Error while simulating

Когда Simulation API возвращает ошибку, Safe показывает Error while simulating в очереди транзакций и Simulation failed в Safe Shield, без подробностей ошибки. Чтобы увидеть фактический ответ:
  1. Откройте инструменты разработчика в браузере и выберите вкладку Network.
  2. Запустите симуляцию повторно.
  3. Выберите запрос к api.tenderly.co и посмотрите код статуса и тело ответа.
Если ни один запрос не доходит до api.tenderly.co, проверьте, что оба поля сохранены: Safe показывает ссылку Set, пока не заданы и URL, и токен доступа.