Since our Corda Enterprise launch in July of 2018, it's been our goal that CorDapps written and tested on Corda should work seamlessly when migrated to Corda Enterprise, without additional effort needed. With the release of Corda 4.6, we’ve added new enhancements to database harmonization to instill confidence in CorDapp developers that their CorDapps will work, no matter which flavor of Corda they choose.

In this blog, we will cover the database improvements included in the latest release to achieve easier harmonization and what steps should be taken by CorDapp developers interested in migrating to Corda 4.6.

First, a bit on Liquibase

Both the internals…


After working with partners and developers, it is interesting to see how the trade finance, supply chain applications and many more are migrating to using an account-based model from the node-based model.

By integrating accounts and tokens as the solution these developers and partners are taking their very first step and answering the important questions such as how can you achieve more in a node-based model, how can you get more people on-boarded and make the blockchain platform inclusive in a more cost-efficient manner and how can you have people building token-based applications to take the advantage of the same.


An application underpinned by blockchain technology can be complex to deploy and operate. Blockchain applications — and their networks — need a way to represent their customers, be it a brokerage firm, a bank or a custodial account. The Accounts SDK is designed to satisfy these customer needs.

What are Accounts

The accounts library allows a Corda node operator to split the vault into multiple “logical” sub-partitions. That’s it.

An account is NOT a true identity. There is no physical vault isolation between accounts, and all accounts share the same vault. …


As compared to traditional client-server applications, distributed blockchain applications like Corda interact directly with each other by establishing a P2P connection. Corda nodes connect to the database, which has sensitive information. In enterprise production deployments, it’s a considerable risk to establish a P2P connection with the counter-party directly. One option is to place the Corda node in a DMZ. P2P connection is also a threat to the node’s sensitive information. Corda Firewall addresses these concerns.

Corda Firewall is an application-level firewall that acts like a proxy(Bridge) and a reverse proxy(Float) server. Corda Firewall is a piece of software that provides…


Connect node to PostgreSQL using admin access in development mode

This blog post shows you how to configure your node to connect to a Postgres database in development mode, instead of H2 which is used by default.

Generally, when connecting to a database we consider two perspectives-development and production. From a development perspective, Corda lets the node connect to the database using admin permissions, which lets the node create the database schemas automatically. Automatically running schemas against a database is controlled by the runMigration flag, which we will set to true in dev mode. …


Node applies the schemas automatically onto the database

We have seen how to set up and connect to a PostgreSQL database in the previous blog post. In this blog, we will see how we can upgrade custom CorDapp database tables using Liquibase scripts in development mode.

Both the internals of the Corda and external CorDapps use Liquibase for database schema versioning. This makes Corda database agnostic. CorDapp custom tables are created or upgraded automatically using Liquibase. Liquibase supports writing ddl/dml statements in many formats (XML, JSON, SQL, YAML).

In development mode, we will connect the node to the database using admin access. When the node is started, the…


Database admin manually running DB scripts generated by database-management-tool

We have seen how to set up and connect production Corda node to a PostgreSQL database in the previous blog. We also saw how to perform a CorDapp database upgrade in the previous post. In this post, let’s see how we can upgrade CorDapp tables by using Liquibase scripts in production mode.

Let’s make use of the database management tool to generate the migration scripts, and the database admin executes them onto the database.

Broadly there are 6 steps required for the CorDapp database upgrade.

  1. Define the Liquibase script.
  2. Define the custom Schema.
  3. Define IOUState by extending with QueryableState and…


Database administrator applying database scripts generated by the database management tool

This blog post shows you how to configure your node to connect to a Postgres database in production mode, instead of H2 which is used by default.

We saw how the node connects to a database in development mode in the previous post, by using admin access to gain full control over the database and automatically update it.

But from a production perspective, it’s different. We don’t want the node to automatically create the database schema. Hence the node is always connected to the database using restrictive access. …


Use of Constraints in Contract Upgrade

In this blockchain world where autonomous, independent nodes interact with each other, contract upgrades are essential. We cannot assume that a contract will never change. Developers will make mistakes, and security bugs will need to be fixed, and client requirements will change.

A few days back, I was asked a question on slack about contract upgrades and hash constraint. They mentioned they were quite fascinated about the signature constraint released in Corda version 4.0. They were enthusiastic about using the new and simpler signature constraint solution. They were willing to move from hash constraint to signature constraint and were interested…


RPC Component

In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space (commonly on another computer on a shared network), which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction.

In all use cases that you would build on the Corda platform, you would definitely want to interact with the Corda node from external application. …

Sneha Damle

Developer Evangelist at R3

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store