# ignacio (jsign) - Final update
This is my final update for the [Verkle Trie migration exploration](https://github.com/eth-protocol-fellows/cohort-three/blob/master/projects/verkle-trie-migration-exploration.md) project.
This project intended to do a deep-dive into the current process of the [Verkle Trie EIP](https://notes.ethereum.org/@vbuterin/verkle_tree_eip), more concretely around the performance overheads between the Merkle Patricia Trie and Verkle Tries.
## Current status report
In my project, I defined _success_ with a question:
> If you compare how VKTs worked and the main challenges that existed when the program started and how it is today (i.e: ~Feb 2023): was my work useful to make those improvements and overall progress?
In my honest opinion, things have definitely improved compared with the starting point. I believe there's more progress to be made, but we're in a good direction!
Regarding unfinished tasks, in my project I had two points that I'd considered undone:
- Help in overall documentation and _community awareness_
- Consider improving test vectors so multiple clients can double-check compatibility/correctness
Both goals were intentionally left behind for two main reasons:
- There was a natural force to keep focusing on improving performance since it's the main practical challenge to make the EIP viable.
- The spec can still change, so focusing on documentation or pushing for awareness can confuse others.
Those goals are still a good idea, and it will make sense to do that in some months.
### Created repos
During the program, I created the following auxiliary repository:
- https://github.com/jsign/verkle-vs-patricia
- [Contains benchmarks comparing our cryptographic libraries performance against other well-known ones in other languages (blst (C), arkworks (Rust), etc).](https://github.com/jsign/verkle-vs-patricia#benchmarks)
- [Contains a tool that analyzes the current Merkle Patricia Trie depth in a live geth node](https://github.com/jsign/verkle-vs-patricia/blob/main/cmd/analytics/main.go).
### Created HackMD documents
During the program I've created multiple documents mostly around doing analytical work to understand better assumptions related to performance differences:
- [Ethereum mainnet - MPT analysis](https://hackmd.io/@jsign/geth-mpt-analysis)
- [Ethereum mainnet - Analysis of MPT depth and VKT locality optimization in block executions](https://hackmd.io/@jsign/mpt-depth-vkt-locality-in-block-executions)
- [Current CommitToPoly versus other three potential ones](https://hackmd.io/@jsign/committopoly-comparison)
### Created PRs
During this program, I've done many PRs in multiple repos:
- In [go-verkle](https://github.com/gballet/go-verkle):
- https://github.com/gballet/go-verkle/pull/290 (Merged)
- https://github.com/gballet/go-verkle/pull/291 (Merged)
- https://github.com/gballet/go-verkle/pull/300 (Merged)
- https://github.com/gballet/go-verkle/pull/321 (Merged)
- https://github.com/gballet/go-verkle/pull/314 (In the measure pipeline)
- https://github.com/gballet/go-verkle/pull/320 (In the measure pipeline)
- https://github.com/gballet/go-verkle/pull/322 (In the measure pipeline)
- https://github.com/gballet/go-verkle/pull/327 (Currently exploring implications)
- In [go-ipa](https://github.com/crate-crypto/go-ipa):
- https://github.com/crate-crypto/go-ipa/pull/26 (Merged)
- https://github.com/crate-crypto/go-ipa/pull/30 (Merged)
- https://github.com/crate-crypto/go-ipa/pull/31 (Merged)
- https://github.com/crate-crypto/go-ipa/pull/35 (PR supporting findings [in doc](https://hackmd.io/@jsign/committopoly-comparison))
- https://github.com/crate-crypto/go-ipa/pull/36 (Currently exploring implications)
- In [gballet/go-ethereum](https://github.com/gballet/go-ethereum/):
- https://github.com/gballet/go-ethereum/pull/140 (Merged)
- https://github.com/gballet/go-ethereum/pull/164 (Currently exploring implications)
## Future of the project
The Verkle Trie EIP is a complex one since it can be one of the most impactful changes that can be done at the execution layer. The performance has improved with time, but we still need to make some leaps to be happy with things which isn't true today.
Luckly, today we're in a state of having multiple in-flight PRs to measure and consider merging them, and a set of ideas to implement that feel promising. We should keep executing on our current plan to know where might be the _finish line_.
Apart from overall performance improvements, there're many other things around this EIP:
- Trie conversion from MPT to VKT: the strategy on how "the merge" for VKTs will work requires more effort.
- VKT proofs and verification: maybe there're some rough edges around this that today aren't the focus.
- Tooling: we should probably improve the tooling around VKTs for clients. MPTs probably have great tools that won't be useful anymore under the new tree.
- Documentation: as mentioned before.
The strategy is to focus on the pressing problems first, and the rest should be _easier_.
## Self-evaluation of the EFP
I was thrilled to participate in the Ethereum Fellowship Program. It's an excellent opportunity for people that want to get introduced to being a core developer.
Personally, I've felt a sense of fullfilment knowing that I was able to help the Ethereum protocol to move forward in it's roadmap. Additionally, the program was an eye opener me to discover how much I like applied cryptography. This had deep implications for my career moving forward!
I want to highlight how true is a specific requirement [mentioned in the program details](https://github.com/eth-protocol-fellows/cohort-three/blob/master/program-guide/program-details.md#who-is-it-for):
> The most successful applicants will:
> - have strong verbal and written communication skills
> - be self-directed and self-motivated
> - have a technical foundation
> - are able to write code
I can't agree more with this! I think is great that this was clarified upfront because it's very true, mostly arround the first two points.
I want to thank Mario and Josh for leading the program, they've been really supportive with any question and helped everybody in the cohort to connect with the right people.
Finally, I want to thank my mentors Guillaume and Kevaundray for their support in this journey!