SlideShare a Scribd company logo
11
CorDapp Design Language
(CDL)
How to Draw a CorDapp and why you should?
Matt Bradbury – Oct 19
A declaration ...
I love designing CorDapps 
If you’re here at CordaCon dev day…
(Most of) You love designing CorDapps too 
However… its not 2017
We’re not doing PoCs anymore… production grade Cordapps are more complex
• Need more functionality
• Must included non-happy path
• Privacy must be maintained
• Design must be provably robust
We need a way to represent and reason about
non-trivial CorDapp designs
How to represent CorDapp design?
(Semi) Real Client example
WYSINWISI see.. So the
data is all in
the same
Corda state
I see.. So the
data is split
across multiple
Corda states
I have no Idea
what that box
is meant to be
What’s for
lunch
The problem
Working out the idea Working out how to represent the idea
VS
Conclusion…
CorDapp Design Language
(Previously Corda Modelling Notation)
We need a standardised way to represent and reason
about non-trivial CorDapp designs, that encourages
good CorDapp design
CorDapp Design Language - Objectives
• Allow non-trivial CorDapp designs to be represented in an accurate, clear and concise
way
• Enable reasoning about key aspects of CorDapp design:
• Shared data and state
• Shared logic
• Permissioning (via digital signatures)
• Privacy (Visibility of data to different participants)
• Encourage good design – distinguishes Ledger vs Orchestration Layer
• Facilitate reusable Design Patterns
• Degrade gracefully
• Accurate design documentation – Not just Marketechture
Let do some examples
• Represent a Smart Contract using State Machine View
• Show a Smart Contract in action using Transaction Instance view and State Evolution View
• Analyse Smart Contract privacy using Privacy Overlays
• Introduce a few design patterns along the way
How to represent a Smart Contract
• Smart Contracts in Corda are made up of
• ContractState (Data), and
• Contract (Rule book)
• You can consider the Smart Contract behaviour as a Finite State Machine
• Think washing machine
• Example: An agreement for a Seller to sell goods to a buyer for an agreed price
Lets use the…
State Machine View
Or ‘drawing a Smart Contract’
Constraints -> Verify()
However….. Complication 1
This is not a true
agreement of two
parties
Node A
However…..
A
Node B
B
Node A
However…..
A Buy B’s House for £1
A
Node B
B
Initiate
Node A
However…..
Sign: A
A Buy B’s house for £1
A
• Verify()
• Sign
Node B
B
Initiate
???
Node A
However…..
Sign: A
A Buy B’s house for £1
A
• Verify()
• Sign
Node B
Sign: A
A Buy B’s house for £1
B
Initiate
Node A
However…..
Sign: A
A Buy B’s house for £1
A
• Verify()
• Sign
Node B
Sign: A
A Buy B’s house for £1
Sign: B
• Verify()
• checkTransaction()
• Sign
B
Initiate
Node A
However…..
Sign: A
A Buy B’s house for £1
A
• Verify()
• Sign
Node B
Sign: A
A Buy B’s house for £1
Sign: B
• Verify()
• checkTransaction()
• Sign
B
Initiate
Sign: B
Node A
However…..
Sign: A
A Buy B’s house for £1
A
Node B
Sign: A
A Buy B’s house for £1
Sign: B
B
Initiate
Sign: B
???
Signing is automatic for the responder to a transaction
Solution – Propose-Consent Pattern
Transaction Instance View
Or ‘drawing transactions’
Complication 2
• The Business Network Operator wants paying
• Specifically they want to charge each time a deal is initially agreed
Problem solved… or is it?
State Evolution View
Or… ‘State Machines in Action’
Party C ends up with Party B’s
private Deal in their vault
Party C ends up with Party B’s
private Deal in their vault
This is NOT okay!!
So… How do we fix this?
Takeaways
• CorDapp Design Language (CDL) is here to help you write better, more robust
CorDapps
• It allows you to
• Describe complex production grade Smart Contracts
• Show Smart Contracts in action
• Reason about Privacy
• Also views for the Orchestration layer (not covered here)
For more information
• See the Corda Solutions DocSite: https://solutions.corda.net/
• Publishing a CDL template soon
London
2 London Wall Place,
London, EC2Y 5AU
Hong Kong
Bonham Strand, 7F Office 18-
121
Hong Kong
www.r3.com
Thank you
Brazil
Av. Angélica, 2529 - Bela Vista
6th Floor
São Paulo - SP, 01153-000, Brazil
New York
11 West 42nd Street, 8th Floor
New York, NY 10036
Singapore
18 Robinson Road, Level
#14-02
Singapore, 048547

