SlideShare a Scribd company logo
Account Workshop
Questions we want to answered [Not shown]
• Where is Account stored?
• Who is really signing the transaction when I am an account?
• Am I visible to the participants on the network?
• Does the other participants required to have account, if one of the participants want to use
account.
• How is Account mapped/linked with the state?
• What are the problems accounts is trying to solve?
• Can I easily migrate from node based model to account based model and again migrate
from an account based model to a node based model?
• Typical life cycle of an account?
• How can offchain identity be mapped to onchain accounts identity?
• What are the typical use cases when we would want to use accounts?
• Roadmap of accounts
• Can tokens and accounts be integrated
The Problem We Had…
• Corda was not designed to deploy and operate by individuals and small businesses. (such
as, a local corner candy store or my friend Roger)
• Most Cordapp developers will represent their customers. When the number of customers
goes up, the total cost of spinning up a node for every customer becomes costly.
Introducing Corda Accounts
So that:
• A Corda node can host multiple “individuals/small companies” who wants to play a role in a
larger blockchain system. [Increase scalability]
• Consortium can “represent their customers” via accounts, while only spinning up minimal
numbers of nodes depends on the use-case. [Reduce operation cost]
An accounts library allows a Corda node operator to split the
vault into multiple "logical" sub-vaults.
High Level Pictorial Explanation…
NODE A VAULT
ACCOUNT ONE ACCOUNT TWO
KEY MANAGEMENT SERVICE
Stores key pairs
KEY HASH1 : ACCOUNT ONE, NODE A
KEY HASH2 : ACCOUNT ONE, NODE A
KEY HASH3 : ACCOUTN TWO, NODE A
KEY HASH4 : ACCOUNT X, NODE B
IDENTITY SERVICE
NO ACCOUNT
Maps key pairs to node identities and account ids
Level 1
Level 2Level 3
Points to note…
• Accounts are not Corda Identities – they are a different representation of a collection of states
and public keys.
• Account creation, discovery will be implemented on the Cordapp level. (Not from the
network level)
• Vault isolation is not supported – all accounts share the same node service and keys are all
stored in the same key management service.
• Node operator will know it all.
• Standalone HSM private/public key management for accounts is not supported.
Pictorial Representation Of Accounts
Use-Cases…
• Host multiple customers per node
• Custody-like accounts, brokerage accounts, bank accounts, etc.
• Internal separation between departments of large companies
• Isolate sensitive information from non-involving departments.
• Massive adoption of 2C application
• private record per consumer.
Under the hood of accounts…
• AccountInfo & AccountService
• Life cycle of an Account
• Account APIs
AccountInfo & AccountService
AccountInfo & AccountService
Link: <Path of Account Repository>/workflows/services/AccountService.kt
Life Cycle of an Account (Part I)
Account creation & sharing with counterparties:
1. Create Account
2. Share AccountInfo with counter parties
In the flow:
1. Retrieve the account and request a new set of Public/Private key pair for the transaction
2. Request the signing keys from counterparty’s account.
3. Share the transaction’s output state with the counterparties if we expect the state will be used as an input
for any further transactions. [Optional]
4. Record the transaction to corresponded accounts in responder flow
Life Cycle of an Account (Part II)
Querying the Vault:
1. Create a new query criteria
2. Perform query to return all desired states for account with specified accountId
DOORMAN
NODE
Node / Party /
First Class Identity
Certificate generated and signed by
node and then signed by Doorman.
Used by node operators. Node
operators might be companies that
also participate in states on the
ledger. However, the state which
they participate in would only be
through accounts.
Account
A Party and label pair. Where Party
represents a host node and label
represents some Party/application
scoped identifier. There is also a
UUID which should be unique at the
network level. Labels are only
guaranteed to be unique at the node
/ Party level. However, when they
are coupled with a Party, they are
guaranteed to be unique.
ACCOUNT
NODE NODE
PUBLIC
KEY
ACCOUNT
IDENTITY
AccountInfo
Name: String
Host: Party
ID: UniqueIdentifier
PublicKeyToExternalID
When new PublicKeys are created
on the host node, they will be
allocated to the UUID for a particular
Account. As such, Accounts will be
associated to multiple PublicKeys.
This is how the node keeps track of
which states should be allocated to
which Account.
ACCOUNT
Services / CorDapps
When new PublicKeys are created
on the host node, they will be
allocated to the UUID for a particular
Identifiable. As such, Identifiables will
be associated to multiple PublicKeys.
This is how the node keeps track of
which states should be allocated to
which Identifiable.
ACCOUNT
ACCOUNT
ACCOUNT ACCOUNT
IDENTITYIDENTITY
Identity
Represents the identity of a “user”.
Identifiables do not have a Doorman
provisioned identity. Instead, they
only have an identity in the context of
a Party node (that does have a
Doorman provisioned identity).
These identities are, in effect, self
signed. Noes/parties can attest to the
claims made in the Identifiable state.
AccountInfos are ledger states so that they can be easily shared with other nodes.
Holistic view
Code Example
Let’s go to IntelliJ …
Try it Yourself
Java version: https://github.com/corda/samples-java/tree/master/Accounts
Kotlin version: https://github.com/corda/samples-kotlin/tree/master/Accounts
Supply Chain:
This CorDapp mimics a supply chain transaction, where the deal is incorporated among
different teams in the companies on both side of the trade.
Tic Tac Thor:
This CorDapp recreates the game of Tic Tac Toe via Corda. It primarilly demonstrates
how you can have linear state transactions between cross-node accounts.
Worldcup Ticket Booking:
This CorDapp demonstrates an ticket booking system with a collaboration of Corda
Account Libray and TokenSDK.

