Как я могу определить, является ли смарт-контракт на 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
, то вы знаете, что эти смарт-контракты (утверждают, что) реализуют этот конкретный интерфейс.
- Если вы хотите проверить, реализует ли конкретный смарт-контракт «Стандарт нефинансовых токенов» :
- вызов
supportsInterface(0x80ac58cd)
- вызов
- Если вы хотите проверить, реализует ли конкретный смарт-контракт «Стандарт нескольких токенов» , который в настоящее время является вторым по популярности стандартом NFT:
- вызов
supportsInterface(0xd9b67a26)
- вызов
(Обратите внимание, что хотя оба приведенных выше значения указаны в соответствующих стандартах, вы также можете рассчитать их самостоятельно, а стандарт EIP-165 включает раздел о том, как это сделать.)