Перейти к основному содержанию
Builder симуляций разделяет свои входы между тремя поверхностями:
  • Значения сессии по умолчанию в полосе вверху применяются к каждому шагу: Network, Block и адрес From по умолчанию. Нажмите Configure, чтобы отредактировать их.
  • Поля шага определяют сам вызов: отправитель, целевой контракт, функция и аргументы.
  • Cheatcodes под полями шага изменяют окружение выполнения непосредственно перед выполнением шага.
Об общей компоновке builder’а (session strip, bundle rail, focused step view) см. в обзоре Simulator UI.

Значения сессии по умолчанию

Нажмите Configure в session strip, чтобы открыть панель значений по умолчанию. Значения, заданные здесь, применяются к каждому новому шагу в бандле.
Configure panel showing Network details with Mainnet, a pinned block number, Tx Index set to At start of block, Gas, Gas Price, Value, and the Send transaction from address
ПолеПримечания
NetworkСеть, на состоянии которой запускается симуляция.
Block numberПо умолчанию Pending. Введите номер блока, чтобы закрепить симуляцию за историческим блоком.
Tx IndexПозиция транзакции внутри закреплённого блока. Доступно только после того, как блок закреплён.
GasЛимит газа по умолчанию для каждого шага. По умолчанию 8000000.
Gas PriceЦена газа по умолчанию в Wei.
ValueЗначение ETH по умолчанию, отправляемое с каждым шагом.
Send transaction fromАдрес From по умолчанию для новых шагов.

Pending и исторический блок

Оставьте Block number пустым, чтобы симулировать на pending-блоке. Tenderly выполнит бандл на последнем доступном состоянии сети, как если бы он был включён в следующий блок. Введите номер блока, чтобы симулировать на историческом блоке. Затем бандл выполняется на состоянии цепочки, каким оно было на том блоке, для любого блока вплоть до начала сети. При закреплённом блоке Tx Index контролирует, где именно в блоке выполняется симуляция:
ОпцияЗначение
At start of blockВыполнить до любой транзакции блока.
At txВыполнить в конкретном индексе транзакции. Поле ввода показывает, сколько транзакций содержит блок.
At end of blockВыполнить после всех транзакций блока.
Configure panel with block number 25250000 pinned and the Tx Index menu open showing At start of block, At tx, and At end of block options

Адреса From

Симуляциям не нужны приватные ключи или подписи, поэтому отправителем может выступать любой адрес. Выпадающий список From предлагает:
  • Нулевой адрес (0x0000…0000), отправитель по умолчанию.
  • Ваши кошельки проекта в выбранной сети, сгруппированные в «Selected network». Смена сети меняет, какие кошельки отображаются.
  • Любой адрес, который вы вставите или найдёте в поле ввода вверху выпадающего списка.
Send transaction from dropdown open, showing a search input, the zero address, and two project wallets grouped under Selected network
Адрес, заданный в панели Configure, является значением по умолчанию для новых шагов. У каждого шага также есть собственное поле From в редакторе шага, поэтому разные шаги в бандле могут использовать разных отправителей.

Поля шага

Каждый шаг создаётся в режиме Decoded или Raw, переключаемом вверху редактора шага.
Step editor showing the Dai contract selected, the transfer function with dst address and wad uint256 inputs, and the Override gas & value, Fund address, and Increase block cheatcodes
Decoded mode строит вызов из ABI контракта:
ПолеПримечания
FromОтправитель шага. По умолчанию — session From.
ContractКонтракты проекта появляются первыми; также сопоставляются публичные контракты и топ-токены по имени, символу или адресу. После выбора становятся доступны Edit source и Edit ABI (см. Редактирование исходного кода контракта).
FunctionОтфильтровано до не-event, не-constructor методов.
ArgumentsПо одному типизированному вводу на каждый ABI-аргумент. Аргументы-адреса получают выбор адреса; аргументы-значения получают обычные поля ввода.
Raw mode принимает целевой адрес и hex-полезную нагрузку с префиксом 0x напрямую. Используйте его, когда у вас уже есть calldata из существующей транзакции или ручного кодирования.

Cheatcodes

Каждый шаг несёт шесть секций cheatcodes. Они выполняются непосредственно перед выполнением шага и относятся только к этому шагу.

Override gas & value

Задайте пользовательский Gas лимит, Gas price и Value для этого шага, переопределяя значения сессии по умолчанию.

Fund address

Пополните любой адрес балансами токенов до выполнения шага. Каждая запись принимает Target address, token (доступный для поиска по символу, имени или адресу) и сумму. Нажмите Add more tokens, чтобы пополнить несколько токенов, и добавьте дополнительные записи для других адресов. Чтобы задать нативный баланс адреса, используйте переключатель custom balance в State overrides.

Increase block

Продвиньте номер блока на смещение перед выполнением шага. Секция показывает текущий блок и результирующий блок. Контракты, читающие block.number, увидят увеличенное значение.

Override timestamp

Задайте метку времени блока, с которой выполняется шаг, в одном из двух режимов:
  • Increase time: продвинуть часы на определённое значение и единицу измерения (секунды, минуты и так далее).
  • Set UNIX timestamp: перейти к абсолютной метке времени.
Секция показывает предпросмотр результирующей даты и времени. Контракты, читающие block.timestamp, увидят переопределённое значение.

State overrides

Переопределите состояние контракта до выполнения шага. Каждое переопределение нацелено на один контракт (по умолчанию цель шага) и поддерживает:
  • Use custom balance: задать нативный баланс контракта.
  • Storage variables: пары ключ-значение для отдельных слотов хранилища, с Add storage override для дополнительных слотов.
Нажмите Add State Override, чтобы переопределить дополнительные контракты в том же шаге. Подробное описание, включая расчёт слота хранилища, см. в Симуляция с State Overrides.

Optional Access Lists

Прикрепите access list EIP-2930 к шагу. Указание контрактов и ключей хранилища, к которым обращается транзакция, может снизить стоимость газа при вызовах, охватывающих множество контрактов. Добавляйте адреса по одному или импортируйте список в виде JSON.

Сохранение отправной точки

Симуляции stateless: каждый запуск начинается с настроенного блока. Чтобы сохранить изменённое состояние (переопределения, пополненные аккаунты, продвинутые метки времени) как постоянное окружение, с которым вы можете продолжать взаимодействовать, используйте Virtual Environments.