Our Faktor Zehn colleague Michael Fischer reports about Corda in today’s Tech Talk – of course we share the information here in the blog. Corda is a distributed database and relies on various concepts of blockchain. Several participants together form a database in which everyone can store data in a predefined form as so-called states. These states can be read, but not changed. To map a change, a transaction is created that contains the old state, the change and the new state. A transaction is then executed by all participants themselves, checked for correctness and only transferred when it has been recognized as valid by all.
Unlike Bitcoin, for example, transactions and states are not shared with all participants within a network, but only with those who are part of the transaction. Each participant therefore only has the states that are relevant for him/her. This does not only control the distribution of sensitive data, but also reduces the size of the database and the computing power required.
Corda offers a middle way between individual databases and a central database. As with individual databases, states are stored in a local database, which allows very fast reading access. Changing states in transactions prevents inconsistency between participants. Since the states are not shared with all participants, the computing load can be better distributed and the failure of one participant does not hinder the rest of a network.
What Corda offers
Via Corda, any number of participants can operate joint data storage without an additional intermediary having to worry about manipulation protection. All changes are documented by chaining new and old states. Each participant can see when and by whom a change was made to the shared data.
The advantages of Corda are:
- Data is stored tamper-proof without an intermediary
- Seamless documentation of changes
- Fast reading access
- Transactions ensure data consistency
- States are only shared with the participants, not with the entire network
- Computing load only between the parties to a transaction, not across the entire network
- Smart Contracts monitor changes already on database level
Corda concepts and networks: Exchange between nodes
A Corda network consists of several different users and services called nodes. The network map serves as a central entry point into a network and manages a list of all active nodes and their IP addresses through which they can be reached. There is at least one Notary Node in each network. This is called in for every transaction and prevents states from being changed more than once (double spending). The notary only has the hash values of the states, but not their contents. To prevent a notary node from becoming a bottleneck in a network, there can be several of these nodes in parallel. In addition, a network consists of any number of users, which are called Corda-Nodes.
Each Corda-Node provides an internal H2 database or can be connected to an external database like MySQL or Postgres. At startup it automatically logs on to the network map and periodically fetches the list of other nodes. When a transaction is started, a peer-to-peer connection is established with each participating node and the notary.
The node can now be extended with so-called CordApps. They are independent modules that are loaded when a node is started and contain the definition of the states, internally called states, of the Smart Contracts and of the flows (Figure 5). Smart Contracts regulate how the states within a transaction may be changed and Flow describes the flow of a transaction. CordApps can also be added at a later date to add additional functions to a node. Also, not every node in a network must have all CordApps installed. For each transaction, the system checks whether all participants have installed the required cord apps. If not, the transaction is terminated with an error message.
Via an RPC connection, applications can access a node and start flows. Flows represent interactions with the node and can read states, start transactions with other nodes and validate and automatically apply changes using Smart Contracts. A transaction is started by a node and transferred to all participating nodes. Each node independently checks the transaction and signs it if it agrees. Only when all signatures have been collected is the transaction considered valid and transferred to the database of all nodes involved.
The code base of Corda is open-source and based on Java and Kotlin. This means that security and functionality can be controlled independently. The manufacturer R3 provides two versions of Corda. A Community Edition, which can be used free of charge, and an Enterprise Edition with slightly extended functions and support for additional databases such as Oracle Database.
There are standard implementations for the Network Map and Notary, so that everyone can build and manage a functional network. Alternatively, for a monthly fee, R3 offers membership in a global network in which well-known banks and insurance companies are already represented.
Faktor Zehn Conclusion
Corda offers the possibility to dispense with an intermediary in distributed data storage and still guarantee consistency and protection against manipulation. However, due to the need-to-know principle, the data is not transmitted to all nodes in a network. This not only offers advantages in data protection, but also increases performance compared to other block chain solutions. Since Cordapps are written in Java and Kotlin, existing know-how within a company can be used.
Corda Dokumentation: https://docs.corda.net/index.html
Corda Enterprise Dokumentation: https://docs.corda.r3.com/releases/4.3/#
R3 Webseite: https://www.r3.com/corda-platform/