EthNFTOwners not populating with all NFTs owned by wallets

We are using EthNFTOwners to limited dapp permissions to NFT holders and are finding this table doesn’t always populate all NFT owned by a given a wallet. The odd thing is that is does often show some NFTs for a given wallet but not all.

Is there any way to manually sync this for all current Users?

do you have some example of NFTs that are not in EthNFTOwners?
are those NFTs returned by web3api?
there can also be the case of some NFTs that are lazy minted on opensea, those lazy minted NFTs are not on chain.

This isn’t happening for any of the admins, so I will ask if some users are OK with sharing their info here.

But in the meantime, all NFTs are minted on chain. This is for referencing a single collection across all users and most users aren’t having issues with their NFTs of the same collection syncing. I am not sure what web3api calls to make to verify it that way, but I have manually verified these users are holding the correct NFTs via etherscan and rainbow.

Thanks!

I’m referring to an API call like:

x = await Moralis.Web3API.account.getNFTs({address: 'ADDRESS', chain: 'CHAIN'})

or

x = await Moralis.Web3API.account.getNFTsForContract({"chain":"rinkeby","address":"ADDRESS","token_address":"TOKEN_ADDRESS"} )

you can also send me a DM if you don’t want to share here

Thanks @cryptokid!

I moved the logic to Web3API and I’m getting back the correct NFTs when running getNFTsForContract manually from a node script. However, I am getting a 400 response with the error below when running this with useNFTBalances via react-moralis.

{
  "code": 141,
  "error": "ParseError: 119 This user is not allowed to access non-existent class: RateLimits"
}

Is there anything additional I need to do within react-land?

Cheers!

Can you try to update your Moralis server in case that it is not on the latest version?

It’s up to date as of yesterday. Version 0.0.302.

anything else works in react now?

Yes, all other functionality works as expected.

What is this in particular? Is a typo with use instead of user? What is the context in how you use it?

It’s the one provided by react-moralis: https://github.com/MoralisWeb3/react-moralis#usenftbalances

It calls web3 under the hood.

If you try to call web3api from react you get same error? The equivalent of Moralis.Web3API.account.getNFTs

Using your original suggestion like this:

const Moralis = require("moralis/node");
Moralis.start({ serverUrl: "<server URL>", appId: "<app ID>" });

const getNFTs = async () => {
  try {
    x = await Moralis.Web3API.account.getNFTsForContract({"chain":"eth","address":"<wallet address>","token_address":"<token address>"} )
    console.log(x);
  } catch (error) {
    console.log("ERROR", error)
  }
}

getNFTs();

returns this:

ERROR {
  code: 141,
  error: 'ParseError: 119 This user is not allowed to access non-existent class: RateLimits'
}

Ok, I’ll test it later too. I don’t know yet if this error is related to latest server version or a new version of Moralis SDK or a combination.

Is there any way I can downgrade my server to try different combinations? This is affecting about 50 of our users currently for an ongoing event.

It looks like it is a problem that we are going to fix it, probably soon.

1 Like

do you still get that error now?

Yes I’m getting the same error.

if you enable Client Class Creation from you server settings then it may start to work

but can you restart your server and try again after that before trying with Client Class Creation?

Restarting didn’t fix it, but enabling Client Class Creation did! Will I need to leave this enabled going forward?

Thank you for the help! :pray: