One of the most interesting parts of Bitcoin is the “Bitcoin blockchain”, or simply “the blockchain”. The blockchain itself is nothing more than a shared data structure - a way to organize transactions in a particular way. Alongside the blockchain there is also a set of network protocols and application rules which solve a previously unsolved problem: management of a shared transaction ledger among multiple computers that don’t know each other and, more importantly, don’t even trust each other. As such, you can think of the blockchain as a distributed database of sorts, except that the participants using the database don’t trust each other to not fraudulently alter the database.
In the past few years, Bitcoin and the blockchain have shown great promise as a potential implementation of digital money. However, not everyone is ready to use all of Bitcoin. As such, a new interest has emerged - can the learnings from the internals of Bitcoin, e.g. the blockchain, be used to solve new problems? The answer is clearly “yes”, and this article discusses some of the reasons why.
BitGo has built the largest, most secure, and most successful platform for managing applications like the Bitcoin blockchain. BitGo’s wallet services fully index the blockchain for all accounts, implement multi-signature security universally, manage privacy, and provide easy-to-use wallet software for both APIs and end-user access. BitGo’s services use open protocols on top of the existing Bitcoin blockchain to make Bitcoin safer and easier to use.
While it is trivial to copy the Bitcoin blockchain software and create a new form of blockchain, doing so will only create a copy of the low-level blockchain internals. BitGo’s platform can trivially be applied to any blockchain, thus providing a substantively better user interface, more security, an easy to use enterprise-grade API, and administration of the blockchain.
BitGo today helps design, build, and secure their private blockchains (a.k.a. permissioned ledgers) to meet the needs of the client. If you’re looking to leverage blockchain technology in your own application or enterprise, BitGo can reduce your time-to-market while substantially increasing the security, compliance, and capabilities of your private blockchain project.
What the Bitcoin Blockchain does well
The Bitcoin blockchain is hand-crafted to support Bitcoin. Here is what makes it great.
The blockchain is designed for global fault tolerance. Anyone can add a new computer to the blockchain (a “node”) which can synchronize and verify the entire contents of the Bitcoin blockchain. As of this writing, there are about 6,000 nodes currently active in the Bitcoin network, each providing access to blockchain data. The overall network is very tolerant to partial machine outages.
The focus of the blockchain today is to provide a system with no central control. This means that the system cannot be shut down or changed by any single party. It enables the users of the network to know that they can safely use the network without the rules changing. Powering the decentralization is an ever-increasing capacity for verifying new blocks in the blockchain - a.k.a. mining. As of this writing, there is nearly 1 quintillion (a billion billions) hashes per second going into Bitcoin proof-of-work to validate the blockchain.
The records inside the Bitcoin blockchain are immutable. Once they are created and confirmed, they cannot be altered or removed from the network. This is a very important property for finalizing the state of a transaction.
Ways to customize a blockchain
While the Bitcoin blockchain works very well for Bitcoin transactions, it is not necessarily well suited for other applications. Here are some attributes of the Bitcoin blockchain that may not be well suited for everyone:
The blockchain today is a completely public system. Anyone can connect to the network, view the data on the network, and view the data in the blockchain. The system is partially anonymous, in that you may not be easily able to identify who the participants are, but with some sleuthing, you can learn a lot about who is using the network. Private blockchains can be built such that less information is public; but inherent to most blockchain systems will be some level of transparency that may not be available with centralized systems.
Open, Trustless Participation
The Bitcoin blockchain allows anyone to connect and participate. The good news is that because the blockchain is a trustless system, open participation does not necessarily lead to security risks. However, most all previously created financial systems are closed networks with strict access controls for reading or writing to the databases. Additionally, due to the heavy regulatory burden of most financial companies, use of an open system without strong identification and authentication can be a non-starter in many situations. If desired, it is possible to restrict access to a private blockchain to a subset of pre-vetted parties.
Only One Asset
The blockchain was designed specifically for handling Bitcoin assets and Bitcoin assets only. There is no mechanism inherent to the blockchain which could enable transacting anything other than Bitcoin. If you want transactions for stocks, precious metals, loans, or anything else, the blockchain can’t help you. It is true that a number of product have attempted to layer on top of the Bitcoin blockchain (e.g. the Open Assets Protocol, Colored Coins, Omnicoin, etc), but none of these are native to the blockchain and do not take full advantage of it’s security.
We’re all familiar with the concept of ‘mining’, the process which validates, builds, and secures the Bitcoin blockchain. This system works well for an open, trustless system. However, the mining process in Bitcoin is extremely computationally expensive and exists primarily to enforce its trustless nature. If you’re building a system which does not require the ultimate in decentralization, this mining process can be very expensive. Alternate forms of mining are substantially cheaper and may involve simple elections rather than Bitcoin’s brute-force proof of work.
Consensus vs Auto-Update
Because the Bitcoin blockchain is not controlled by any single party, it updates via a system of consensus. That is, the majority of validators (e.g. miners) must agree to the validation rules in order to agree upon which transactions are accepted. Consensus is an important part of any system which is strongly averse to centralization. However, the cost of such a system is that updating the software can be almost impossible if consensus cannot be reached. This has recently been witnessed in Bitcoin with the difficulty in changing the size of a Bitcoin blockchain block. Other systems may find auto-update mechanisms more appropriate for updating software, but this does require some element of centralization.
Fungible assets are those where any unit of the asset is replaceable by any other. Bitcoin is perfectly fungible - we can take two bitcoins, add them together, and they are perfectly fungible for any other two bitcoins. However, many applications deal with non-fungible assets, such as stocks, properties, or identified items at an auction house. While the Bitcoin blockchain could be used to carry these assets, a system designed for non-fungible assets would need to manage and transact those items in a very different way.
Blockchain Foundation Layer The foundation layer is the core of the blockchain, with a token ledger, a distributed network, and rules for block creation.
At the core of a blockchain application lies the foundation: the blockchain itself. Any blockchain will include a peer-to-peer network, a token ledger with rules for transactions, and a consensus algorithm for determining how the ledger may be extended.
Any rudimentary blockchain foundation can be used to support the blockchain application services enabled by the BitGo Services Platform.
The P2P Network
The networking component of a blockchain implementation determines how peers in the network connect to one another and the format of the messages they use to communicate. Messages on the P2P network allow propagation of transactions and blocks and allow new peers joining the network to synchronize with the current state of the ledger.
Several access control possibilities are possible for restricting access to the network. Most private blockchains will elect to use VPN-level access controls and encryption. In addition, blockchains can also enable per machine or per account username/password or PKI-level authentication. In situations which require it, additional connection safeguards, such as IP-based locking or dedicated networks can also be used.
Each P2P network will have a peer-node discovery protocol to find other nodes within the network. Most blockchains elect to use a set of well-known “seed” nodes for the network which can be discovered either by fixed IP address or DNS. Smaller blockchains can use static lists as well.
At its simplest, the ledger consists of a chain of blocks (i.e. records) containing ordered lists of valid transactions. A transaction is simply some mutation to the state of the ledger — its form depends entirely on how the system is designed. The goal of the blockchain ledger is to serve as a single definitive record of the exact set of all transactions which happened. It is therefore also a global agreement about the current state.
The consensus system imposes strict constraints on what constitutes a valid transaction. Most importantly, since the blockchain is a shared database with multiple writers, cryptographic signatures are used to validate that the issuer of the transaction is allowed to make the requested change to the ledger. Other constraints may also apply, for instance: assets cannot be created out of thin air, assets cannot be destroyed, and non-fungible assets may not be combined.
Typical functionality of a human-readable ledger, such as computing net debits/credits and balances is typically done at a higher level than in the ledger itself. For example, despite the appearance that Bitcoin addresses have “balances,” there is no such notion at the blockchain ledger layer — there are only transactions.
Each application may have its own, unique requirements of the ledger in order to enforce cryptographic contracts required of that application. For instance, some blockchains, such as the Bitcoin blockchain, only support a single, fungible asset type, and the transaction structure reflects this. Other blockchains may transact multiple asset types which may or may not be fungible. Such a blockchain requires more sophisticated structure and rules to define inputs and outputs, and may impose additional validation rules for any transaction.
The Consensus Algorithm
The purpose of the consensus algorithm in a blockchain is to reach agreement about valid blocks of transactions among the set of network participants. Some of the consensus rules enforced by the blockchain include:
Verification that each transaction is properly formed Verification that each “block” is created properly Verification of proper issuance of new assets Each node in the network validates all of the consensus rules. If a node does not accept a block as valid, it ignores the block entirely
Some (or all) of the nodes can participate in the generation of new blocks. Each blockchain defines its own rules to define what is a “valid” block. Rules may include:
block syntax block size time between block creation transactions per block computational complexity of a block proof-of-work creator of the block Many algorithms exist for choosing how new blocks are created. A blockchain may elect a leader node to create a block, either randomly or in an orderly fashion (round robin). Or, a blockchain may enable multiple blocks to attempt block creation concurrently. Such systems, like the Bitcoin blockchain, may have nodes include a difficult “proof-of-work” to demonstrate that enough work has been done by the node to create the new block.
In all cases, the blockchain network must be prepared for the case that two nodes simultaneously create conflicting blocks. Blockchains deal with this problem by having nodes converge on the longest chain of blocks. If a node finds itself on a shorter chain of blocks, it will replace that chain with the longer chain using a process called reorganization.
As we build applications on top of blockchain technology, the foundational layer can be customized in many ways to suit the application requirements. Everything, from security, to ledger rules, to consensus algorithms can be tailored. However, all blockchains will benefit from the same core benefits: a highly distributed, semi-trustless ability for multiple computers to converge on a common, shared database of transactions.
BitGo Blockchain Services Layer Services provide the security, scalability, and ease of use required for applications to access the foundation.
Every blockchain starts with the foundation layer which establishes the basic ledger and validation system. While applications could be written directly on top of the foundation, the services layer facilitates a far more robust system which enables simplicity, security, and scalability. Without the services layer, these functions must be enabled in the application layer directly.
The BitGo Blockchain Services evolved from real world lessons in security and scalability when deploying blockchain solutions. Applications built atop the services layer benefit from this built-in security and scalability via a simplified API, enabling faster and higher quality development.
Indexing and Notification Services
The blockchain foundation processes the global transaction ledger used within the blockchain. While blockchain administrators are interested in the global state of the blocks and transactions, most users only care about transactions relating to themselves. Indexing services enable fast querying and organization of blockchain data, allowing users to quickly find their own transactions without needing to worry about all other data. Depending on the application, indexing can either be focused to a small set of the overall data or to the entire system.
Additionally, while the foundation of a blockchain manages both the verified & confirmed transactions as well as the new, yet unconfirmed transactions, the indexing layer can be attentive to both. Intelligently processing both the confirmed and unconfirmed transactions enables the services to account for new transactions consistently.
The blockchain foundation manages a large amount of complex data. However, most applications are only interested in a small set of that data. BitGo’s notification services enable easy filtering of the blockchain data as well as push notification delivery of that data to enable real-time applications to be readily built.
Creating and storing keys may be the most critical element of security in cryptography. Poorly chosen keys can be easily created by others1, and keys that are not stored properly can be stolen. To keep keys secure they must be safely provisioned and a definitive chain-of-custody must be understood at all times. Unfortunately, because keys can be easily stolen electronically, keys must always be stored in encrypted forms, and users are notoriously bad at maintaining strong passwords and remembering them. As such, much of the key management problem becomes a usability problem - how to strongly create, encrypt, and store passwords while providing failsafe mechanisms in case of human error. The BitGo platform solves these problems by use of multiple users, multiple keys, as well as storing keys encrypted in different forms.
Securing today’s online data is harder than ever, and no industry needs multi-signature security more than digital assets. Without multi-signature services, digital asset security suffers from a single-point of attack. If you secure your keys on your client, and your client is hacked, then you lose your digital asset; conversely, if you secure your keys in a service, and your service is hacked, then you lose your digital asset. Multi-signature technology radically reduces the risk of theft by forcing attackers to breach multiple, distinct systems. But with BitGo’s unique multi-signature security designs, are protected from many other vectors as well: coercion, forgotten passwords, lost keys, asset seizure, insider-theft, malware, death, and data loss (e.g. hard disk crashes).
In addition to the problem of security, multi-signature also offers unique benefits with respect to custody and control of assets. A key property here is that BitGo can manage one key which protects a digital asset without giving BitGo control over the asset itself. BitGo cannot transfer the asset without the owner’s signature as well. More generically, BitGo partners can also use multi-signature technology to keep custody of assets with their customers (if desired), and avoid the risks that come with taking custody of someone else’s asset.
Policy & Security
While the blockchain foundation layer provides the basic logic to cryptographically protect your assets, blockchains today know nothing about people. For example, many businesses have multiple users of a single account, each with different roles. A CFO, for example, may have full privileges in the account, while a controller may have very few. The BitGo Policy Engine enforces the human aspects of digital asset account security. For example, transactions larger than a certain size may require two people to authorize the transaction; or a particular account may be configured to only send assets to a particular set of other accounts so that attackers cannot force theft of funds to a foreign account.
In addition to policy enforcement, the BitGo policy engine also audits all events and approvals within your account. Whenever a user of an account makes a request, authorized users on the account see a record of that request. Approvals and denials are also recorded indelibly for auditing and security.
Accounts & Balances
The Wallet Service on top of the blockchain foundation organizes blockchain transaction data into logical wallets (or accounts), allowing you to easily create, configure, and use digital asset accounts that resemble a bank account. Using the wallet service, applications can easily add metadata to transactions and wallets for use with auditing and data sharing between users of the wallet. Finally, as the number of transactions in a wallet grows large, the wallet service helps manage the assets by intelligently combining and splitting the assets for easy, fast transactions.
While the Wallet Service aggregates and manages the transactions within a wallet, applications often also need summary information about the wallet, such as the current balance, the available balance, the pending balance, the number of transactions, and the date the wallet was last updated. These summaries are part of the accounts & balances service.
Blockchains, in their current form, evolved primarily from cryptography. The mathematics behind these blockchains ensure utmost security of the digital assets they protect. However, the cryptographic keys that enable these protections are unidentifiable by themselves. BitGo’s platform combines a unique legal and technical foundation whereby keys can be identified within the platform, while retaining full privacy of the holder. The identity service enables blockchain applications to benefit from the security of cryptography while also maintaining regulatory and risk compliance needed when interacting between people.
Because blockchain technology is so new, many application developers may begin building their applications without considering the full suite of services that will be required. As the application grows, it ends up needing more and more of these services, and the application layer is haphazardly updated to include these features in an ad-hoc manner. This process is time consuming and expensive. Building applications with the BitGo Blockchain Services enables developers to build faster and avoid these pitfalls while also enabling far stronger security and better usability.
1 "Random Number Generator Attack." Wikipedia. Wikimedia Foundation, 15 July 2017. Web. 04 Feb. 2016.