Asset Exchange: Fabric with Fabric
One Fabric network transfers a bond from Alice to Bob in exchange for a transfer of tokens from Bob to Alice in the other network Ensure that one of the following chaincodes have been deployed in both networks:
simpleasset
simpleassetandinterop
simpleassettransfer
Run the following steps:
Notes |
---|
The hash used in following steps can be replaced by any valid SHA256 hash. |
- Navigate to either the
samples/fabric/fabric-cli
folder (for the Node.js version) or thesamples/fabric/go-cli
folder (for the Golang version) in your clone of the Weaver repository. - Run the following to verify the status of the assets owned by
alice
andbob
in the two networks:./scripts/getAssetStatus.sh 2
- Complete the asset exchange in either of the two different ways:
- Using a single command:
- Run the following to trigger exchange of bond
bond01:a03
owned byalice
innetwork1
with100
units of tokenstoken1
owned bybob
innetwork2
:./bin/fabric-cli asset exchange-all --network1=network1 --network2=network2 --secret=secrettext --timeout-duration=100 alice:bond01:a03:bob:token1:100
- To verify that
bob
now owns a bond in exchange foralice
owning some tokens, run the following:./scripts/getAssetStatus.sh 2
- Run the following to trigger exchange of bond
- Using step-by-step commands:
- Generate Secret-Hash Pair using following command (prints hash in base64):
./bin/fabric-cli hash --hash_fn=SHA256 secrettext
- Run the following to trigger
alice
lockingbond01:a03
forbob
innetwork1
./bin/fabric-cli asset exchange lock --timeout-duration=3600 --locker=alice --recipient=bob --hashBase64=ivHErp1x4bJDKuRo6L5bApO/DdoyD/dG0mAZrzLZEIs= --target-network=network1 --param=bond01:a03
- Run the following to verify
alice
's lock:./bin/fabric-cli asset exchange is-locked --locker=alice --recipient=bob --target-network=network1 --param=bond01:a03
- Run the following to trigger
bob
locking100
units oftoken1
foralice
innetwork2
:Note the./bin/fabric-cli asset exchange lock --fungible --timeout-duration=1800 --locker=bob --recipient=alice --hashBase64=ivHErp1x4bJDKuRo6L5bApO/DdoyD/dG0mAZrzLZEIs= --target-network=network2 --param=token1:100
contract-id
printed as output in above command. The output line containingcontract-id
(text in base64 afterContract Id:
) would like this:ℹ Fungible Asset Locked with Contract Id: E0JZq8Z+eS//2Bt4WU0pU210MvNgDC2hdUT1RgszOq0=, preimage: null, hashvalue: ivHErp1x4bJDKuRo6L5bApO/DdoyD/dG0mAZrzLZEIs=
- Run the following to verify
bob
's lock:./bin/fabric-cli asset exchange is-locked --fungible --locker=bob --recipient=alice --target-network=network2 --contract-id=<contract-id>
- Run the following to trigger
alice
's claim for100
units oftoken1
locked bybob
innetwork2
:./bin/fabric-cli asset exchange claim --fungible --recipient=alice --target-network=network2 --contract-id=<contract-id> --secret=<hash-pre-image>
- Run the following to trigger
bob
's claim forbond01:a03
locked byalice
innetwork1
:./bin/fabric-cli asset exchange claim --recipient=bob --locker=alice --target-network=network1 --param=bond01:a03 --secret=<hash-pre-image>
- If
alice
wants to unlock the bond asset, run the following to triggeralice
's re-claim forbond01:a03
locked innetwork1
:./bin/fabric-cli asset exchange unlock --locker=alice --recipient=bob --target-network=network1 --param=bond01:a03
- If
bob
wants to unlock the token asset, run the following to triggerbob
's re-claim fortoken1:100
locked innetwork2
:./bin/fabric-cli asset exchange unlock --fungible --locker=bob --target-network=network2 --contract-id=<contract-id>
- Generate Secret-Hash Pair using following command (prints hash in base64):
- Using a single command: