TronBox: разработка смарт-контрактов на TRON
TronBox — это стандартная среда разработки для смарт-контрактов TRON, позволяющая компилировать Solidity, выполнять миграции и развертывать в Shasta или основной сети. Если вы использовали Truffle на Ethereum, рабочие процессы TronBox покажутся вам знакомыми.
В этом руководстве описываются настройка, конфигурация, миграция проекта, рабочий процесс тестирования и интеграция с TronWeb.
Установите и инициализируйте
npm install -g tronbox mkdir my-tron-dapp && cd my-tron-dapp tronbox init
Сгенерированный макет:
⟦Т1⟧
конфигурация tronbox.js
⟦Т2⟧
Никогда не фиксируйте закрытые ключи — используйте переменные среды.
Написание контрактов
Solidity для целей TRON TVM. Пример TRC-20 в руководстве по развертыванию TRC-20.
Контракты OpenZeppelin работают с выравниванием версий — импортируйте через npm и при необходимости настраивайте переназначения solc.
Миграции {#миграции}
migrations/1_initial_migration.js — развертывает контракт трекера Migrations.
migrations/2_deploy_mycontract.js:
⟦Т3⟧
Запустить:
⟦Т4⟧
Сброс состояния локального развертывания:
⟦Т5⟧
Тестирование {#тестирование}
Опции:
- Руководство — TronIDE, TronScan контракт на чтение/запись.
- Скрипты — TronWeb интеграционные тесты против Shasta.
- Консоль TronBox —
tronbox console --network shasta
Экосистема автоматизированного тестирования тоньше, чем у Ethereum — многие команды используют собственные скрипты Jest + TronWeb.
Рабочий процесс Шасты
- Создайте кошелек Shasta (TronLink режим Shasta или
tronWeb.createAccount()) - Фонд с крана Шаста
- Миграция контрактов
- Проверьте Шаста TronScan
- Запустите сценарии взаимодействия TronWeb.
Контрольный список развертывания основной сети
- [ ] Аудит или проверка внутренней безопасности — безопасность смарт-контракта
- [ ] Аргументы конструктора дважды проверены
- [ ] Кошелек развертывателя финансируется TRX + Энергия
- [ ]
feeLimitдостаточно для крупных контрактов - [ ] Проверка источника на TronScan после развертывания.
- [ ] Передача права собственности на мультиподпись, если применимо
⟦Т6⟧
TronBox против TronIDE
| Инструмент | Лучшее для |
|---|---|
| ТронБокс | Мультиконтрактные проекты, миграции, CI |
| ТронИДЕ | Быстрое развертывание браузера, обучение |
Многие команды создают прототипы в TronIDE, а производят в TronBox.
Распространенные проблемы
| Выпуск | Исправить |
|---|---|
| Несоответствие версий компиляции | Выровняйте solc в tronbox.js с pragma |
| OUT_OF_ENERGY при миграции | Увеличить комиссионный лимит; заморозить TRX в развертывателе |
| Тайм-аут сети | Добавьте ключ API TronGrid |
| Неправильный network_id | Сопоставить основную сеть «1» / шаста «2» |
Миграция с TronBox на Hardhat
Некоторые команды переходят на Hardhat с плагинами TRON для единого Ethereum+TRON CI. TronBox остается действительным для развертываний Solidity 0.5.x/0.8.x TRON. Выберите одну цепочку инструментов для каждого репозитория, чтобы избежать смещения конфигурации.
Конфигурация сети в tronbox.js
Определите сети mainnet, shasta и development с правильными fullHost и privateKey из окружающей среды. Случайное развертывание основной сети с использованием тестовых ключей или наоборот приводит к инцидентам. Добавьте сценарий подтверждения перед развертыванием, который печатает имя сети и требует явной переменной env CONFIRM=mainnet.
Контрольный список устранения неполадок
Если что-то пойдет не так на TRON, отнеситесь к этому как к проблеме структурированной отладки: подтвердите точный txid в цепочке, проверьте адрес целевого контракта и только затем решите, можно ли устранить сбой. В TRON многие «загадочные» проблемы — это просто одна из следующих: неправильная сеть (основная сеть или тестовая сеть), неправильный контракт токена (поддельный USDT / токены с одинаковым названием), недостаточность ресурсов (OUT_OF_ENERGY / пропускная способность) или задержка пользовательского интерфейса/индексатора между кошельком и проводником.
Начните с этих цепочек проверок:
- Всегда копируйте полный txid/хэш из своего кошелька или проводника.
- Подтвердите статус результата передачи по TronScan (SUCCESS, REVERT, OUT_OF_ENERGY или все еще в ожидании).
- Проверьте, соответствует ли адрес получателя/договора тому, что вы намеревались отправить.
- Если это вызов контракта, убедитесь, что селектор функций и параметры соответствуют стандарту токена, который, по вашему мнению, вы используете (TRC-20 vs TRC-10 vs BEP-20 на BSC).
Затем примените путь исправления для вашей категории:
- Подтвердите статус и параметры транзакции.
- Проверка адресов (контракт токена, получатель, маршрутизатор/отправитель).
- Добавляйте или делегируйте ресурсы (энергию/пропускную способность), если сбой связан с ресурсами.
Распространенные ошибки
Эти шаблоны вызывают большинство сбоев на уровне пользователя:
- Использование адресов основной сети в тестовой сети (или наоборот).
- Копирование символа токена вместо фактического адреса контракта TRC-20.
- Подписание неправильного адреса одобрения/платежа, поскольку ссылка пользовательского интерфейса является вредоносной или устаревшей.
- Повторная попытка без изменения ошибочного ввода (например, REVERT продолжает возвращаться до тех пор, пока вы не исправите параметр).Если вы не уверены, не «просто отправьте еще раз». Внесите одно контролируемое изменение, проверьте на TronScan, затем продолжайте.
Часто задаваемые вопросы
Как узнать, действительно ли транзакция подтверждена?
Используйте TronScan и проверьте статус результата передачи. Ярлыки кошелька «ожидающие» могут отставать; Статус цепочки является источником истины. Скопируйте txid и проверьте SUCCESS/REVERT/OUT_OF_ENERGY, а не только текст пользовательского интерфейса.
Почему пользовательский интерфейс отличается от TronScan?
Некоторые кошельки и децентрализованные приложения используют разные индексаторы или уровни кэша. Короткая задержка между трансляцией и индексированием является нормальной; сравните txid и подождите, пока цепочка стабилизируется, прежде чем сделать вывод об ошибке.
Что мне делать после REVERT?
Остановитесь и декодируйте неудачный вызов. Большинство ошибок REVERT вызвано недопустимыми параметрами, неправильным адресом контракта, отсутствием утверждений или несоответствием между стандартом токена и методом. Устраните причину и подпишите заново.
Безопасно ли подписывать неограниченное разрешение?
Неограниченное одобрение безопасно только для проверенных вами адресов доверенных отправителей (проверенный источник, правильный маршрутизатор и ожидаемый контракт токена). Для тестирования отдавайте предпочтение ограниченному утверждению и отзыву после завершения.
Какие ресурсы требуются TRON для контрактных вызовов?
Выполнение смарт-контракта в основном потребляет энергию, а байты транзакций потребляют пропускную способность. Если вы получили OUT_OF_ENERGY, добавьте/заморозьте/делегируйте Энергию. Если пропускная способность исчерпана, сосредоточьтесь на сохранении достаточного количества TRX для байтов и распределения ресурсов.
Как я могу уменьшить количество обращений в службу поддержки?
Покажите пользователям четкое сообщение «что произошло» на основе статуса цепочки и дайте прямую ссылку на соответствующее руководство (ожидание, сбой, отсутствие энергии или проверка). Сохраните txid, чтобы можно было быстро выполнить согласование.
Похожие руководства {#связанные}
Часто задаваемые вопросы
Что такое ТронБокс?
TronBox — это среда разработки для смарт-контрактов TRON, аналогичная Truffle на Ethereum, с возможностью компиляции, миграции и настройки сети.
Может ли TronBox развернуться в основной сети?
Да, с использованием закрытого ключа в конфигурации сети. Всегда сначала тестируйте в тестовой сети Shasta.
Поддерживает ли TronBox миграцию TypeScript?
Миграции по умолчанию выполняются на JavaScript. Вы можете использовать ts-node с индивидуальной настройкой или скомпилировать TS в JS.
Как проверить контракты, развернутые TronBox?
Используйте TronScan для проверки пользовательского интерфейса с точной версией solc и настройками оптимизации из tronbox.js.
TronBox все еще поддерживается?
Проверьте официальный TRON GitHub для получения последних выпусков. Версии контактов в производстве CI.
Спасибо — ваш фидбек помогает улучшать документацию.