Resolve BankOfCorda through NMS in protocol Fixes following Integration testing. Register custom RPC Kryo classes. Protocol -> Flow renaming Bank of Corda demo - Issuer of Cash Resolve BankOfCorda through NMS in protocol Fixes following Integration testing. Protocol -> Flow renaming Addressed all comments in PR review. Removed bank lines. Updated minor inconsistency in README.md All protocol references changed to flow. changed protocol -> flow in TODO comment. changed startProtocolPermission -> startFlowPermission in README.md Added transaction id to IssuerFlow Success response. Removed explicit call to record Cash Move transaction (as already recorded in subflow) Removed quasar dependency. Addressed comment in PR. Updated to use CompositeKey. Added arguments to pass in Currency and Amount. Updated run configurations to pass in Currency and Amount values Added additional parameter to IssuerFlow request: issueToPartyReference Added Vault updates verification in RPC Integration test. Fixed RPC Integration test (Vault assertions) Updated run-time dependencies in line with other demos. Applied changes following PR review (exception handling, party resolution handling, docs) Updated gradle client run configs with new parameters. Main driver app now uses standard out for display (was using logger info() but nothing was being displayed because of restrictive config) Fixed formatting display problems. Updated Web Api code to use new CordaRPCOps interface (and new partyFromName() exposed method) Removed unused import.
2.6 KiB
Bank of Corda demo
Please see docs/build/html/running-the-demos.html
This program simulates the role of an asset issuing authority (eg. central bank for cash) by accepting requests from third parties to issue some quantity of an asset and transfer that ownership to the requester. The issuing authority accepts requests via the [IssuerFlow] flow, self-issues the asset and transfers ownership to the issue requester. Notarisation and signing form part of the flow.
The requesting party can be a CorDapp (running locally or remotely to the Bank of Corda node), a remote RPC client or a Web Client.
Prerequisites
You will need to have JDK 8 installed and available on your path.
Getting Started
- Launch the Bank of Corda node (and associated Notary) by running: [BankOfCordaDriver] --role ISSUER (to validate your Node is running you can try navigating to this sample link: http://localhost:10005/api/bank/date)
Each of the following commands will launch a separate Node called Big Corporation which will become the owner of some Cash following an issue request:
-
Run the Bank of Corda Client driver (to simulate a web issue requester) by running: [BankOfCordaDriver] --role ISSUE_CASH_WEB This demonstrates a remote application acting on behalf of the Big Corporation and communicating directly with the Bank of Corda node via HTTP to request issuance of some cash.
-
Run the Bank of Corda Client driver (to simulate an RPC issue requester) by running: [BankOfCordaDriver] --role ISSUE_CASH_RPC Similar to 3 above, but using RPC as the remote communications mechanism.
Developer notes
Testing of the Bank of Corda application is demonstrated at two levels:
- Unit testing the flow uses the [LedgerDSL] and [MockServices]
- Integration testing via RPC and HTTP uses the [Driver] DSL to launch standalone node instances
Security The RPC API requires a client to pass in user credentials: client.start("user1","test") which are validated on the Bank of Corda node against those configured at node startup: User("user1", "test", permissions = setOf(startFlowPermission<IssuerFlow.IssuanceRequester>())) startNode("BankOfCorda", rpcUsers = listOf(user))
Notary We are using a [SimpleNotaryService] in this example, but could easily switch to a [ValidatingNotaryService]
Future
The Bank of Corda node will become an integral part of other Corda samples that require initial issuance of some asset.
Further Reading
Tutorials and developer docs for Cordapps and Corda are here.