-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Optimize GraphQL "coins to spend" query #2391
Comments
This issue will be delivered in at least 2 PRs:
How to achieve pt. 1:
Example DB structure:
Messages:
Corresponding
How to achieve pt. 2:
Remarks:
Questions:
The PoC implementation of the above is available here: https://github.com/rafal-ch/coins_to_spend_poc Footnotes
|
Current flow:
|
For coins the key bytes represent: For messages the key bytes represent: |
Also, to disambiguate between "coins with base asset id" and "message" we'll use the "value" in the DB. |
The source of this issue is #623.
Initially, the idea was to remove all complex queries from
fuel-core
and make it part of the indexer's responsibility. But the SDK is deeply integrated with these basic queries, that we need to support them onfuel-core
. For that, we need to optimize the following query by aggregating some information in the off-chain worker or adding new indexes to the database:coins_to_spend
query is very complex and requiresn^2
operations wheren
is the number of coins and messages. The algorithm itself can use additional indexes from RocksDB to solve the issue with dust coins and works fast.Extracted from the #1965, which initially covered optimizations for 3 different areas: balances, coins to spend, dry run.
The text was updated successfully, but these errors were encountered: