Обработка NFT
Эта страница переведена сообществом на русский язык, но нуждается в улучшениях. Если вы хотите принять участие в переводе свяжитесь с @alexgton.
Обзор
В этом разделе нашей документации мы предоставим читателям более полное представление о NFT. Это научит читателя взаимодействовать с NFT и как принимать их через транзакции, отправленные в блокчейн TON.
Информация, представленная ниже, предполагает, что читатель уже глубоко изучил наш предыдущий [раздел, подробно описывающий обработку платежей в Toncoin] (/v3/guidelines/dapps/asset-processing/payments-processing), и что он также обладает ба зовым пониманием того, как программно взаимодействовать с смарт-контрактами кошелька.
Понимание основ NFT
NFT, работающие на блокчейне TON, представлены стандартами TEP-62 и TEP-64.
Блокчейн The Open Network (TON) разработан с учетом высокой производительности и включает в себя функцию автоматического сегментирование на основе адресов контрактов на TON (которые используются для предоставления конкретных проектов NFT). Чтобы достичь оптимальной производительности, отдельные NFT должны использовать свой собственный смарт-контракт. Это позволяет создавать коллекции NFT любого размера (как большие, так и маленькие), а также снижает затраты на разработку и проблемы с производительностью. Однако такой подход также вносит новые соображения в разработку коллекций NFT.
Поскольку каждый NFT использует собственный смарт-контракт, невозможно получить информацию об отдельных NFT в коллекции, используя один контракт. Чтобы извлечь информацию о всей коллекции в целом, а также о каждом индивидуальном NFT внутри коллекции, необходимо запросить как контракт коллекции, так и контракт каждого отдельного NFT в отдельности. По той же причине для отслеживания переводов NFT необходимо отслеживать все транзакции для каждого отдельного NFT в рамках конкретной коллекции.
NFT Collections
NFT Collection - это контракт, который служит для индексирования и хранения содержимого NFT и должен содержать следующие интерфейсы:
Get method get_collection_data
(int next_item_index, cell collection_content, slice owner_address) get_collection_data()
Получает общую информацию о коллекции, которая представлена следующим образом:
next_item_index
- если коллекция упорядочена, эта классификация указывает на общее количество NFT в коллекции, а также на следующий индекс, используемый для выпуска. Для неупорядоченных коллекций значениеnext_item_index
равно -1, что означает, что коллекция использует уникальные механизмы для отслеживания NFT (например, хэш или домены TON DNS).collection_content
- ячейка, представляющая содержимое коллекции в формате, совместимом с TEP-64.owner_address
- фрагмент, содержащий адрес владельца коллекции (это значение также может быть пустым).
Get method get_nft_address_by_index
(slice nft_address) get_nft_address_by_index(int index)
Этот метод можно использовать для проверки достоверности NFT и подтверждения, действительно ли он принадлежит определенной коллекции. Он также позволяет пользователям извлекать адрес NFT, указав его индекс в коллекции. Метод должен вернуть фрагмент, содержащий адрес NFT, соответствующий указанному индексу.
Get method get_nft_content
(cell full_content) get_nft_content(int index, cell individual_content)
Поскольку коллекция служит общим хранилищем данных для NFT, этот метод необходим для заполнения содержимого NFT. Чтобы использовать этот метод, сначала необходимо получить individual_content
NFT, вызвав соответствующий метод get_nft_data()
. После получения individual_content
можно вызвать метод get_nft_content()
с индексом NFT и ячейкой individual_content
. Метод должен вернуть ячейку TEP-64, содержащую полное содержимое NFT.
NFT Items
Основные NFT должны быть реализованы:
Get method get_nft_data()
(int init?, int index, slice collection_address, slice owner_address, cell individual_content) get_nft_data()