Blockchain technology was born out of the quest for developing digital currencies without the need for a centralized authority. Bitcoin emerged in 2009 (proposed in 2008) as the first public blockchain, initially focusing on monetary transactions.
Essentially, Bitcoin implements a state machine on top of a peer-to-peer network. This means that transactions cause the system transition from one state to another. States are represented by the balances of Bitcoin accounts. Importantly, because of the consensus protocol, all participating nodes agree on the global system state.
It did not take long for people to realize that this is a very useful concept for a variety of applications. If money can be represented on the blockchain, why not use it to represent other assets, such as property deeds, certificates, bonds, etc.?
Furthermore, what if transactions could do more than just move balances from one account to the other? In fact, from very early on, Bitcoin’s script language that makes up transactions has supported some programmable constructs, such as conditional execution. Furthermore, small sets of arbitrary data can be stored on the blockchain.
Using these features, creative projects started to use the Bitcoin blockchain to represent all sorts of assets on top of Bitcoin. The ColoredCoins project, for example, provides a set of tools to make this easy. You can now find many examples of assets on the Bitcoin network, ranging from application specific currencies or tokens to digital art and digital rights management for downloadable music.
People also have found creative ways to store larger sets of arbitrary data on the Bitcoin blockchain. Nelson Mandela’s image, the original Bitcoin paper and even leaked data files from WikiLeaks are amongst the more curious pieces of data that can be found on the Bitcoin blockchain.
Smart Contracts and Decentralized Applications
Because of Bitcoin’s limited script language, the 10 minutes average time between block generations and the limited amount of data each transaction can store, there are practical limits to what can be achieved.
In order to implement more complex applications, it is necessary to allow storing arbitrary state on the blockchain and provide a more complete instruction set. Ethereum, proposed in 2013 by Vitalik Buterin, is a Turing complete blockchain, meaning it allows implementing any problem that can be computationally modeled.
Ethereum allows deploying so-called smart contracts, which make up decentralized application executed on a global network of virtual machines. The term smart contract existed long before blockchain technology and was probably first mentioned in 1996 by Nick Szabo. Smart contracts are automatically executed contracts implemented in computer code. They allow parties to exchange in complex financial and non-financial transactions according to some pre-defined rules written in a programming language. An often-cited example of a smart contract use case is supply chain management. Smart contracts can track products and providers of complex supply chains, manage orders and automate payments in a transparent and trust-free manner.
Of course, in real-world applications, smart contracts implemented on Ethereum or similar blockchains do not always model contracts in the sense of legal documents but can represent any application.
Decentralized applications range from serious financial applications to gambling and computer games. The most popular application so far has been a game that allows breeding virtual cat collectibles.
Blockchain technology has not reached its 10th anniversary yet. However, in its time of existence, we have seen a generalization of its use cases well beyond the original monetary application.
We are only starting to figure out the possibilities this new technology has opened in terms of applications.