ERC721: How to get the owned tokens of an addressERC721 ownedTokens array length limitations on owners with thousands of tokensHow to know which ERC20 tokens a wallet owns?List ERC721 tokens owned by a user on a web pageProper way to implement “buyable” ERC721 tokensHow do ERC721 tokens get created on private blockchain?How can there be a balance for an ERC721 contract?Two ERC721 tokens that refer to the same metadataGet ERC721 token total supply using web3.jsWhat is the difference between the transfer and transferFrom function in an ERC721 contractDeploy ERC721 tokens to many addresses

Turning a hard to access nut?

What (if any) is the reason to buy in small local stores?

Inhabiting Mars versus going straight for a Dyson swarm

Someone scrambled my calling sign- who am I?

Would it be believable to defy demographics in a story?

What is the difference between something being completely legal and being completely decriminalized?

Does convergence of polynomials imply that of its coefficients?

Emojional cryptic crossword

Pre-Employment Background Check With Consent For Future Checks

How can I get files using find command

Probabilities in non-stationary states

How do you justify more code being written by following clean code practices?

Writing in a Christian voice

Have any astronauts/cosmonauts died in space?

If I cast enlarge/reduce on an arrow, what weapon could it count as?

Why is indicated airspeed rather than ground speed used during the takeoff roll?

Exit shell with shortcut (not typing exit) that closes session properly

Would this string work as string?

The English Debate

PTIJ: Which Dr. Seuss books should one obtain?

part of speech - "微" 管仲,吾其被髮左衽矣。

How to balance a monster modification (zombie)?

Friend wants my recommendation but I don't want to

How can I create URL shortcuts/redirects for task/diff IDs in Phabricator?



ERC721: How to get the owned tokens of an address


ERC721 ownedTokens array length limitations on owners with thousands of tokensHow to know which ERC20 tokens a wallet owns?List ERC721 tokens owned by a user on a web pageProper way to implement “buyable” ERC721 tokensHow do ERC721 tokens get created on private blockchain?How can there be a balance for an ERC721 contract?Two ERC721 tokens that refer to the same metadataGet ERC721 token total supply using web3.jsWhat is the difference between the transfer and transferFrom function in an ERC721 contractDeploy ERC721 tokens to many addresses













3















There is a balanceOf function, but it only displays one uint (the token identifier)
I see most ERC721 tokens doing this so I am confused on how to view all owned tokens.










