Let’s all welcome Corda 4 into the world

Katelyn Baker
Feb 21 · 5 min read
Corda 4 brings the next step in the Distributed Ledger journey

New data model features

Corda 4 introduces reference states. These allow smart contracts to read data from the ledger without simultaneously updating it. They’re useful not only for any kind of reference data such as rates, healthcare codes, geographical information etc, but for anywhere you might have used a SELECT JOIN statement. Reference states significantly simplify app design and improve Corda’s scalability, by avoiding contention on hot states that are being widely used.

Deterministic JVM preview

It is a fundamentally important aspect of Corda (and all blockchain based platforms) that all nodes processing a transaction agree on its validity. Corda transactions are defined using JVM bytecode, meaning the execution of that code must be fully deterministic for this to occur. Because this isn’t a requirement of existing JVMs, they do not provide this functionality, thus Corda 4.0 introduces a standalone Deterministic JVM. Whilst it isn’t yet integrated with the rest of the platform it will eventually become a part of the node and enforce deterministic and secure execution of smart contract code.

Other improvements

Corda 4 introduces state pointers, a feature that combines with reference states to make it easier to refer to the latest version of something on the ledger. Configurable flow responders allow sophisticated users of CorDapps to customise their execution by subclassing and overriding flows. For example an institution could customise a shared flow from an industry-wide app to make it send a PDF report to a specific set of users inside the company. Some backwards compatible, opt-in API changes give improved security for applications. Applications can now use the Java Persistence Architecture to access the node’s database engine, building on the JDBC/SQL support in prior releases. Target versioning allows the platform to enable and disable backwards compatibility codepaths depending on whether an app declares it needs them or not, allowing us to be more forgiving of bugs or old behaviour in apps.

Support for rolling app upgrades

Upgrading a distributed system whilst it’s live is a notoriously difficult engineering problem, that has led to many outages over the history of the IT industry. Doing such upgrades on a long lived blockchain where different apps, developers, node versions and attackers all co-exist simultaneously is tougher still. We’ve expended great effort during the Corda 4 development process to craft solutions that solve or catch many problems of inter-version upgrades (e.g. accidental forwards-compatibility bugs), whilst also blocking attacks. Anyone’s who’s followed this process closely via our mailing lists will see it hasn’t been a smooth journey… this is a vastly complex area and we’re only just beginning to scratch the surface of it.

Finally, and Most Importantly

You’ll be delighted to learn we’ve added some new jokes.

Corda

The open source blockchain for business.

Katelyn Baker

Written by

Software Engineer at R3

Corda

Corda

The open source blockchain for business.