Симулируйте EVM-транзакции на основе текущего состояния сети без их отправки. API выполняет вызовы в изолированной среде и возвращает прогнозируемые изменения балансов, эмитируемые события, оценку газа и ошибки revert.
- Предварительная проверка — убедитесь, что транзакция выполнится успешно, прежде чем запрашивать подпись у пользователя.
- Оценка комиссий — получите точные затраты на газ для сложных взаимодействий с контрактами.
- Предпросмотр балансов — покажите пользователям, какие именно токены будут перемещены и в каком объёме.
- Пакетная валидация — протестируйте несколько вызовов в одном блоке, чтобы выявить проблемы с порядком выполнения.
Отправьте один или несколько вызовов на POST /simulate/evm/{chain_gid}. Параметр chain_gid — это идентификатор CAIP-2, например eip155:1 (Ethereum) или eip155:137 (Polygon). Все поля каждого вызова — from, to, value и data — обязательны. Значения передаются в hex-кодировке.
curl -X POST "https://${VILNA_NAMESPACE}.vilna.app/simulate/evm/eip155:1" \
-H "X-Api-Key: ${VILNA_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"block_state_calls": [
{
"calls": [
{
"from": "0x974caa59e49682cda0ad2bbe82983419a2ecc400",
"to": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"value": "0x0",
"data": "0xa9059cbb000000000000000000000000d0930a8fc56fd94038250bb93dbac0e13da4eb99000000000000000000000000000000000000000000000000000000003b9aca00"
}
]
}
]
}'Вы можете включить несколько вызовов в одну запись block_state_calls, чтобы симулировать их последовательно внутри одного блока. Это удобно для тестирования сценариев approve-then-transfer.
Ответ содержит массив items с одним объектом SimulatedTransaction на каждый входной вызов, а также объект references с метаданными токенов и блокчейнов.
Каждая симулированная транзакция включает:
| Поле | Описание |
|---|---|
is_success | Выполнился ли вызов без revert. |
events | Канонические события (переводы, одобрения, комиссии), которые были бы эмитированы. |
activity | Прогнозируемые изменения балансов по адресам и активам с указанием направления (direction: in/out) и величины (delta). |
error | Присутствует только при ошибке. Содержит code, message и hex-кодированное поле data для декодирования revert. |
chain_gid | Сеть, в которой была выполнена симуляция. |
txid | Синтетический хеш транзакции для корреляции. |
block_number | Высота блока, использованная при симуляции. |
Объект references сопоставляет GID активов с данными токенов (символ, количество десятичных знаков) и GID сетей с метаданными блокчейнов, позволяя получить человекочитаемые названия без дополнительных запросов к API.
- Только EVM-сети. Non-EVM сети (Solana, Tron, Bitcoin) не поддерживаются.
- Симуляция отражает состояние на текущем блоке. Фактический результат может отличаться, если состояние изменится между симуляцией и отправкой транзакции.
- Требуется разрешение
api:blockchain:readна вашем API-ключе.