Microsoft wants to make blockchain networks enterprise-ready with its fresh Coco Framework
Interest in blockchains is at an all-time high, but there are still slew of technical issues to solve, especially for enterprises that want to adopt this technology for brainy contracts and other use cases. For them, issues like throughput, latency, governance and confidentiality are still major stumbling blocks for using blockchains. With its fresh Coco Framework, Microsoft wants to solve these issues and make blockchains more suitable for the enterprise.
In an interview earlier this week, Microsoft’s CTO for Azure (and occasional novelist) Mark Russinovich told me the company is witnessing a lot of interest in blockchain technology among its users. They like the general idea of a distributed ledger, but a system that can only treat a handful of transactions a 2nd doesn’t work for them — what they want is a technology that can treat a thousand or more transactions per 2nd.
The Coco Framework solves these fundamental issues with blockchains by introducing a trusted execution environment (TEE). The basic idea here is that you have a trusted box on which you can trust to put your blockchain code. That trust is established through implements like Intel’s Software Guard Extensions or Windows’ Virtual Secure Mode — and because it’s an open framework, it can also support other TEEs as they become available. With these TEEs you can then build a network of trusted enclaves that all agree on the ledger and Coco code they are running (it’s a concept Intel and others have also experimented with in the past).
Once you have these trusted enclaves, all the other lumps fall into place. Because you can trust the updates to the ledger, you don’t need to perform any proof of work, which greatly increases the transaction speed. In a typical ledger, that would take seconds or even minutes. But with the enclaves, that’s not an issue, and Microsoft says Coco and Ethereum can treat up to 1,600 transactions per 2nd in its prototype setup. Thanks to this, the blockchain network — when combined with a protocol like Paxos for ensuring consistency — becomes a usable database.
Enterprises also want to ensure that one of their suppliers can’t see the orders you placed with another supplier. That’s a hard problem to solve when your ledger is public. Coco, however, adds a confidentiality layer on top of a ledger like Ethereum (or any other ledger, because the framework is ledger-agnostic). Enabling this only took some minor addition to the Ethereum protocol in Microsoft’s prototype.
Another feature Coco enables is governance. To explain this, Russinovich used the example of a bank consortium that wants to use a blockchain network. Who gets to add another bank to this network? The Coco governance system permits the members of the consortium to set up rules for voting on decisions like this.
What’s significant here is that the Coco Framework will be compatible with any ledger protocol and can run virtually anywhere — in the cloud or on premises, and on any operating system and hypervisor that supports a compatible trusted environment. R3 Corda, the Intel-incubated Hyperledger Sawtooth and J.P. Morgan Quorum will integrate their distributed ledgers with Coco.
“We are thrilled to work with Microsoft to bring blockchain to the enterprise,” said Rick Echevarria, vice president, Software and Services Group and General Manager, Platforms Security Division at Intel, in today’s announcement. “Our mutual customers are excited by the potential of blockchain. Intel is committed to accelerating the value of blockchains powered by Azure on Intel hardware, by improving the scalability, privacy and security of the solutions based on our technologies.”
Don’t get too excited yet, tho’. It’ll be early two thousand eighteen before Microsoft will open source the code for Coco. Russinovich tells me the team is still hardening the code and getting it ready for open sourcing. The company is making a technical whitepaper and demonstrations available today, however.
Featured Pic: Bryce Durbin