Как я могу определить, является ли смарт-контракт на RSK NFT?

Учитывая адрес смарт-контракта, развернутого в RSK, как я могу определить, является это NFT или нет? Есть ли «стандартный» способ сделать это?

1 ответ

Да, есть окончательный способ сделать это, если смарт-контракты реализуют хорошо известные стандарты токенов для NFT, которые, в свою очередь, реализуют хорошо известное определение стандартного интерфейса EIP165 .

(1) Самый простой способ сделать это - просто найти адрес в проводнике блоков RSK.

Если адрес смарт-контракта 0x814eb350813c993df32044f862b800f91e0aaaf0, затем перейдите на https://explorer.rsk.co/address/0x814eb350813c993df32044f862b800f91e0aaaf0

На этой странице вы увидите строку «Интерфейсы контракта», а в случае этого смарт-контракта отображает ERC165 ERC721 ERC721Enumerable ERC721Metadata. Поскольку это содержит ERC721, мы знаем, что он реализует этот стандарт токенов для невзаимозаменяемых токенов.

(2) Более программный способ сделать это - использовать функцию, определенную в стандарте EIP165, интерфейс которого скопирован ниже:

      interface ERC165 {
    /// @notice Query if a contract implements an interface
    /// @param interfaceID The interface identifier, as specified in ERC-165
    /// @dev Interface identification is specified in ERC-165. This function
    ///  uses less than 30,000 gas.
    /// @return `true` if the contract implements `interfaceID` and
    ///  `interfaceID` is not 0xffffffff, `false` otherwise
    function supportsInterface(bytes4 interfaceID) external view returns (bool);
}

Не вдаваясь в математику того, как это вычисляется (полное описание / объяснение см. В стандарте EIP-165), если вы вызываете supportsInterface возвращается true, то вы знаете, что эти смарт-контракты (утверждают, что) реализуют этот конкретный интерфейс.

(Обратите внимание, что хотя оба приведенных выше значения указаны в соответствующих стандартах, вы также можете рассчитать их самостоятельно, а стандарт EIP-165 включает раздел о том, как это сделать.)

Другие вопросы по тегам