fabric-samples/full-stack-asset-transfer-guide/docs/ApplicationDev/04-Exercise-AssetTransfer.md
jkneubuh a299e18e26
Moves the Full Stack Asset Transfer Development Guide to fabric-samples (#852)
* Import Full Stack Asset Transfer Guide at commit fb554befdbbeff9e69159b54fce0b811603f29c7

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Update the workshop with a new WORKSHOP_PATH under fabric-samples

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Update the workshop with a new WORKSHOP_PATH under fabric-samples

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* missed a .git ignored directory on add

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Updates to run the workshop on the Apple M1

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Workaround for https://github.com/eslint/eslint/issues/15299 in the contract tslinter

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Build an arch-specific CC images on M1

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* empty commit - force a build

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* revert an accidental commit that was building the top-level asset-transfer as arm64

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>
2022-11-10 10:40:27 -05:00

1.9 KiB

Exercise: Implement asset transfer

Currently, our trader application can only create, read, and delete assets by invoking the CreateAsset(), ReadAsset(), and DeleteAsset() chaincode functions. To really be useful it needs to be able to transfer assets to new owners by invoking the TransferAsset() chaincode function.

There is already a transfer command implemented in transfer.ts, which calls the transferAsset() method on our AssetTransfer class. Unfortunately, this has not yet been implemented and does nothing.

  1. Write an implementation for the transferAsset() method in contract.ts. Look at the API documentation for Contract and other methods within the AssetTransfer class for ideas on how to proceed.

  2. Recompile the application from your updated TypeScript:

    npm install
    

    Tip: You can also leave npm run build:watch running in a terminal window to automatically rebuild your application on any code change.

  3. Try it out! Use the transfer command to transfer assets to new owners with the same MSP ID.

  4. What happens if you try to manipulate (transfer, delete) an asset after transferring it to another MSP ID?

The smart contract contains logic that only allows users in the owning organization to modify assets. It does this by checking that the Member Services Provider (MSP) ID for the client identity invoking the transaction matches the organization MSP ID of the asset owner. If you didn't notice this before, you might want to check out the smart contract code to see how this is implemented.

Optional steps

Implement an update command in the client application to modify the properties of an asset.