This guide explains how to run test-network-k8s
with the BFT consensus type.
In the current test-network-k8s
, a Fabric network with three orderers managed by Org0 is started when using the Raft consensus type. In contrast, when specifying BFT, the network starts with four orderers (org0-orderer1
, org0-orderer2
, org0-orderer3
, and org0-orderer4
) with the BFT consensus type.
Since BFT Orderers are supported only in Fabric v3.0 and later, you must specify 3.0
or later for the TEST_NETWORK_FABRIC_VERSION
environment variable. Additionally, set TEST_NETWORK_ORDERER_TYPE
to bft
to start the Fabric network and create a channel with BFT consensus type. For example:
export TEST_NETWORK_FABRIC_VERSION=3.0
export TEST_NETWORK_ORDERER_TYPE=bft
./network kind
./network cluster init
./network up
./network channel create
The configtx.yaml
template used for constructing the channel genesis block with BFT consensus type can be found here.
After creating the channel with the BFT consensus type, you can deploy and interact with chaincode. For example:
./network chaincode deploy asset-transfer-basic ../asset-transfer-basic/chaincode-java
./network chaincode invoke asset-transfer-basic '{"Args":["InitLedger"]}'
./network chaincode query asset-transfer-basic '{"Args":["ReadAsset","asset1"]}'
If you encounter issues, try the following troubleshooting steps.
First, run the following command to verify that the environment variables are correctly applied and that the Fabric image and binary versions match:
$ ./network
Fabric image versions: Peer (3.0.0), CA (1.5.13)
Fabric binary versions: Peer (3.0.0), CA (1.5.13)
--- Fabric Information
Fabric Version : 3.0
Fabric CA Version : 1.5
Container Registry : hyperledger
Network name : test-network
Ingress domain : localho.st
Channel name : mychannel
Orderer type : bft
(...)
If old Fabric binaries or network artifacts remain, they may cause issues. In such cases, clean up the environment using the following commands:
./network down
./network unkind
rm -r bin