More Related Content

What's hot

Insurance Round Table
Insurance Round TableInsurance Round Table
Insurance Round Table
R3
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
Dev_Events
 
DevDay: Open Banking and Blockchain, IntellectEU
DevDay: Open Banking and Blockchain, IntellectEUDevDay: Open Banking and Blockchain, IntellectEU
DevDay: Open Banking and Blockchain, IntellectEU
R3
 
Algorand's ecology
Algorand's ecologyAlgorand's ecology
Algorand's ecology
Trade Coin Asia
 
Defi tokens and trends
Defi tokens and trendsDefi tokens and trends
Defi tokens and trends
zaarahary
 
BSOS x Quorum Meetup: A deep dive into Quorum
BSOS x Quorum Meetup: A deep dive into QuorumBSOS x Quorum Meetup: A deep dive into Quorum
BSOS x Quorum Meetup: A deep dive into Quorum
BSOS
 
Open Banking APIs with an Agile Way of Working
Open Banking APIs with an Agile Way of WorkingOpen Banking APIs with an Agile Way of Working
Open Banking APIs with an Agile Way of Working
Nordic APIs
 

What's hot (7)

Insurance Round Table
Insurance Round TableInsurance Round Table
Insurance Round Table
 
Getting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on BluemixGetting Started with Cloud Foundry on Bluemix
Getting Started with Cloud Foundry on Bluemix
 
DevDay: Open Banking and Blockchain, IntellectEU
DevDay: Open Banking and Blockchain, IntellectEUDevDay: Open Banking and Blockchain, IntellectEU
DevDay: Open Banking and Blockchain, IntellectEU
 
Algorand's ecology
Algorand's ecologyAlgorand's ecology
Algorand's ecology
 
Defi tokens and trends
Defi tokens and trendsDefi tokens and trends
Defi tokens and trends
 
BSOS x Quorum Meetup: A deep dive into Quorum
BSOS x Quorum Meetup: A deep dive into QuorumBSOS x Quorum Meetup: A deep dive into Quorum
BSOS x Quorum Meetup: A deep dive into Quorum
 
Open Banking APIs with an Agile Way of Working
Open Banking APIs with an Agile Way of WorkingOpen Banking APIs with an Agile Way of Working
Open Banking APIs with an Agile Way of Working
 

Similar to DevDay: CorDapp Design Language: How to Draw a Cordapp and Why You Should, R3

Demystifying Smart Contracts
Demystifying Smart ContractsDemystifying Smart Contracts
Demystifying Smart Contracts
Bernard Peh
 
Smart Contracts
Smart ContractsSmart Contracts
Smart Contracts
Gabriel Hamilton
 
Emperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakkEmperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakk
kevinjohngallagher
 
Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012kevinjohngallagher
 
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
HostedbyConfluent
 
Gateway to Agile: XP and BDD
Gateway to Agile: XP and BDD Gateway to Agile: XP and BDD
Gateway to Agile: XP and BDD
Gervais Johnson, Advisor
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)
Scott Wlaschin
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018
Cyrille Martraire
 
Serverless ddd
Serverless dddServerless ddd
Serverless ddd
Asher Sterkin
 
Meeting Engineers along the Buyer's Journey
Meeting Engineers along the Buyer's JourneyMeeting Engineers along the Buyer's Journey
Meeting Engineers along the Buyer's Journey
MarketingtoEngineers
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design
Prateek
 
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
kevinjohngallagher
 
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
Modern Workplace Conference Paris
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 Edition
Cyrille Martraire
 
DDD for real
DDD for realDDD for real
DDD for real
Cyrille Martraire
 
Supporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on cordaSupporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on corda
R3
 
Ready made bitcoin exchange script PHP
Ready made bitcoin exchange script PHPReady made bitcoin exchange script PHP
Ready made bitcoin exchange script PHP
Stacey Roberts
 
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Synerzip
 
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Jad DELLEL
 
Build Blockchain dApps using JavaScript, Python and C - ATO.pdf
Build Blockchain dApps using JavaScript, Python and C - ATO.pdfBuild Blockchain dApps using JavaScript, Python and C - ATO.pdf
Build Blockchain dApps using JavaScript, Python and C - ATO.pdf
RussFustino
 