share|improve this question


























    3















    There is a balanceOf function, but it only displays one uint (the token identifier)
    I see most ERC721 tokens doing this so I am confused on how to view all owned tokens.










    share|improve this question
























      3












      3








      3








      There is a balanceOf function, but it only displays one uint (the token identifier)
      I see most ERC721 tokens doing this so I am confused on how to view all owned tokens.










      share|improve this question














      There is a balanceOf function, but it only displays one uint (the token identifier)
      I see most ERC721 tokens doing this so I am confused on how to view all owned tokens.







      solidity web3js erc-721






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      BlockchainBoyBlockchainBoy

      506




      506




















          3 Answers
          3






          active

          oldest

          votes


















          3














          Per https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md, there's an optional "enumeration extension". If this is implemented for the token you're interested in, then you can just call balanceOf to get the number of tokens owned by the account, followed by tokenOfOwnerByIndex in a loop to get each owned token ID.



          If it isn't implemented, then there's no well-defined way to discover all of a user's owned tokens, but there may be a non-standard way to do it for the specific token you're interested in.






          share|improve this answer

























          • This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

            – AnAllergyToAnalogy
            yesterday











          • Thanks for the correction! I edited my answer.

            – smarx
            yesterday











          • Cheers for the help :)

            – BlockchainBoy
            yesterday


















          2














          The function balanceOf actually returns the number of owned tokens and not the identifier of an owned token.



          Therefore I'd assume the process could go something like this:



          1) Find out how many tokens an address has (balanceOf). If this is more than zero, continue the process.



          2) Find out which tokens exist in the contract. The standard offers no direct functionality for this so this depends on the implementation. Or, as is probably the case, simply start enumerating from zero upwards hoping that the tokens are enumerable in that way (and not assigned for example to random numbers). So you would check "does someone own token 0? does someone own token 1? .."



          3) Once you have found all the tokens owned by the address you can stop the process.






          share|improve this answer


















          • 1





            See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

            – smarx
            yesterday











          • Thanks for the heads-up :)

            – Lauri Peltonen
            yesterday


















          1














          There is basically no way to easily view all owned tokens. My Ethereum wallets own probably lots of random worthless tokens which someone has airdropped and I don't even know about it.



          Some services (wallets) display many of the owned tokens. I'm unsure how exactly they do that but most likely they simply have a database of known token contracts and they check whether a certain address owns those known tokens.



          If I now created a new token and donated some of it to random wallets nobody would probably know about it unless I somehow tell wallet creators "please include my token contract in your checks".



          At least myetherwallet used to display all (known) ERC20 tokens still about a year ago but the quickly they gave up and last I checked you had to manually enter the contract address to see those tokens. The amount of different token contracts exploded a year ago and it was probably too much hassle to try to keep track of them (to store them all in their database).






          share|improve this answer























          • I am looking at a specific token, I don't see a easy way to check this from the token's contract

            – BlockchainBoy
            2 days ago











          • Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

            – Lauri Peltonen
            2 days ago










          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "642"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f68438%2ferc721-how-to-get-the-owned-tokens-of-an-address%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          3 Answers
          3






          active

          oldest

          votes








          3 Answers
          3






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          Per https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md, there's an optional "enumeration extension". If this is implemented for the token you're interested in, then you can just call balanceOf to get the number of tokens owned by the account, followed by tokenOfOwnerByIndex in a loop to get each owned token ID.



          If it isn't implemented, then there's no well-defined way to discover all of a user's owned tokens, but there may be a non-standard way to do it for the specific token you're interested in.






          share|improve this answer

























          • This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

            – AnAllergyToAnalogy
            yesterday











          • Thanks for the correction! I edited my answer.

            – smarx
            yesterday











          • Cheers for the help :)

            – BlockchainBoy
            yesterday















          3














          Per https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md, there's an optional "enumeration extension". If this is implemented for the token you're interested in, then you can just call balanceOf to get the number of tokens owned by the account, followed by tokenOfOwnerByIndex in a loop to get each owned token ID.



          If it isn't implemented, then there's no well-defined way to discover all of a user's owned tokens, but there may be a non-standard way to do it for the specific token you're interested in.






          share|improve this answer

























          • This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

            – AnAllergyToAnalogy
            yesterday











          • Thanks for the correction! I edited my answer.

            – smarx
            yesterday











          • Cheers for the help :)

            – BlockchainBoy
            yesterday













          3












          3








          3







          Per https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md, there's an optional "enumeration extension". If this is implemented for the token you're interested in, then you can just call balanceOf to get the number of tokens owned by the account, followed by tokenOfOwnerByIndex in a loop to get each owned token ID.



          If it isn't implemented, then there's no well-defined way to discover all of a user's owned tokens, but there may be a non-standard way to do it for the specific token you're interested in.






          share|improve this answer















          Per https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md, there's an optional "enumeration extension". If this is implemented for the token you're interested in, then you can just call balanceOf to get the number of tokens owned by the account, followed by tokenOfOwnerByIndex in a loop to get each owned token ID.



          If it isn't implemented, then there's no well-defined way to discover all of a user's owned tokens, but there may be a non-standard way to do it for the specific token you're interested in.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited yesterday

























          answered yesterday









          smarxsmarx

          19.2k1719




          19.2k1719












          • This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

            – AnAllergyToAnalogy
            yesterday











          • Thanks for the correction! I edited my answer.

            – smarx
            yesterday











          • Cheers for the help :)

            – BlockchainBoy
            yesterday

















          • This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

            – AnAllergyToAnalogy
            yesterday











          • Thanks for the correction! I edited my answer.

            – smarx
            yesterday











          • Cheers for the help :)

            – BlockchainBoy
            yesterday
















          This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

          – AnAllergyToAnalogy
          yesterday





          This is the correct answer, the enumerable extension was created explicitly for this purpose. The only correction is that it's tokenOfOwnerByIndex not byAddress.

          – AnAllergyToAnalogy
          yesterday













          Thanks for the correction! I edited my answer.

          – smarx
          yesterday





          Thanks for the correction! I edited my answer.

          – smarx
          yesterday













          Cheers for the help :)

          – BlockchainBoy
          yesterday





          Cheers for the help :)

          – BlockchainBoy
          yesterday











          2














          The function balanceOf actually returns the number of owned tokens and not the identifier of an owned token.



          Therefore I'd assume the process could go something like this:



          1) Find out how many tokens an address has (balanceOf). If this is more than zero, continue the process.



          2) Find out which tokens exist in the contract. The standard offers no direct functionality for this so this depends on the implementation. Or, as is probably the case, simply start enumerating from zero upwards hoping that the tokens are enumerable in that way (and not assigned for example to random numbers). So you would check "does someone own token 0? does someone own token 1? .."



          3) Once you have found all the tokens owned by the address you can stop the process.






          share|improve this answer


















          • 1





            See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

            – smarx
            yesterday











          • Thanks for the heads-up :)

            – Lauri Peltonen
            yesterday















          2














          The function balanceOf actually returns the number of owned tokens and not the identifier of an owned token.



          Therefore I'd assume the process could go something like this:



          1) Find out how many tokens an address has (balanceOf). If this is more than zero, continue the process.



          2) Find out which tokens exist in the contract. The standard offers no direct functionality for this so this depends on the implementation. Or, as is probably the case, simply start enumerating from zero upwards hoping that the tokens are enumerable in that way (and not assigned for example to random numbers). So you would check "does someone own token 0? does someone own token 1? .."



          3) Once you have found all the tokens owned by the address you can stop the process.






          share|improve this answer


















          • 1





            See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

            – smarx
            yesterday











          • Thanks for the heads-up :)

            – Lauri Peltonen
            yesterday













          2












          2








          2







          The function balanceOf actually returns the number of owned tokens and not the identifier of an owned token.



          Therefore I'd assume the process could go something like this:



          1) Find out how many tokens an address has (balanceOf). If this is more than zero, continue the process.



          2) Find out which tokens exist in the contract. The standard offers no direct functionality for this so this depends on the implementation. Or, as is probably the case, simply start enumerating from zero upwards hoping that the tokens are enumerable in that way (and not assigned for example to random numbers). So you would check "does someone own token 0? does someone own token 1? .."



          3) Once you have found all the tokens owned by the address you can stop the process.






          share|improve this answer













          The function balanceOf actually returns the number of owned tokens and not the identifier of an owned token.



          Therefore I'd assume the process could go something like this:



          1) Find out how many tokens an address has (balanceOf). If this is more than zero, continue the process.



          2) Find out which tokens exist in the contract. The standard offers no direct functionality for this so this depends on the implementation. Or, as is probably the case, simply start enumerating from zero upwards hoping that the tokens are enumerable in that way (and not assigned for example to random numbers). So you would check "does someone own token 0? does someone own token 1? .."



          3) Once you have found all the tokens owned by the address you can stop the process.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered yesterday









          Lauri PeltonenLauri Peltonen

          5,8232525




          5,8232525







          • 1





            See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

            – smarx
            yesterday











          • Thanks for the heads-up :)

            – Lauri Peltonen
            yesterday












          • 1





            See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

            – smarx
            yesterday











          • Thanks for the heads-up :)

            – Lauri Peltonen
            yesterday







          1




          1





          See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

          – smarx
          yesterday





          See also my answer. I believe most tokens implement the optional "enumeration extension" which does allow for efficiently finding a user's tokens.

          – smarx
          yesterday













          Thanks for the heads-up :)

          – Lauri Peltonen
          yesterday





          Thanks for the heads-up :)

          – Lauri Peltonen
          yesterday











          1














          There is basically no way to easily view all owned tokens. My Ethereum wallets own probably lots of random worthless tokens which someone has airdropped and I don't even know about it.



          Some services (wallets) display many of the owned tokens. I'm unsure how exactly they do that but most likely they simply have a database of known token contracts and they check whether a certain address owns those known tokens.



          If I now created a new token and donated some of it to random wallets nobody would probably know about it unless I somehow tell wallet creators "please include my token contract in your checks".



          At least myetherwallet used to display all (known) ERC20 tokens still about a year ago but the quickly they gave up and last I checked you had to manually enter the contract address to see those tokens. The amount of different token contracts exploded a year ago and it was probably too much hassle to try to keep track of them (to store them all in their database).






          share|improve this answer























          • I am looking at a specific token, I don't see a easy way to check this from the token's contract

            – BlockchainBoy
            2 days ago











          • Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

            – Lauri Peltonen
            2 days ago















          1














          There is basically no way to easily view all owned tokens. My Ethereum wallets own probably lots of random worthless tokens which someone has airdropped and I don't even know about it.



          Some services (wallets) display many of the owned tokens. I'm unsure how exactly they do that but most likely they simply have a database of known token contracts and they check whether a certain address owns those known tokens.



          If I now created a new token and donated some of it to random wallets nobody would probably know about it unless I somehow tell wallet creators "please include my token contract in your checks".



          At least myetherwallet used to display all (known) ERC20 tokens still about a year ago but the quickly they gave up and last I checked you had to manually enter the contract address to see those tokens. The amount of different token contracts exploded a year ago and it was probably too much hassle to try to keep track of them (to store them all in their database).






          share|improve this answer























          • I am looking at a specific token, I don't see a easy way to check this from the token's contract

            – BlockchainBoy
            2 days ago











          • Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

            – Lauri Peltonen
            2 days ago













          1












          1








          1







          There is basically no way to easily view all owned tokens. My Ethereum wallets own probably lots of random worthless tokens which someone has airdropped and I don't even know about it.



          Some services (wallets) display many of the owned tokens. I'm unsure how exactly they do that but most likely they simply have a database of known token contracts and they check whether a certain address owns those known tokens.



          If I now created a new token and donated some of it to random wallets nobody would probably know about it unless I somehow tell wallet creators "please include my token contract in your checks".



          At least myetherwallet used to display all (known) ERC20 tokens still about a year ago but the quickly they gave up and last I checked you had to manually enter the contract address to see those tokens. The amount of different token contracts exploded a year ago and it was probably too much hassle to try to keep track of them (to store them all in their database).






          share|improve this answer













          There is basically no way to easily view all owned tokens. My Ethereum wallets own probably lots of random worthless tokens which someone has airdropped and I don't even know about it.



          Some services (wallets) display many of the owned tokens. I'm unsure how exactly they do that but most likely they simply have a database of known token contracts and they check whether a certain address owns those known tokens.



          If I now created a new token and donated some of it to random wallets nobody would probably know about it unless I somehow tell wallet creators "please include my token contract in your checks".



          At least myetherwallet used to display all (known) ERC20 tokens still about a year ago but the quickly they gave up and last I checked you had to manually enter the contract address to see those tokens. The amount of different token contracts exploded a year ago and it was probably too much hassle to try to keep track of them (to store them all in their database).







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 2 days ago









          Lauri PeltonenLauri Peltonen

          5,8232525




          5,8232525












          • I am looking at a specific token, I don't see a easy way to check this from the token's contract

            – BlockchainBoy
            2 days ago











          • Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

            – Lauri Peltonen
            2 days ago

















          • I am looking at a specific token, I don't see a easy way to check this from the token's contract

            – BlockchainBoy
            2 days ago











          • Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

            – Lauri Peltonen
            2 days ago
















          I am looking at a specific token, I don't see a easy way to check this from the token's contract

          – BlockchainBoy
          2 days ago





          I am looking at a specific token, I don't see a easy way to check this from the token's contract

          – BlockchainBoy
          2 days ago













          Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

          – Lauri Peltonen
          2 days ago





          Ah, sorry, I had misunderstood the question. My answer is not so relevant in that case.

          – Lauri Peltonen
          2 days ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Ethereum Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid …


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f68438%2ferc721-how-to-get-the-owned-tokens-of-an-address%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Bruad Bilen | Luke uk diar | NawigatsjuunCommonskategorii: BruadCommonskategorii: RunstükenWikiquote: Bruad

          Modern approach to radio buttons

          A word for worn pool table felt