Now that we have set up the basics of how blockchains work (The Basics) and outlined the main foundation of distributed computing (The Origin of Blockchains), we can now examine blockchains as distributed systems. The main goal is to see what are the EXACT guarantees that blockchains provide and what assumptions they make to achieve these guarantees. For this analysis, I will be focusing on Bitcoin for simplicity and history, but other similar PoW chains, like Ethereum, will also fall into this analysis.


Famously, Bitcoin-like PoW blockchains boast a tolerance to bad actors that have <50% of the hash rate…

The origin of blockchain technology is usually simply attributed to the actions of some mysterious genius working under the pseudonym of Satoshi Nakamoto. This view of history usually makes the technology seem almost magical and implicitly hard to understand. It is a lot more grounding when one understands the actual history behind the development of these systems. In this section, I will outline the most important topics from the decades of research in consensus algorithms and distributed systems that led up to the creation of blockchains.

What is a Distributed System?

Leslie Lamport, one of the fathers of the field of distributed systems, once famously…

Here are the very basics about what a blockchain is and how it delivers the guarantees it does. Shown here simply to get all readers on the same footing when talking in more depth later. In this section, I won’t be going too technical, but will be introducing high level concepts that lay the foundation for these systems.


State (S) — The data being held/updated by the blockchain. In the case of cryptocurrencies, it could be a mapping from accounts to balances.

Transaction (T) — A transition function that changes the blockchain’s state from S to S’. In the case…

Hello, I am Zain Admani. I am a computer scientist that has quickly been falling down the rabbit hole of blockchain technology and distributed systems. These systems include the current mainstream blockchains like Bitcoin and Ethereum as well as research contributions such as Paxos. Not only do I want to understand how they work, but also how they came to be as they are.

In order to make sense of this trip, I am writing down all my thoughts and understandings as they develop. I will also attempt to make it as clear and understandable as possible for any others who choose to follow down this trip. I hope this will not only help me understand the material better, but just maybe help others as well along the way.

Now let’s get to work.

ONYX Alpha will support Solidity

We are happy to announce that we will be using Solidity as our pilot language on the ONYX Alpha! We are quickly making the changes to our Validator systems and will be releasing an update in the coming weeks.

Why Solidity?

Solidity is a language that is very conducive to test driven development. Implementations of simple logic can be tricky for newcomers but testing for behavior is rather easy. Also, considering the isolated nature of running solidity vs. any full scale desktop language, we think it is a simple yet effective proof of concept for our network.

We also believe that this…

Distributed Test Driven Development powered by Ethereum

We are happy to announce Project ONYX, the first decentralized platform to enable Distributed Test Driven Development built on the Ethereum blockchain.

Learn more at where you can find our whitepaper and our alpha build. All code is open source and is available at our Github. Come join us on Slack, Telegram, Twitter, or Reddit!

Distributed Test Driven Development (d-TDD)

Test Driven Development (TDD) is a development practice that focuses on making software by planning and specifying expected behaviors with tests before coding up a solution. These tests fully lay out the intended behavior of the software…

Zain Admani

Software Engineer. Computer Scientist. MS in CS @UTexas

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store