What's New in Corda 4.3? Accounts and more…

November 14, 2019

This blog was originally published in Corda on Medium by Jonathan Locke, where people are continuing the conversation by highlighting and responding to this story.


Image

Corda 4.3 open source is GA and ready for download!

 

It’s a time-honoured tradition to discuss the numbers involved in a new Corda release, and I’m not one to break with tradition. By the numbers, Corda 4.3 includes over 550 commits made over a 4 month period. That’s nearly 7 commits every day.

But the most important number is the version number itself — 4.3. We thought this release was so good that it deserved to skip 4.2 entirely. We are following in the footsteps of some of the world’s best-loved software (opinions vary), such as Winamp, which skipped Winamp 4, and Windows, which skipped Windows 9.

Truthfully, this was done to align the version numbers of Corda and Corda Enterprise. Going forward we envisage a much closer relationship between Corda and Corda Enterprise, making it easier to migrate CorDapps from Corda to Corda Enterprise. Mike Ward wrote this to explain in September.

Beyond the numbers, there are fantastic new features that we are introducing in Corda 4.3 which we are extremely proud of, as well as a myriad of smaller fixes.

The artifacts can be found on artifactory with the code available on GitHub, as ever.

Adding accounts

Corda 4.3 introduces the accounts library, allowing nodes to split the vault into multiple logical sub-vaults, called accounts. This allows node operators to work with a custodial model and dramatically reduce the operational cost of managing multiple participants on a Corda network by representing multiple entities as separate accounts on a single node. As always, privacy is an important concern for Corda, and so this feature allows node operators to implement code at the CorDapp level to manage account access.

Upgrading confidential identities

The confidential identities framework was already a powerful tool for enhancing the privacy and security of a Corda network. In Corda 4.3 nodes can share confidential identities without needing a transaction. This makes confidential identities easier to reuse in new subsequent transactions.

Confidential identities also now have the option to be deniable; if a transaction chain is shared which includes a confidential identity, the owner of that confidential identity can decline to identify itself.

Confidential identities no longer map a public key to a party and certificate chain. Instead, they map a public key to a Corda X.500 name. This significantly reduces the storage overhead required for confidential identities and provides an important change required for Accounts integration.

Improving RPC Client Reconnection

Corda 4.3 improves the reliability of the RPC client, handling reconnection without additional client-side code. The client now includes a more graceful form of reconnection that will automatically reconnect any observables and block and re-execute any RPC calls (without side-effects) that either arrived during a reconnection or were not acknowledged at the point of reconnection.

Security Enhancements

Corda 4.3 introduces many new security improvements. Notably, a node can now validate a transaction with a contract that is not installed on the node, if the contract is signed by a trusted party. This allows a contract to continue to be upgraded and transacted with, without forcing all nodes to migrate to the new version at the same time.

Some of the other security changes include upgrading the version of Jolokia to mitigate a known security vulnerability, and moving the Corda webserver to a testing module, as it is deprecated and not suitable for production use.

Platform version change

Given the addition of a new API to support the Accounts feature, the platform version of Corda 4.3 has been bumped up from 4 to 5. This is to prevent CorDapps that use it being deployed onto nodes unable to host them. Note that the minimum platform version has not been changed – this means that older Corda nodes can still interoperate with Corda 4.3 nodes. Since the APIs added do not affect the wire protocol or have other zone-level implications, applications can take advantage of these new platform version 5 features even if the Corda 4.3 node is running on a network whose minimum platform version is 4.

For more information on platform version, please see https://docs.corda.net/releases/release-V4.3/versioning.html.

For more details on upgrading a CorDapp to use platform version 5, please see https://docs.corda.net/releases/release-V4.3/app-upgrade-notes.html.

Useful Links

For more information on Corda 4.3, please read the release notes, changelog and upgrade nodes.