Consortium networks have been deprecated. This guide is for historical reference.
Corda is an open-source blockchain platform.
Corda is different from public permissionless blockchain protocols in that it provides:
Corda is different from permissioned consortium blockchain protocols in that it provides:
The Corda network has the following foundational components:
A node is a JVM instance.
Each node has a unique identity on the network in the form of:
Each node has two communication interfaces:
Each node keeps historic (consumed) and current (unconsumed) states of on-ledger facts shared between nodes participating in transactions. No node on the network has read access to the entirety of the ledger. Two or more nodes participating in a transaction always have the same read access to the subset of the ledger relevant to the transaction.
Each node can be configured to be:
The network map service is the catalog of all nodes on a compatibility zone with the information on the node identities, node certificates, and node IP addresses.
A notary service is a part of a node on the Corda network that turns a regular node into a notary node.
The objective of a notary node is to check transactions for double-spending. If the transaction is unique and is not a double-spend attempt, the notary node signs the transaction. If the transaction is a double-spend attempt, the notary node rejects the transaction.
The Corda network has the following operational components and concepts:
A CorDapp is a Corda Distributed Application.
A CorDapp is an application running on a node that defines the logic of updating the ledger and on-ledger facts. Since updating the ledger requires achieving consensus, a CorDapp must run on at least two nodes participating in a transaction.
Each CorDapp has the two following major components:
On the Corda network, a ledger is an on-ledger subset of a database maintained by each node. The node database keeps both on-ledger and off-ledger data.
The on-ledger data is always available to at least two nodes participating in a transaction. The on-ledger data available to at least two nodes is referred to as on-ledger facts.
No node on the network has read access to the entirety of the ledger.
A state is an object representing an on-ledger fact.
A state can be:
A consumed state is a past state of an on-ledger fact.
An unconsumed state is the current state of an on-ledger fact.
As each state is immutable, it does not change as an object. Instead, each state goes through a state sequence where it has a new version of the state appended to the chain of states. The latest version of the state is considered unconsumed; all prior versions are considered consumed.
A new state version is appended to the chain of states with a valid and accepted transaction between nodes.
A transaction is a message between at least two nodes that acts as a proposal to update the ledger.
A transaction is considered valid and updates the ledger if:
A contract is a set of rules written in a JVM programming language. A contract is running on a node as a part of a CorDapp.
Each transaction must meet the set of rules defined in the contract to be considered contractually valid.
A flow is an automated set of actions that a node runs on receiving an RPC request from the node owner.
A flow is basically an automated business process split into a sequence of specific actions that the node owner does not have to manually initiate each time.
A compatibility zone is a deployed network instance that is managed by a network operator.
There are compatibility zones managed by Corda Network Foundation:
There are also non-Corda Network Foundation managed compatibility zones. These are networks that rely on custom network map and doorman services to discover the nodes and control network permissions. These zones are managed by organizations deploying the zones and acting as network operators for the zones.