Learn about Corda, a distributed ledger platform that promises a new future for finance and banking

Tram Ho

1. Introduction

Corda is a distributed ledger platform. Managed by R3 , Corda aims at the business sector with financial, commercial, insurance, healthcare, supply chain applications, etc.

Note : Corda is not a blockchain platform (Corda has no block). Distributed ledger is a broader concept of Blockchain.

Below is an introductory video from the Corda homepage.


2. Characteristics and design philosophy of Corda

Permissioned (Corda network privacy)

Corda is a private network (like Hyperledger Fabric or Quorum). Nodes participating in the network need to be fully licensed and identified.

When external nodes want to join the Corda network, that node will need to authenticate with DoorMan. The new node will be joined to the network once verified and accepted by DoorMan.

Distributed Ledger

As a broader concept of Blockchain, Distributed Ledger also has Blockchain’s outstanding features such as decentralization, immutability and security. Sometimes people are used to calling Corda a Blockchain platform even though it has no Block, the data in Corda is saved as a table (SQL).

Smart Contract

Corda also has smart contracts like other platforms like Ethereum, Hyperledger Fabric or Quorum. However, Corda’s smart contract is a little different from the above platforms.

All content, business, logic in smart contracts of platforms such as Ethereum are completely defined by the developer. Therefore, it is quite free style, not really similar to traditional legal contracts.

Corda is different in that it focuses on the legal language, business processes, how to deal with dispute arrangements, and the specific concerns of businesses. In the blockchain platforms mentioned above Code is the law (Code is Law), Corda towards the philosophy of Law is Law (Law is Law).

Take a small example of cash transactions, smart contract in corda will be written to check if the transaction is correct or not? For example, the total input value is equal to the total output value. It is similar to the role of accounting and auditing. If the conditions are not met, the transaction will be smart contract rejected.


  • Corda’s P2P network has no boardcasting or transactional information for the whole network. Information and transactions are only exchanged by involved parties. For example, if Alice deals with Bob, then only Alice and Bob know about it, and can add the agency.
  • Unlike Ethereum, Bitcoin or partly Hyperleder Fabric. Data on the Corda network ledger is asynchronous at all nodes. The example depicted in the figure below, Alice only deals with Bob, so the data and status of transactions between Alice and Bob are only stored in the ledger of both parties. In contrast, Alice is not aware of the transactions between Bob and Carl, Card with ED, etc.

Message Queues

Corda uses AMQP (Advanced Message Queuing Protocol) via TLS to transmit messages within the network. AMQP runs asynchronously, has good loading, ensures sending, storing messages and operating without constant connection. When the node is offline, the message is queued and sent when the node is online.


Corda uses the UTXO model for transactions like Bitcoin. The output of this transaction will be the Input for the next transaction.

For example : Alice has 10 $, Alice wants to transfer to Bob 1 $. The input of the transaction will be Alice has got $10 , the output of the transaction is Alice has got $9 and Bob has got $1 . When the transaction is completed, the input will be marked as Historic (cannot be used as input for subsequent transactions).


Corda supports many different relational databases, just connecting via JDBC (Java Database Connectivity).

In addition to supporting different databases, Corda is flexible in using consensus algorithms. Corda does not have a fixed consensus system, it uses Notary services ( discussed in more detail later) to verify transactions, avoiding double spending. The Corda network may have one or more Notary services , each Notary services uses different consensus algorithms (like Raft or BFT).

Focus again

Below is a comparison of Corda and Blockchain platforms like Bitcoin, Ethereum, Hyperledger Fabric.

  • Corda’s smart contracts can be written in Java or Kotlin.
  • Corda is maintained and developed by R3 .
  • Corda does not use a fixed number of algorithms, notary nodes can optionally agree.
  • High scalability.
  • Participants and networks are fully identified.
  • There is no cryptocurrency.

3. Important concepts in Corda


State is the data stored in the ledger of one or more nodes at a given time, the state at that time is immutable.

Example of a situation where Alice is owing Bob $ 10

The state cannot be directly modified, instead the state will be saved as each string (called State sequences). The old status will be marked as Historic .

State sequences give us a complete overview of the transition state of the ledger.


Each node has a component called Vault that stores all the states associated with those nodes.


There are many different types of transactions. Not only is money transfer but also money exchange, money cancellation, etc. Commands are concepts associated with a transaction in Corda that describe the purpose of the transaction.


Flows are a sequence of steps for a node to know how to update the status of a ledger, such as issuing an asset or executing a transaction. For example, the flow of the sending node and the receiving node will be different. Corda provides a Flow Library so nodes can implement depending on the situation.


To be saved in the ledger, the transaction must have a Validation Consensus and an Uniqueness Consensus.

Validation Consensus

Validation consensus is a consensus process to ensure that the transaction is signed by all participants as well as the input and output of the transaction satisfies the logic in the smart contract.

Uniqueness Consensus

The uniqueness consensus is intended to prevent double-spends from being provided by Notary Services .

For example, Bob has $ 1,000,000 in his account. Bob creates 2 transactions

  1. Pass $ 1,000,000 to Charlie in exchange for £ 800,000
  2. Transfer $ 1,000,000 to Dan in exchange for € 900,000

The problem here is that Bob’s two transactions are completely satisfying the Validation Consensus, with only $ 1,000,000 Bob can cheat and earn twice the original amount.

To prevent that, every proposed transaction needs to satisfy the requirement that none of the inputs in the transaction have been used in another transaction.

Notary Services

Notary Services (notary services) is a service in the Corda network with the function of preventing double spends . Notary Services may consist of one or more nodes, each of which may run different consensus algorithms.

When a peer sends a transaction to Notary Services, there are two possible cases. If the status of the input already exists in the Notary Map , the service will throw the exception. If the input state has not been registered as used, Notary Services will sign and confirm the transaction.


True to its name (time window), time-windows is a concept in transactions, applying to transactions that need to be performed in a given time period.

  • Time-windows has 3 intervals: before, during and after. Participants can specify the time period during which transactions need to be conducted.
  • Notary Services will check the time and reject the transactions whose time is outside the specified time-windows.


Oracles in Corda have the same meaning as Oracles in other blockchain platforms such as Ethereum, Cosmos, etc. are services that provide external data to the network (such as currency rates).


The Corda node is the Java Virtual Machine run-time environment, each node in the network has its own unique identifier.

Key components of a Corda node architecture:

  • The Persistence layer is responsible for data storage.
  • The network interface interacts with other nodes in the network.
  • RPC interface has the function of interacting with other elements in the node.
  • Service Hub is the intermediary to interact with services in the network (oracles, notary)

Persistence layer

The Persistence layer consists of 2 parts:

  1. Vault , which stores the status of the ledger (current and historic)
  2. Storage service , where transactions are stored.

The service hub

Specific functions that the service hub provides:

  • Information about other nodes on the network and the services they provide.
  • Access to content of vault and storage service .
  • Access and create the public-private key pairs of nodes.
  • Information about the node itself that contains the service hub.
  • Time.


Share the news now

Source : Viblo