CSE 242 Blockchain Project
- Victor Carolino
- David Cueva
- Michael Goldfarb
-
To build (in root directory):
- RUN cargo build
-
To run (in root directory):
- RUN cargo run
The data structure that we created is a psuedo-verkle-tree written in Rust utilizing the ark_works cryptographic libraries. This README will assume that the reader has some background knowledge of the concept of verkle trees.Using the resources at the bottom of this README as well as the template code for reference provided by O1 Labs, we were able to construct a program which is able to construct a trie on which polynomial commitments are made on each node, excluding leaf nodes, which validate the correctness of random evaluations on said polynomial.
The difference between our implementation and a true verkle tree is in the definition of the VerkleProof. As referenced in the O1 Labs template code, a VerkleProof must consist of
- a combined commitment (the root commitment),
- the path (the indices of the inner node parents of the leaf node),
- and sibling commitments (all other commitments in the trie).
With this information, the VerkleProof protocol would reconstruct the commitments of the path with the information revealed by the sibling commitments and the indices provided already opened. This adds a layer of cryptographic security to the polynomial commitments. Our implementation of a VerkleProof consists of
- a combined commitment (the root commitment),
- the path (the commitments of the inner node parents of the leaf node),
- and sibling commitments (all other commitments in the trie).
Notice that the only difference between our implementation and the template code is the substitution of the path indices with the path commitments. Additionally, in inspecting our implementation, the concept of the VerkleProof is only an abstraction of the three necessary arguments above, and can only be found in the main.rs file as the confirmation of correctness of the three sets of commitments.
- Program FlowChart: https://www.figma.com/file/ImdcFOgC0cZ2tcqLLat3mc/Untitled?type=whiteboard&node-id=1%3A55&t=HQibDEue6VE54kLH-1