indexer
indexer copied to clipboard
Support for list-based collections (e.g. Open Sea Shared Storefront)
We currently have support for range-based collections, like Art Blocks. Now we want to add support for list-based, which basically means there is no deterministic logic for how tokens are grouped into collections within a shared contract. There is no universal format for these, so it needs to be done on a case by case basis, per contract. In some cases, we might be able to use on-chain data, like the minter, for the grouping. In other cases, like Open Sea, it will be based on the results from a centralized API.
General Considerations
- We will likely need to calculate the set id in advance, and keep it up to date
- We will need to handle queries that assume either full contract or range
- Anything else?
Open Sea
The first contract that we want to support is the Open Sea Shared Storefront. I suggest we use collection ids with the following format: contract:slug
. Unfortunately, there is no static id given, so slug is the best we have. This means that when the slug is changed, it's equivalent to creating a new collection and moving all token IDs there.