Similar to DevDay: CorDapp Design Language: How to Draw a Cordapp and Why You Should, R3 (20)

Demystifying Smart Contracts
Demystifying Smart ContractsDemystifying Smart Contracts
Demystifying Smart Contracts
 
Smart Contracts
Smart ContractsSmart Contracts
Smart Contracts
 
Emperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakkEmperors new clothes_digitalbarn_output_snakk
Emperors new clothes_digitalbarn_output_snakk
 
Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012Emperors new clothes - digitalbarn2012
Emperors new clothes - digitalbarn2012
 
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
You Put *What* in Your Stream?! Patterns and Practices for Event Design with ...
 
Gateway to Agile: XP and BDD
Gateway to Agile: XP and BDD Gateway to Agile: XP and BDD
Gateway to Agile: XP and BDD
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)
 
DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018DDD beyond the infamous repository pattern - GeeCon Prague 2018
DDD beyond the infamous repository pattern - GeeCon Prague 2018
 
Serverless ddd
Serverless dddServerless ddd
Serverless ddd
 
Meeting Engineers along the Buyer's Journey
Meeting Engineers along the Buyer's JourneyMeeting Engineers along the Buyer's Journey
Meeting Engineers along the Buyer's Journey
 
Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design Invincible React States with Domain Driven Design
Invincible React States with Domain Driven Design
 
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
Kevinjohn Gallagher's: Emperors new clothes (WordUp Glasgow 2012)
 
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
2018-10-18 J2 5A - Professional dev low code no code dev and citizen develope...
 
Refactor your Specs - 2017 Edition
Refactor your Specs - 2017 EditionRefactor your Specs - 2017 Edition
Refactor your Specs - 2017 Edition
 
DDD for real
DDD for realDDD for real
DDD for real
 
Supporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on cordaSupporting trade finance with letters of credit on corda
Supporting trade finance with letters of credit on corda
 
Ready made bitcoin exchange script PHP
Ready made bitcoin exchange script PHPReady made bitcoin exchange script PHP
Ready made bitcoin exchange script PHP
 
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)Building In Quality: The Beauty Of Behavior Driven Development (BDD)
Building In Quality: The Beauty Of Behavior Driven Development (BDD)
 
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
Generative Design 101 for Architecture, Engineering & Construction by Jad Del...
 
Build Blockchain dApps using JavaScript, Python and C - ATO.pdf
Build Blockchain dApps using JavaScript, Python and C - ATO.pdfBuild Blockchain dApps using JavaScript, Python and C - ATO.pdf
Build Blockchain dApps using JavaScript, Python and C - ATO.pdf
 

More from R3

Corda Developer Bootcamp: Introduction to Corda
Corda Developer Bootcamp: Introduction to CordaCorda Developer Bootcamp: Introduction to Corda
Corda Developer Bootcamp: Introduction to Corda
R3
 
Corda Developer Bootcamp: Tokens
Corda Developer Bootcamp: TokensCorda Developer Bootcamp: Tokens
Corda Developer Bootcamp: Tokens
R3
 
Corda Developer Bootcamp: Tokens
Corda Developer Bootcamp:  TokensCorda Developer Bootcamp:  Tokens
Corda Developer Bootcamp: Tokens
R3
 
Introduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for DevelopersIntroduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for Developers
R3
 
Corda Developer Bootcamp: Accounts
Corda Developer Bootcamp: AccountsCorda Developer Bootcamp: Accounts
Corda Developer Bootcamp: Accounts
R3
 
BizDay: David E. Rutter Welcome Address
BizDay: David E. Rutter Welcome AddressBizDay: David E. Rutter Welcome Address
BizDay: David E. Rutter Welcome Address
R3
 
BizDay: Usage Based Insurance and Fleet Management, Infosys
BizDay: Usage Based Insurance and Fleet Management, InfosysBizDay: Usage Based Insurance and Fleet Management, Infosys
BizDay: Usage Based Insurance and Fleet Management, Infosys
R3
 
DevDay: Managing a Distributed Network on a Common Infra, SIA
DevDay: Managing a Distributed Network on a Common Infra, SIADevDay: Managing a Distributed Network on a Common Infra, SIA
DevDay: Managing a Distributed Network on a Common Infra, SIA
R3
 
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
BizDay: Improving Remittances in the World's 2nd Largest Corridor, DigiledgeBizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
R3
 
BizDay: Designing the Future of Payments, Mastercard
BizDay: Designing the Future of Payments, MastercardBizDay: Designing the Future of Payments, Mastercard
BizDay: Designing the Future of Payments, Mastercard
R3
 
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
R3
 
DevDay: Node Analytics with Python, Chainhaus
DevDay: Node Analytics with Python, ChainhausDevDay: Node Analytics with Python, Chainhaus
DevDay: Node Analytics with Python, Chainhaus
R3
 
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu SquareBizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
R3
 
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.ioBizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
R3
 
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, MicrosoftBizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
R3
 
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVenturesBizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
R3
 
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, CapgeminiBizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
R3
 
BizDay: The Path to The Risk Singularity, RiskStream
BizDay: The Path to The Risk Singularity, RiskStreamBizDay: The Path to The Risk Singularity, RiskStream
BizDay: The Path to The Risk Singularity, RiskStream
R3
 
BizDay: Insurtech Challenge, Nationwide
BizDay: Insurtech Challenge, NationwideBizDay: Insurtech Challenge, Nationwide
BizDay: Insurtech Challenge, Nationwide
R3
 
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
BizDay: How Corda is Enabling Low Income Families to be Protected, BlocksureBizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
R3
 

More from R3 (20)

Corda Developer Bootcamp: Introduction to Corda
Corda Developer Bootcamp: Introduction to CordaCorda Developer Bootcamp: Introduction to Corda
Corda Developer Bootcamp: Introduction to Corda
 
Corda Developer Bootcamp: Tokens
Corda Developer Bootcamp: TokensCorda Developer Bootcamp: Tokens
Corda Developer Bootcamp: Tokens
 
Corda Developer Bootcamp: Tokens
Corda Developer Bootcamp:  TokensCorda Developer Bootcamp:  Tokens
Corda Developer Bootcamp: Tokens
 
Introduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for DevelopersIntroduction to Corda Blockchain for Developers
Introduction to Corda Blockchain for Developers
 
Corda Developer Bootcamp: Accounts
Corda Developer Bootcamp: AccountsCorda Developer Bootcamp: Accounts
Corda Developer Bootcamp: Accounts
 
BizDay: David E. Rutter Welcome Address
BizDay: David E. Rutter Welcome AddressBizDay: David E. Rutter Welcome Address
BizDay: David E. Rutter Welcome Address
 
BizDay: Usage Based Insurance and Fleet Management, Infosys
BizDay: Usage Based Insurance and Fleet Management, InfosysBizDay: Usage Based Insurance and Fleet Management, Infosys
BizDay: Usage Based Insurance and Fleet Management, Infosys
 
DevDay: Managing a Distributed Network on a Common Infra, SIA
DevDay: Managing a Distributed Network on a Common Infra, SIADevDay: Managing a Distributed Network on a Common Infra, SIA
DevDay: Managing a Distributed Network on a Common Infra, SIA
 
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
BizDay: Improving Remittances in the World's 2nd Largest Corridor, DigiledgeBizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
 
BizDay: Designing the Future of Payments, Mastercard
BizDay: Designing the Future of Payments, MastercardBizDay: Designing the Future of Payments, Mastercard
BizDay: Designing the Future of Payments, Mastercard
 
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
 
DevDay: Node Analytics with Python, Chainhaus
DevDay: Node Analytics with Python, ChainhausDevDay: Node Analytics with Python, Chainhaus
DevDay: Node Analytics with Python, Chainhaus
 
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu SquareBizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
 
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.ioBizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
 
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, MicrosoftBizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
 
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVenturesBizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
 
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, CapgeminiBizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
 
BizDay: The Path to The Risk Singularity, RiskStream
BizDay: The Path to The Risk Singularity, RiskStreamBizDay: The Path to The Risk Singularity, RiskStream
BizDay: The Path to The Risk Singularity, RiskStream
 
BizDay: Insurtech Challenge, Nationwide
BizDay: Insurtech Challenge, NationwideBizDay: Insurtech Challenge, Nationwide
BizDay: Insurtech Challenge, Nationwide
 
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
BizDay: How Corda is Enabling Low Income Families to be Protected, BlocksureBizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
 

Recently uploaded

GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

DevDay: CorDapp Design Language: How to Draw a Cordapp and Why You Should, R3

  • 1. 11 CorDapp Design Language (CDL) How to Draw a CorDapp and why you should? Matt Bradbury – Oct 19
  • 2. A declaration ... I love designing CorDapps  If you’re here at CordaCon dev day… (Most of) You love designing CorDapps too 
  • 3. However… its not 2017 We’re not doing PoCs anymore… production grade Cordapps are more complex • Need more functionality • Must included non-happy path • Privacy must be maintained • Design must be provably robust We need a way to represent and reason about non-trivial CorDapp designs
  • 4. How to represent CorDapp design?
  • 5. (Semi) Real Client example WYSINWISI see.. So the data is all in the same Corda state I see.. So the data is split across multiple Corda states I have no Idea what that box is meant to be What’s for lunch
  • 6. The problem Working out the idea Working out how to represent the idea VS
  • 7. Conclusion… CorDapp Design Language (Previously Corda Modelling Notation) We need a standardised way to represent and reason about non-trivial CorDapp designs, that encourages good CorDapp design
  • 8. CorDapp Design Language - Objectives • Allow non-trivial CorDapp designs to be represented in an accurate, clear and concise way • Enable reasoning about key aspects of CorDapp design: • Shared data and state • Shared logic • Permissioning (via digital signatures) • Privacy (Visibility of data to different participants) • Encourage good design – distinguishes Ledger vs Orchestration Layer • Facilitate reusable Design Patterns • Degrade gracefully • Accurate design documentation – Not just Marketechture
  • 9. Let do some examples • Represent a Smart Contract using State Machine View • Show a Smart Contract in action using Transaction Instance view and State Evolution View • Analyse Smart Contract privacy using Privacy Overlays • Introduce a few design patterns along the way
  • 10. How to represent a Smart Contract • Smart Contracts in Corda are made up of • ContractState (Data), and • Contract (Rule book) • You can consider the Smart Contract behaviour as a Finite State Machine • Think washing machine • Example: An agreement for a Seller to sell goods to a buyer for an agreed price
  • 11. Lets use the… State Machine View Or ‘drawing a Smart Contract’
  • 12.
  • 13.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 24. This is not a true agreement of two parties
  • 26. Node A However….. A Buy B’s House for £1 A Node B B Initiate
  • 27. Node A However….. Sign: A A Buy B’s house for £1 A • Verify() • Sign Node B B Initiate ???
  • 28. Node A However….. Sign: A A Buy B’s house for £1 A • Verify() • Sign Node B Sign: A A Buy B’s house for £1 B Initiate
  • 29. Node A However….. Sign: A A Buy B’s house for £1 A • Verify() • Sign Node B Sign: A A Buy B’s house for £1 Sign: B • Verify() • checkTransaction() • Sign B Initiate
  • 30. Node A However….. Sign: A A Buy B’s house for £1 A • Verify() • Sign Node B Sign: A A Buy B’s house for £1 Sign: B • Verify() • checkTransaction() • Sign B Initiate Sign: B
  • 31. Node A However….. Sign: A A Buy B’s house for £1 A Node B Sign: A A Buy B’s house for £1 Sign: B B Initiate Sign: B ??? Signing is automatic for the responder to a transaction
  • 32.
  • 33. Solution – Propose-Consent Pattern Transaction Instance View Or ‘drawing transactions’
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44. Complication 2 • The Business Network Operator wants paying • Specifically they want to charge each time a deal is initially agreed
  • 45.
  • 46. Problem solved… or is it? State Evolution View Or… ‘State Machines in Action’
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54. Party C ends up with Party B’s private Deal in their vault
  • 55. Party C ends up with Party B’s private Deal in their vault This is NOT okay!!
  • 56. So… How do we fix this?
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67. Takeaways • CorDapp Design Language (CDL) is here to help you write better, more robust CorDapps • It allows you to • Describe complex production grade Smart Contracts • Show Smart Contracts in action • Reason about Privacy • Also views for the Orchestration layer (not covered here)
  • 68. For more information • See the Corda Solutions DocSite: https://solutions.corda.net/ • Publishing a CDL template soon
  • 69. London 2 London Wall Place, London, EC2Y 5AU Hong Kong Bonham Strand, 7F Office 18- 121 Hong Kong www.r3.com Thank you Brazil Av. Angélica, 2529 - Bela Vista 6th Floor São Paulo - SP, 01153-000, Brazil New York 11 West 42nd Street, 8th Floor New York, NY 10036 Singapore 18 Robinson Road, Level #14-02 Singapore, 048547