Deprecation notice
Consortium networks have been deprecated. This guide is for historical reference.- Transactions between identifiable parties
- Transaction privacy between parties
- Legal certainty for the transactions
- The ability for a diverse user-base with vastly different business-logic and flow requirements to co-exist and interoperate on the same network.
- The ability for the nodes to have direct peer-to-peer communication over TLS for transaction privacy.
Consensus
- Single Notary — one notary node runs the notary service for the deployed network.
- Raft — a CFT consensus implementation on Atomix. See Crash fault-tolerant (experimental).
- BFT-SMaRt — a BFT consensus implementation. See Byzantine fault-tolerant (experimental).
Network structure
The Corda network has the following foundational components:- Node
- Network map service
- Notary service
Node
A node is a JVM instance. Each node has a unique identity on the network in the form of:- A certificate issued to the node
- The node’s IP address
- Node to node communication implemented as AMQP 1.0 over TLS using Apache ActiveMQ Artemis
- Node to owner communication implemented as RPC
- A regular node — a node with a certificate, two communication interfaces, a ledger, and one or more CorDapps
- A node with a notary service — a notary node
Network map service
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.Notary service
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.Network operation
The Corda network has the following operational components and concepts:- CorDapp
- Ledger
- States
- Transactions
- Contracts
- Flows
- Compatibility zones
- Certificates
CorDapp
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:- Contract — a set of rules for a transaction to be considered valid and accepted. See Contracts.
- Flow — an automated set of actions for the node to run on receiving an RPC request from the node owner. See Flows.
Ledger
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.States
A state is an object representing an on-ledger fact. A state can be:- Historic (consumed)
- Current (unconsumed)
Transactions
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:- The transaction does not have a double-spend as verified by the notary service.
- The transaction meets the contract rules as part of a CorDapp running on all nodes that are a part of the transaction.
- The transaction is signed by all nodes participating in the transaction.
Contracts
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.Flows
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.Compatibility zones
A compatibility zone is a deployed network instance that is managed by a network operator. There are compatibility zones managed by Corda Network Foundation:- Corda Network — the production Corda network
- Corda Pre-Production Network — the pre-production Corda network