Best Practices
Useful practices and conventions for effective indexing
Last updated
Was this helpful?
Useful practices and conventions for effective indexing
Last updated
Was this helpful?
To get yourself familiar with event indexing, start with a small pilot for your project or protocol. This allows you to try the indexer and develop further as your requirements and needs come up.
An examples of where to start:
Gather all your contract events in real-time, and then aggregate Totals for your protocol, such as Total Deposits, Total Amount Withdrawn, Current Balance. Then use that as internal analytics. When you're happy with the accuracy of the data, expose that single value to your frontend for your users.
Due to the asynchronous nature of parallelized blockchain indexing, events may be received out-of-order or multiple times because of retries.
Account for idempotency and re-orgs. Consider these tips:
Ensure updates occur only with the latest data.
Flair's managed handles such cases using a horizon
attribute featured in all example codes.
For upstream scenarios that don't support idempotency (e.g. Discord messaging), use Flair's managed to "remember" already completed calls.
In early stages, a single cluster may suffice. However, after initial production deployment, it's best to use separate clusters and namespaces for production and development.
Consult our engineers for production-readiness advice, such as monitoring, alerting, pre-provisioned capacity, and more. Reach out to 🙂
Follow the steps in the for a robust custom processor development and a quick feedback loop. Ensure everything works as expected by checking logs and querying the data.
A common mistake that causes long debugging sessions is using the wrong casing for addresses (wallets, contracts, etc).
It is recommended to always lower-case addresses when writing or reading the data, to make sure despite user's input you always get the consistent result.
During your development you might create test entity data that you can remove to reduce your storage costs.
Visit , on the example tabs on the top scroll to "Delete Entities by SQL", which allows you to write a SQL query that returns a list of "entityId"/"entityType"s that will be used to delete entities (only if your API Key have access to the namespace).
If you need any help reach out to .