Try   HackMD

EPF Report: Final update

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

Behind the Mountain

Building an Ethereum consensus client is a daunting task. Many have tried and failed before us, but we were determined to make our story different.

The learning curve is steep, but the journey is rewarding, transforming you into a better engineer and human being. I had the pleasure of working with an incredible team of highly skilled individuals: Tomas A., Martin P., and Tomas G. Together, we set out to achieve our goal of developing the first Ethereum Consensus Client in Elixir.

The first step for me was learning Elixir, a new language that I had only vaguely heard about. It's praised for its backend networking capabilities, but I didn't know much more. Ultimately, I found the process of learning and writing in Elixir enjoyable. Elixir, a niche but mighty language, it's known for its focus on concurrency, availability, fault tolerance, and stability. As a functional language powered by the Erlang VM, it's properties are making it an ideal choice for our client.

The second step was understanding how to build a consensus client. There are no step-by-step YouTube videos or books for such an goal. Our first mission involved collecting information from various sources: forums, blog posts, books, tweets, videos, conference notes, specifications, and code from other clients. Understanding what to build is just the first step; understanding why it was built in a particular way and how to replicate and improve this implementation is the next. This research phase was incredibly enjoyable, filled with those "Aha!" moments that every curious individual loves over anything else.

Having learned the necessary language and understood what, why, and how to build, it was time to start creating the Lambdaclass Ethereum Elixir Consensus Client. (Trust me, I have been lobbying daily to change the name to "Nebula," but it hasn't been approved yet)

Four months in, our journey has been full of daily meetings, research, programming, discussions, testing, debugging, failures, and successes. It's been a rollercoaster of highs and lows but, most importantly, a journey full of learning. We've worked long days, sometimes 10, 12, or even 15 hours, racing against the EPF's four-month timeline to prove that our ambitious goal was achievable. We are proud today to showcase our working proof-of-concept of an Ethereum Consensus Client in Elixir to the world!

You can find the recording of our presentation during the EPF Day here: Video

A Rewarding Journey

Throughout this journey, I've developed a profound sense of pride and an excitement to build even more. I have achieved the goals I set for myself at the beginning and am now eager to set and accomplish even more ambitious objectives, these are some of the things I have learnt:

  • Elixir: I learned a new programming language, Elixir, which was also my first dip into functional programming. This opened my world to a new and different programming paradigm. I've honed my skills in immutable languages, recursion, and, most importantly, I've come to understand why a programming language is merely a tool for a given task.

  • Research: I conducted a large amount of research during the project's initial phases. This included delving into the inner workings of Ethereum and its global client architecture, as well as consensus algorithms like LMD Ghost and Casper FFG.

  • Software Architecture: My involvement in this project allowed me to gain hands-on experience in production-grade software architecture, particularly in designing and implementing systems within the unique context of blockchain technology.

  • Ethereum & Its Clients' Inner Workings: I was thrilled to learn about Ethereum's inner mechanics, including the rationale behind blockchain design and the extensive work put into it's architecture. This learning encompassed game theory, adversarial thinking, distributed systems architecture, low-level programming, and operating in environments with constrained resources.

  • No Right to Mistake & Testing: Working with blockchains, an unforgiving environment where the smallest mistake can lead to immense financial losses and, more crucially, the loss of global trust, I learned the importance of rigorous testing. I gained experience in implementing comprehensive testing suites, including handling thousands of test vectors from the Ethereum Foundation (I am now traumatised), and conducting unit, integration, end-to-end testing, as well as utilizing GitHub CI and local development networks.

My proudest moment of this journey (building wise) was the creation of the Consensus Client State Transition Function Handbook where I had to focus on acquiring expert knowledge on the state-transition function of Ethereum POS to be able to implement it in our client. This was a long and complex but very rewarding process that enabled me to do research, programming and software architecture. I thoroughly enjoyed it!

You can find the result here: State Transition Handbook

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →

(Yes it looks like that 👆)

And I am proud today to be able to say that for a moment I have become a core Ethereum developer!

Events and Opportunities

The Ethereum Protocol Fellowship (EPF) opened doors to a series of enriching experiences. It supported me to attend several events, including DevConnect, ProgCrypto, and the EPF Day. I also had the opportunity to travel to exciting destinations like Spain, France and Turkey which also provided a valuable avenue for learning. I reconnected with old friends in the crypto ecosystem and had the pleasure of meeting and making new friends along the way.

As I reflect on these experiences, my excitement for the future only grows. I am filled with optimism and energy to embark on new missions. The journey so far has been incredible, and I am enthusiastic about sharing more as I continue to explore and contribute to the crypto ecosystem. Stay tuned, I will share lot's of exciting news very soon™️

Closing Thoughts and Acknowledgments

I extend my deepest gratitude to a remarkable group of individuals who have made this journey unforgettable. A special thank you to Mario H., Josh D., Adrian from Lighthouse, Guillaume from Go-Ethereum, Abdel from the Starknet Exploration Team, Elias from Kakarot, and Federico, Tomas A., Martin P., Tomas G., and Akash from Lambdaclass. Their contributions, support, and insights have been invaluable.

As a parting thought, I encourage everyone to believe in themselves, work hard, pursue their passions, and make bold moves. These principles have always paid off for me.

Resources

For those interested in delving deeper into the Ethereum consensus layer:

Previous updates

If you want to learn more about my EPF journey, here are all the previous updates leading up to this one:

Let's build the future, TOGETHER 🚀