0

So I am building a Dapp to interact with an ERC721 contract. So far I'm able to mint, transfer and check an address balance. I'm stuck with trying to show who owns which token( via their token id). The output keeps saying

0x

It randomly works and shows the address of the owner. The console is not showing any errors. Attached are my code and picture of the output. Thanks in advance.

HTML CODE

 <h1>Token Owner</h1>
<br><label for "tokenId">Token ID;</label><input type="text" id="tokenId" placeholder="e.g., 03945812"></input>
<br><br>Owner is <span type="text" id="wallet"></span>
<br><br><button id="check" onclick="App.ownerOf()">Check</button>
<br><br>

App.js Code

//App.ownerOf function 5
ownerOf: function(){ //stuck at Checking blockchain info... not throwing an error
var self = this;

var tokenId = parseInt(document.getElementById("tokenId").value);

this.setStatus("Checking Blockchain info...");

var check;
ERC721Token.deployed().then(function(instance){
  check = instance;
  return check.ownerOf.call(tokenId,{from: account});
}).then(function(account){ //function(owner)
  var value;
  value = account;
  var account_element = document.getElementById("wallet");
  account_element.textContent = value.valueOf();
}).catch(function(e){
  console.log(e);
  self.setStatus("Error checking ticket ID; see log");
});
}

ERC7221BasicToken.sol Code

...
function ownerOf(uint256 _tokenId) public view returns (address) {
  address owner = tokenOwner[_tokenId];
  require(owner != address(0));
  return owner;
 }

Web Screenshot

enter image description here

Thanks Again! Let me k now if you guys need me to add anything else.

  • 0x is the value of an empty address. Are you sure that the token 1 got an owner ? – Tclairet Aug 3 '18 at 13:25
  • Yes, when you mint a token it automatically gets stored in the address you wanted it to get mint. I am also double checking everything by interacting with the contract on wallet.ethereum.org and I does show a owner for token 1. – Mr.Blonde Aug 3 '18 at 17:49
  • How are tokens minted? Do you have the code of the contract? You can check the receipt of the transaction to verify if the tx was executed correctly – Ismael Aug 3 '18 at 23:46
0

It seems like you are using truffle(i don't have much experience in truffle). But if you use following code snippet your task will be done. There is no need to use call in your case. Hope this'll help you out.

ownerOf: function(){
var self = this;
var tokenId = parseInt(document.getElementById("tokenId").value);
var contractAbi = web3.eth.contract(YourContractABI);
var myContract = contractAbi.at(YourContractAddress);
myContract.ownerOf(tokenId,function(error,data){
 if(data){
       //Here Data will be Token Holder address
     }
});
}
  • I am trying to use, it lets me compile but when I click the check button on the webapp, nothing happens, it does not show an error or anything. I'm going to keep playing with it. – Mr.Blonde Aug 3 '18 at 17:50
0

So I was doing a stupid mistake, on my in HTML I was using the same "id" in two functions. I just changed the id and now is working.

  • Please close question, it sounds like this is too specific of an error to be useful for others. Thanks! – PhABC Aug 3 '18 at 20:44
  • Wil do just waiting so StackExchange lets me accept my own answer! – Mr.Blonde Aug 3 '18 at 21:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.