From 63a4856b381004105ad45cd667c98ad42be741e2 Mon Sep 17 00:00:00 2001 From: Paul O'M Date: Sun, 22 Nov 2020 14:25:36 +0000 Subject: [PATCH] Add further README changes from #335 Signed-off-by: Paul O'M --- commercial-paper/README.md | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/commercial-paper/README.md b/commercial-paper/README.md index 272d9966..90336f2b 100644 --- a/commercial-paper/README.md +++ b/commercial-paper/README.md @@ -4,7 +4,7 @@ ## Introduction -This folder contains a structured set of smart contracts and application clients (ie. in a choice of languages, eg Node.JS, Java, Go etc) relating to *Commercial Paper*, a finance 'instrument' (in Global Finance). The sample contract also provide a range of queries to try out, to consolidate what you learn when you execute transactions during the tutorial. +This folder contains a structured set of smart contracts and application clients (ie. in a choice of languages, eg Node.JS, Java, Go etc) relating to *Commercial Paper*, a finance 'instrument' (in Global Finance). At present, the Node.JS sample contract in particular has further added functionality: an optional two-step authority check (see diagram below), when redeeming a commercial paper instance -and a range of sample ledger queries, to help consolidate your learning - both can be explored using the Node.js application client. While a more detailed 'explainer' of the Commercial Paper scenario (including use case analysis, code walkthrough & practices, logical/physical representation of ledger data etc) can be found in the [Hyperledger Fabric Commercial Paper Tutorial](https://hyperledger-fabric.readthedocs.io/en/latest/tutorial/commercial_paper.html), you don't have to read through this, just to try out this sample. There's also a [Wikipedia page](https://en.wikipedia.org/wiki/Commercial_paper) @@ -14,7 +14,7 @@ While a more detailed 'explainer' of the Commercial Paper scenario (including us * explore the key 'takeaways': understand differences between asset _state_ changes ('e.g. 'lifecycle') and transaction _inputs_* (e.g. 'inputs' during lifecycle) - * try out a number of different query types: asset history, asset state, ownership, partial key, named query (criteria-based), ad-hoc queries (you supply a query) + * try out a number of different query types: asset history, asset state, ownership, partial key, named query (criteria-based), ad-hoc queries (you supply a query string) - presently available in the Node.JS sample only. \* the smart contract uses these (along with business logic) to decide outcomes; some inputs change the asset _state_ (like 'ownership') ; some don't. @@ -88,10 +88,10 @@ The tutorial exercises the commercial paper asset lifecycle: _issue_, _buy_ ( 1 Client applications (CLI based) are used: - to perform the transactions -- run queries -- examine the transaction inputs (as opposed to _states_) that are written to the ledger after you perform a transaction. +- run queries (using the Node.JS client sample) +- examine the transaction inputs (as opposed to _states_) that are written to the ledger after you perform a transaction (using the Node.JS listener). -It uses the `test-network` (which is part of Fabric Samples). You’ll act as Isabella, an employee of MagnetoCorp (Org2), who will issue a commercial paper on its behalf. You’ll then switch hats to take the role of Balaji, an employee of DigiBank (Org1), who will buy this commercial paper, hold it for a period of time, and then redeem it with MagnetoCorp for a small profit or yield. Then later, you'll query the ledger - that's it :-) +This sample uses the `test-network` . You’ll act as Isabella, an employee of MagnetoCorp (Org2), who will issue a commercial paper on its behalf. You’ll then 'switch hats' to take the role of Balaji, an employee of DigiBank (Org1), who will buy this commercial paper, hold it for a period of time, and then redeem it with MagnetoCorp for a small profit or yield. Note that the smart contract sample doesn't enforce the actual hold period ; the user can, in fact, redeem the paper immediately. ## Quick Start @@ -123,7 +123,7 @@ This `README.md` file is in the `commercial-paper` directory, the source code fo You will need a machine with the following - Docker and docker-compose installed -- Node.js v12 if you want to run JavaScript client applications +- Node.JS v12 if you want to run JavaScript client applications - Java v8 if you want to run Java client applications - Maven to build the Java applications @@ -209,6 +209,9 @@ Running in MagnetoCorp directory: # MAGNETOCORP peer lifecycle chaincode package cp.tar.gz --lang node --path ./contract --label cp_0 +# or for the Java contract sample: +# peer lifecycle chaincode package cp.tar.gz --lang java --path ./contract-java --label cp_0 + peer lifecycle chaincode install cp.tar.gz export PACKAGE_ID=$(peer lifecycle chaincode queryinstalled --output json | jq -r '.installed_chaincodes[0].package_id') @@ -229,13 +232,16 @@ peer lifecycle chaincode approveformyorg --orderer localhost:7050 --ordererTLSH peer lifecycle chaincode checkcommitreadiness --channelID mychannel --name papercontract -v 0 --sequence 1 ``` -Running in Digibank +Running in Digibank directory: ``` # DIGIBANK peer lifecycle chaincode package cp.tar.gz --lang node --path ./contract --label cp_0 +# or for the Java contract sample: +# peer lifecycle chaincode package cp.tar.gz --lang java --path ./contract-java --label cp_0 + peer lifecycle chaincode install cp.tar.gz export PACKAGE_ID=$(peer lifecycle chaincode queryinstalled --output json | jq -r '.installed_chaincodes[0].package_id') @@ -613,11 +619,11 @@ java -cp target/commercial-paper-0.0.1-SNAPSHOT.jar org.digibank.Redeem -**
Perform Queries: Ownership, Asset History etc** +**
Perform Queries: Ownership, Asset History etc (Node.JS sample only) ** - Having completed the full commercial paper lifecycle for one paper (paper number: 00001) some queries below won't show a lot of data - as an optional exercise, you can change the scripts above (paper number: 00002) to create another paper lifecycle and run the `queryapp` application below (change query 1 to the new CP number FYI), with more data available. + Having completed the full commercial paper lifecycle for one paper (paper number: 00001) some queries below won't show a lot of data - as an optional exercise, you can change the scripts above (paper number: 00002) to create another paper lifecycle and run the `queryapp` application below (change query 1 to the new CP number FYI), with more data available. As indicated, the query transactions mentioned are presently only available in the Node.JS sample. - Execute the following query script, which will run the following 5 queries, in order: + Execute the Node.JS application client script, which will run the following 5 queries, in order: - History of Commercial Paper (Note: the paper state is shown more descriptively eg. 'ISSUED', 'TRADING' and based on currentState values on ledger) - Ownership of Commercial Papers @@ -634,7 +640,7 @@ java -cp target/commercial-paper-0.0.1-SNAPSHOT.jar org.digibank.Redeem

-When you're done with this section, return to the terminal where your _listener_ application is running, and terminate the process. +When you're done with this section, return to the terminal where your Node.JS _listener_ application is running, and terminate the process. ## Clean up When you are finished using the Fabric test network and the commercial paper smart contract and applications, you can use the following command to clean up the network: