检索 web3 contract.ownerOf NFT ERC721

问题描述

我正在使用 web3 和前端,试图从以太坊区块链中读取一些信息。我想做的是验证 NFT (erc721) 的所有者。

在这里使用了这段代码,它使我能够检查链接到连接钱包地址的某个 ERC20 的余额

  function getERC20TokenBalance(tokenAddress,walletAddress,callback) {

  let minABI = [
    // balanceOf
    {
      "constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"type":"function"
    },// decimals
    {
      "constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"type":"function"
    }
  ];

  let contract = web3.eth.contract(minABI).at(tokenAddress);
  
  contract.balanceOf(walletAddress,(error,balance) => {
    // ERC20トークンの decimals を取得
    contract.decimals((error,decimals) => {
      balance = balance.div(10**decimals);
      console.log(balance.toString());
      callback(balance);
    });
  });
  
}

setInterval(function() {
  let tokenAddress = '0x50f5474724e0ee42d9a4e711ccfb275809fd6d4a';
    let walletAddress = web3.eth.accounts[0];
          if(tokenAddress != "" && walletAddress != "") {
        getERC20TokenBalance(tokenAddress,(balance) => {
          document.getElementById('text-bal').innerText = balance.toFixed(3);
        });        
      };
        },100);

现在我想验证某个 NFT,我使用了 0x50f5474724e0ee42d9a4e711ccfb275809fd6d4a(SANDBox 土地合同)。使用 balanceOf,它确实向我显示该地址中包含 LAND NFT,但我想通过将其更改为

来检查 tokenID
let contract = web3.eth.contract(minABI).at(tokenAddress);
contract.ownerOf('18429');

它什么也没返回,你们能指出我正确的方向吗:)?

解决方法

代币不在合约的余额上,它们在合约内。 根据 erc721 - 您必须调用合约的 balanceOf 方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...