Параметр API simulation_type позволяет контролировать уровень детализации, возвращаемой в результате Simulation API. Он применяется как к одиночным симуляциям, так и к пакетным запросам.
Типы симуляций
full (по умолчанию): подробная сырая и декодированная информация с трейсом вызовов, входными и выходными данными функций, разностями состояния и т. д.
quick: минимальные, сырые значения
abi: минимальная информация с декодированными входными данными, выходными данными и логами
Полные симуляции занимают больше времени, в зависимости от глубины трейса вызовов. Используйте быстрые симуляции, когда декодированная
информация не требуется.
Полный режим симуляции
- Трейс вызовов, содержащий имя функции, позицию в исходном файле, адрес вызывающего и баланс
- Декодированные входные и выходные данные функций с soltype для всех аргументов. Это применяется ко всем вызовам функций, включая прямой вызов смарт-контракта из EOA, внутренние вызовы между смарт-контрактами и вызовы функций внутри каждого смарт-контракта.
- Декодированные разности состояния (изменения состояния), обогащённые soltype для изменённых полей
- Декодированные логи (события), состоящие из Solidity-события, которое их произвело, и значения аргументов события, обогащённые type для каждого.
dotenv.config();
const approveDai = async () => {
// assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
// https://docs.tenderly.co/platform/account/projects/slug
// https://docs.tenderly.co/platform/account/projects/api-tokens
const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;
console.time('Simulation');
const resp = await axios.post(
`https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
// the transaction
{
/* Simulation Configuration */
save: false, // if true simulation is saved and shows up in the dashboard
save_if_fails: false, // if true, reverting simulations show up in the dashboard
simulation_type: 'full', // full, abi or quick (full is default)
network_id: '1', // network to simulate on
/* Standard EVM Transaction object */
from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
to: '0x6b175474e89094c44da98b954eedeac495271d0f',
input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
gas: 8000000,
value: 0,
},
{
headers: {
'X-Access-Key': TENDERLY_ACCESS_KEY as string,
},
},
);
console.timeEnd('Simulation');
const transaction = resp.data.transaction;
console.log(JSON.stringify(transaction, null, 2));
};
approveDai();
Быстрый режим симуляции
Предоставляет сырые данные без дополнительного декодирования. Этот режим лучше всего подходит, когда вам нужны только основные детали транзакции.
dotenv.config();
const approveDai = async () => {
// assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
// https://docs.tenderly.co/platform/account/projects/slug
// https://docs.tenderly.co/platform/account/projects/api-tokens
const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;
console.time('Simulation');
const resp = await axios.post(
`https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
// the transaction
{
/* Simulation Configuration */
save: false, // if true simulation is saved and shows up in the dashboard
save_if_fails: false, // if true, reverting simulations show up in the dashboard
simulation_type: 'quick', // full, abi or quick (full is default)
network_id: '1', // network to simulate on
/* Standard EVM Transaction object */
from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
to: '0x6b175474e89094c44da98b954eedeac495271d0f',
input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
gas: 8000000,
value: 0,
},
{
headers: {
'X-Access-Key': TENDERLY_ACCESS_KEY as string,
},
},
);
console.timeEnd('Simulation');
const transaction = resp.data.transaction;
console.log(JSON.stringify(transaction, null, 2));
};
approveDai();
Режим симуляции ABI
Трейс вызовов, содержащий имя функции, декодированные входные и выходные переменные
Декодированные логи (события), состоящие из Solidity-события, которое их произвело, и значения аргументов события, обогащённые описанием type для каждого.
dotenv.config();
const approveDai = async () => {
// assuming environment variables TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG and TENDERLY_ACCESS_KEY are set
// https://docs.tenderly.co/platform/account/projects/slug
// https://docs.tenderly.co/platform/account/projects/api-tokens
const { TENDERLY_ACCOUNT_SLUG, TENDERLY_PROJECT_SLUG, TENDERLY_ACCESS_KEY } = process.env;
console.time('Simulation');
const resp = await axios.post(
`https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate`,
// the transaction
{
/* Simulation Configuration */
save: false, // if true simulation is saved and shows up in the dashboard
save_if_fails: false, // if true, reverting simulations show up in the dashboard
simulation_type: 'abi', // full, abi or quick (full is default)
network_id: '1', // network to simulate on
/* Standard EVM Transaction object */
from: '0xdc6bdc37b2714ee601734cf55a05625c9e512461',
to: '0x6b175474e89094c44da98b954eedeac495271d0f',
input: '0x095ea7b3000000000000000000000000f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1000000000000000000000000000000000000000000000000000000000000012b',
gas: 8000000,
value: 0,
},
{
headers: {
'X-Access-Key': TENDERLY_ACCESS_KEY as string,
},
},
);
console.timeEnd('Simulation');
const transaction = resp.data.transaction;
console.log(JSON.stringify(transaction, null, 2));
};
approveDai();