[IMPACT]
Having an alternative to cardano-db-sync will help projects in Cardano be more robust as we won't have all projects relying on a single tool.
Additionally, the Oura infrastructure is more modular which will make it easier for projects to write their own plugins based off their own needs whereas writing plugins for cardano-db-sync, although doable, requires understanding a monolithic codebase which is not easy.
Additionally, since Oura is more modular, we expect our db-sync replacement to have better performance which would help wallets like Yoroi load wallet data a lot faster
This protocol is to build a Cardano open source project and should also make it easier for developers to build using open source tooling as well.
The risk of large infrastructure projects like this is that the project ends up containing a bug which affects projects that depend on it. However, the dcSpark team has a lot of experience writing core Cardano tooling so we're fairly confident in our ability to do things properly, and we also intend to integrate the tooling into other projects we contribute to (Flint Wallet, Milkomeda, etc.) so we should be able to detect any issue before others do.
[FEASIBILITY]
We plan to release the first part of this db-sync alternative in Q1 2022 with follow-up components in Q2 2022
- Q1: Core light wallet support (tx history, utxo fetching, etc)
- Q2: Ledger state support (reward info, reward history, etc.)
Stretch goal may be to add support for SMASH and token metadata. However,
- Token metadata is currently being worked on by another person contributing to Oura so we don't want to duplicate work if their solution ends up working
- There are some community-run SMASH nodes. We need to check and see how these projects are handling the deprecation of SMASH and whether or not they would benefit from an Oura-based implementation
The funding doesn't include these stretch goals so they may end up being included as part of this proposal, or may end up being part of a followup proposal
The budget will be entirely used for the development cost of
- Building out the db-sync alternative powered by Oura
- Making contributions for Oura to add missing functionality we need
- Writing a JS client so projects can easily connect to our project through Typescript
-
Sebastien (many years of experience writing Rust tooling for Cardano and wallet infrastructure)
-
Rob (one of the core contributors to the Cardano Rust SDK called cardano-seralization-lib)
-
Lucas (dcSpark Rust develop)
[AUDITABILITY]
Progress will be measured by our ability to release this functionality with all the endpoints required for projects to migrate away from db-sync and do so without sacrificing performance (in fact, we expect a significant performance increase for projects)
Success looks like many projects integrating this tool into their backend infrastructure to power their wallets or dApps
New proposal