Деплой смарт-контрактів у Tron
При перенесенні смарт-контракту з Ethereum на Tron ви зіткнетеся з неочевидними відмінностями TVM: газ замінено на energy та bandwidth, адреси в Base58, а стандартні інструменти Hardhat не працюють напряму. Ми розбирали дампи транзакцій клієнтів, де деплой падав з OUT_OF_ENERGY через невірну оцінку лімітів. Один клієнт витратив три дні на адаптацію ERC-20 токена, поки не звернувся до нас — ми виправили адресацію та налаштували TronBox за 2 години. Наша команда блокчейн-інженерів з 10+ роками досвіду (20+ успішних деплоїв у Tron, 5 років на ринку) пропонує готове рішення — від адаптації контракту до верифікації на TronScan.
Проблеми, які ми вирішуємо
-
Несумісність EVM-тулів. Hardhat без плагіна не деплоїть у Tron — потрібен TronBox або
@tronbox/hardhat-tron. Ми налаштовуємо tooling під ваш стек. - Адресна плутанина. Tron використовує два представлення: hex (
0x41...) та Base58 (T...). При деплої через TronWeb використовується hex, а в UI — Base58. Помилка конвертації веде до втрати коштів. - Energy-голодування. Без достатнього energy деплой валиться з
OUT_OF_ENERGY. Ми розраховуємо точні ліміти та рекомендуємо оптимальний спосіб отримання енергії (заморозка vs покупка). - Версійність Solidity. TVM не підтримує свіжі версії — компілятори до 0.8.18. Ми перевіряємо сумісність та при необхідності адаптуємо код.
| Параметр | Ethereum | Tron |
|---|---|---|
| Віртуальна машина | EVM | TVM (сумісна з EVM байткодом) |
| Комісія | Gas | Energy (контракти) + Bandwidth (транзакції) |
| Адреси | hex 0x... | Base58 T... (hex 0x41...) |
| Tooling деплою | Hardhat, Foundry | TronBox, Hardhat + plugin |
| Типова вартість деплою | $50-200 при gas ~50 гвей | $10-50 (залежить від курсу TRX) |
Чому Tron дешевший за Ethereum для масових транзакцій?
Tron забезпечує комісії в 5–10 разів нижчі при високих обсягах переказів стейблкоїнів. Завдяки механізмам заморозки TRX активні користувачі можуть отримувати energy безкоштовно. Це особливо актуально для проектів з тисячами щоденних операцій — економія на комісіях може перевищувати 50%, а для великих проектів економія сягає $5000 на місяць.
Як адаптувати контракт під TVM?
Більшість Solidity-контрактів переноситься з мінімальними правками. Головні зміни:
- Замінити
msg.valueнаcallValueпри відправці нативної валюти. - Конвертувати адреси з hex у Base58 та назад через
TronWeb.address.toHex()/.fromHex(). - Використовувати
feeLimitзамістьgasLimit. - Враховувати, що
balanceконтракту повертається в sun (1 TRX = 1e6 sun).
Приклад типової помилки при деплої
Часто розробники забувають встановити `feeLimit` у скрипті міграції. За замовчуванням він дорівнює 0, і транзакція відхиляється з помилкою `OUT_OF_ENERGY`. Рекомендоване значення — `100_000_000` sun (100 TRX) для більшості контрактів.Як ми це робимо: стек та підхід
Ми використовуємо перевірений стек: Solidity 0.8.6–0.8.18, TronBox для компіляції та деплою, TronWeb з API-ключем TronGrid для бойового доступу, Slither та Mythril для статичного аналізу.
Приклад конфігурації TronBox під mainnet:
const { TRON_PRIVATE_KEY } = process.env module.exports = { networks: { mainnet: { privateKey: TRON_PRIVATE_KEY, userFeePercentage: 100, feeLimit: 1_000_000_000, fullHost: "https://api.trongrid.io", network_id: "*" } }, compilers: { solc: { version: "0.8.6" } } } Для Hardhat використовуємо плагін, конфігурація мінімальна:
import "@tronbox/hardhat-tron" const config = { networks: { tron: { url: "https://api.trongrid.io", accounts: [process.env.TRON_PRIVATE_KEY!] } } } Скрипт міграції для TronBox:
const MyContract = artifacts.require("MyContract") module.exports = function(deployer) { deployer.deploy(MyContract, "arg1", "arg2", { feeLimit: 1_000_000_000, callValue: 0, userFeePercentage: 100 }) } Процес роботи
- Аналіз контракту — перевірка сумісності з TVM, пошук проблем з адресами та нативною валютою.
- Адаптація коду — правка адресації, заміна
msg.valueнаcallValue, коригуванняaddress(this).balance. - Налаштування tooling — встановлення TronBox або Hardhat-плагіна, отримання API-ключа TronGrid, створення конфігів.
- Деплой на тестнет Shasta — тестування з фейковими TRX, перевірка energy-лімітів.
- Тестування — функціональне та навантажувальне тестування в умовах testnet.
- Деплой на mainnet — з верифікацією на TronScan та передачею документації.
Що входить в роботу
- Повна адаптація контракту під TVM.
- Налаштування деплой-скриптів та інтеграцій (TronWeb, API).
- Тестування на Shasta testnet.
- Деплой на mainnet з верифікацією вихідного коду на TronScan.
- Документація щодо взаємодії з контрактом.
- Підтримка протягом 30 днів після деплою.
| Тип контракту | Орієнтовна вартість energy | Час адаптації |
|---|---|---|
| Простий TRC-20 | 60 000–100 000 energy | 1–2 дні |
| З кастомною логікою | 100 000–200 000 energy | 2–5 днів |
Терміни та як почати
Деплой простого контракту (без інтеграцій) — від 4 годин на тестнеті, до 2 днів на мейннеті. Складні проекти з кастомною логікою — до 1 тижня. Вартість розраховується індивідуально. Отримайте консультацію по вашому проекту — зв'яжіться з нами для оцінки. Ми гарантуємо коректний деплой та верифікацію.
Як TronWeb взаємодіє з контрактом
TronWeb — основний клієнт для читання та запису даних контракту. Приклад:
const TronWeb = require("tronweb") const tronWeb = new TronWeb({ fullHost: "https://api.trongrid.io", headers: { "TRON-PRO-API-KEY": process.env.TRONGRID_API_KEY }, privateKey: process.env.TRON_PRIVATE_KEY }) const contract = await tronWeb.contract().at(CONTRACT_ADDRESS) const result = await contract.balanceOf(address).call() const tx = await contract.transfer(recipient, amount).send({ feeLimit: 100_000_000, callValue: 0 }) Верифікація на TronScan
Після деплою контракт необхідно верифікувати на TronScan. Завантажте вихідний код, вкажіть версію компілятора та оптимізацію. CLI-верифікації немає — тільки через UI. Ми виконуємо цей крок самостійно.
Офіційна документація Tron підтверджує описані підходи.
Замовте деплой під ключ — наша команда проведе повний цикл від аналізу до верифікації. Отримайте консультацію по вашому проекту — зв'яжіться з нами для оцінки протягом 24 годин.







