TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
MetaLamp | CIS

26 Jun, 13:21

Открыть в Telegram Поделиться Пожаловаться

🚽 Tron: Три нюанса, о которых нет в доке.

1000 лет ничего не деплоил в замечательную сеть Tron. Ниже опишу то, с чем я столкнулся сегодня.

1️⃣ Опкод `mcopy` сломал компиляцию, хотя мой контракт его даже не использует

Наследовался от контракта из OpenZeppelin 5.6.1 — компиляция падает.

Оказалось, внутри зависимостей AccessControlEnumerable → EnumerableSet → Arrays
используется опкод MCOPY (EIP-5656), который доступен только с Cancun. У меня стояла версия для компиляции: 'istanbul'. Попотел над поиском проблемы знатно.

Отмечу, что я не сам придумал использовать istanbul, я взял это из доки TronBox 😡. Поэтому, если используете свежий OZ, то ставьте сразу 'cancun'.

2️⃣ TronBox тихо съедает аргумент конструктора

У меня скрипт деплоя чуть сложнее, чем деплой ERC-20. Конструктор принимает много параметров и я подумал, что хочу объединить все это в структуру Config. Тогда скрипт деплоя/миграции вот такой

...

const config = [param0, param1, ... , paramN]; // Массив (tuple) в деплой скрипте описывает мою структуру для конструктора моего контракта

await deployer.deploy(MyContract, config);

....

TronBox плюнул ошибку: constructor expected 1 arguments, received 0.

Прикол! Зову Гарри Поттера Claude, лезем в исходники самого TronBox. Внутри есть проверка typeof lastArg === "object", которая считает последний аргумент «опциями деплоя»... и массивы у JS тоже typeof === "object". Получается мой единственный аргумент TronBox принимал за опции деплоя и стирал.

Подсунул пустой объект последним аргументом, чтобы TronBox мог продолжить заниматься этим непотребством.

await deployer.deploy(MyContract, config, {});

Не передавайте массив как последний аргумент без {} и вообще будьте на стороже...

3️⃣ Больше не надо удалять дублиait deployer.deploy(MyContrруками во flatten файле для верификации.

Если вы хоть когда-нибудь деплоили в Tron, то вы знаете, что там нельзя верифицировать контракт привычным для EVM блокчейнов способом.

TronScan предлагает собрать контракт со всеми зависимостями в один файл, который он компилирует и проверяет. При этом Tron не умеет верифицировать набор файлов.

Самое нудное! Перед верификацией нужно удалить из этого собранного воедино файла дубли SPDX-License-Identifier. Если что, то это официальная рекомендация Tron! У меня их получилось ни много, ни мало 22 штуки.

И вот TronBox наконец-то подвез фичу, которая делает это за вас! Они заключили соглашение с клодом, чтобы тот научился мать вашу удалять дубли автоматически. Объясняешь клоду ситуацию и он все делает по-красоте. Я прям кайфанул, как-будто клод мне золотого бота написал для Polymarket!

Пожалуй это самое полезное, что для меня когда либо сделал Claude Code. Советую попробовать 😁

P.S. Третий пункт оказывается и правда исправлен в TronBox@4.6.0. У меня был TronBox@4.5.0, поэтому нужно было заниматься удалением дублей руками.

Поднял версию и проблемы больше нет. Снимаю шляпу, пост только вышел, а проблема уже исправлена)

#павел_найданов

🤟 Сайт | ТГ-канал | Наш чат

926 1 8 4 19
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot