This gives an example on how to run your FPC Chaincode with a simple testing network build with the Fabric Smart Client. The network is specified in pkg/topology/fabric.go.
Before we run the network, let's make sure we have built the Enclave Registry (ERCC) Container Images and a FPC Chaincode Container Image. In this example we use the FPC kvs-test-go sample chaincode.
Build ERCC image:
make -C $FPC_PATH/ercc all docker
Build the kv-test-go chaincode:
export CC_NAME=kv-test-go
export CC_PATH=$FPC_PATH/samples/chaincode/kv-test-go
make -C $CC_PATH build docker
To run the Fabric network we need the Fabric binaries. We will use the following:
make -C $FPC_PATH/fabric
export FAB_BINS=$FPC_PATH/fabric/_internal/bin
Additionally, we want to use the Hyperledger blockchain explorer to visualize the network activity. Get the following docker images:
docker pull hyperledger/explorer:latest
docker pull hyperledger/explorer-db:latest
make run
# OR
go run . network start --path ./testdata
Once the network is up and running, use a second terminal to interact with the network.
Uou can shut down the network using CTRL+C
.
To clean up the network you can run make clean
or go run . network clean --path ./testdata
.
In this sample we use the simple FPC Cli tool to invoke functions of our FPC Chaincode.
You can also use $FPC_PATH/samples/application/simple-cli-go
instead of the simple-go application.
# Make fpcclient
cd $FPC_PATH/samples/application/simple-cli-go
make
# Run the following script and source the resulting environment variables
export CC_NAME=kv-test-go
$FPC_PATH/samples/deployment/fabric-smart-client/the-simple-testing-network/env.sh Org1
source Org1.env
# Interact with the FPC Chaincode
export FABRIC_LOGGING_SPEC=warning
./fpcclient invoke put_state hello world
./fpcclient query get_state hello
You can switch the user by running ./env.sh
either with Org1
or Org2
.
The test network includes a Hyperledger Blockchain explorer that you can use to see what is happening on the network.
By default, you can reach the Blockchain Explorer Dashboard via your browser on http://localhost:8080
with username admin
and password admin
.
Sometimes something goes wrong. This is a collection of helpful commands to kill dangling network components.
# If the tstn does not find your docker socket automatically, try this!
# You can check via `docker context ls` and set it via the following environment variable.
export DOCKER_HOST=unix://"$HOME/.docker/run/docker.sock"
killall peer
killall orderer
docker ps -a | grep fpc
We also provide shortcuts to run and clean the network:
make clean
make run