搭建fabric开发网络
本文写于2021/09/24
启动网络
演示从fabric源码根目录开始,创建一个排序节点和一个peer
节点。
预先准备
使用fabric代码编译二进制文件
make orderer peer configtxgen
export PATH=$(pwd)/build/bin:$PATH
export FABRIC_CFG_PATH=$(pwd)/sampleconfig
configtxgen -profile SampleDevModeSolo -channelID syschannel -outputBlock genesisblock -configPath $FABRIC_CFG_PATH -outputBlock "$(pwd)/config/genesisblock"
启动orderer
在当前窗口启动
export ORDERER_GENERAL_GENESISPROFILE=SampleDevModeSolo
orderer
启动peer
新窗口启动
export PATH=$(pwd)/build/bin:$PATH
export FABRIC_CFG_PATH=$(pwd)/sampleconfig
export FABRIC_LOGGING_SPEC=chaincode=debug
export CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
peer node start --peer-chaincodedev=true
# --peer-chaincodedev表示进入链码开发模式(不启动链码容器,而是本地模式)
创建channel并加入
新建窗口
export PATH=$(pwd)/build/bin:$PATH
export FABRIC_CFG_PATH=$(pwd)/sampleconfig
configtxgen -channelID ch1 -outputCreateChannelTx ch1.tx -profile SampleSingleMSPChannel -configPath $FABRIC_CFG_PATH
peer channel create -o 127.0.0.1:7050 -c ch1 -f ch1.tx
peer channel join -b ch1.block
链码main函数
func main() {
chaincode, err := contractapi.NewChaincode(new(SmartContract))
if err := chaincode.Start(); err != nil {
log.Panicf("error starting my chaincode: %s", err)
}
}
启动链码
这里使用编译后的二进制文件启动,如果使用ide启动,请参考goland配置
或者vscode配置
CORE_CHAINCODE_LOGLEVEL=debug CORE_PEER_TLS_ENABLED=false CORE_CHAINCODE_ID_NAME=mycc:1.0
./simpleChaincode -peer.address 127.0.0.1:7052
安装链码到channel
peer lifecycle chaincode approveformyorg -o 127.0.0.1:7050 --channelID ch1 --name mycc --version 1.0 --sequence 1 --init-required --signature-policy "OR ('SampleOrg.member')" --package-id mycc:1.0
peer lifecycle chaincode checkcommitreadiness -o 127.0.0.1:7050 --channelID ch1 --name mycc --version 1.0 --sequence 1 --init-required --signature-policy "OR ('SampleOrg.member')"
peer lifecycle chaincode commit -o 127.0.0.1:7050 --channelID ch1 --name mycc --version 1.0 --sequence 1 --init-required --signature-policy "OR ('SampleOrg.member')" --peerAddresses 127.0.0.1:7051
调用链码
链码的调用按按实际情况来。
CORE_PEER_ADDRESS=127.0.0.1:7051 peer chaincode invoke -o 127.0.0.1:7050 -C ch1 -n mycc -c '{"Args":["init","a","100","b","200"]}' --isInit
CORE_PEER_ADDRESS=127.0.0.1:7051
peer chaincode invoke -o 127.0.0.1:7050 -C ch1 -n mycc -c '{"Args":["invoke","a","b","10"]}'
CORE_PEER_ADDRESS=127.0.0.1:7051 peer chaincode invoke -o 127.0.0.1:7050 -C ch1 -n mycc -c '{"Args":["query","a"]}'
ide配置
goland配置
在go build
中设置两部分内容
# environment
DEVMODE_ENABLED=true;CORE_CHAINCODE_ID_NAME=mycc:1.0;CORE_PEER_TLS_ENABLED=false
# program arguments
--peer.address 192.168.1.220:7052
vscode配置
{
"version": "0.2.0",
"configurations": [
{
"name": "debug chaincode local",
"type": "go",
"request": "launch",
"mode": "debug",
"program": "${workspaceFolder}",
"env": {
"CORE_CHAINCODE_ID_NAME": "mycc:1.0",
"CORE_PEER_TLS_ENABLED": false
},
"args": ["--peer.address","192.168.1.220:7052"] // 填写链码地址
}
]
}