More Related Content

PPTX
Supporting trade finance with letters of credit on corda
 
PPTX
Corda Developer Bootcamp: Introduction to Corda
 
PPTX
Corda Developer Bootcamp: Tokens
 
PPTX
DevDay: Getting Started with Tokens and Accounts, R3
 
PPTX
Introduction to Corda Blockchain for Developers
 
PDF
R3 Corda Simple Tutorial
PPTX
DevDay: Node Analytics with Python, Chainhaus
 
PPTX
What is corda
Supporting trade finance with letters of credit on corda
 
Corda Developer Bootcamp: Introduction to Corda
 
Corda Developer Bootcamp: Tokens
 
DevDay: Getting Started with Tokens and Accounts, R3
 
Introduction to Corda Blockchain for Developers
 
R3 Corda Simple Tutorial
DevDay: Node Analytics with Python, Chainhaus
 
What is corda

What's hot (17)

PPTX
DevDay: A Tale of Corda Slack Adventures, R3
 
PPTX
Building Blockchain Application with Corda
PDF
DevDay: Have Your Cake and Eat it Too, Privacy and Security with ZKP, ING
 
PPTX
Roles and skills of a corda architect a deep dive
PPTX
DevDay: Writing a Secure CorDapp, (almost) Everything You Didn't Know You Nee...
 
PDF
BSOS x R3 Corda Meetup: Leading the way to blockchain-based banking
PPTX
DevDay: Cerberus A Corda DLT Monitorin and Alerting System, CryptoBLK
 
PPTX
DevDay: Managing a Distributed Network on a Common Infra, SIA
 
PPTX
Introducing r3 corda™ a distributed ledger designed for financial services
PPTX
Hyperledger
PDF
Christmas update 2016
PDF
Why Blockchain is seen as the new Internet and what SAP is doing
PPTX
Hyperledger Fabric Hands-On
PDF
Code for America 2018 - Using Hyperledger Technologies to Deliver Government ...
PDF
blockchain workshop - hyperledger and oabcs - technical
PPTX
Blockchain explored
PPTX
DevDay: Managing a Distributed Network on a Common Infra, NTT Data
 
DevDay: A Tale of Corda Slack Adventures, R3
 
Building Blockchain Application with Corda
DevDay: Have Your Cake and Eat it Too, Privacy and Security with ZKP, ING
 
Roles and skills of a corda architect a deep dive
DevDay: Writing a Secure CorDapp, (almost) Everything You Didn't Know You Nee...
 
BSOS x R3 Corda Meetup: Leading the way to blockchain-based banking
DevDay: Cerberus A Corda DLT Monitorin and Alerting System, CryptoBLK
 
DevDay: Managing a Distributed Network on a Common Infra, SIA
 
Introducing r3 corda™ a distributed ledger designed for financial services
Hyperledger
Christmas update 2016
Why Blockchain is seen as the new Internet and what SAP is doing
Hyperledger Fabric Hands-On
Code for America 2018 - Using Hyperledger Technologies to Deliver Government ...
blockchain workshop - hyperledger and oabcs - technical
Blockchain explored
DevDay: Managing a Distributed Network on a Common Infra, NTT Data
 
Ad

Similar to Corda Developer Bootcamp: Accounts (20)

