# Introduction

This guide is for developers coming from a traditional web application development background  and are interested in blockchain protocol development. The aim is to present what I believe to be the core concepts such a developer should know when it comes to blockchain protocol development.&#x20;

Mental models are powerful. They are the starting point, on which further knowledge can be built. A traditional web developer will have a good mental model of the server/client model, the three tier-architecture involving a client, service layer, and database. This mental model will also include understanding concepts like HTTP, REST, etc. With an understanding of these core concepts, such developers can then build on this knowledge to further develop specific applications as needed.

A developer who is about to start blockchain protocol development, will also first need to understand the core mental models and concepts that underpin blockchains. This is essential because blockchain protocol development is unique. Few of the ideas from traditional web application transfer over to the world of blockchain protocol development. Therefore, if the new concepts are not first understood, then it can be difficult to understand how the pieces all fit together.

Given that the universe of blockchain protocol development is broad, this guide does not seek to touch every sphere of blockchain protocol development. Instead, it touches on concepts that I believe are fundamental while also pointing out resources that can be used to dive deeper into the topics being shared.&#x20;

The concepts I will be presenting in this guide are not specific to one particular blockchain. This is because I will mostly be focusing on the fundamentals needed for blockchain protocol development. And due to the fundamental nature of these concepts, it is not a surprise that they cut across different blockchains. Hence, I will be making references to how the concepts are implemented in Bitcoin, Ethereum, and Polkadot. To also help with the explanation, I will be showing how things would have been done differently in centralized, traditional software systems

This guide assumes the reader is an experienced software developer, and has some understanding of blockchains in general and the blockchain data structure in particular. i.e. they know that blockchains are decentralized public append only (i.e irreversible) data structures. The reader should also be familiar with transactions and how transactions are bundled together to make blocks which serve as the fundamental building block of the blockchain data structure. If this is the case, then this guide would enable you to build on that understanding and learn more about the various aspects of building blockchain protocols.

It is also important to note that this guide is not about smart contract developments. Instead it is about building the underlying blockchain system upon which smart contracts can then be deployed.

To get started, let us first lay the groundwork by explaining exactly what we are building when we build blockchain systems.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://geekabyte.gitbook.io/blockchain-protocol-development-guide/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
