Tracking NFT holders

We are exploring an NFT drop of large scale, 5-10k unique assets.

Once the NFTs have been distributed we want to be able to use the Indexer to take periodic snapshots of which wallet addresses are holding the NFTs. With each NFT being a unique ASA this would mean the indexer would need to scan 10k unique ASAs to create the snapshot.

Is this possible/practical?

Alternative 1
We thought we could create a second ASA that was distributed alongside the NFT on a 1:1 basis. The indexer would then only have to scan wallets for one ASA id. This isnt an ideal solution for the end user. It also prevents issues if the NFT was sold on the secondary market as the secondary ASA would also need to be included in the sale.

Alternative 2
Rather than creating a unique ASA for each NFT. Could we create 10k but somehow link each of these ASAs to a unique hash so they could prove ownership of a specific asset.

1 Like

Manually checking 10,000 NFTs owneship on the idnexer may take a bit of time, but it may be reasonable. My guess is that it should not take more than a few minutes, but best is to check in the sandbox (GitHub - algorand/sandbox: Algorand node sandbox).

If you want more efficiency, you can directly create a table in the indexer postgres database with the list of ASA and use a carefully crafted SQL query with join. I guess this should be extremely fast.
The issue is that updates to the indexer may break this system.