繁体   English   中英

我正在创建一个智能合约来与特定的 NFT 进行交互。 有没有function来过滤具体的NFT合约地址?

[英]I'm creating a smart contract to interact with specific NFTs. Is there a function to filter a specific NFT contract address?

我想创建一个只与特定 NFT 交互的智能合约。 我知道有一个“tokenID”属性,我认为这不是唯一的。 Cronoscan 显示多个具有相同 tokenID 的 collections。 有谁知道智能合约是否可以根据合约地址进行过滤? 我想用尽可能少的气体来完成这个。

很抱歉,如果这是一个基本问题,但我已经用谷歌搜索并搜索了这个留言板的答案,但无法在其他人试图出售他们的服务的地方找到答案。

我谷歌并搜索 Stack Overflow 但找不到答案。

是的,每个合约都有自己的一组 ID,因此它们在合约之间不是唯一的,只是每个合约唯一。

这将检查地址的代码大小是否 > 0。这将必须在新合约上实施,或者您必须找到具有此功能的现有合约才能查看/执行它

function isContract(address addressValue) public view returns (bool) {
    uint size;
    assembly { size := extcodesize(addressValue) }
    return size > 0;
}

另请注意,这是一个视图 function,因此不会花费任何气体来执行。

对于将其作为服务出售的人,您可以通过在您想要的任何 main.net 上部署该合约来自己获得它(听起来像 Cronos)。

'// SPDX-License-Identifier: MIT

 pragma solidity 0.8.7;

 contract ContractIdentifier{

      function isContract(address addressValue) public view returns (bool) {
          uint size;
          assembly { size := extcodesize(addressValue) }
          return size > 0;
      }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM