This repo will contain an implementation of Verkle trees, in the Nim programming language, to be integrated into the Nimbus project when the implementation matures.
- Implement the logic by making use of IPA Multipoint / Banderwagon / blst
- Create tests focusing on the integration between the high-level Nim code and libraries, e.g. big/little endian issues
- Implement the Verkle tree structure, with basic operations (e.g. adding nodes)
- Support computation of commitments / proofs. Possibly, cache them in the tree.
- Support tree mutation with minimal recomputation of commitments
- Create tests, focusing on edge cases (empty tree, sparse tree, dense tree, consistency after mutations). Possibly use fuzzing with deterministic random, as done in rust-verkle.
- Create comparative tests between the various Verkle implementations; given an identical tree, identical commitments are expected The compatibility/ folder contains git submodules of other verkle implementations, extended with compatibility tests. See: compatibility/go-verkle/compatibility.result compatibility/rust-verkle/verkle-trie/tests/compatibility.result
- Analyze how Nimbus accesses the Merkle tree
- Optimize the most common access patterns in the equivalent Verkle tree
- Evaluate whether parallelism can be leveraged