Verkle tree implementation
Go to file
advaita-saha 837427902f
feat: new pointToHash as per EIP-6800
2024-04-02 03:14:52 +05:30
.vscode Added commitments support to the tree, excluding the actual math; that'll be added later. 2023-09-22 14:56:42 +03:00
compatibility Now pruning tree after deletions 2024-01-18 21:05:34 +02:00
constantine@976c8bb215 fix: math funcs, bumped constantine to 976c8bb (#22) 2024-03-17 21:16:24 +05:30
eth_verkle feat: new pointToHash as per EIP-6800 2024-04-02 03:14:52 +05:30
tests added support for updating multiple leaves under the same stem with faster commitment update 2024-03-28 21:54:45 +02:00
.gitattributes reset git index 2023-08-07 19:19:48 +03:00
.gitignore feat: cryptography integration trail 1 2024-01-17 12:23:36 +02:00
.gitmodules added constantine as submodule 2024-01-17 12:23:36 +02:00
LICENSE-APACHEv2 reset git index 2023-08-07 19:19:48 +03:00
LICENSE-MIT reset git index 2023-08-07 19:19:48 +03:00
README.md Update README.md 2024-01-17 12:25:12 +02:00
eth_verkle.nim Turn into a Nimble package 2023-09-01 15:26:44 +03:00
eth_verkle.nimble feat: tests added for insertion correctness + commitment caching 2024-01-20 18:16:04 +05:30

README.md

Nimbus Verkle Tree implementation (WIP)

License: Apache License: MIT

Discord: Nimbus Status: #nimbus-general

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.

TODO

Banderwagon commitments

  • 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

Verkle tree implementation

  • 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

Performance

  • Analyze how Nimbus accesses the Merkle tree
  • Optimize the most common access patterns in the equivalent Verkle tree
  • Evaluate whether parallelism can be leveraged