Much of the energy and excitement in the world of the blockchain has focused on the cryptocurrencies, their skyrocketing valuations, and their astonishing collapses. Most of the enterprise world has sat quietly on the sidelines, popping some corn and settling back to enjoy the show.
That is slowly changing, though, as companies are starting to tip their toes into the turbulent waters. Some are tempted by the slings and arrows of outrageous fortune because they want to accept the cryptocurrency just like the dollar or the euro. Others are more interested in the rock-solid authority offered by the crypto-enhanced blockchain and they want to use the hardcore math and science to bolster their own internal practices. They and their customers want some of the assurance offered by the battle-tested mechanisms.
Creating a bridge between the cautious, buttoned-down world of the enterprise and the wild, adventurous world of the blockchain is not for neophytes. Even if you’re avoiding the crypto currencies and sticking to the staid role of simply tracking and authenticating transactions, it’s important to get the cryptography correct. This isn’t a role for custom, original code. It’s better to stick with a well-established library, where the test of time and a devoted user community have squeezed out the errors.
The right library for your blockchain stack depends greatly on the way that your company is embracing the blockchain. Those who want to rely upon the blockchain as a source of truth for contracts will want libraries that interface with the different chains that are emerging. Those who want to connect with the different currencies will want to build a bridge with the different exchanges.
Here are 10 of the most exciting libraries that can act as a foundation for integrating blockchains into your enterprise software.
BigChainDB
Both databases and blockchains store information. Some people like to argue about the differences. The company behind BigChainDB is trying to merge the concepts by creating a distributed database with the immutable features of the blockchain. The system answers to MongoDB’s query language and offers a complex permission architecture to enable many types of immutable records and assets. A community version is available with an open source license or you can hire the company for consulting or production support.
Bitcoin Core
The Bitcoin protocol was designed to be decentralized. The most serious developers who want to work with Bitcoins will want to run “full nodes” that engage fully in the consensus building process for adding new blocks to the chain. Bitcoin Core is the definitive reference edition of this software but there are also clones like Bcoin, a JavaScript library for Node.js users who want to participate in the mining and transactions. There’s also a Bcoin Cash for those who want to work with that fork. If you’re actively investigating the transactions, the BPanel library from the Bcoin team acts as a “BMS,” a Bitcoin management system with all of the standard features found in a content management system like WordPress or Drupal.
Coinbase
Many who need to work with the cryptocurrencies don’t want the challenge and hassle of participating in the transaction. They’re happy to let someone else do the work. One of the largest and best funded exchanges is Coinbase, a company that also offers APIs for those who want to process transactions through them. You’ll find Coinbase libraries for Ruby, PHP, and Node that will maintain wallets, track historical prices, and initiate transactions in the four major coins the platform supports (Bitcoin, Bitcoin Cash, Litecoin and Ethereum).
Corda
The Corda open source project is the banking industry’s contribution to the blockchain movement. It’s not a currency or a replacement for banks because the banks already offer a sophisticated layer of trust for settling payment. It’s more a library for constructing your own distributed ledger, a slightly different idea that accomplishes much of the same thing. Groups of companies or people can construct smart contracts and use the ledger to track the ownership of assets. The code is more focused on the enterprise and less on overthrowing the financial industry.
Embark
Creating a smart contract or a distributed application for the Ethereum blockchain takes a fair amount of coordination. First, the code must be compiled, then tested, and finally deployed to a network. Embark is a constellation of libraries and tools that includes a code editor, a web user interface, and a transaction explorer as well as a number of plug-ins for more housekeeping. All work like an IDE for the Ethereum world.
Ethereum
The Ethereum platform is more complex and open to experiment. Developers who want to create smart contracts can use a more robust language to create complex agreements that unlock more of the potential of the shared truth embedded in the blockchain. The official reference implementation written in Go is feature-rich and running throughout the web. Those who want to run a node on the Ethereum network can create one that is a full participant, an observer (light), or a librarian (archive). Ethereum also includes a number of tools for developers of the code that defines the digital contracts, like a version of the virtual machine that will execute them.
Fans of particular languages can often find versions of the Ethereum stack that either implement the Ethereum code directly or borrow much of the structure. Pyethereum, for instance, is a core library with a command line interface for using Python to interact with the Ethereum chain. Developers who love Python and want to write their own smart contracts might also explore Vyper, a “security-focused” language for developing contracts that’s also said to be “Pythonic.” There are similar libraries for other languages, like Web3.js for JavaScript and Nethereum for .Net.
GUN
It’s hard to find the word “blockchain” anywhere in the GUN documentation, but there are many similarities. The official word is that GUN is a “fully decentralized” tool for syncing data around a network of peers. There’s no master with control of a single source of truth. Indeed, there’s no real consensus protocol at all—a major difference from the traditional blockchain. But GUN still makes a good foundation for building distributed applications because the information flows easily and quickly through the network, allowing the documentation to claim, “the loss of important information [is] nearly impossible.” If your algorithm doesn’t require negotiating some consensus over truth—something that often happens in social networks where each member is independent—a tool like GUN can provide much of the distributed benefits of what we think of as the blockchain without the extra time and expense of any proof-of-anything algorithm.
Hyperledger
One of the biggest open source projects for building on blockchain is Hyperledger, a large collection of tools and frameworks for sustaining a broad infrastructure for converging upon a shared truth. All of the co-evolving tools are aimed at supporting independent implementations inside enterprises. Grid, for instance, is aimed at nurturing a blockchain that tracks the flow of materials and payments through the supplier networks. Its collection of libraries offers a predefined set of data types and formats that can be customized for the particular manufacturing industry. Many of the subprojects like Irora and Sawtooth are designed to be modular, allowing developers to pick the right mixture of permissions control and consensus building.
Quorum
The public nature of much of the data on the blockchain has always been both a feature and a challenge. Quorum – a fork of Ethereum from J.P. Morgan Chase—is an experiment that mixes in better options for privacy and more efficient means of reaching a consensus. Private blockchains constructed inside companies or among consortium members can use Quorum to create smaller, faster, and simpler blockchains that still deliver much of the promise of a shared truth without the extra cost and hassle of mining.
The Raft model, for instance, designates leader nodes, which make final decisions about the chain contents, and following nodes, which accept those decisions. The absence of disputes means that transactions can be finalized in milliseconds. The Istanbul model offers Byzantine Fault Tolerance for more elaborate networks with less trust.
Quorum also offers a permissions-based mechanism for creating private transactions and hiding details from other members of the consortium. The individual nodes maintain separate Merkle trees for the public and private data allowing both to evolve alongside each other.
Truffle
Writing your own smart contract is much easier with an IDE that has been optimized for the task. Truffle was built to support creating, testing, and deploying contracts written in Solidity, one of the most popular languages for the Ethereum blockchain. In goes your text and the Truffle IDE will compile the code while integrating it with various other Ethereum packages managed with EthPM.
Testing begins in a “clean room environment” using a private version of the Ethereum blockchain running locally, known as Ganache. The tests can be written in either Solidity, for testing the behavior inside the blockchain world, or JavaScript/TypeScript, for simulating how the contracts will interact with the outside world when they go live.
The Truffle project also includes Drizzle, a collection of React/Redux data management tools to make building front-ends a bit easier for web applications.