Как проверить принадлежность NFT в TON к заявленной коллекции

Контракт отдельного NFT может указать у себя адрес известной коллекции. Маркетплейс может проверить это утверждение встречным запросом к самой коллекции.

Получите адрес по индексу со стороны коллекции

Прочитайте get_nft_data у предмета и убедитесь, что он инициализирован. Если заявлена принадлежность к коллекции, передайте полученный индекс в get_nft_address_by_index ожидаемого контракта коллекции. Сверьте результат с адресом проверяемого NFT. В примере три адреса сокращены для наглядности.

const claimed = { item: "contract-X", collection: "collection-C", index: 12n };
const addressAt12 = "contract-Y"; // result returned by the trusted collection
console.log(claimed.item === addressAt12);

Сохраните сведения о расхождении

Если коллекция вернула Y, а в листинге указан X, сохраните индекс, заявленную коллекцию и оба адреса. Такому X нельзя присваивать отметку проверенной коллекции. На практике сравнивайте разобранные адреса в контексте одной сети. Самостоятельный NFT может обходиться без адреса коллекции. Даже успешная проверка членства не удостоверяет сторонний сервер, с которого загружается изображение.

github.com TEP-62 NFT interface