Technology Fridays: R3 Corda is the Greatest Blockchain Platform You Never Heard Of
Welcome to Technology Fridays! Today we are going to discuss one of the most complete blockchain platforms in the market that doesn’t get the recognition it deserves; we are talking about R3 Corda.
When you think about blockchain infrastructure platforms, names like Ethereum or IBM Hyperledger Fabric come to mind. Corda is a name that should definitely be in that list. create by a consortium of the top banks in the world, Corda can be considered, feature-by-feature, one of the most sophisticated platforms to enable the implementation of enterprise blockchain applications.
Many experts would argue that Corda should not even be considered a blockchain platform as its feature set expand way beyond the typical value proposition of blockchain technologies. The R3 consortium prefers the term distributed ledger platform to label Corda. To avoid confusions, let’s use the term blockchain-inspired distributed ledger platform (how was that for a marketing contribution ? ;) .
Like other blockchain technologies, Corda’s infrastructure is based on a network of nodes that are responsible for executing smart contracts. Corda takes this traditional concept a step further and introduces the notion of Corda Distributed Applications or CorDapps which encapsulate all components of a decentralized business process. CorDapps include several capabilities including Contracts which is Corda’s analogous of blockchain smart contracts.
A CorDapp Contract is responsible for process transactions and make the appropriate modification to the state of the underlying ledger. The transaction verification process in Corda must be deterministic ( a contract must always accept or always reject a transaction) in order to ensure the integrity of the network. To guarantee that determinism, Corda introduces the concept of a Contract Sandbox which is an environment that prevent Contracts from importing libraries that can introduce non-deterministic artifact such as random numbers, dates or external data.
Deterministic contracts are essential in blockchain applications but, let’s face it, they can also result very imitating in order to implement complex business logic. To circumvent that limitation, Corda introduces the notion of Flows which are processes that coordinate updates to the ledger without being subjected to the deterministic limitations of Contracts. Just like Contracts, Flows execute as part of CorDapps but they are able to perform non-deterministic actions such as network calls, IO operations, invoking external libraries and other operations subjected to randomness. Flows can be implemented using Corda’s Flow framework in JVM-based languages like Java.
From the infrastructure standpoint, Corda can be seen as a network of nodes running CorDapps. However, differently from other blockchains, Corda’s networks are completely permissioned which means that every node in the network has a known identity. In order to enable that capability, Corda uses the concept of a Doorman which are nodes responsible for enforcing the identity management protocols that allow nodes to join the network. Nodes in Corda communicate strictly using point-to-point protocols based on TLS encrypted messages delivered via AMQP. To improve the transaction throughput limitation of traditional blockchain stacks, Corda relies on the UTXO(unspent transaction output) model. UTXO constraints transaction to receive a number of states as input and produce a corresponding number of states as output which facilitates the execution of transactions in parallel.
One of the most complex but equally innovative capabilities of Corda is it node architecture. In a Corda network, every Nodes uses an architecture based on five fundamental components:
1 — A persistent tiner that has a vault for storing historic and current states as well as a storage services that logs the transactions processed by that Node.
2 — A network interface that enables the communication with other Nodes.
3 — A RPC interface used to interact with the Node’s owner.
4 — A Service Hub that allows Flows to call Services from other Nodes or access other information relevant to coordinate ledger updates.
5 — A Plug-in Registry that is used to access and install CorDApps in that Node.
Like other blockchain technologies, Corda’t networks rely on Consensus algorithms in order to process transactions. One notable innovation in this are is the concept of Notaries which are nodes required to sign a transaction before its finalized. Conceptually, Notaries are designed to address the famous “double-spend” problem in blockchain networks.
Borrowing a page from Ethereum’s architecture, Corda also uses the notion of Oracles to allow the access to off-chain information relevant to a transaction. Oracles are the main mechanisms to integrate Corda with external applications.
I like to think of Corda as a blockchain-inspired, distributed ledger infrastructure platform. From the competitive standpoint, Corda competes with tier-1, low level blockchain platforms such as Ethereum or Hyperledger Fabric. Other blockchain platforms such as J.P Morgan’s Quorum, Tezos , NASDAQ’s Linq or Chain can also be considered relevant competitors of Corda.