Blockchain is an innovative crypto technology that enables the way forward for many systems and industries, with financial industry being the immediate beneficiary. Fairly recent, even by technology industry standards, it started off as underlying implementation for the cryptocurrency bitcoin but has surpassed bitcoin in its acceptance and relevance. It has taken a life of its own as a technology of choice for distributed, decentralised, consensus systems. This tutorial looks at blockchain’s fundamental technology concepts and popular implementation platforms.
Blockchain in essence is a distributed, decentralised public ledger. It has also been described as distributed state transition machine with consensus added in.
If you are starting at step zero, I suggest you do a bit of of background reading in PKI and digital signatures and Hashing mechanisms. Digital signatures and Hashes have been used to collaborate across the Internet to ensure Authentications (you are who you say you are) , Non Repudiation (cant dispute making the transaction), Confidentiality (keeping the activities secure and private) and Integrity (keeping the trust) of any transaction. However all of them require a central authority(system) that most people trust. The problem with with the centralised models is it is extremely costly and slow specially for smaller transactions. Efforts to find a alternative system has been around for few decades. The alternative system is a distributed, decentralised, consensus generating one that would allow.
- A method for disparate parties to agree on the validity of transactions.
- A mechanism for anybody to join the consensus system.
Bitcoin/Blockchain solves it by the following mechanisms.
Hashing of previous transactions :
Picture Credit : Wiki Commons public domain image.
Ownership of any property is determined as a chain of digital signatures. Each owner transfers the ownership by digitally signing the hash of the previous transaction and the public key of the next owners and adding these to the end of the property(in bitcoin’s case a coin).Payee can then verify the transaction by using his private key.
Timestamp and Ordering:
However this does not verify if the payer has sent this to multiple payees. Blockchain solves this by adding a timestamp and broadcasting the transactions to all the nodes in the system. Nodes, then create a blocks of these transactions add a timestamp, a nonce(proof of work) and a hash of the previous block. These blocks are created approximately every 10 minutes.The nodes then collaborate to agree on the right order of these blocks and add it to the growing and persistent chain of the these blocks.
This brings us to the most important innovation of blockchain. How would one stop from a malicious node or nodes presenting a block that is wrong and making the blockchain inconsistent and creating multiple versions of the ledger. The way it works is that all nodes (also called miners) compete to find a number that added to block of transactions, causes this block to hash to a code with certain rare properties (A simple example is demonstrated here -> https://en.bitcoin.it/wiki/Proof_of_work ). The fundamental idea behind proof of work is it would be extremely hard for a malicious node to compete with the total processing power of the network for producing a false blockchain. Additionally this also provides an entry criteria for the nodes to be part of the distributed consensus system. (Note : As the computing power increases, this is a breaking point of blockchain i.e an entity with lot of computing power can own the network. But for now and near future it is not considered feasible.)
Use Cases and Implementations
Blockchain lends itself to numerous applications, obvious ones being financial transactions. But there are very interesting applications such as universal file systems, remote work management, data storage and smart contracts which are relevant to many enterprises. Bitcoin Blockchain is designed for currency needs but for many non financial needs this may not be good design. Many have modified the blockchain protocol to suit different design needs. A large number of commercial platforms exist too from many well known companies who have built on top Bitcoins implementation.
The most popular open source platform for blockchain is the one from the Bitcoin itself. The complete source code can be downloaded from https://github.com/bitcoin/bitcoin.
AlternativeChains(Altchains) are blockchains to achieve consensus on digital assets and can be used for implementing certificate authorities, smart contracts, DNS and file storage. They can also be used for creating other coins. Counterparty is one of the well known implementation of AltChains.
Namecoin as per the website
is an experimental open-source technology which improves decentralisation, security, censorship resistance, privacy, and speed of certain components of the Internet infrastructure such as DNS and identities.(For the technically minded, Namecoin is a key/value pair registration and transfer system based on the Bitcoin technology.)
Bitcoin frees money – Namecoin frees DNS, identities, and other technologies.
Colored Coins is an open source protocol that enables developers to create digital assets on top of Bitcoin blockchain.
Ethereum is the second most popular platform for blockchain implementations. It modifies blockchain algorithm to solve what it deems as the weakness of Bitcoins (lack of Turing completeness, Value blindness). Ethereum does this by building an abstract foundational layer: a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition functions.
Ethereum as per the official github description
“The intent of Ethereum is to create an alternative protocol for building decentralized applications, providing a different set of tradeoffs that we believe will be very useful for a large class of decentralized applications, with particular emphasis on situations where rapid development time, security for small and rarely used applications, and the ability of different applications to very efficiently interact, are important. Ethereum does this by building what is essentially the ultimate abstract foundational layer: a blockchain with a built-in Turing-complete programming language, allowing anyone to write smart contracts and decentralized applications where they can create their own arbitrary rules for ownership, transaction formats and state transition function”
One can download Ethereum from https://github.com/ethereum/.
It is fairly easy to use Ethereum to program applications and create smart contracts. One can install the command line tools available at https://www.ethereum.org/cli. With the command line tools one can then connect your application server to the blockchain network of ethereum or create ones own blockchain network.
As you can see blockchain is a technology of immense significance. Great amount of development, customisations and networks are being built around it. It is the right time to give a serious look at adapting it for one’s enterprise and benefitting from it.