Добавить в корзинуПозвонить
Найти в Дзене
TRON DAO Russian

Оцените комиссию за транзакции TRON (энергия + пропускная способность) в TRX с помощью triggerConstantContract

В этом руководстве показано, как оценить комиссию за транзакции в сети TRON (в TRX) с помощью triggerConstantContract от TronWeb в отношении TronGrid (Nile/Mainnet). Вызовы API estimateEnergy не используются; скрипт только имитирует транзакции и никогда не осуществляет трансляцию. tron-fee-estimator/ ├─ node_modules/ ├─ .env ├─ .env.sample ├─ fee.js ├─ package.json └─ package-lock.json npm i `.env` (Nile example): TRON_FULL_NODE=https://nile.trongrid.io DEFAULT_USDT=TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf For mainnet, use `TRON_FULL_NODE=https://api.trongrid.io`. Плейсхолдеры: A) Произвольный контрактный вызов node fee.js contract-call — contract <TOKEN_OR_CONTRACT_TADDR> — selector ‘approve(address,uint256)’ — params ‘[{“type”:”address”,”value”:”<SPENDER_TADDR>”},{“type”:”uint256",”value”:”<RAW_UNITS>”}]’ — from <OWNER_TADDR> — callValue 0 Примечание: При вызове смарт-контракта в зависимости от вашей операционной системы может потребоваться экранировать двойные кавычки, если параметры пер
Оглавление

В этом руководстве показано, как оценить комиссию за транзакции в сети TRON (в TRX) с помощью triggerConstantContract от TronWeb в отношении TronGrid (Nile/Mainnet). Вызовы API estimateEnergy не используются; скрипт только имитирует транзакции и никогда не осуществляет трансляцию.

Макет проекта

tron-fee-estimator/

├─ node_modules/

├─ .env

├─ .env.sample

├─ fee.js

├─ package.json

└─ package-lock.json

Установка и настройка

npm i

`.env` (Nile example):

TRON_FULL_NODE=https://nile.trongrid.io

DEFAULT_USDT=TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf

For mainnet, use `TRON_FULL_NODE=https://api.trongrid.io`.

Как работает оценщик

  1. **Энергия**: имитируйте вызов через `triggerconstantcontract` и считывайте `energy_used`.
  2. **Пропускная способность**: создайте пробный запуск tx с `triggersmartcontract` и приблизительными байтами.
  3. **Конвертировать в TRX**: получить `getEnergyFee` и `getTransactionFee` из `getchainparameters`.

Команды и плейсхолдеры

Плейсхолдеры:

  • `<TOKEN_TADDR>`: Адрес токена TRC‑20 (Base58)
  • `<OWNER_TADDR>`: владелец/ отправитель токена (плательщик; `msg.sender`)
  • `<SPENDER_TADDR>`: адрес для одобрения (маршрутизатор DEX / хранилище / кошелек)
  • `<RECIPIENT_TADDR>`: приемник для `transfer`
  • `<RAW_UNITS>`: сумма в наименьших единицах (e.g., USDT 1 = 1000000)

A) Произвольный контрактный вызов

node fee.js contract-call — contract <TOKEN_OR_CONTRACT_TADDR> — selector ‘approve(address,uint256)’ — params ‘[{“type”:”address”,”value”:”<SPENDER_TADDR>”},{“type”:”uint256",”value”:”<RAW_UNITS>”}]’ — from <OWNER_TADDR> — callValue 0

Примечание: При вызове смарт-контракта в зависимости от вашей операционной системы может потребоваться экранировать двойные кавычки, если параметры передаются напрямую в терминале. Рекомендуется использовать JSON-файл для передачи параметров и при необходимости скорректировать данный скрипт.

B) Передача TRC‑20 через контрактный вызов

node fee.js contract-call — contract <TOKEN_TADDR> — selector ‘transfer(address,uint256)’ — params ‘[{“type”:”address”,”value”:”<RECIPIENT_TADDR>”},{“type”:”uint256",”value”:”<RAW_UNITS>”}]’ — from <OWNER_TADDR> — callValue 0

Примечание: При выполнении смарт-контракта, в зависимости от вашей операционной системы, может потребоваться экранировать двойные кавычки, если параметры передаются напрямую в терминале. Рекомендуется использовать JSON-файл для передачи параметров и при необходимости скорректировать скрипт.

C) Передача TRX (только пропускная способность)

node fee.js trx-transfer — from <SENDER_TADDR> — to <RECIPIENT_TADDR> — amount-trx 1.5

D) TRC‑20 стенография

node fee.js trc20-transfer — token <TOKEN_TADDR> — from <SENDER_TADDR> — to <RECIPIENT_TADDR> — amount <RAW_UNITS>

Примечание: Убедитесь, что ваш адрес "from" имеет положительный баланс выбранного токена TRC20, иначе система не сможет корректно рассчитать комиссию за энергию.

Пример токена Nile

Одобрить 100 единиц (владелец предоставляет разрешение):

node fee.js contract-call — contract TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf — selector ‘approve(address,uint256)’ — params ‘[{“type”:”address”,”value”:”<SPENDER_TADDR>”},{“type”:”uint256",”value”:”100"}]’ — from <OWNER_TADDR> — callValue 0

Перевести 100 единиц (владелец отправляет):

node fee.js contract-call — contract TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf — selector ‘transfer(address,uint256)’ — params ‘[{“type”:”address”,”value”:”<RECIPIENT_TADDR>”},{“type”:”uint256",”value”:”100"}]’ — from <OWNER_TADDR> — callValue 0

Вывод (как его читать)

{

“node”: “https://nile.trongrid.io”,

“prices”: {

“energySunPerUnit”: 100,

“trxPerEnergy”: 0.0001,

“trxPerByte”: 0.001

},

“estimate”: {

“kind”: “CONTRACT_CALL”,

“energy”: 14650,

“bandwidthBytes”: 312,

“trxEnergy”: 1.465,

“trxBandwidth”: 0.312,

“trxTotal”: 1.7770000000000001

}

}

  • `energy` — это имитируемое значение energy_used (0 часто означает, что вызов отменен).
  • `bandwidthBytes` — приблизительный размер сериализованных данных.
  • `trxEnergy` и `trxBandwidth` вычисляются на основе актуальных параметров сети; `trxTotal` — это их сумма.

Устранение неполадок

  • **energy = 0** → проверьте `balanceOf` / `allowance` (недостаточный баланс или отсутствие разрешения на контракт могут вызвать откат при симуляции).
  • **Auth/401** → используйте правильную конечную точку TronGrid для своей сети и убедитесь, что ваша среда обеспечивает доступ при необходимости.

Полезные ссылки