Permissioned blockchains are being developed and used in Enterprise scenarios in which higher transaction throughput, lower latency, versatile confidentiality and governance models are more important than supporting low trust levels among participants. These Enterprise requirements are not being met adequately by the public and permission-less blockchain ledgers. Enterprise scenarios typically have known actors and the trust level between these actors is very high. This allows for trade-offs between trust levels and transaction throughput, speed, confidentiality and privacy, which in turn enables alternate solutions via permissioned blockchains.
Hyperledger Fabric (referred to as ‘Fabric’ in the rest of this article) is the leading permissioned blockchain framework, initially developed by IBM. There are other players in this space, including Multichain, ChainCore and the relatively new entrant – Microsoft’s CoCo framework (referred to as ‘CoCo’ in the rest of this article). Ethereum’s own developers are also working on enabling Enterprise use cases. The Enterprise Ethereum Alliance is a community of industry experts developing features and enhancements to Ethereum for Enterprise needs. This article focuses on Hyperledger Fabric and CoCo framework only.
The projects in the Linux Foundation’s Hyperledger suite are a collection of solutions based on various blockchain technologies. The Hyperledger architecture allows for different components to be plugged in to serve various use-cases, trust level and fault tolerance requirements. The ledgers in this collection are not components of one complete solution, but standalone solutions with various differentiated characteristics. You can choose the one applicable to your business scenario and requirements. Fabric is one of those solutions and it is a complete blockchain solution, including blockchain protocol(s) and smart contract (called Chain Code in Fabric architecture) execution. The tools in the Hyperledger collection (Cello, Composer and Explorer) do work as a component of a complete solution – mostly with Fabric at the moment, as far as I can tell. Hyperledger is available for production use and and it is already being used in developing real-world blockchain solutions.
Coco is an open source platform created by Microsoft. It’s not a standalone blockchain protocol, it is a framework which can be integrated with blockchain protocols such as Ethereum, Quorum, Corda and also Hyperledger Sawtooth to deliver complete, enterprise grade blockchain solutions. The integration with Ethereum is the result of an adapted Ethereum codebase, which is integrated with CoCo Framework. Ethereum provides Smart Contract code execution, transaction processing and distributed ledger model. CoCo framework provides secure execution environment, flexible confidentiality models and codified governance. CoCo Framework was announced in August 2017. There is a whitepaper and a demo of a Proof-Of-Concept integration of CoCo with Ethereum. Ethereum integration is being hardened, integration with other blockchain platforms (Quorum, Corda and Sawtooth) is in progress and the CoCo source code will be open sourced in early 2018.
CoCo provides smart contract code and execution security via Trusted Execution Environments (TEE). The TEEs can be software (Hyper-V VSM) based or hardware (Intel SGX) based. Fabric does not include guarantees of execution integrity via TEEs, although another ledger (Hyperledger Sawtooth) in the collection does. Hyperledger Sawtooth’s use of TEEs is limited to ensuring the integrity of its leader election consensus algorithm only. CoCo’s use of TEEs seem to be more encompassing and it includes execution guarantees and security for the smart contract code itself.
Clearly, Fabric and CoCo take very different architectural approach. There are functional similarities between the two frameworks. For example, the Channels in Fabric provide the mechanism for flexible confidentiality models, which is provided by ACLs in CoCo. TEEs in CoCo provide the same function as Endorsers in Fabric. Fabric has the concept of Validator nodes, such nodes are not needed in CoCo due to TEEs. Composer is a tool to quickly spin up proof-of-concept implementations with Fabric. Microsoft’s App Builder is a tool (I am currently participating in its private preview) to do the same with Ethereum as well as Fabric. App Builder does not currently work with CoCo, but I will not be surprised to see CoCo support in the future.
The default consensus algorithm in CoCo, Paxos consensus, does not provide Byzantine fault tolerance. On the surface, it appears to be a letdown, but Byzantine fault tolerance is made (mostly) redundant due to use of TEEs. There are some considerations to mitigate compromise of CoCo VNs (Validating Nodes). Refer to the CoCo whitepaper for more information on that. Note that the consensus algorithm in CoCo is pluggable, like Fabric. The business logic of the Smart Contracts in CoCo can be written in the programming language supported by the underlying execution engine. Which means, you can use Solidity to write your Smart Contracts in CoCo today. You can use Go to write smart contracts in Fabric.
The choice of blockchain framework, ledger and consensus model requires review and analysis of your particular business use case which translates to throughput, latency, confidentiality, governance and network requirements.
References:
Image Credit: Davidstankiewicz, Blockchain Illustration 2, CC BY-SA 4.0
Hyperledger, IBM, Microsoft, Coco, Etheruem and associated trademarks belong to their respective owners.