Tools, FAQ, Tutorials:
papercontract.js - PaperNet Chaincode (Smart Contract)
What is the PaperNet Chaincode (Smart Contract), papercontract.js?
✍: FYIcenter.com
papercontract.js is the chaincode (or smart contract) for the PaperNet
written in Node.js language.
1. View papercontract.js source code:
(magnetocorp admin)$ cd ~/hyperledger-binaries/fabric-samples (magnetocorp admin)$ cd commercial-paper/organization/magnetocorp/contract (magnetocorp admin)$ more lib/papercontract.js /* SPDX-License-Identifier: Apache-2.0 */ 'use strict'; // Fabric smart contract classes const { Contract, Context } = require('fabric-contract-api'); // PaperNet specific classes const CommercialPaper = require('./paper.js'); const PaperList = require('./paperlist.js'); /** A custom context provides easy access to list of all commercial papers */ class CommercialPaperContext extends Context { constructor() { super(); // All papers are held in a list of papers this.paperList = new PaperList(this); } } /** Define commercial paper smart contract by extending Fabric Contract class * */ class CommercialPaperContract extends Contract { constructor() { // Unique namespace when multiple contracts per chaincode file super('org.papernet.commercialpaper'); } createContext() { return new CommercialPaperContext(); } /** Instantiate to perform any setup of the ledger that might be required. * @param {Context} ctx the transaction context */ async instantiate(ctx) { // No implementation required with this example // It could be where data migration is performed, if necessary console.log('Instantiate the contract'); } /** Issue commercial paper * * @param {Context} ctx the transaction context * @param {String} issuer commercial paper issuer * @param {Integer} paperNumber paper number for this issuer * @param {String} issueDateTime paper issue date * @param {String} maturityDateTime paper maturity date * @param {Integer} faceValue face value of paper */ async issue(ctx, issuer, paperNumber, issueDateTime, maturityDateTime, faceValue) { ... return paper.toBuffer(); } /** Buy commercial paper * * @param {Context} ctx the transaction context * @param {String} issuer commercial paper issuer * @param {Integer} paperNumber paper number for this issuer * @param {String} currentOwner current owner of paper * @param {String} newOwner new owner of paper * @param {Integer} price price paid for this paper * @param {String} purchaseDateTime time paper was purchased (i.e. traded) */ async buy(ctx, issuer, paperNumber, currentOwner, newOwner, price, purchaseDateTime) { ... return paper.toBuffer(); } /** Redeem commercial paper * * @param {Context} ctx the transaction context * @param {String} issuer commercial paper issuer * @param {Integer} paperNumber paper number for this issuer * @param {String} redeemingOwner redeeming owner of paper * @param {String} redeemDateTime time paper was redeemed */ async redeem(ctx, issuer, paperNumber, redeemingOwner, redeemDateTime) { ... return paper.toBuffer(); } } module.exports = CommercialPaperContract;
As you can see, papercontract.js offers 3 functions: issue, buy and redeem for the PaperNet chaincode. Client applications can submit transactions correspondingly to issue, buy and redeem commercial paper on the ledger.
⇒ Install PaperNet Chaincode (Smart Contract)
⇐ Start CLI Container for MagnetoCorp Admin
2019-12-02, 1344🔥, 0💬
Popular Posts:
What validation keywords I can use in JSON Schema to specifically validate JSON Array values? The cu...
How to build a test service operation to dump everything from the "context.Request" object in the re...
Where to find tutorials on JSON (JavaScript Object Notation) text string format? I want to know how ...
How to pull NVIDIA CUDA Docker Image with the "docker image pull nvidia/cuda" command? If you are ru...
How to use the "@(...)" expression in Azure API Policy? The "@(...)" expression in Azure API Policy ...