From the Blogosphere
Blockchain: Byzantine Generals and Achieving Consensus | @CloudExpo #Cloud #FinTech #Blockchain
One interesting feature about blockchain technology is that there’s no central authority or single source of the ledger
Mar. 31, 2017 02:00 PM
When discussing disruptive technologies, the topic of blockchain inevitably enters the conversation. Gartner recently listed blockchain as one of the ‘Key platform-enabling technologies to track.' Approximately $1.4B has been invested in blockchain just this year, according to PwC executive Seamus Cushley. IBM announced this week a Blockchain-as-a-Service Enterprise offering at their Interconnect Conference. While there is a lot of ‘hype vs reality' discussions going on, there is no arguing that blockchain is being taken very seriously across industries and cannot be ignored.
In simple terms, blockchain is a digital ledger. You can think of it as a spreadsheet. The blockchain ledger comprises a constantly growing list of transactions called "blocks" - all of which are sequentially connected. Each block has a link to the previous one in the list. Once a block is in the chain it can't be removed, so it becomes part of a permanent database containing all the transactions that have occurred since its inception.
One of the more interesting features about blockchain technology is that there's no central authority or single source of the ledger. Which means it exists on every node that's associated with it. Yes, every node has its own complete copy of the blockchain. As new blocks are added, they're also received by every node that participates. For this to work, it requires distributed consensus and trust to ensure the integrity of the system. Achieving this consensus is one of the challenges and complexities in such a distributed system.
The Byzantine Generals Problem
The consensus challenge is frequently described by a logic problem referred to as The Byzantine Generals Problem. Imagine a group of generals, encircling a city with their armies. They want to coordinate an attack. Their only method of communication is through messengers. Now, add into this mix that some of the generals may be traitors with their own agenda. Those traitors may intercept or modify the messages being sent in the hope of causing the attack to fail. How do the generals know they are receiving information? Solving that conundrum is a frequent challenge in distributed systems. How to ensure the orders are valid and trusted.
As with any challenge, there is always more than one way to address that challenge. I frequently describe my perspective as ‘There is no perfect solution, everything is a tradeoff.' What tradeoffs you are willing to accept determine the appropriate solution for your needs'. There are many techniques that have been developed in the blockchain space to address the consensus challenge, each with their own set of tradeoffs. Three popular ones are:
- Proof of Work
- Proof of Stake
- Byzantine Fault Tolerance
Proof of Work
Proof of Work is the one most people are familiar with, as it is at the core of the biggest use of a blockchain ecosystem today, bitcoin. The basic concept is providing a mechanism that requires effort to add a block, but minimal effort to validate that work was done. In this consensus solution there are ‘miners.' Miners look for the next proposed block to add to the chain. To add the block, the miners are challenged with a mathematical problem to solve. Solving this puzzle requires significant resources, including time, computing power and electricity. Once a miner solves the puzzle, they can add the next block to the chain, with the appropriate hashing information for other participants to easily validate the work was done and that the block belongs. The miner is rewarded for their effort, which is the incentive to expend their resources. In the bitcoin world, they are rewarded with bitcoin, for example.
This has proven to be a very successful technique for gaining consensus and trust in a blockchain ecosystem. The tradeoff is processing time. Solving the puzzle can take up to 10 minutes, obviously having a direct impact on throughput. The time window can be reduced by reducing the complexity of the puzzle. The tradeoff then becomes the risk that it is easier to insert/produce invalid transactions to the chain.
Proof of Stake
In Proof of Stake solutions, mining is done by participants who have a stake in the blockchain ecosystem they belong to. This is unlike proof of work, where the miners can be anyone. Who can insert the next block is done based on a cost associated with the block, the total value(stake) the participant has in the ecosystem, and usually some pseudo-random selection process to avoid risk of only the largest stakeholders having control of block insertions. There are still hashing techniques involved, like proof of work, but not at the resource consuming levels of that solution. This technique is used by the Ethereum blockchain ecosystem.
This solution has become more attractive than proof of work, as it doesn't suffer from the latency issues of proof of work. As everything is a tradeoff, the risk with proof of stake is referred to as the ‘nothing at stake' scenario. This is the fact there is nothing to lose by voting for multiple blockchain histories, creating a problem with reaching consensus. Several alternatives to address this situation exist, including ‘punishment' for bad behavior, as well as reconciliation problems. The other risk, as previously mentioned, is large stakeholders dominating the blockchain.
Byzantine Fault Tolerance
Byzantine Fault Tolerance takes a different perspective. All participants in the blockchain ecosystem are known and each possesses a public key. As a block passes through their node, it is validated, and the message is signed with that public key. Once a predefined number of participants sign the block, it is considered valid and added to the chain. This is the technique used by the Hyperledger blockchain solution that is the underpinning of IBM's solution. This has significant benefits. Unlike proof of work, large amounts of resources are not required to participate. Additionally, it is a much more ‘democratized' solution, as the largest stakeholders don't have any unfair leverage such as can occur in proof of stake solutions.
There are two key tradeoffs with this solution. First, it requires all participants to agree on who belongs in the blockchain. Additionally some method of confirming membership, some level of central authority or agreement is needed, which tends to bounce up against the philosophy of blockchain.
We have miles to go and promises to keep
As with any technology, blockchain is a tool, not a destination. Ultimately, as technologists, our job is to help the business achieve its goals - and reach its destination - by leveraging tools that provide business value. The potential use case scenarios cross multiple industries, from changing the way financial transactions are conducted, into healthcare and the maintaining of Electronic Health Records, over into supply chain as well as the explosively growing Internet of Things.
I count having blockchain in our toolbox as a net positive, and look forward to how this tool can help us provide value back to the business.