PPTX
Triple Entry Accounting: A BlockChain Use Case for Banks With R3 Corda
PPTX
Blockchain for Java Developers - Cloud Conference Day
PDF
CQRS and Event Sourcing
PDF
R3Corda - Architecture Overview - Concepts and Components
PDF
R3Corda_Concepts+Components_AICTE_STTP_2020
PDF
Blockchain Accounts: Secure Digital Identity for the Future
PDF
Blockchain-based Applications
PDF
OracleCode_Berlin_Jun2018_AnalyzeBitcoinTransactionDataUsingAsGraph
PPTX
Block chain as a graph
PDF
SVIA InsurTech Summit Dec 5 - 6th 2017
PPTX
Blockchin Architecture on Azure-Part-3
PPTX
SmartQuora - Learn to build a Smart Contract application on Hyperledger Block...
PPTX
3.3.1.pptx ppt of vvjvjjvjhvjvjvhjvjhvjhvhjvjv
PPTX
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...
PPTX
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...
PDF
Starkware: Account Abstraction
PDF
Portabl - The state of open banking, regulations, and the intersection of SSI...
PPTX
JSON and REST
PDF
Blockchain Account Aggregation oct 2019 rev nci
PPTX
The Blockchain as a Software Connector
Triple Entry Accounting: A BlockChain Use Case for Banks With R3 Corda
Blockchain for Java Developers - Cloud Conference Day
CQRS and Event Sourcing
R3Corda - Architecture Overview - Concepts and Components
R3Corda_Concepts+Components_AICTE_STTP_2020
Blockchain Accounts: Secure Digital Identity for the Future
Blockchain-based Applications
OracleCode_Berlin_Jun2018_AnalyzeBitcoinTransactionDataUsingAsGraph
Block chain as a graph
SVIA InsurTech Summit Dec 5 - 6th 2017
Blockchin Architecture on Azure-Part-3
SmartQuora - Learn to build a Smart Contract application on Hyperledger Block...
3.3.1.pptx ppt of vvjvjjvjhvjvjvhjvjhvjhvhjvjv
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs - Nordi...
ABAC, ReBAC, Zanzibar, ALFA… How Should I Implement AuthZ in My APIs? by Dav...
Starkware: Account Abstraction
Portabl - The state of open banking, regulations, and the intersection of SSI...
JSON and REST
Blockchain Account Aggregation oct 2019 rev nci
The Blockchain as a Software Connector
Ad

More from R3 (20)

PPTX
Corda Developer Bootcamp: Tokens
 
PDF
Insurance Round Table
 
PPTX
BizDay: David E. Rutter Welcome Address
 
PDF
BizDay: Usage Based Insurance and Fleet Management, Infosys
 
PPTX
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
 
PDF
BizDay: Designing the Future of Payments, Mastercard
 
PPTX
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
 
PPTX
BizDay: Transition to DLT in RTGS payments, Accenture, SAP
 
PDF
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
 
PPTX
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
 
PPTX
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
 
PPTX
BizDay: Truck Wallet, Daimler, KI Decentralized
 
PDF
BizDay: A View From Behind the Curtain, SIX Exchange
 
PDF
BizDay: Finteum Presentation
 
PDF
BizDay: Using Tokens for Payment and Instant Settlement, R3
 
PDF
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
 
PDF
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
 
PPTX
BizDay: The Path to The Risk Singularity, RiskStream
 
PPTX
BizDay: Insurtech Challenge, Nationwide
 
PPTX
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
 
Corda Developer Bootcamp: Tokens
 
Insurance Round Table
 
BizDay: David E. Rutter Welcome Address
 
BizDay: Usage Based Insurance and Fleet Management, Infosys
 
BizDay: Improving Remittances in the World's 2nd Largest Corridor, Digiledge
 
BizDay: Designing the Future of Payments, Mastercard
 
DevDay: Developer Updates: Visual Studio Code, Java 11 and OpenAPI (oh my), L...
 
BizDay: Transition to DLT in RTGS payments, Accenture, SAP
 
BizDay: Connecting Construction & Insurance Ecosystem, Tinubu Square
 
BizDay: The Wholesale Food Supply Chain is Ripe for Transformation, ripe.io
 
BizDay: Fully Managed Corda Enterprise with Azure Blockchain Service, Microsoft
 
BizDay: Truck Wallet, Daimler, KI Decentralized
 
BizDay: A View From Behind the Curtain, SIX Exchange
 
BizDay: Finteum Presentation
 
