R3 is developing a blockchain-platformed operating system called Corda. A 100-plus member consortium of banks, regulators and technology partners (Oracle, Accenture and more) are developing Corda and are led by blockchain tech start-up R3 CEV.
Corda is a distributed ledger platform designed specifically for financial services.
Launched in September 2015, R3 was born out of a common frustration amongst banks and other financial institutions with multiple generations of disparate legacy financial technology platforms that struggle to interoperate, causing inefficiencies, risk and spiraling costs.
Corda is an open source blockchain project, designed for business from the start. Only Corda allows you to build interoperable blockchain networks that transact in strict privacy. Corda’s smart contract technology allows businesses to transact directly, with value.
Corda 1 was released nearly five months ago, and with it came an important step in the Corda journey — completion of the design and API / ABI stability for the core application programming interfaces. From this point they made a promise that application code will not break.
The 56 page Corda technical white paper is here.
Corda 2 was their first post-API-stability release and added support for observer nodes.
Corda 3 is delivering the next platform stability keystones:
committing to the peer to peer protocols,
data formats, and the
test frameworks.
By stabilizing the peer to peer protocols they lay the groundwork for nodes of mixed versions to co-exist in a compatibility zone: with new nodes able to talk to old nodes and vice-versa.
Corda 3 also delivers:
* Enhanced support for CorDapp upgrades. They believe with Corda 3 they provide the most comprehensive and flexible upgrade framework of any DLT/blockchain framework available today.
A dramatically more powerful and robust serialization framework designed for security from the ground up, with self-describing messages, on-the-fly class synthesis, flexible evolution, support for adapting third party libraries, sub-component deduplication and based on the industry standard OASIS specification AMQP/1.0.
* Support for draining a node of flows: when a drain is started via RPC or the administration shell, existing flows will run to completion but new flow starts will be paused. This allows you to cleanly bring a node to quiescence in preparation for upgrades of the node or your applications which might invalidate existing flow checkpoints.
* The initial responses to the newly introduced internal security team and the work undertaken by both them and external auditors. This will be an ongoing effort by R3 to ensure Corda is developed to the highest standards and withstands scrutiny from industry security experts. Whilst security has always been a core tenet in the creation of Corda, this team serves to drive this home as part of R3’s commitment to creating a world class solution upon which people can place their trust, something we treat with the utmost seriousness.
* Remote node administration using the shell via SSH, facilitating easier remote control and monitoring.
In Corda 3, the network map node has been replaced with a network map document served over HTTP. At start-up, each node creates and signs a data structure called a nodeInfo. Each nodeInfo contains a node’s legal identities, IP addresses and other information.
The node uploads this file to the compatibility zone’s network map server (a compatibility zone is a set of nodes and services — notaries, oracles, doorman, network map server — that are configured within a larger Corda network to be compatible with each other). The node then downloads and caches the signed nodeInfos of all the other nodes in the compatibility zone from the same server, which it periodically polls for updates.
Why the switch to this new design?
* It’s highly available. The distribution of the nodeInfos can be offloaded to CDNs like Amazon CloudFront or Akamai, which are highly scalable, available and attack-resistant
* It’s tamper-proof. Man-in-the-middle attackers cannot tamper with the nodeInfos, since they are signed by the nodes themselves