Conclusion
Blockchain protocol development is a broad field with different areas of specialization. This is the same as with traditional web 2.0 development. Even though web 2.0 development revolves around the client-server architecture model, there are various specialization opportunities: from front-end development to cloud computing, to database development, to understanding protocols and patterns like TCP, HTTP, REST, etc. Notwithstanding the diversity and broadness, having a grounded mental model that underpins web 2.0 development helps to make sense of how all the various components fit.
Presenting a similar mental model for blockchain protocol development is what I sought to achieve with this guide. I hope it helps the new engineer coming into this space to quickly form the necessary mental models, be aware of the various moving parts and how they come together. From here, such an engineer can then choose areas of specialization within Blockchain development to further explore.
In essence what we are building is a decentralized, distributed deterministic finite state machine. And to achieve this, we need nodes to connect with each other in a peer-to-peer fashion, well-defined protocols for nodes to follow since there is no co-ordinating central entity. These protocols involve choosing who will be next in line to mutate the state, that is the block production protocol, and deciding on the current state across nodes via the consensus protocols like fork-choice rule and finality protocols.
About Me
I am Dade, a software engineer with a strong interest in systems that are resilient, open, and difficult to capture or take over. Blockchain protocols are one expression of that interest, but the broader theme for me is technology that preserves autonomy: decentralized infrastructure, censorship-resistant networks, secure protocols, and systems whose guarantees do not depend on trusting a single authority. I am proficient in Rust and have had the privilege of contributing to significant projects like the Lodestar beacon client and libp2p.
If you're interested in learning more about my experience and perspectives, you can check out my blog, see my work on GitHub, connect with me on LinkedIn, or follow me on Twitter.