BizDay: Using Tokens for Payment and Instant Settlement, R3
 
BizDay: Digital Micro-Lending and Debt Crowd Funding Platform, JVentures
 
BizDay: Trusted Data Exchange for Corp and Supplier Onboarding, Capgemini
 
BizDay: The Path to The Risk Singularity, RiskStream
 
BizDay: Insurtech Challenge, Nationwide
 
BizDay: How Corda is Enabling Low Income Families to be Protected, Blocksure
 

Recently uploaded (20)

PDF
R24 SURVEYING LAB MANUAL for civil enggi
PDF
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
PDF
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
PDF
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
PDF
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
PDF
Integrating Fractal Dimension and Time Series Analysis for Optimized Hyperspe...
PDF
86236642-Electric-Loco-Shed.pdf jfkduklg
PDF
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
PPTX
introduction to high performance computing
PPTX
Fundamentals of safety and accident prevention -final (1).pptx
PDF
Soil Improvement Techniques Note - Rabbi
PDF
III.4.1.2_The_Space_Environment.p pdffdf
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PPTX
Safety Seminar civil to be ensured for safe working.
PDF
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
PPTX
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
PDF
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
Categorization of Factors Affecting Classification Algorithms Selection
PPTX
Nature of X-rays, X- Ray Equipment, Fluoroscopy
R24 SURVEYING LAB MANUAL for civil enggi
The CXO Playbook 2025 – Future-Ready Strategies for C-Suite Leaders Cerebrai...
BIO-INSPIRED HORMONAL MODULATION AND ADAPTIVE ORCHESTRATION IN S-AI-GPT
Level 2 – IBM Data and AI Fundamentals (1)_v1.1.PDF
EXPLORING LEARNING ENGAGEMENT FACTORS INFLUENCING BEHAVIORAL, COGNITIVE, AND ...
Integrating Fractal Dimension and Time Series Analysis for Optimized Hyperspe...
86236642-Electric-Loco-Shed.pdf jfkduklg
UNIT no 1 INTRODUCTION TO DBMS NOTES.pdf
introduction to high performance computing
Fundamentals of safety and accident prevention -final (1).pptx
Soil Improvement Techniques Note - Rabbi
III.4.1.2_The_Space_Environment.p pdffdf
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Safety Seminar civil to be ensured for safe working.
Enhancing Cyber Defense Against Zero-Day Attacks using Ensemble Neural Networks
CURRICULAM DESIGN engineering FOR CSE 2025.pptx
PREDICTION OF DIABETES FROM ELECTRONIC HEALTH RECORDS
Automation-in-Manufacturing-Chapter-Introduction.pdf
Categorization of Factors Affecting Classification Algorithms Selection
Nature of X-rays, X- Ray Equipment, Fluoroscopy

