-
Notifications
You must be signed in to change notification settings - Fork 73
Description
Open Grant Proposal: Prolly trees in Rust
Name of Project: Prolly Trees in Rust
Proposal Category: core-dev
Proposer: @SionoiS
Do you agree to open source all work you do on behalf of this RFP and dual-license under MIT, APACHE2, or GPL licenses?: Yes
Project Description
As the amount of data grows in the IPLD ecosystem the need for efficient data-structures becomes more pressing.
Databases built on top IPLD data can only thrive with fast indexing and CRDTs are used often in distributed systems but have overhead that centralized solutions don't.
I plan to write an implementation of Prolly Trees with different chunking algorithms in Rust lang. The specification to be followed is being finalized in another grant
Value
Prolly trees are ordered while probabilistically balanced and deterministic in representation, properties crucial in building CRDTs & database indexes.
Prolly trees are the fruit of recent research and may not be practical to implement even if theoretically simple. It is my opinion that it is still worth a try.
Deliverables
- Simple implementation in Rust lang.
- Up to 2 different chunking algorithms.
- Test fixture.
Development Roadmap
Start date 3 January 2023
- Code an implementation of the specifications in Rust lang. 5 weeks
- Given an IPFS API; get, insert, remove and iterate over an IPLD Prolly tree.
- Block representation only, no in-memory representation for simplicity.
- Up to 2 different chunking algorithm.
- Document the code, write tests, optimization and bug fixes. 3 week
- Work closely with the spec writers and incorporate feedback from IPLD users.
- Documenting all the tweaks and knobs.
- Find good default values.
- Write test fixtures if needed.
Total Budget Requested
- Milestone 1 Implementation. 9,000$
- Milestone 2 Code documentation, Tests and Feedback. 5,400$
Total 14,400 USD
Maintenance and Upgrade Plans
Since in Rust, the IPFS API has no standard, the implementation would only serve as guide or could become a standard afterward.
Team
Simon-Pierre Vivier (@SionoiS)
Relevant Experience
I implemented a HAMTs based on the IPLD Specs and built my own protocol with IPLD in previous grant work.