Перейти к основному содержимому

Обработка Mintless Jettons

warning

Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.

Введение

к сведению

Для полного понимания следует быть знакомым с основными принципами обработки активов, описанными в разделах обработки платежей и обработки Jetton.

Экосистема блокчейна TON представила инновационное расширение стандарта Jetton под названием Mintless Jettons.

Это расширение позволяет проводить децентрализованные, доказуемые с помощью доказательства Меркла эирдропы без необходимости традиционных процессов чеканки.

Общие сведения

Mintless Jettons - это расширение (TEP-177 и TEP-176) стандартной реализации Jetton (TEP-74) на блокчейне TON.

Эта реализация обеспечивает крупномасштабные децентрализованные эирдропы миллионам пользователей без значительных затрат или чрезмерной нагрузки на блокчейн.

Основные характеристики

  • Масштабируемость: традиционные процессы чеканки могут быть ресурсоемкими и дорогостоящими при распространении токенов среди большого количества пользователей.
  • Эффективность: используя деревья Меркла, Mintless Jettons хранят один хэш, представляющий все суммы эирдропов, что снижает требования к хранилищу.
  • Удобные эирдропы: пользователи могут немедленно использовать свои — отправлять, обменивать и т. д. — без каких-либо подготовительных шагов, таких как вывод или запрос!

Поддержка Mintless Jettons в On-Chain протоколах

Поскольку Mintless Jettons являются расширением стандартных Jetton, никаких дополнительных шагов не требуется. Просто взаимодействуйте с ними так же, как с USDT, NOT, Scale или STON.

Поддержка Mintless Jettons в приложениях кошельков

Приложения кошельков играют важную роль в улучшении пользовательского опыта с использованием Mintless Jettons:

  • Отображение невостребованных Jetton: кошельки должны показывать пользователям Jetton, которые они имеют право запросить, на основе данных дерева Меркла.
  • Автоматизированный процесс запроса: при инициировании исходящего перевода кошелек должен автоматически включать необходимое доказательство Меркла в пользовательскую полезную нагрузку сообщения transfer.

Это можно сделать одним из следующих способов:

  • Интеграция с API Off-Chain, указанным в API Custom Payload**:

    • Для каждого jetton проверьте, является ли он Mintless.
    • Если это Mintless, проверьте, заявил ли его владелец кошелька.
    • Если он не заявлен, получите данные из API Custom Payload и добавьте баланс off-chain к балансу on-chain.
    • При исходящих переводах, если пользователь еще не запросил эирдроп, извлеките пользовательскую полезную нагрузку и состояние init из API Custom Payload и включите их в сообщение transfer в кошелек jetton.
  • Пользовательский API:

    • Скачайте дерево airdrops с использованием mintless_merkle_dump_uri в метаданных jetton.
    • Проанализируйте его (см. раздел 6 ниже) и предоставьте разобранный результат доступным через API.
к сведению

Поддержка Mintless-заявок (в частности, индексация эирдроп деревьев) не является обязательной для кошельков. Ожидается, что приложения кошельков могут взимать плату с эмитента jetton за этот сервис.

Поддержка Mintless Jettons в dApps (DEX/Lending платформы)

Поскольку заявка происходит автоматически в приложениях кошелька, dApps не нуждаются в специальной логике. Они могут использовать API (например, Tonapi или Toncenter), которые показывают невостребованные балансы.

Для улучшения пользовательского опыта dApps могут проверять, поддерживает ли приложение кошелка, с которым пользователь подключился к dApp, конкретный тип Mintless Jetton. Если он не поддерживается, dApp может получить доказательство и данные инициализации эирдропа из API jetton и добавить их в сообщение transfer на стороне dApp.

Развертывание Mintless Jettons

Развертывание Mintless Jetton включает несколько шагов:

  1. Подготовьте дерево Меркла:
  • Создайте дерево Меркла, содержащего всех получателей эирдропа и их суммы.
  • Вычислите корневой merkle_hash.
  1. Разверните контракт Jetton Master:
  1. Предоставьте доказательства Меркла:
  • Разместите данные дерева Меркл off-chain.
  • Реализуйте API Custom Payload, чтобы кошельки могли извлекать необходимые доказательства.
  1. Обновите метаданные:
  1. Запросите поддержку из кошельков:
  • Попросите нужные приложения кошельков поддерживать (индексировать) ваш Mintless Jetton.

Выполнив эти шаги, вы можете развернуть Mintless Jetton, который пользователи могут легко запросить во время обычных операций.

Получение информации о эирдропе

Аудит аирдропа и проверка общего предложения состоит из нескольких шагов.

Доступ к дампу Меркл

  • Начните с загрузки данных дерева Меркл из mintless_merkle_dump_uri, предоставленного в метаданных. Эти данные могут храниться в TON Storage, IPFS, ресурсах web 2.0 или другими способами. Этот файл содержит HashMap{address -> airdrop_data} как BoC-файл. Airdrop_data включает сумму, временную метку Unix, с которой доступен запрос (start_from), и временную метку Unix, когда запрос закрыт (expired_at).

Проверка целостности

  • Это можно сделать, сравнив хэш ячейки дампа Меркл без mintless с хешем, хранящимся в minter jetton (последний можно получить on-chain с помощью метода get_mintless_airdrop_hashmap_root контракта minter).

Проверка балансов

  • Используйте дерево Меркл для проверки отдельных балансов и убедитесь, что их сумма соответствуют ожидаемому общему предложению.

Инструменты

Существует несколько утилит, которые можно использовать для описанных выше шагов.

mintless-proof-generator (из Core)

  1. Компиляция утилиты:
git clone https://github.com/ton-blockchain/ton
cd ton
git checkout testnet
mkdir build && cd build
cmake ../
make mintless-proof-generator
  • Скомпилированный файл сохраняется как build/crypto/mintless-proof-generator.
  1. Запустите проверку:
build/crypto/mintless-proof-generator parse <input-boc> <output-file>

Эта утилита выведет хэш ячейки дампа Меркл mintless и сохранит в <output-file> список всех эирдропов в формате <address> <amount> <start_from> <expired_at> (по одному эирдропу на строку).

Вы также можете сгенерировать все доказательства Меркл (необходимые для custom_payload_api_uri) через команду mintless-proof-generator make_all_proofs <input-boc> <output-file>.

mintless-toolbox (из Tonkeeper)

  1. Компиляция утилиты:
git clone https://github.com/tonkeeper/mintless-toolbox.git
cd mintless-toolbox
make
  1. Запустите проверку:
./bin/mintless-cli dump <airdrop-filename>
  • Эта утилита считывает файл эирдроп и выводит его на консоль в формате address,amount,start_from,expire_at.

Проверяя дерево Меркл и данные контракта, заинтересованные стороны могут проверить целостность эирдропа и общего объема токенов.

Заключение

Mintless Jettons предлагает эффективное и масштабируемое решение для крупномасштабных эирдропов токенов на блокчейне TON. Расширяя стандартную реализацию Jetton, они снижают затраты и нагрузку на блокчейн, сохраняя при этом безопасность и децентрализацию. Поддержка Mintless Jettons в смарт-контрактах, приложениях кошельков и dApps обеспечивает бесперебойный опыт для пользователей и способствует более широкому использованию. Развертывание и аудит Mintless Jettons включает в себя тщательную реализацию деревьев Меркла и соблюдение расширенных стандартов, что способствует созданию надежной и прозрачной экосистемы токенов.

См. также