Business Networks in Corda
In this email I would like to introduce the concept of Business Networks in Corda. Business Networks are a very important concept, which might largely drive how CorDapps are built, structured and operated. In the coming weeks we will publishing designs for a number of Business Network related services, which require a basic understanding of Business Network concepts which are described below so please relax and get ready for a long read :)
Before we start… For more context on the topic, please see Richard Brown’s post - Universal Interoperability: Why Enterprise Blockchain Applications Should be Deployed to Shared Networks
Corda Business Networks
In 2016, the design concepts for Corda were described for the first time in Mike Hearn’s technical whitepaper. It defines a general platform for decentralised application development. The paper described the concept of “CorDapps” (Corda Distributed Applications) and how these might be constructed, but did not attempt to provide much more detail.
Building and managing distributed applications is, however, more involved than just creating software: In a CorDapp, information and/or assets are exchanged, or transacted, between participants because they represent something meaningful to each of them, but how are those meanings determined, on what basis, and by whom? Such questions are the ones we seek to consider and understand.
Superficially, our problem is not particularly new. There are many examples, predating any sort of blockchain or DLT (Distributed Ledger) technology, of companies and consortiums that have brought people together to transact value. The blockchain vision enabled by Corda is different, however, because it was designed to eliminate many of the problems inherent in earlier approaches.
First, let us give our problem a name: We have a group, or network, of independent parties that want to use Corda to transact something of value, and as we’re transacting something valuable then this almost inevitably implies a commercial, or business purpose. As such, we can talk about a “Business Network”.
What is a Business Network?
If a business network is a group of independent parties transacting together, then its purpose is to allow its members to create a shared representation of information, or facts, and to then use shared processing of those facts to achieve agreement, or consensus, about operations involving them.
This ability to enable both shared understanding of facts, and shared understanding about how they are to be used is something uniquely powerful within DLT/blockchain systems. Earlier systems focused on the shared representations of information, but could neither consistently guarantee its correctness, nor ensure that all participants processed things in the same way. The Corda promise is that “I know I see what you see” after each operation to which we are both a participant.
The use of shared business logic is necessary to ensure correctness, but also offers a new opportunity. Where our transacting parties are all required to perform similar business processes then this can be designed into the CorDapp(s) that are developed. This means that when it comes to integrate Corda business networks into new, or existing, systems, that total integration effort is notably lowered, as each participant is not left duplicating the same basic functionality.
The model of Corda business networks also enables something particularly powerful. It allows for the possibility that one business network can build upon the work of another, and that others can then build on top of that.
However, while Corda enables business networks, it deliberately sets out to have few “opinions” about what they might be, or exactly how they should work. Instead, Corda attempts to define some mechanisms to allow for the construction of business networks, and leaves the rest rather open-ended. This flexibility means it is possible to build both very simple and very complex designs, but, as with most software, over-simplified designs often miss essential functionality, while over-complex ones are almost impossible to get right.
How Do Business Networks Start?
Now we have an idea of what a business network is, we might now ask how a Corda business network gets started?
There is no single approach that describes this, but there are a few common routes. Sometimes a business network already exists, and it simply adopts Corda, while in other cases a governing consortium might be pulled together first. Another route is that software developers find an opportunity to build out a business network from a prototype or proof-of-concept design. It is worth noting that while there are many possible journeys to creating a Corda business network, the outcome is, generally, similar.
A top-down journey usually starts by recognising a valuable business problem, identifying likely participants, and, perhaps, the creation of a new venture, or consortium. Typically, this route requires the creation and adoption of technical standards, along with definition of governance principles. This usually evolves to include specialised resources such as Corda developers and legal advisors.
It is possible that a suitable structure already exists, so in these cases our goal is to adopt, or evolve, its business model, and to embrace as many of its existing governing policies and procedures as make sense.
Sometimes a business network comes about as the result of a developer or technology team building a prototype, or proof-of-concept, of some interesting technology idea that can be applied to a business problem. In these cases, the technology has to be matched to a suitable problem and governance structure. While it may be easy to dismiss this as a solution looking for a problem, there has been a surprising degree of success with this type of approach, and this embraces the possibility of very simple solutions to non-controversial problems.
In some instances, a structure similar to a Corda business network may already exist, so it would be wise to consider adopting it. It may be possible to leverage existing governing policies and operational procedures where they are applicable, and modifying them were necessary to accommodate the blockchain nuances.
Roles and Responsibilities
We have considered how Corda business networks are started and have seen that the process leads to some sort of governing entity. That governing entity addresses the strategic business and technical needs of the users of the business network’s services, but does not address the tactical, operational needs. Similarly, our users have not really been considered at this point, so it is worth exploring these key roles.
It is worth noting that these roles do not come in one size and may, for example, represent an individual, a company, or a consortium.
Business Network Governor (BNG)
The Business Network Governor (BNG) is responsible for the strategic management and governance policies of the business network, and is accountable for the implementation and enforcement of those policies.
It is sometimes argued that if we were to build a truly decentralised business network then there is not a role for a BNG, but even the decision to make the network decentralised implies a specific governance decision. The BNG may not be readily visible, but does not go away.
Business Network Operator (BNO)
The Business Network Operator (BNO) is responsible for the tactical day to day management of the business network.
It is worth nothing that for some business networks the BNG and BNO role may be fulfilled by the same organisation.
Business Network User (BNU)
A business network user makes use of the services offered by the business network. There may be many different types of user, depending on the application.
Business Network Operator Node
While business networks exist within Compatibility Zones, that define the underlying protocols and a common identity scheme, the business networks themselves have standards, policies and procedures of their own that must be enforced and while we seek to decentralise these functions where possible, there is usually a need for a trusted entity that provides certain services to the network. This is the role of the business network operator node.
A business network operator (BNO) node provides the functions and services required to enforce the agreed network policies and support it’s ongoing operation and evolution. The BNO node is a network participant with it’s own identity and exposes it’s services via standard Corda APIs. However, generally speaking, the BNO does not participate in business transactions which are conducted directly between network users. This arrangement is depicted in the following diagram:
Business Network Operator Services
The set of services that a business network operator provides and the how they work vary by application requirements. However, the following sections discuss some typical services that may be required:
Compatibility zone membership only provides a base identity for a Corda node. In most cases a further level of access control is required which may include additional processes such as registration, licensing and KYC/AML checks. The exact requirements are must be determined from the network policies but the process of allowing nodes to enter and transact on a network will be performed by the BNO node.
Master Data Management
A common requirement for business networks is to maintain a set of shared master data that pertains to the application domain and made available to all participants. This data may be served via an API or messaging system or stored on ledger and governed by one more contracts.
Depending on the network policies, certain activities such as vault synchronisations or upgrades may require authorisation from the network operator.
Monitoring & Reporting
For commercial, operational or regulatory reasons it is often a requirement to monitor and/or report on network level metrics. For example, an operator may want to monitor network health by tracking operational metrics such transaction volumes and latency. It may also choose to bill it’s members (periodically or on-demand) by tracking transactions across the network. In any case, the network can be designed to reveal as much or as little about the transactions as appropriate.
Announcements & Signalling
Certain network level events such as planned maintenance, outages and upgrades must be communicated to all network users. In many cases, traditional communications channels may suffice but in some cases it may be appropriate to use a BNO service to distribute such information such that it can be integrated into the application itself.
Although distribution of CorDapp jars and other shared dependencies can be done via traditional means, it may be appropriate to integrate this into the network itself.
Since Corda nodes support the loading of multiple CorDapps, it is possible for a node to participate in multiple business networks simultaneously whilst still conforming to the policies and processes that each defines.
This is important as it facilitates atomic transactions across different asset types which is a core element of R3’s overall vision. The following diagram illustrates this:
Here we see a three interoperable business networks with assets and contracts defined in three separate CorDapps. Alice, Carl, Demi and Clara are participants in multiple networks whilst the remaining parties are only involved in one.
We can make the following observations:
The concept of Business Networks is powerful, allowing multiple business activities to coexist within a single global Corda network. Corda's unique design allows nodes to perform cross-business-network transactions, without leaking their ledgers to each other.
While a Compatibility Zone defines a minimal set of high-level technical standards, which every participant has to comply with, Business Networks define governance and operational rules. The Business Network Operator plays an important role driving such activities as onboarding new participants, memberships list distribution, membership metadata management, membership revocations, software distribution and others.
Software to assist in running Business Networks will be implemented and distributed as CorDapps and every Business Network will be able to enhance this software to fulfil their particular requirements.
Ivan Schasny | R3 | Solutions Engineer
2 London Wall Place, 12th Floor, London, EC2Y 5AU
M: +44 7904 873089