Understanding Corda—Transactions vs Blocks

Kynan Rilee
Koki
Published in
5 min readFeb 16, 2018

Corda is a blockchain-inspired distributed ledger technology that currently targets finance use cases. Like Hyperledger Fabric, it’s a permissioned network where all participants have verifiable identities — using public-key infrastructure. However, unlike other distributed ledgers, Corda does not use a blockchain to record transactions.

Corda breaks apart the blocks and the blockchain. (image source)

Why doesn’t Corda use a blockchain?

Blockchain networks replicate a ledger across every member of the network. In Bitcoin, the ledger is shared across the entire world. In Hyperledger Fabric, the ledger is shared across every organization in a Fabric channel.

Corda views this approach as an unnecessary dilution of privacy. The only entities that should be aware of a transaction are the parties directly involved. If a bank issues a transaction to say it owes a customer n dollars, only the bank, the customer, and relevant regulatory organizations need to know anything about the transaction.

Direct Communication vs Broadcast

If you want to make sure only the involved parties know about a transaction, the first step is to control who the transaction is sent to. In general, blockchain networks heavily use broadcast, where messages are distributed to every node in the network. This makes sense for anonymous networks like Bitcoin. If you don’t know who anyone is, the only way to get a message to a specific someone is to send that message to everyone.

A Corda network includes a network map service that publishes information about how to reach every identity in the network. This allows any entity to specifically contact any other entity — directly.

Public identities and direct communication have wide implications for the architecture of a distributed ledger network.

Anonymous networks use proof-of-work to prevent Sybil attacks, where a single entity creates a large number of users to influence the network. Proof-of-work networks are influenced by computational effort, not number of users. A single entity can still influence the network, but it’s expensive.

Permissioned networks like Corda and Hyperledger Fabric can skip proof-of-work because the permissioning process can tie in-network identities to real-world identities. There’s much less threat of one entity maliciously flooding the network with fake identities.

No more blocks?

Corda goes a step further to say that transactions no longer need to be batched together into blocks. One reason blockchains batch transactions together into blocks is that it takes time to distribute a block across the entire network. In that time, many new transactions can occur. Especially in a proof-of-work system where every node is trying to calculate the next block, it’s important that the network have a uniform idea of what the last block was. This means that blocks need to be created slowly enough that each has already been distributed across the network before the next one is created.

Corda uses direct communication, so it doesn’t have to account for the time it takes to broadcast a message to the entire network. Individual transactions are sent directly to the involved parties, a very quick process. However, because transactions aren’t broadcast to the entire network:

No entity has an entire history of all the transactions in the network.

So how does Corda collect enough knowledge in one place to know if a new transaction is valid? How can you tell what the current state is?

How do Corda’s transactions work?

Corda transactions operate on the notion of consumable states. For example, a state might be “Entity X is the rightful owner of Asset A”. Entity X can spend this state to perform a transaction, which creates a new state “Entity Y is the rightful owner of Asset A”. Note that after the input state is spent, it is no longer valid. After the transaction, Entity X no longer owns Asset A.

These consumable states are analogous to the world state of a blockchain ledger. Only the latest world state can be used to validate a new transaction on the blockchain. Once a transaction is committed, the old world state will never be used again — it is replaced by a new world state.

What Corda does is this: It separates the world state into granular components that, instead of being globally visible, are only held by involved parties.

(Side note: Hyperledger Fabric does something similar, though for a different purpose. Fabric splits world state into read-sets and write-sets so it can execute transactions in parallel and apply the results afterward.)

Corda’s approach introduces a new problem. If I’m involved in a transaction that consumes a state I don’t currently know about, how do I know that the transaction is valid? How do I know that Entity X still owns the Asset A that is being transferred to me?

This is the job of Corda’s notaries. A notary is a service that knows the current state of a chunk of the world. At a high level, creating a new transaction looks like this:

  • Suppose a new transaction T spends a state X to create a state Y.
  • Send transaction T to the notary that knows about state X.
  • The notary checks that state X is still valid and signs transaction T. State X is now invalid, with state Y taking its place.

If state X above were not valid when the transaction was proposed, the notary would respond that state X had already been spent. The transaction would not occur.

Corda has shifted the responsibilities of knowing the world state and seeing all transactions from the entire network onto a special notary service. Members of the network don’t need to trust everyone, just the organizations that run the notary. There can also be multiple notaries, each trusted for a different purpose.

Conclusion

Because Corda is a permissioned network with public identities, Corda nodes are able to communicate directly with one another instead of broadcasting messages to the entire network. This allows Corda to split knowledge and responsibilities across the network at a more granular level than possible with other distributed ledgers.

Follow us for more information about blockchain and related technologies, and leave your thoughts in the comments!

--

--