Skip to content

Open Grant: Prolly Trees in Rust #257

@SionoiS

Description

@SionoiS

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

  1. 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.
  2. 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

  1. Milestone 1 Implementation. 9,000$
  2. 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.

Team code repositories

Defluencer Protocol

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions