Slides from NYC MS Cloud group event on Corda.
Tom Menner, Director and Solutions Architect at R3 covered following topics:
· Understand what Corda is and how it differs from blockchain platforms such as Ethereum and Hyperledger Fabric;
· Use cases of Corda
· Corda on Azure and R3’s partnership with Microsoft
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Introducing r3 corda™ a distributed ledger designed for financial services
1. Welcome | Microsoft Cloud User Group
Razi Rais | Microsoft
www.linkedin.com/in/razirais
Meeting every month
Open to everyone!
www.meetup.com/msftcloud
2. Introduction to the
Corda DLT Platform
Microsoft Cloud NYC User Group
October 2017
Tom Menner
Director, Solution Architect
tom.menner@r3.com
linkedin.com/in/tommenner
4. Evolution from Blockchains to Distributed Ledgers
Altcoin Rush
Meta Protocols,
Colored Coins, and
Tokenization
Towards blockchain
inspired technologies
– DLT
2009 Today
Bitcoin
Release
Hyperledger
Project
2015
Extends the concept in
Bitcoin of ‘decentralized
storage to ‘decentralized
computer’
R3 Consortium
begins
Corda V1
Corda open
sourced
4
5. Defining characteristic of a distributed ledger
5
Distributed ledgers are systems that enable parties who
don’t fully trust each other to form and maintain
consensus about the existence, status and evolution of a
set of shared facts.
6. Distributed ledgers at a glance
Cryptography to ensure identity authentication for
each transaction
Non-repudiation/immutability to preserve
integrity of data and create an audit trail
Smart contracts for the automatic execution of
business logic when certain criteria are met
Shared ledger so each participant sees the same
view of the same data, updated in real time,
subject to permissioning
Distributed consensus to ensure the state of the
ledger represents the agreed-upon truth of all
stakeholders
Ledgers
Distributed
Ledgers
Blockchains
Crypto-
currencies
Non-blockchains
Industry
ledgers
6
7. Blockchain-inspired: takes best
attributes from Bitcoin, Ethereum, and
others.
Enterprise grade: built specifically for
financial markets.
Data privacy: transactions info
propagated only to relevant nodes.
Consensus: achieved at individual deal level,
rather than system level. Supports a variety
of consensus mechanisms.
Regulator-focused: design directly enables
regulatory/supervisor observer nodes.
Smart contract: strong link between legal
prose and smart contract code.
A unique shared ledger approach
Easy integration: reuse existing developer skills and make integration with bank
systems easy and safe. Query and join the ledger to existing DBs with SQL, and code
contracts in modern, standard languages like Java.
7
9. Corda salient features
• No blockchains, no mining; instead a permissioned network
• No broadcast: all communication is point-to-point
• We reject the notion that data should be broadcast to all participants – or to
cumbersome, predefined groups
• Message senders need to know the identity of recipients
• Data is shared on a need-to-know basis and peers only see what they need to
see
• Not sending is preferable to sending and encrypting
• Unspent Transaction Output (UTXO) for recording states (like Bitcoin)
• Platform is JVM-based, written in Kotlin (can use Java, Clojure, etc)
• Supports industry-standard protocols: AMQP, JDBC, PKIX, etc
• No cryptocurrency but can represent digital cash
9
10. The Corda Ledger
ALICE BOB
ED
CARL
DEMI
1
7
5
9
4 3
2
6
8
ALICE = { }1 7
BOB = { }1 7 6 5
CARL = { }9 4 6 5 2 3
ED= { }9 4 38
DEMI= { }2 3 8
The ledger from each peer’s point of view is the union of all
intersections with other network peers
(some of which may be the empty set)
Numbered circles
represent unique
shared facts
10
11. Anatomy of a bilateral ledger
ALICE BOB
1
7
• There is no “central ledger”
• Each network peer maintains a separate vault of facts
(akin to rows in a DB table)
• All peers to a shared fact store identical copies
• Not all on-ledger facts have to be shared with other
peers
• The black square “11” is an example of a on-ledger
fact not shared with any peers
• Immutable: easy to do analysis on a static snapshot of
the data and reason about the contents
• No accounts: easy to apply transactions in parallel
• Transaction ordering: impossible to mis-order
transactions due to reliance on hash functions to identify
previous states
• Consensus: conflict is the double spend problem
• Auditability: full history of all activity is recorded
6
5
Id Fact
1 “Much consensus”
7 “So bilateral”
11 “Wow ledger”
Id Fact
1 “Much consensus”
6 “Very fact”
7 “So bilateral”
5 “amaze network”
11
11
12. Flows
Flows are light-weight
processes used to
coordinate interactions
required for peers to reach
consensus about shared
facts.
State Object
States are immutable
objects that represent
(shared) facts such as a
financial agreement or
contract at a specific point
in time
Transaction
Transactions consume
input states and create
output states.
The newly created output
states replace the input
states which are marked
as historic.
Consensus
Parties reach consensus
on the evolution of a
shared fact. This is done
by testing the validity (by
way of contract code) and
uniqueness (by way of the
notary) of the transaction.
Corda: Key Concepts
IOU
CONTRACT
REF
IOU STATE
PROPERTIES
From: Alice
To: Bob
Amount: £10
Due: 01/ 03/ 2017
Paid: £5
Penalty: 20%
PARTICIPANTS
Alice
Bob
OUTPUT
STATE
INPUT
STATE
ALICE
BOB
NOTARY
12
13. Transactions
• Any peer may create a transaction proposal
• Transaction proposals are uncommitted by default
• Before a transaction proposal is committed it must first be digitally signed and
then verified and by all required peers on a need-to-know basis
• Once a transaction is committed it marks the input state references as historic
and creates new output states reflecting an updated ledger
13
14. Flows
• With Corda, peers communicate on a point to point basis
• Most distributed ledger platforms use message broadcasting and gossip networks to share data
• To communicate, peers must specify message recipients
• Recall that to commit a transaction, multiple peers are often required to sign and verify it
• To commit a transaction proposal, a workflow or “flow” of messaging, signing, verifying, among
other things, is required
• Peers on a Corda network may have thousands of counter-parties and hundreds of thousands of
concurrent flows
14
15. Two types of consensus
In Corda, verification consensus involves
peers reaching certainty that a transaction:
• is signed by all required peers listed
in the commands of a flow;
• and satisfies the constraints defined
by the contracts pointed to by the input
and output states.
However there is an additional step
required…
Peers reach consensus over transactions in two ways
15
The “double spend” problem for on-ledger
issued assets can be mitigated with
uniqueness consensus
• Uniqueness consensus is provided by
notary services
• When a state is issued on-ledger it is
assigned a notary service
• The assigned notary ensures the state is
not used as an input to a transaction
more than once for the duration of the
state’s lifecycle on-ledger
• The point of transaction finality is reached
when the specified notary service signs
the transaction
16. Example: Cash Transfer Flow
16
INITIATOR
(ALICE)
SIGN TX
SEND(TX + SIG)
GET
DATA
FROM
INTERNA
L
SYSTEM
INSPECT
AND
VERIFY TX
SEND(TX + SIG)
CREATE
TRANSFE
R TX
RESPONDE
R
(BOB)
SIGN TX
INSPECT
AND
VERIFY TX
COMMIT
TX
COMMIT
TX
FLOW SUSPENDED
AND
CHECKPOINTED
END
END
OUTPUT
CASH
TransferINPUT
CASH
18. A Corda network is comprised of:
• A doorman
• Two or more Corda nodes
• A network map service
• One or more notary services
• Zero or more oracles
Network overview
What is a Corda Network?
18
20. Corda Network: Detailed Overview
13
5
4
2
2
• Doorman: Enforces rules regarding the information nodes
must provide before being admitted to the network. If satisfied,
node’s identity is certified with a root-authority-signed TLS
certificate.
• Nodes: JVM run-time with a unique network identity running
Corda with two interfaces: network layer (interacting with other
nodes) and RPC (interacting with node’s owner)
• Network Map Service: Publishes IP addresses through which
all nodes can be reached along with certificates and services
provided by node
• Notary: Attest uniqueness, and possibility the validity, of ledger
updates.
• Oracles: Well-known service that signs transactions if they
state a fact and that fact is considered to be trust
A Corda Network includes a 1) doorman (“permissioning service”), 2) two or more Corda Nodes, 3) a
network map service, 4) one or more notary nodes and 5) zero or more oracles
1
3
2
4
5
20
21. A Corda Network
• A Corda network is a fully connected graph
• No global broadcast or gossip network
• Communication occurs on a point-to point basis
only
• Peers communicate using AMQP/1.0 over TLS
• Network map service publishes list of peers
• Graph edges represent the potential to
communicate, not persistent connections
• Think Email and SMTP
A Corda network is an authenticated peer-to-peer network of nodes where each node is a Java Virtual
Machine run-time environment hosting Corda services and executing applications known as CorDapps
21
Name: Network Map
Services: Network map service
Address: 192.168.0.2:10005
Public key: t453wv84bvt3cj5w3h
Name: Alice
Services: Cash Issuer, bond
issuer
Address: 192.168.0.3:10005
Public key: 5h54h5wv632vhy55
Name: Bob
Services: Cash Issuer, bond issuer
Address: 192.168.0.4:10005
Public key: 5hw03nnk43jknkj4n
NOTARY
NODE
PERMISSIONING SERVICE
CERTIFICATE SIGNING
1
22. What makes a Business Network?
We expect that single business networks will typically be set up by a
consortium of banks and a system delivery partner, and they will include:
• A ledger agreement / set of rules
• An operating entity
• The specific ledger application for this ledger (CorDapp)
• Common network parameters that allow Nodes to transact
A network will comprise a number of Corda Nodes:
• Bank nodes
• A Doorman Node
• At least one Notary node
• Oracles
• Messaging Gateways (e.g. SWIFT)
Bank A
Bank B
Bank C
Bank D
Bank E
Doorman
Notary
Oracle
Gateway
Peer-to-Peer
communications
Connectivity to rest of
bank
Connectivity to
external services
But of course we want many of these business networks, and our
primary objective is for them to be able to interoperate..
22
23. 23
TestNet ‘R3Net’
R3Net on Azure
Change
management
challenge
Connectivity to Bank
test environments
Connectivity to
Bank Production
environments
TestNet and ‘R3Net’
Bank production environments are highly
controlled and protected. There are many
change management hurdles for banks to
negotiate before they can connect Corda
nodes to their production environments
• Projects
• Demos
• Partners
• Development and
Test Focus
• Production
Applications
• Live business
• Permissioned FIs
only
25. CorDapps
(“Top of Stack” Corda-Based Applications)
‘R3Net’
Service
s
Corda Enterprise (Licensed)
Corda Core Components (Open Source)
25
R3 Platform Vision
26. 26
Q1 2017 Q2 2017 Q3 2017 Q4 2017
Corda Open Source
& Enterprise
Corda Enterprise
announcement
with key partners
Corda
maintenance
contract launch
Initial R3 Corda
network services
launch
Corda open source
v1.0 release
Corda Enterprise
v1.0 launch
Platform capable
of supporting pilots
First community-
organized Corda
Meetup
HQLAx announce
live pilot on Corda
Corda TestNet live
Corda Training
launched globally
Corda DemoBench
released
Corda open source
Beta
announcement
Corda support
contract launch
As the largest financial services DLT consortium, R3 is uniquely positioned to enable collaboration and the development of new DLT-
based products and services for the financial services industry.
Corda Timeline 2017
28. Partners provide powerful deployment options
• System integrators for development and implementation capabilities
and experience, domain expertise, and successful project management
to completion
• Microsoft and R3 have partnered to not only provide Corda on Azure,
but Corda is adding capabilities to take advantage of rich features Azure
is developing to support blockchain platforms
• Intel has partnered with R3 to make Corda capabilities availability within
Intel’s Software Guard Extensions (SGX) hardware security module
• HPE is building Tandem Non-Stop Servers with Corda installed for rapid
Blockchain-out-of-a-Box solutions
28
31. For more information
Code and documentation
corda.net – code download, Demobench
docs.corda.net – documentation
github.com/corda/corda
Help
cordaledger.slack.net
stackoverflow.com/questions/tagged/corda
Social
www.meetup.com/New-York-Corda-Meetup/
Tom
tom.menner@r3.com
private and confidential 31
33. Corda Node
Vault
Appendix: Corda component architecture
p33.
State Object creates
properties / fields for the
given financial
agreement
Contract Code:
Verify that:
Transfer (whole):
• Rule 1 { code }
Transfer (partial):
• Rule 1 { code }
• Rule 2 { code }
Transactions enable
transition between states
Flows defined for specific data sent to each node/identity –
signatures on transactions
Apps
Editor's Notes
DARAGH
I like to think of Corda in 4 different layers. At the very bottom are the fundamental building blocks of Corda, which are states. These states contain the data model of what you’re sending between the nodes. The Transactions are a combination of states with specific commands/instructoins on how this state object evolves over time. These transactions are governed by the contract code you write (more on that later). The specific flows are how you reach consensus amongst the particular nodes that you’re sending these state objects to. Flows and sub-flows can be thought of as partial transactions where nodes need to sign to agree on the transaction. The CorDapp itself is the application running on the nodes that will host the these objects and state changes.