TronBox: разработка смарт-контрактов на TRON — TRON Wiki

TronBox: разработка смарт-контрактов на TRON

11 мин чтения · ⌘K поиск

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.
  • Консоль TronBoxtronbox console --network shasta

Экосистема автоматизированного тестирования тоньше, чем у Ethereum — многие команды используют собственные скрипты Jest + TronWeb.

Рабочий процесс Шасты

  1. Создайте кошелек Shasta (TronLink режим Shasta или tronWeb.createAccount())
  2. Фонд с крана Шаста
  3. Миграция контрактов
  4. Проверьте Шаста TronScan
  5. Запустите сценарии взаимодействия 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.