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 we made a promise that application code will not break. Corda 2 was our first post-API-stability release and added support for observer nodes. Now with Corda 3 we are delivering the next platform stability keystones: committing to the peer to peer protocols, data formats, and the test frameworks.
Your data is the core, most long lived, and most sensitive part of any deployment; that which forms the true basis of the value that is enabled through the use of Corda as a platform. With the introduction of a wire stable protocol for both storage and peer-to-peer communication based on the industry standard AMQP/1.0 specification, we are making the assurance that we will not render information committed to the ledger unreadable at any point. Thus, a state generated and committed today will remain valid and operable upon through the coming years and across versions of Corda as they are introduced. Ultimately, this moves us closer to delivering the promises of DLT technology: creating systems that can exist well into the future with the security of knowing the information contained within will remain actionable when needed.
By stabilising the peer to peer protocols we 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.
And by finalising the unit testing APIs, we complete the bulk of the API stability work we started in version 1.0. Although a one-time migration is required for existing test code, the new API is substantially similar to the test API we shipped in 1.0 and we provide some scripts to automate the bulk of the migration. Where manual intervention is needed, it should take less than a couple of hours even for very large apps.
Work on stabilising our interfaces will always be an ongoing effort as new tools, modules and features are introduced. In order to help our first pioneering users go live faster, we chose to defer switching RPC to use AMQP/1.0 in 3.0, but this will be completed next. Existing code will continue to work fine across that transition, but you will need to keep your RPC client libraries in sync with the node version until we complete the move.
In addition to delivering more backwards compatibility, new functionality and features have been delivered in version 3.0. These include a complete redesign of the network map subsystem to enable massive network scalability and availability, with reduced runtime operational overhead, support for multiple notaries, and the introduction of “network parameters”: aspects of Corda’s operation that may need open governance in future.
Corda 3 also delivers:
- Enhanced support for CorDapp upgrades. We believe with Corda 3 we provide the most comprehensive and flexible upgrade framework of any DLT/blockchain framework available today.
- A dramatically more powerful and robust serialisation 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.
- Better support for external authentication and authorization systems, building on the industry standard Apache Shiro framework.
- Many other small improvements and bug fixes.
Additionally, with this release and the guarantees about it we are making, we are reinforcing our commitment to providing an open, stable, unencumbered, and viable offering to the open source community that anyone can build upon and deploy. For users who wish to benefit from high performance, take advantage of support and professional services, support for popular enterprise database platforms, or gain access to enterprise grade features such as pre-configured and tested highly available nodes, R3 is ready and waiting with our commercial offering based on the open source code — R3 Corda. Both Corda and R3 Corda are developed in lockstep, so all features in the open source code are available in our enterprise product and apps developed using open source Corda will run unchanged on R3 Corda.