1.生成认证证书

需要复制crypto-config.yaml到目录

cryptogen generate --config=./crypto-config.yaml

在当前目录下自动生成crypto-config目录,里边存放了所有的证书与密钥,为MSP 提供服务

Name:组织名称

Domain:组织域名

Specs:

​ -Hostname:自定义节点名称

Template:使用模板定义节点名称 peer($Count +1)

​ -Count:节点数量

Users:用户名称 user$Count

​ - Count:用户数量

2.生成起始区块

需要复制configtx.yaml到目录

mkdir channel-artifacts
configtxgen -profile TwoOrgsOrdererGenesis -channelID sys-channel-name -outputBlock ./channel-artifacts/genesis.block

-profile:后边接通道配置名称,从configtx.yaml文件的profiles配置段中寻找相关通道配置名称载入。

-channelID:后边接通道名称,这里定义的是系统通道的名称,建议全小写并且没有特殊字符;

-outputBlock:后边接创世区块输出的文件路径,路径中目录如果不存在,需提前创建;

cd $HOME/fabric-samples/first-network

mkdir -p channel-artifacts

configtx.yaml

该文件总共有六个配置段:

Organizations:定义了各组织机构的名称、MSPID、MSP目录、读写策略等;

Capabilities:能力定义,设定了不同版本的节点所能做的事情;

Application:定义了要写入创世区块或配置交易的应用参数。

Orderer:定义了通道的共识模式与区块的相关信息;

Channel:定义了通道中相关API的调用权限;

Profiles:定义configtxgen工具的相关配置入口;

Organizations:

Name:在网络中的名称

ID:MSP中的唯一ID

MSPDir:msp的相关目录

Policies:读写策略

AnchorPeers:锚节点配置

3.创建通道配置文件

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

4.创建组织锚节点配置文件

创建Org1和Org2阻止锚节点配置文件
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

-profile:后边接通道配置名称,从configtx.yaml文件的profiles配置段中寻找相关通道配置名称载入。

-outputAnchorPeersUpdate:后边接组织锚节点配置文件输出的文件路径;

-channelID:后边接通道名称,这里定义的是业务通道的名称,建议全小写并且没有特殊字符;

-asOrg:后边接所属组织的MSPID,要与configtx.yaml文件中Organizations配置段的定义一致;

锚节点每个组织至少有一个,有多少个锚节点就创建多少个锚节点配置文件

5.启动docker容器

复制scripts文件夹到目录

需要复制docker-compose-cli.yaml和base文件夹到目录

并删除这几个文件里的:$IMAGE_TAG

在peer-base.yaml文件里,第16行,${COMPOSE_PROJECT_NAME}是docker网络命名,这里自己填写

例如改为test-first-network
docker-compose -f docker-compose-cli.yaml up -d
新旧网络冲突

删掉docker-compose-base.yaml文件,第52行

peer0.org1.example.com:/var/hyperledger/production删除

docker操作

查看docker镜像

docker images

查看docker运行的镜像

docker ps -a

查看docker网络列表

docker network ls

查看docker网络信息

docker network inspect testfirstnetwork_byfn

查看 peer0的docker日志

docker logs peer0.org1.example.com

进入cli docker容器

docker exec -it cli bash

查看有哪些数据卷

docker volume ls

6.根据通道配置文件生成通道

docker exec cli peer channel create -o orderer.example.com:7050 -c mychannel --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/msp/tlscacerts/tlsca.example.com-cert.pem -f ./channel-artifacts/channel.tx

-o:与某个排序节点连接;

-c:通道名称;

-f:使用通道配置文件;

--tls:是否开启TLS加密传输协议;

--cafile:服务端的证书文件;

7.将节点加入通道

#"peer0.org1"
docker exec cli peer channel join -b mychannel.block

#"peer1.org1"
docker exec -e "CORE_PEER_ADDRESS=peer1.org1.example.com:7051" cli peer channel join -b mychannel.block

#"peer0.org2"
docker exec -e "CORE_PEER_ADDRESS=peer0.org2.example.com:7051" -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp" cli peer channel join -b mychannel.block

../crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp


#"peer1.org12
docker exec -e "CORE_PEER_ADDRESS=peer1.org2.example.com:7051" /
    -e "CORE_PEER_LOCALMSPID=Org2MSP" /
    -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp" cli peer channel join -b mychannel.block
docker容器里的常用命令
peer

8.根据锚节点配置文件更新锚节点

#"peer0.org1"
docker exec cli peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org1MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

#"peer0.org2"
docker exec -e "CORE_PEER_ADDRESS=peer0.org2.example.com:7051" -e "CORE_PEER_LOCALMSPID=Org2MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/[email protected]/msp" -e "CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" cli peer channel update -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/Org2MSPanchors.tx --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

9.链码安装

docker exec cli peer chaincode install -n mycc -v 1.0 -l golang -p "github.com/chaincode/chaincode_example02/go/"

-n:链码的名字

-v:链码的版本号

-l:编写语言

-p:链码路径

10.实例化链码

docker exec cli peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -l golang -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

-o:与某个排序节点连接;

-l:链码编程语言,使用golang;

--tls:是否开启TLS加密传输协议;

-v:链码版本号,默认1.0;

--cafile:服务端的证书文件;

-c:传输给链码的参数;

-C:通道名称;

-P:背书策略;

-n:链码名称;

11.链码查询

docker exec cli peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

查看go环境变量

go env

设置go代理

go env -w GOPROXY=https://goproxy.io,direct

拉取依赖

go get github.com/gin-gonic/gin
最后修改:2021 年 06 月 04 日 09 : 38 AM
如果觉得我的文章对你有用,请随意赞赏