-
Notifications
You must be signed in to change notification settings - Fork 16
2nd Milestone
Status: Proposal
Goal: Improve MVP and its robustness
Dates: November 2023 - January 2024
Budget: 9,5K + 6,5K optional
The main focus of this milestone is compliance. We need to make sure that the cryptographic commitment scheme used produces exactly the same root hash as with other clients such that go-verkle and rust-verkle. We also need to be able to integrate into the Besu client and follow the verkle testnet. Ideally, we would like to contribute to ethereum reference tests if time permits.
Integrate IPA and multiproofs to commitments (9 days)
Current implementation rollup commitments recursively leading to different commitment hashes at internal leaves. It will not be admissible on testnet, as other clients use a different scheme by now. Therefore, we need to integrate the latest commitment scheme to Besu as well:
- (2 days) Produce test-cases from rust-verkle and go-verkle implementations.
- (1 day) Investigate and act upon whether to wrap rust-verkle or go-verkle in the nativelib.
- (2 days) Wrap in the nativelib a new commit function for rolling commitments up the trie using the latest scheme (IPA, multiproofs, ...)
- (2 days) Wrap/implement sparse versions of commit function to allow for quick updates.
- (1 day) Wrap ser/des for commitments to communicate with Java.
- (1 day) Integrate a new HashVisitor with proper logic.
Support for testing on Testnet (10 days)
Testnets are being mounted for Verkle Tries clients. Integrating with testnet is the a necessary step toward acceptance. Testing on testnets can be done in several steps: following the chain, verifying integrity, executing transactions, optionaly even validating blocks and proposing new blocks. This task will most probably need several iterations, and is hard to qualify the adjustments in the code that will result from this.
Standardized and exhaustive Verkle tests (6 days, optional)
Each client develop with there own tests. Making a set of good reference tests independent of testnet can help in faster and safer development.
- (2 days) Investigate how to integrate to Ethereum's reference/hive tests.
- (1 day) Format specification for Tries and proofs ser/des
- (2 days) Specification of exhaustive testcases
- (1 day) Implementation
Implement proofs on Besu client (7 days, optional)
Major point missing from the MVP. Verkle uses a different commitment than Merkle Tries. Consensus client sends block data to the execution client. The later must be able to verify must be reimplemented in accordance to the commitment scheme used:
- (4 days) Implement communication on Java side: witness data, passing it to nativelib.
- (3 days) Wrap in the nativelib a function to open proofs given commitment + witness
Flat database management during a snap-sync (later)
Having all account data into a single Verkle Trie has implications on the flat database management during a snap-sync. With Verkle Tries, bytecode is spread through the leaves, which might come at in chunks at different times.