Bootstrap

fabric 2.3 手动搭建网络&安装chaincode智能合约

搭建好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 startpeer 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/[email protected]/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/[email protected]/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配置文件换到了我的虚拟机上,发现就可以运行了,后续在寻找一下到底是哪里写的不对。

各组织审议合约:
在这里插入图片描述
在这里插入图片描述
通道审议合约:
在这里插入图片描述
调用合约成功:
在这里插入图片描述

;