“We’re going to put it on the blockchain!” You may have heard ambitious tech folks chanting this mantra when pitching their next product iteration. And privately, you may have wondered, “I thought Bitcoin was money?”
If you’re like me, you have smart friends who’re into cryptocurrencies like Bitcoin and Ethereum. They may be mining or investing in those currencies, and they’re probably also excited about the way the blockchains underlying these currencies will revolutionize… everything.
Now we can both follow along when they say they’re going to disrupt an industry by putting it on the blockchain. I’m going to give you a quick tour of what it is these currencies, coins, and ledgers have to do with non-financial issues like government transparency, voting, climate change, and supply chains. Let me share with you what I’ve learned.
Distributed, Open, and Tamper-proof
The big public blockchains are created and maintained by thousands of users across the globe. This makes them impervious to undue influence from secretive governments and powerful corporations. They’re publicly available, distributed widely, and built on cryptographic structures that make them extremely resistant to tampering.
These properties would seem to make blockchains the perfect preventative to Oliver North-type shenanigans… if Oliver North had been shredding money instead of government documents.
A blockchain is a ledger – an open, distributed ledger that can record transactions involving anything of value in a verifiable, incorruptible way.
Non-monetary storage & applications
In order to build non-financial technology on top of a blockchain, it needs to be able to record something other than a transfer of an electronic coin. Adding data to a blockchain allows that data to become open, distributed, and tamper-proof in a way that’s hard to achieve otherwise.
But how is that accomplished?
Putting data onto the Bitcoin blockchain
- A miner creates something called a coinbase for each block they mine. The Genesis block’s coinbase contains a quote about bank bailouts, for example, but this is pretty much a novelty. It’s not realistic that everyone who wants to benefit from blockchain technology should have to mine a block for every piece of data they encode.
- A file’s binary representation can be broken up into a series of fake bitcoin addresses. These are stored on the blockchain by sending a small amount of Bitcoin to each address. The most famous example of this is a tribute to Nelson Mandela created in 2013. This again is an unwieldy technique that requires generating a large number of transactions to store a single file. It’s also an irresponsible use of blockchain technology, polluting the address space and creating probably-unspendable but not provably-unspendable coins.
- A transaction can use an opcode called OP_RETURN to encode data without creating fake addresses. It still stores a very small amount of data per transaction, but may provide efficient validation when coupled with external storage methods. A technology called Blockcerts uses OP_RETURN to store the hash of an academic credential in a Bitcoin transaction. Anyone presented with the certificate and blockchain address can verify the validity of the credential by re-calculating the hash with their own software.
- Spool uses the Bitcoin blockchain to manage digital rights. To record digital copyright ownership, it sends transactions to the owner AND to a fake address created by hashing the content itself. OP_RETURN is used to hold metadata about the transaction itself, allowing a full suite of transaction types.
Scripting with Bitcoin
The Bitcoin protocol includes limited scripting. This is intended to specify the conditions under which the outputs of a transaction may be spent. In most cases, that amounts to “prove you have the private key associated with the recipient address.” A transaction can grant its output to the first solver of a hash challenge, like this one, which rewards a whole BTC for reversing a particular hash.
Just like the data storage options above, though, the Bitcoin scripting language is intentionally limited to keep the protocol secure and focused on BTC transactions. Bitcoin attracts a lot of attention as the most popular and widely-used blockchain, but it’s not designed for general-purpose distributed computing.
Ethereum, Smart Contracts, and Distributed Applications
Ethereum was created to take blockchain beyond digital currency transactions. Ethereum smart contracts are capable of transacting Ether or custom coins, but they can also read and write persistent data and handle complicated logic. Add in ‘oracles’ to interface with the outside world, and you have a general-purpose computing platform that spans the globe. This is an exciting prospect for many companies and developers, and an extensive ecosystem of distributed applications (DApps) has arisen around the platform.
Despite its flexibility, though, Ethereum doesn’t suit every need. Executing smart contracts costs Ether, meaning the cost of operating a DApp can vary with the whims of cryptocurrency speculators. And, the proof of work consensus algorithm is too slow for performance-sensitive applications. Finally, the data stored and operated on by DApps is fully public. This is great for some purposes, but a non-starter for many use cases.
Single-purpose blockchain technologies
If an existing blockchain isn’t suitable to a particular application, a new one can be built. One downside to this approach is that the proof of work consensus system used by the major public blockchains requires broad distribution and participation of many disinterested miners.
Alternate systems may be used to validate and order the entries of the distributed ledger, but they often involve some delegation of trust to network maintainers or other privileged nodes.
One great example is Fabric, from the Linux Foundation’s Hyperledger project. Fabric is a technology for building private, permissioned blockchain applications.
Underlying each Fabric network is a distributed state database (a key-value store) and a distributed ledger to record all changes to the application state. Participating nodes must have permission to join the network, and network permissions can be further segmented using channels. Participant nodes can verify the authenticity of transactions in their channels using public-key cryptography. But, they do not participate in the consensus algorithm. A special set of ordering nodes is responsible for reaching consensus on the ordering of a valid transaction and disseminating updates to the other peers.
By replacing the open, distributed infrastructure of public blockchains with a more controlled network, this approach can be custom tailored to each application and offer privacy features more inline with the needs of many companies.
What’s next in blockchain technology?
I’m excited about how blockchain tech could be used in semi-public collaborations like supply chain management and regulatory reporting. Over the next few weeks, I’m going to be digging deeper into Fabric and some of the other Hyperledger projects. I’ll report back if I learn anything interesting.