TON NFT 处理
概述
在本文档部分中,我们将向读者提供对 NFT 的更深刻理解。这将教导读者如何与 NFT 交互,并如何通过在 TON 区块链上发送的交易接收 NFT。
下面提供的信息假定读者已经深入了解了我们之前的有关 Toncoin 支付处理的部分,同时也假设他们具备通过编程与钱包智能合约交互的基本知识。
理解 NFT 的基础
在 TON 区块链上运行的 NFT 由 TEP-62 和 TEP-64 标准表示。
Open Network (TON) 区块链设计考虑了高性能,并包括了一个功能,该功能基于 TON 上的合约地址使用自动分片(用于帮助配置特定 NFT 设计)。为了实现最佳性能,单个 NFT 必须使用自己的智能合约。这使得可以创建任意大小(数量大或小)的 NFT 集合,同时也降低了开发成本和性能问题。然而,这种方法也为 NFT 集合的开发引入了新的考虑因素。
因为每个 NFT 都使用自己的智能合约,所以使用单个合约无法获取 NFT 集合中每个个体化 NFT 的信息。为了检索整个集合以及集合中每个 NFT 的信息,需要分别查询集合合约和每个个体 NFT 合约。出于同样的原因,要跟 踪 NFT 转移,需要跟踪特定集合中每个个体化 NFT 的所有交易。
NFT 集合
NFT 集合是一个用于索引和存储 NFT 内容的合约,并应包含以下接口:
获取方法 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 兼容格式表示集合内容的 cell。owner_address
- 包含集合所有者地址的 slice(此值也可以为空)。
获取方法 get_nft_address_by_index
(slice nft_address) get_nft_address_by_index(int index)
此方法可用于验证 NFT 的真实性,并确认它是否确实属于特定集合。它还使用户能够通过提供其在集合中的索引来检索 NFT 地址。该方法应返回包含与提供的索引对应的 NFT 地址的 slice。