mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
This is an example on how to represent and implement basic interest rate swap handling using fabric. It demonstrates the usage of state-based endorsement. Change-Id: I04e631299d95262e54e1532489766aa20477064c Signed-off-by: Matthias Neugschwandtner <eug@zurich.ibm.com> Signed-off-by: Alessandro Sorniotti <ale.linux@sopit.net> Signed-off-by: David Enyeart <enyeart@us.ibm.com>
123 lines
5.2 KiB
Bash
Executable file
123 lines
5.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
DELAY="3"
|
|
TIMEOUT="10"
|
|
VERBOSE="false"
|
|
COUNTER=1
|
|
MAX_RETRY=5
|
|
|
|
CC_SRC_PATH="irscc/"
|
|
|
|
createChannel() {
|
|
CORE_PEER_LOCALMSPID=partya
|
|
CORE_PEER_ADDRESS=irs-partya:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/partya.example.com/users/Admin@partya.example.com/msp
|
|
echo "===================== Creating channel ===================== "
|
|
peer channel create -o irs-orderer:7050 -c irs -f ./channel-artifacts/channel.tx
|
|
echo "===================== Channel created ===================== "
|
|
}
|
|
|
|
joinChannel () {
|
|
for org in partya partyb partyc auditor rrprovider
|
|
do
|
|
CORE_PEER_LOCALMSPID=$org
|
|
CORE_PEER_ADDRESS=irs-$org:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/$org.example.com/users/Admin@$org.example.com/msp
|
|
echo "===================== Org $org joining channel ===================== "
|
|
peer channel join -b irs.block -o irs-orderer:7050
|
|
echo "===================== Channel joined ===================== "
|
|
done
|
|
}
|
|
|
|
installChaincode() {
|
|
for org in partya partyb partyc auditor rrprovider
|
|
do
|
|
CORE_PEER_LOCALMSPID=$org
|
|
CORE_PEER_ADDRESS=irs-$org:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/$org.example.com/users/Admin@$org.example.com/msp
|
|
echo "===================== Org $org installing chaincode ===================== "
|
|
peer chaincode install -n irscc -v 0 -l golang -p ${CC_SRC_PATH}
|
|
echo "===================== Org $org chaincode installed ===================== "
|
|
done
|
|
}
|
|
|
|
instantiateChaincode() {
|
|
CORE_PEER_LOCALMSPID=partya
|
|
CORE_PEER_ADDRESS=irs-partya:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/partya.example.com/users/Admin@partya.example.com/msp
|
|
echo "===================== Instantiating chaincode ===================== "
|
|
peer chaincode instantiate -o irs-orderer:7050 -C irs -n irscc -l golang -v 0 -c '{"Args":["init","auditor","100000","rrprovider","myrr"]}' -P "AND(OR('partya.peer','partyb.peer','partyc.peer'), 'auditor.peer')"
|
|
echo "===================== Chaincode instantiated ===================== "
|
|
}
|
|
|
|
setReferenceRate() {
|
|
CORE_PEER_LOCALMSPID=rrprovider
|
|
CORE_PEER_ADDRESS=irs-rrprovider:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/rrprovider.example.com/users/User1@rrprovider.example.com/msp
|
|
echo "===================== Invoking chaincode ===================== "
|
|
peer chaincode invoke -o irs-orderer:7050 -C irs --waitForEvent -n irscc --peerAddresses irs-rrprovider:7051 -c '{"Args":["setReferenceRate","myrr","300"]}'
|
|
echo "===================== Chaincode invoked ===================== "
|
|
}
|
|
|
|
createSwap() {
|
|
CORE_PEER_LOCALMSPID=partya
|
|
CORE_PEER_ADDRESS=irs-partya:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/partya.example.com/users/User1@partya.example.com/msp
|
|
echo "===================== Invoking chaincode ===================== "
|
|
peer chaincode invoke -o irs-orderer:7050 -C irs --waitForEvent -n irscc --peerAddresses irs-partya:7051 --peerAddresses irs-partyb:7051 --peerAddresses irs-auditor:7051 -c '{"Args":["createSwap","myswap","{\"StartDate\":\"2018-09-27T15:04:05Z\",\"EndDate\":\"2018-09-30T15:04:05Z\",\"PaymentInterval\":395,\"PrincipalAmount\":10,\"FixedRate\":400,\"FloatingRate\":500,\"ReferenceRate\":\"myrr\"}", "partya", "partyb"]}'
|
|
echo "===================== Chaincode invoked ===================== "
|
|
}
|
|
|
|
calculatePayment() {
|
|
CORE_PEER_LOCALMSPID=partya
|
|
CORE_PEER_ADDRESS=irs-partya:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/partya.example.com/users/User1@partya.example.com/msp
|
|
echo "===================== Invoking chaincode ===================== "
|
|
peer chaincode invoke -o irs-orderer:7050 -C irs --waitForEvent -n irscc --peerAddresses irs-partya:7051 --peerAddresses irs-partyb:7051 -c '{"Args":["calculatePayment","myswap"]}'
|
|
echo "===================== Chaincode invoked ===================== "
|
|
}
|
|
|
|
settlePayment() {
|
|
CORE_PEER_LOCALMSPID=partyb
|
|
CORE_PEER_ADDRESS=irs-partyb:7051
|
|
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/partyb.example.com/users/User1@partyb.example.com/msp
|
|
echo "===================== Invoking chaincode ===================== "
|
|
peer chaincode invoke -o irs-orderer:7050 -C irs --waitForEvent -n irscc --peerAddresses irs-partya:7051 --peerAddresses irs-partyb:7051 -c '{"Args":["settlePayment","myswap"]}'
|
|
echo "===================== Chaincode invoked ===================== "
|
|
}
|
|
|
|
## Create channel
|
|
sleep 1
|
|
echo "Creating channel..."
|
|
createChannel
|
|
|
|
## Join all the peers to the channel
|
|
echo "Having all peers join the channel..."
|
|
joinChannel
|
|
|
|
## Install chaincode on all peers
|
|
echo "Installing chaincode..."
|
|
installChaincode
|
|
|
|
# Instantiate chaincode
|
|
echo "Instantiating chaincode..."
|
|
instantiateChaincode
|
|
|
|
echo "Setting myrr reference rate"
|
|
sleep 3
|
|
setReferenceRate
|
|
|
|
echo "Creating swap between A and B"
|
|
createSwap
|
|
|
|
echo "Calculate payment information"
|
|
calculatePayment
|
|
|
|
echo "Mark payment settled"
|
|
settlePayment
|
|
|
|
echo
|
|
echo "========= IRS network sample setup completed =========== "
|
|
echo
|
|
|
|
exit 0
|