Corda Developer Bootcamp: Accounts

  • 2. Questions we want to answered [Not shown] • Where is Account stored? • Who is really signing the transaction when I am an account? • Am I visible to the participants on the network? • Does the other participants required to have account, if one of the participants want to use account. • How is Account mapped/linked with the state? • What are the problems accounts is trying to solve? • Can I easily migrate from node based model to account based model and again migrate from an account based model to a node based model? • Typical life cycle of an account? • How can offchain identity be mapped to onchain accounts identity? • What are the typical use cases when we would want to use accounts? • Roadmap of accounts • Can tokens and accounts be integrated
  • 3. The Problem We Had… • Corda was not designed to deploy and operate by individuals and small businesses. (such as, a local corner candy store or my friend Roger) • Most Cordapp developers will represent their customers. When the number of customers goes up, the total cost of spinning up a node for every customer becomes costly.
  • 4. Introducing Corda Accounts So that: • A Corda node can host multiple “individuals/small companies” who wants to play a role in a larger blockchain system. [Increase scalability] • Consortium can “represent their customers” via accounts, while only spinning up minimal numbers of nodes depends on the use-case. [Reduce operation cost] An accounts library allows a Corda node operator to split the vault into multiple "logical" sub-vaults.
  • 5. High Level Pictorial Explanation… NODE A VAULT ACCOUNT ONE ACCOUNT TWO KEY MANAGEMENT SERVICE Stores key pairs KEY HASH1 : ACCOUNT ONE, NODE A KEY HASH2 : ACCOUNT ONE, NODE A KEY HASH3 : ACCOUTN TWO, NODE A KEY HASH4 : ACCOUNT X, NODE B IDENTITY SERVICE NO ACCOUNT Maps key pairs to node identities and account ids Level 1 Level 2Level 3
  • 6. Points to note… • Accounts are not Corda Identities – they are a different representation of a collection of states and public keys. • Account creation, discovery will be implemented on the Cordapp level. (Not from the network level) • Vault isolation is not supported – all accounts share the same node service and keys are all stored in the same key management service. • Node operator will know it all. • Standalone HSM private/public key management for accounts is not supported.
  • 8. Use-Cases… • Host multiple customers per node • Custody-like accounts, brokerage accounts, bank accounts, etc. • Internal separation between departments of large companies • Isolate sensitive information from non-involving departments. • Massive adoption of 2C application • private record per consumer.
  • 9. Under the hood of accounts… • AccountInfo & AccountService • Life cycle of an Account • Account APIs
  • 11. AccountInfo & AccountService Link: <Path of Account Repository>/workflows/services/AccountService.kt
  • 12. Life Cycle of an Account (Part I) Account creation & sharing with counterparties: 1. Create Account 2. Share AccountInfo with counter parties In the flow: 1. Retrieve the account and request a new set of Public/Private key pair for the transaction 2. Request the signing keys from counterparty’s account. 3. Share the transaction’s output state with the counterparties if we expect the state will be used as an input for any further transactions. [Optional] 4. Record the transaction to corresponded accounts in responder flow
  • 13. Life Cycle of an Account (Part II) Querying the Vault: 1. Create a new query criteria 2. Perform query to return all desired states for account with specified accountId
  • 14. DOORMAN NODE Node / Party / First Class Identity Certificate generated and signed by node and then signed by Doorman. Used by node operators. Node operators might be companies that also participate in states on the ledger. However, the state which they participate in would only be through accounts. Account A Party and label pair. Where Party represents a host node and label represents some Party/application scoped identifier. There is also a UUID which should be unique at the network level. Labels are only guaranteed to be unique at the node / Party level. However, when they are coupled with a Party, they are guaranteed to be unique. ACCOUNT NODE NODE PUBLIC KEY ACCOUNT IDENTITY AccountInfo Name: String Host: Party ID: UniqueIdentifier PublicKeyToExternalID When new PublicKeys are created on the host node, they will be allocated to the UUID for a particular Account. As such, Accounts will be associated to multiple PublicKeys. This is how the node keeps track of which states should be allocated to which Account. ACCOUNT Services / CorDapps When new PublicKeys are created on the host node, they will be allocated to the UUID for a particular Identifiable. As such, Identifiables will be associated to multiple PublicKeys. This is how the node keeps track of which states should be allocated to which Identifiable. ACCOUNT ACCOUNT ACCOUNT ACCOUNT IDENTITYIDENTITY Identity Represents the identity of a “user”. Identifiables do not have a Doorman provisioned identity. Instead, they only have an identity in the context of a Party node (that does have a Doorman provisioned identity). These identities are, in effect, self signed. Noes/parties can attest to the claims made in the Identifiable state. AccountInfos are ledger states so that they can be easily shared with other nodes. Holistic view
  • 15. Code Example Let’s go to IntelliJ …
  • 16. Try it Yourself Java version: https://github.com/corda/samples-java/tree/master/Accounts Kotlin version: https://github.com/corda/samples-kotlin/tree/master/Accounts Supply Chain: This CorDapp mimics a supply chain transaction, where the deal is incorporated among different teams in the companies on both side of the trade. Tic Tac Thor: This CorDapp recreates the game of Tic Tac Toe via Corda. It primarilly demonstrates how you can have linear state transactions between cross-node accounts. Worldcup Ticket Booking: This CorDapp demonstrates an ticket booking system with a collaboration of Corda Account Libray and TokenSDK.

Editor's Notes

  • #2: Some Introdcution
  • #4: What are the problems accounts is trying to solve?
  • #5: Does the other participants required to have account, if one of the participants want to use account. What are the typical use cases when we would want to use accounts?
  • #6: Where is Account stored? Am I visible to the participants on the network?
  • #7: Who is really signing the transaction when I am an account?
  • #11: How is Account mapped/linked with the state?
  • #13: Typical life cycle of an account? How is Account mapped/linked with the state? Can I easily migrate from node based model to account based model and again migrate from an account based model to a node based model?
  • #15: How can offchain identity be mapped to onchain accounts identity? Roadmap of accounts
  • #16: Can tokens and accounts be integrated
  • #17: Can tokens and accounts be integrated