Обработка Mintless Jettons
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @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.
- Скачайте дерево airdrops с использованием
Поддержка Mintless-заявок (в частности, индексация эирдроп деревьев) не является обязательной для кошельков. Ожидается, что приложения кошельков могут взимать плату с эмитента jetton за этот сервис.
Поддержка Mintless Jettons в dApps (DEX/Lending платформы)
Поскольку заявка происходит автоматически в приложениях кошелька, dApps не нуждаются в специальной логике. Они могут использовать API (например, Tonapi или Toncenter), которые показывают невостребованные балансы.
Для улучшения пользовательского опыта dApps могут проверять, поддерживает ли приложение кошелка, с которым пользователь подключился к dApp, конкретный тип Mintless Jetton. Если он не поддерживается, dApp может получить доказательство и данные инициализации эирдропа из API jetton и добавить их в сообщение transfer
на стороне dApp.
Развертывание Mintless Jettons
Развертывание Mintless Jetton включает несколько шагов:
- Подготовьте дерево Меркла:
- Создайте дерево Меркла, содержащего всех получателей эирдропа и их су ммы.
- Вычислите корневой
merkle_hash
.
- Разверните контракт Jetton Master:
- Включите
merkle_hash
в хранилище контракта. - Убедитесь, что контракт соответствует расширенному стандарту Jetton; вы можете использовать реализацию стандартного интерфейса Mintless Jetton.
- Предоставьте доказательства Меркла:
- Разместите данные дерева Меркл off-chain.
- Реализуйте API Custom Payload, чтобы кошельки могли извлекать необходимые доказательства.
- Обновите метаданные:
- Добавьте
mintless_merkle_dump_uri
иcustom_payload_api_uri
в метаданные токена в соответствии со стандартом метаданных.
- Запросите поддержку из кошельков:
- Попросите нужные приложения кошельков поддерживать (индексировать) ваш 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)
- Компиляция утилиты:
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
.
- Запустите проверку:
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)
- Компиляция утилиты:
git clone https://github.com/tonkeeper/mintless-toolbox.git
cd mintless-toolbox
make
- Запустите проверку:
./bin/mintless-cli dump <airdrop-filename>
- Эта утилита считывает файл эирдроп и выводит его на консоль в формате
address,amount,start_from,expire_at
.
Проверяя дерево Меркл и данные контракта, заинтересованные стороны могут проверить целостность эирдропа и общего объема токенов.
Заключение
Mintless Jettons предлагает эффективное и масштабируемое решение для крупномасштабных эирдропов токенов на блокчейне TON. Расширяя стандартную реализацию Jetton, они снижают затраты и нагрузку на блокчейн, сохраняя при этом безопасность и децентрализацию. Поддержка Mintless Jettons в смарт-ко нтрактах, приложениях кошельков и dApps обеспечивает бесперебойный опыт для пользователей и способствует более широкому использованию. Развертывание и аудит Mintless Jettons включает в себя тщательную реализацию деревьев Меркла и соблюдение расширенных стандартов, что способствует созданию надежной и прозрачной экосистемы токенов.