How to design a CorDapp: A Bond issuance example
September 08, 2021
In the Venture Development team, we regularly get founders who want to build blockchain applications and we get why! The advantages of decentralisation, immutability and security are hard to resist.
However, many times CorDapp builders forget it’s important to build a solution that needs the advantages of blockchain, especially a permissioned-private ledger like Corda.
Additionally, this permissioned nature adds complexity regarding how you got-to-market with your CorDapp. In DLT solutions your customers will be a part of or need access to your distributed network. This needs to be factored into the design decisions when creating your business logic and defining your network participants.
Finally, when building in a distributed fashion it is important to understand how these applications work. As there will be multiple parties transacting, you will need to be able to explain to developers, users and maybe even investors what is happening in your CorDapp, and how it adds business value.
In the Venture Development programme, we try and promote ‘Design Thinking’ methodologies, this is where you seek to understand the problem you are solving and iterate to quickly validate any proposed solutions. A part of this process is wireframing a solution to validate it with customers and will help you solve the problems described above.
To help you do this, we have created a 7 step design pattern video guide, this allows you to quickly design your CorDapp on paper and validate that are wanted and needed. It is based on CorDapp Design Language (CDL), which is a common way to draw your CorDapp.
7-step video guide to designing your CorDapp using a bond issuance example
Use this video guide and accompanying design document to showcase your approach to designing a CorDapp. In this guide, we’re using a bond lifecycle use-case as an example.
Click here to access the design document. You should complete this as an outcome of following the video guide.
See R3 Solution Engineer, Jon Scialpi, describe the steps to come in this video guide.
- Summarise your use-case and Corda value proposition.
- Define the terminology of your use-case.
- Define the asset lifecycle.
- Draw your CorDapp Design Language (CDL) diagrams.
- Draw your Business Process Modelling Notation (BPMN) diagram.
- Choose a network.
- Network topology.
Step 1 & 2: Summarise your use-case and Corda value proposition and defining key terms
In this step, you will visualise the steps in a business process that your CorDapp will streamline and define the key terms of your use-case. This will give your readers context to better understand your CorDapp.
Define the key terms for your use-case and the asset that’s evolving in your use-case, and demonstrate the value-add of Corda in your solution.
Step 3: Define the asset lifecycle
In this step, you will define how the asset will evolve by drawing ‘happy paths’ for asset evolution. These are the correct paths your asset should evolve along in your use-case.
Define what is happening to your asset at every stage of your business process.
Step 4: Draw your CDL
Now you know the asset lifecycle and the evolution of it along it’s ‘happy path’, you can formalize the CDL. The following video will take you through one example of how to turn the ‘happy path’ of your asset evolution into a full CDL diagram with command and flow constraints:
Complete your CDL diagrams for all asset evolutions.
Step 5: Draw your BPMN diagrams
You should now have your CDL diagrams which showcase how the Corda aspects of your solution work. The Business Process Modelling Notation (BPMN) diagrams that you’ll create in this step will allow you to understand how non-Corda elements interact with your solution and the full business process of your solution.
Aim to showcase the whole business process for your solution from off-ledger process and Corda process using the BPMN.
Step 6 & 7: Choose a network and network topology
Once you know who the participants are and the asset that’s evolving, you need to decide the network type you will use and how the various participants will interact with your network.
You should now have a complete overview of your business process on Corda and the participants who are transacting. This will help you explain to developers and customers the value of your solution and the value of using Corda.
This guide shows a very simple approach to designing CorDapps, but the concepts apply to any CorDapp you want to build. You can now build your application, showcase the value to customers, and move forward in validating the design of your solution.
Check out our other resources on how to approach CorDapp design:
- Corda Founders Playbook — A guide on how to use design thinking when building your CorDapp.
- CorDapp Design Language Documentation.
Corda Bootcamp — YouTube series on how to build your first CorDapp.