A blockchain is a distributed database that uses a decentralized consensus algorithm to agree on the current state of the world. More recently, blockchains have augmented their ability to process simple transactions to include handling arbitrarily complex transactions. Most contemporary blockchains require that participants store the entire state of the blockchain. Public blockchains achieve consensus by economically incentivizing participants to follow the rules, penalizing those who do not.
The canonical example for blockchain is Bitcoin, which confusingly can refer to either the blockchain technology, or the cryptocurrency built on top of it. The Ethereum blockchain is a more recent development that added arbitrary computation. Both systems currently use proof-of-work (PoW) as their consensus mechanism.
Participants in a blockchain may have one or more accounts. Also called addresses, or sometimes wallets, these are conceptually similar to a bank account or credit card number. In Ethereum, addresses are 20 bytes long, which means there there are 2160 possible addresses. This is roughly the same as the number of atoms in the planet earth. An address represents one half of a public key cryptography key pair, and can therefore be generated at will by participants. Wallet software or hardware will typically be used to do this, since it is imperative that the key pair is generated randomly.
In public blockchains, economic incentives are used to encourage good behaviour amongst the participants. Cryptocurrency is a virtual currency that is woven into the fabric of a given blockchain system to drive these incentives, amongst other uses. For example, in Ethereum, participants who participate in proof-of-work are called miners and are awarded a new unit of Ether (ETH), Ethereum's cryptocurrency, for each block mined, or successfully added into the blockchain. The new Ether comes from an increase in the total supply that is encoded into the blockchain algorithm. In addition, miners collect transaction fees from participants.
A blockchain node is server software that is connected over the Internet to other nodes. The network of communicating nodes is what crystallizes the blockchain and makes it operational. Participants interact with the blockchain either via a node that they run, or that they connect to via web, mobile or application software. For example, a wallet app on a mobile device may connect to the Ethereum blockchain via a JSON RPC API connection to a node, which in turn has a connection to the blockchain.
Consensus, governance, and the economics of public blockchains
The software the nodes run must be compatible in order for the nodes to reach consensus about the current state of the blockchain. Should the nodes fail to reach consensus, the blockchain will fork, or split into two or more parts. Nodes will communicate only with those nodes that it agrees with about the state of the blochchain, ignoring all others.
This represents the most basic type of blockchain governance: us vs. them. The blockchain server software that nodes run is programmed by engineers, but the nodes themselves may well be operated by others. The proof-of-work algorithms at the core of consensus are designed to be resistant against Sybil attacks, which means that node operators need to invest a large amount of capital into purchasing computing power, and operating expenditure in the form of electricity to operate the computer power.
In order to see a return on their investment, miners must mine blocks to receive both the block award and transaction fees, and be able to use the received cryptocurrency to cover their capital and operating expenses. The cryptocurrency is only valuable if others are willing to pay for it, which is more generally true if the market for such cryptocurrency is large and liquid. In other words, being a miner operating nodes on a minor fork of a blockchain is less profitable than doing so on the majority fork. Therefore, miners are incentivized to keep their node software up to date with what the engineers are producing, and to follow the majority.
Transactions and blocks
Once a participant has an account (address, wallet) and some cryptocurrency, they may send a transaction via the blockchain. Transactions are collected by miners, which group them together into blocks. Blocks are added in turn to the blockchain. The blockchain itself is immutable: once a block and its constituent transaction have been added, they cannot be changed.
In Ethereum, the transaction could be either a payment of cryptocurrency to another account, or a unit of computation.
In earlier blockchains, transactions for the most part are simple records of payment of cryptocurrency. For example, -1 Ether from Alice's account, +1 Ether to Bob's account. Ethereum introduced the concept of arbitrarily complex transactions. Another way to describe an arbitrarily complex transaction is: a computer program. A computer program on the blockchain is called a smart contract. In Ethereum, it is uploaded to the blockchain in a transaction, and can be interacted with in subsequent transactions. Smart contracts have their own unique addresses, and can receive, store, and dispense Ether.
When we put all of this together: a ledger (database), accounts, cryptocurrency, consensus, transactions, smart contracts, and decentralization, what we have is a world computer. Parallels can be drawn to cloud computing, although the use cases are different and complementary. The following table makes a rough comparison between the two.
|Attribute||Blockchain world computing||Cloud computing|
|Networking||Self-organizing over the Internet||Private or public networks|
|Suitable for||Highly resilient financial, transactional, and identity application||Any application|
|Redundancy||Up to the number of nodes||Typically 1+1|
|Resiliency||Up to the number of nodes||Cloud-provider data centre|
|Fees||Incremental||Cost plus margin|
|Sample cost to store a 1MB image for a month||~$1000||~$0.00|
|Sample cost to operate a stock exchange for a month||Incremental, $0.10 per trade||$100,000|
Decentralized applications (DApps)
When we connect traditional mobile, web, desktop, or server applications to the blockchain, the combination is called a decentralized application (DApp). This is a fundamentally new form of distributed application that can easily include attestational, temporal, financial, identity, and traceable attributes that previously required significant third party infrastructure.
The Ethereum White Paper provides an idea of the types of DApps that could be built, including token systems, financial derivatives and stable-value currencies, identity and reputation systems, and decentralized autonomous organizations.