Hyperledger Fabric学习笔记——macOS上运行Fabric测试网络

1、运行测试网络(test-network)

#移除之前运行生成的所有容器和工件
./network.sh down
#以默认情况启动网络,生成一个排序节点和两个分属两个组织的对等节点,没有通道
./network.sh up
#通过列出Docker容器来查看生成了哪些工件
docker ps -a

2、创建通道

#有很多中创建方式,下面是默认创建名为mychannel的命令,其他见network.sh -h
./network.sh createChannel

3、在通道上启动链码

#部署fabcar链码到通道mychannel上,默认的是go语言链码,并且调用链码初始化函数写入初始数据
./network.sh deployCC

4、与网络互动

#设置CLI路径使得可以以peerOrg1的形式操作CLI(在test-network目录下)
export PATH=${PWD}/../bin:${PWD}:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
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_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:7051

#从CLI查询账本,运行一下命令以获取已添加到通道账本中的汽车列表
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'

#通过调用fabcar链码来更改账本中汽车的所有者
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls true --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n fabcar --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"changeCarOwner","Args":["CAR9","Dave"]}'

#设置环境变量以作为Org2进行操作
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_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051

#查询在peer0.org2.example.com运行的fabcar链码
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'

5、脚本文件的背后

  • ./network.sh为两个对等组织和orderer组织创建证书和密钥,默认情况下脚本使用位于organizations/cryptogen文件夹中的配置文件来使用cryptogene工具。如果使用-ca标志来建立CA,脚本会使用位于organizations/fabric-ca文件夹中的FabricCA服务配置文件和registerEnroll.sh脚本。cryptogen和Fabric CAs都为三个组织在organizations文件夹中生成了加密材料和MSP文件夹
  • 脚本使用configtxgen工具创建系统通道创世块。Configtxgen consumes the TwoOrgsOrdererGenesis channel profile in the configtx/configtx.yaml file to create the genesis block.这个区块存储在system-genesis-block中。
  • 一旦组织加密材料和系统通道创世区块形成,脚本就可以运行网络的节点了。脚本使用docker文件夹下的docker-compose-test-net.yaml文件来创建对等和orderer节点。
  • 如果使用createChannel子命令,脚本运行scripts文件夹中的createChannel.sh脚本创建一个默认名称的通道。createChannel.sh脚本使用configtx.yaml文件来创建通道创建transaction以及两个锚节点更新的transaction。脚本使用peer cli来创建通道、将peer0.org1和peer0.org2来加入通道,并使这两个节点都成为锚节点。
  • 如果使用了deployCC命令,./network.sh运行deployCC.sh脚本将fabcar链码安装到这两个对等节点上,并在通道上定义链码。一旦链码定义被提交到通道,peer cli使用Init初始化链码,然后掉费用链码将初始化数据放入帐本。

 

发布了23 篇原创文章 · 获赞 0 · 访问量 1262

猜你喜欢

转载自blog.csdn.net/Nemoosi/article/details/104607169