Host prerequisites and database requirements

PlatformCPU ArchitectureVersions
Red Hat Enterprise Linuxx86-648.x, 7.x, 6.x
Suse Linux Enterprise Serverx86-6412.x, 11.x
Ubuntu Linuxx86-6416.04, 16.10, 18.04, 20.04
Oracle Linuxx86-647.x, 6.x
PlatformCPU ArchitectureVersions
Microsoft Windowsx86-6410, 8.x
Microsoft Windows Serverx86-642016, 2012 R2, 2012
Apple macOSx86-6410.9 and above
VendorCPU ArchitectureVersionsJDBC Driver
Microsoftx86-64Azure SQL,SQL Server 2017Microsoft JDBC Driver 6.4
Oraclex86-6411gR2Oracle JDBC 6
Oraclex86-6412cR2Oracle JDBC 8
PostgreSQLx86-649.6, 10.10, 11.5, 13.8PostgreSQL JDBC Driver 42.1.4 / 42.2.9

The recommended minimum vault database size is 2GB. As with the Corda node, the use case determines the sizing needs for the database. When testing in your development environment, pay attention to the size of objects created in the NODE_CHECKPOINT_BLOBS and NODE_TRANSACTIONS tables, to inform the sizing requirements of your use case. Some guidance on this is provided in the Performance benchmarking results documentation. In a production implementation, a separate high availability database instance should be deployed for each Corda node. However, it’s possible to create a separate schema for each node within a single database instance subject to performance, availability, and security constraints (the schema to be used is defined in the node configuration file).

Corda Enterprise uses Liquibase to generate the requisite database schemas for both the Corda node the CorDapps the node has installed. The run-migration-scripts sub-command controls whether these database schemas are generated automatically. In many production scenarios, you may require more control over the creation and running of those scripts. In these cases, simply do not run the run-migration-scripts sub-command. The Corda Enterprise Database Management Tool can assist a database administrator by creating scripts for initial table creation.

Prerequisite and sizing information for the Corda Node, Bridge and Float components.

Minimum specification for a testing environment with components on separate VMs:

  • Corda Node 2 CPU Core, 4 GB Memory
  • Corda Bridge 2 CPU Core, 2 GB Memory
  • Corda Float 2 CPU Core, 2 GB Memory

Recommended production specification for components on separate VMs:

  • Corda Node 4 CPU Core, 8 GB Memory
  • Corda Bridge 2 CPU Core, 2 GB Memory
  • Corda Float 2 CPU Core, 2 GB Memory

Recommended production specification for multiple nodes

  • Corda Node(s) 8 CPU Core, 16 GB Memory, assuming two nodes, scale linearly for more
  • Corda Bridge(s) 4 CPU Core, 4 GB Memory
  • Corda Float(s) 2 CPU Core, 4 GB Memory

JDBC Connectivity from the Corda node to the Corda vault is required to create Corda system tables on startup as well as storing application tables/logic. Corda stores information about several aspects of the Corda node and network in tables in the vault.

During deployment the following system (not user) tables will be created in the vault database:

  • DATABASECHANGELOG
  • DATABASECHANGELOGLOCK
  • NODE_ATTACHMENTS
  • NODE_ATTACHMENTS_CONTRACTS
  • NODE_ATTACHMENTS_SIGNERS
  • NODE_CHECKPOINTS
  • NODE_CHECKPOINT_BLOBS
  • NODE_FLOW_RESULTS
  • NODE_FLOW_EXCEPTIONS
  • NODE_FLOW_METADATA
  • NODE_CONTRACT_UPGRADES
  • NODE_CORDAPP_METADATA
  • NODE_CORDAPP_SIGNERS
  • NODE_IDENTITIES
  • NODE_INFOS
  • NODE_INFO_HOSTS
  • NODE_INFO_PARTY_CERT
  • NODE_LINK_NODEINFO_PARTY
  • NODE_MESSAGE_IDS
  • NODE_METERING_COMMANDS
  • NODE_METERING_CORDAPPS
  • NODE_METERING_DATA
  • NODE_NAMED_IDENTITIES
  • NODE_NETWORK_PARAMETERS
  • NODE_OUR_KEY_PAIRS
  • NODE_PROPERTIES
  • NODE_RPC_AUDIT_DATA
  • NODE_SCHEDULED_STATES
  • NODE_TRANSACTIONS
  • PK_HASH_TO_EXT_ID_MAP
  • STATE_PARTY
  • VAULT_FUNGIBLE_STATES
  • VAULT_FUNGIBLE_STATES_PARTS
  • VAULT_LINEAR_STATES
  • VAULT_LINEAR_STATES_PARTS
  • VAULT_STATES
  • VAULT_TRANSACTION_NOTES
  • V_PKEY_HASH_EX_ID_MAP

Detailed information on the Corda Vault can be found here.

JDBC Connectivity to the Corda Vault is handled in the Corda Enterprise node.conf file in /opt/corda. Here are examples for each supported RDBMS.

Was this page helpful?

Thanks for your feedback!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.

We're sorry this page wasn't helpful. Let us know how we can make it better!

Chat with us

Chat with us on our #docs channel on slack. You can also join a lot of other slack channels there and have access to 1-on-1 communication with members of the R3 team and the online community.

Create an issue

Create a new GitHub issue in this repository - submit technical feedback, draw attention to a potential documentation bug, or share ideas for improvement and general feedback.

Propose documentation improvements directly

Help us to improve the docs by contributing directly. It's simple - just fork this repository and raise a PR of your own - R3's Technical Writers will review it and apply the relevant suggestions.