搭建好fabric之后,要在test-network下手动启动一个fabric网络。将下载过来的order和peer1两个文件夹放到~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network目录下。
生成证书文件:
cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output="organizations"
cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output="organizations"
cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output="organizations"
生成创世块:
export FABRIC_CFG_PATH=${PWD}/configtx
configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block
之后便可以去启动order和peer,分别进入order和peer1文件夹下,打开终端输入orderer start
和peer node start
。
我在这里犯了个非常愚蠢的错误,启动order时候报错:Failed to get local msp config: could not load a valid signer certificate from directory /home/user/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/signcerts:…
是因为在配置文件写的/home/user路径中,我自己的用户名不是user,所以当然找不到这个路径了😂
启动成功的终端界面:
生成通道文件并更新锚节点:
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
如果报错 Error on inspectChannelCreateTx: org ‘Org1MSP’ does not have any anchor peers defined,说明configtx.yaml配置文件中的Org1,缺少了锚节点相关的属性:
AnchorPeers:
- Host: peer0.org1.qkltest.com
Port: 7051
安装智能合约
在test-network下打开一个终端切换环境:
export FABRIC_CFG_PATH=/home/user/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/peer1
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:7051
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
再打开一个终端切换环境:
export FABRIC_CFG_PATH=/home/user/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/peer2
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_ADDRESS=localhost:9051
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
创建通道:
peer channel create -o localhost:7050 -c mychannel --ordererTLSHostnameOverride orderer.example.com -f ./configtx/channel-artifacts/mychannel.tx --outputBlock ./configtx/channel-artifacts/mychannel.block –tls --cafile /home/user/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-network/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
加入通道
peer channel join -b ./configtx/channel-artifacts/mychannel.block
这里补充一个点,当打包合约时报错Error: failed to normalize chaincode path: ‘go list’ failed with: error obtaining VCS status: exit status 128
Use -buildvcs=false to disable VCS stamping.: exit status 1
这个应该就是由于权限不足引起的,加一个sudo在前面就行了。
链码终于安装成功了
按照学长GitHub上修改peer配置文件后再重新再重启peer后安装新的chaincode,出现错误
只要一重新创建channel命令,orderer就无法连接,并且报错日志文件
Error: failed to create deliver client for orderer: orderer client failed to connect to localhost:7050: failed to create new connection: context deadline exceeded
学长建议用
sudo ./network.sh down
关闭之前的网络,删掉之前的文件夹,重新试了之后也还是不行
--------------------------------------------分割线-----------------------------------------------------------
2022.5.2
目前的问题还是在让某一节点加入通道的时候,会让这个节点出现连接报错的现象。
检查之后实在不知道是什么环节出现问题,打算再重建个虚拟机试一试。
2022.10.24补充:
评论区大佬说这个加入通道问题可能是此节点已经挂掉,可以用docker ps -a查看一下节点是否是up状态,如果按照文档来的话很少是证书得问题。还有就是可以尝试一下docker-compose down关停docker,然后docker volume prune清空容器内的东西,然后重启网络。
2022.5.10
重装了虚拟机部署之后还是差不多的问题,但是因为peer2的配置文件一直是我自己修改写的。怀疑两个peer不可同时运行那只能是配置文件哪里写的有问题吧,于是将学长的虚拟机上的peer2配置文件换到了我的虚拟机上,发现就可以运行了,后续在寻找一下到底是哪里写的不对。文章来源:https://www.toymoban.com/news/detail-820445.html
各组织审议合约:
通道审议合约:
调用合约成功:
文章来源地址https://www.toymoban.com/news/detail-820445.html
到了这里,关于fabric 2.3 手动搭建网络&安装chaincode智能合约的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!