如何判断RSK上的智能合约是否为NFT?

如何判断RSK上的智能合约是否为NFT?,nft,rsk,Nft,Rsk,给定部署到RSK的智能合约的地址,我如何判断它是否为NFT?有没有一种“标准”的方法可以做到这一点?是的,有一种明确的方法可以做到这一点, 如果智能合约为NFT实施众所周知的令牌标准, 这反过来又实现了众所周知的 (1) 最简单的方法是在RSK块资源管理器上查找地址 如果智能合约地址为0x814eb350813c993df32044f862b800f91e0aaaf0,则转至 在此页面上,您将看到“合同接口”的一行, 在这个智能合约的情况下, 显示ERC165 ERC721 ERC721可数E

给定部署到RSK的智能合约的地址,我如何判断它是否为NFT?有没有一种“标准”的方法可以做到这一点?

是的,有一种明确的方法可以做到这一点, 如果智能合约为NFT实施众所周知的令牌标准, 这反过来又实现了众所周知的

(1) 最简单的方法是在RSK块资源管理器上查找地址

如果智能合约地址为
0x814eb350813c993df32044f862b800f91e0aaaf0
,则转至

在此页面上,您将看到“合同接口”的一行, 在这个智能合约的情况下, 显示
ERC165 ERC721 ERC721可数ERC721元数据
。 由于它包含
ERC721
,我们知道它实现了不可替换令牌的令牌标准

(2) 更具编程性/DIY的方法是使用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
,则您知道 该智能合约(声称)实现该特定接口

  • 如果希望测试特定智能合约是否实现 :
    • 调用
      supportsInterface(0x80ac58cd)
  • 如果希望测试特定智能合约是否实现 , 这是目前第二流行的NFT标准:
    • 调用
      支持接口(0xd9b67a26)
(请注意,尽管上述两个值在各自的标准中均有规定, 您可能还希望自己计算它们,EIP-165标准中包含了关于如何计算的部分。)