-
Notifications
You must be signed in to change notification settings - Fork 90
Quick Start
We provide scripts for a quick interchain demo between two Fabric chains, which
include deploy and start Fabric blockchain, interchain gateway(Piers), and relay-chain(BitXHub).
Before running the interchain network, the necessary software like Golang and Docker should be installed. Make sure that the environment variables such as $GOPATH
, $GOBIN
are set correctly.
After the above software is installed, we provide scripts to install and start two simple Fabric network.
Download and start Fabric network script(ffn.sh).
wget https://github.com/meshplus/goduck/raw/master/scripts/quick_start/ffn.sh
Start Fabric network:
Noting: Follow the instruction and confirm the config during script running.
// If local Fabric network is already running, shut it down first. Otherwise, ignore the command.
bash ffn.sh down
// Start two Fabric network(appchain A and B).
bash ffn.sh up
Noting: After the script running, there will be crypto-config
and crypto-configB
created in the present directory, The chaincode.sh
and fabric_pier.sh
showed below require the folders placed in the executing directory.
Download chaincode
script(chaincode.sh):
wget https://raw.githubusercontent.com/meshplus/goduck/master/scripts/quick_start/chaincode.sh
Copy crypto-config
and crypto-configB
folder into the present directory, and run the following commands:
// appchain A deploys chaincode
// -c: Special configurations file for connecting to the fabric network, the default is config.yaml.
bash chaincode.sh install
//appchain B deploys chaincode
bash chaincode.sh install -c 'configB.yaml'
This command will deploy three chaincode
(broker
, transfer
, anddata_swapper
) on the Fabric network.
After deploying, use the following command to check whether the deploying is success.
// Query Alice's balance in appchain A.
// The previous step init an account called Alice which has 10000 balance.
// -c: Special configurations file for connecting to the fabric network, the default is config.yaml.
bash chaincode.sh get_balance -c 'config.yaml'
****************************************************************************************************
***** | Response[0]: //peer0.org2.example.com
***** | | Payload: 10000
***** | Response[1]: //peer1.org2.example.com
***** | | Payload: 10000
****************************************************************************************************
// Query Alice's balance in appchain B.
bash chaincode.sh get_balance -c 'configB.yaml'
****************************************************************************************************
***** | Response[0]: //peer0.org2.example1.com
***** | | Payload: 10000
***** | Response[1]: //peer1.org2.example1.com
***** | | Payload: 10000
****************************************************************************************************
BitXHub start script relies on golang and tmux. Please install the software before start.
Use commands below to clone the project:
git clone git@github.com:meshplus/bitxhub.git
BitXHub also relies on some small tools, use commands below to install:
cd bitxhub
git checkout v1.0.0-rc1
bash scripts/prepare.sh
Finally, run the following commands to start a four nodes relay-chain.
make cluster
Noting: make cluster
will use tmux
to split the screen. Thus, during commands processing, better not switch the terminal.
Download the related script(fabric_pier.sh):
wget https://github.com/meshplus/goduck/raw/master/scripts/quick_start/fabric_pier.sh
Run the following commands to start the pier:
// Start the interchain gateway to connect the app-chain A and BitXHub.
// -r: interchain gateway startup directory, default is .pier directory.
// -c: fabric organization certificate directory, the default is crypto-config.
// -g: Specify the configuration file for fabric cli connection, the default is config.yaml.
// -p: start port of the interchain gateway, the default is 8987.
// -b: GRPC address of the relay chain, the default is localhost: 60011.
// -o: pprof port, default is 44555.
bash fabric_pier.sh start -r '.pier' -c 'crypto-config' -g 'config.yaml' -p 8987 -b 'localhost:60011' -o 44555
// Start the interchain gateway to connect the app-chain B and BitXHub.
bash fabric_pier.sh start -r '.pierB' -c 'crypto-configB' -g 'configB.yaml' -p 8988 -b 'localhost:60011' -o 44556
Using the following commands to get the corresponding ID of the appchain which connected to the pier.
//ID of appchain A
bash fabric_pier.sh id -r '.pier'
//ID of appchain B
bash fabric_pier.sh id -r '.pierB'
Noting: The interchain commands require the ID.
Using the chaincode.sh
which downloaded in Deploy Interchain Contract section to invoke relative chaincode
.
- Query the balance of Alice
// Query Alice's balance in appchain A
// -c:Specify the configuration file for fabric cli connection, the default is config.yaml.
bash chaincode.sh get_balance -c 'config.yaml'
****************************************************************************************************
***** | Response[0]: //peer0.org2.example.com
***** | | Payload: 10000
***** | Response[1]: //peer1.org2.example.com
***** | | Payload: 10000
****************************************************************************************************
// Query Alice's balance in appchain B
bash chaincode.sh get_balance -c 'configB.yaml'.
****************************************************************************************************
***** | Response[0]: //peer0.org2.example1.com
***** | | Payload: 10000
***** | Response[1]: //peer1.org2.example1.com
***** | | Payload: 10000
****************************************************************************************************
- Send an interchain balance transaction
The following commands will transfer one Alice's token from one appchain to another.
// -c:Specify the configuration file for fabric cli connection, the default is config.yaml.
// -t: ID of destination chain (ID of appchain B)
bash chaincode.sh interchain_transfer -c 'config.yaml' -t <target_appchain_id>
- Query Balance
We query the balance of Alice on both app-chains:
// Query Alice's balance in the appchain A and find the balance reduced by a dollar.
// -c:Specify the configuration file for fabric cli connection, the default is config.yaml.
bash chaincode.sh get_balance -c 'config.yaml'
****************************************************************************************************
***** | Response[0]: //peer0.org2.example.com
***** | | Payload: 9999
***** | Response[1]: //peer1.org2.example.com
***** | | Payload: 9999
****************************************************************************************************
// Query Alice's balance in the application appchain B and find that the balance increased by a dollar.
bash chaincode.sh get_balance -c 'configB.yaml'
****************************************************************************************************
***** | Response[0]: //peer0.org2.example1.com
***** | | Payload: 10001
***** | Response[1]: //peer1.org2.example1.com
***** | | Payload: 10001
****************************************************************************************************
Noting: chaincode.sh
calls the different Fabric networks, which means the different crypto-config
folders are required. Attention the differentiation