What’s New in Corda 4.3? Accounts and more…
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.
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.
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.