ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Fabric手动部署first-network

2021-08-03 12:04:10  阅读:332  来源: 互联网

标签:network Fabric org2 peer org1 com example channel first


    在Fabric v1.4~v2.3版本里,有个first-network案例,运行first-network/byfn.sh脚本就可以测试当前fabric 单机网络是否安装成功。这里,使用手动部署的方式,来取代自动化部署。
 软件环境如下:
    fabric-samples v1.4.3
    fabric v1.4.3
    fabric ca v1.4.3
    Ubuntu 16.04

1、备份first-network,然后精简first-network

    a)备份first-network

cd $GOPATH/src/github.com/hyperledger/fabric-samples
tar -czvf first-network_0803_bak.tar.gz first-network

    b)精简first-network
去掉不相干的.yaml和文件夹,精简之后的first-network,如下所示:

图(1) 精简first-network文件夹
    2个文件夹+7个.yaml文件。

2、用工具生成证书、创世区块、通道配置、锚节点文件

2.1 制作身份证书

    使用 cryptogen 工具将文件 crypto-config.yaml 作为参数配置生成组织结构与身份证书

cd ./fabric-sample/first-network
../bin/cryptogen generate --config=./crypto-config.yaml

2.2 生成创世区块

## 使能FABRIC_CFG_PATH 变量
export FABRIC_CFG_PATH=$PWD

## 生成创世区块
../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block

2.3 生成通道配置文件

    创建一个mychannel的通道,并生成通道配置文件channel.tx,其保存在first-network/channel-artifacts目录下。

export CHANNEL_NAME=mychannel && ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

2.4 生成2个组织的锚节点文件

../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP

../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP

3、启动分布式网络

    使用 docker-compose 工具将 docker-compose-cli.yaml 文件作为参数,启动提供网络服务的各个节点

cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
docker-compose -f docker-compose-cli.yaml up -d

4、创建通道,把节点加入通道

4.1 创建通道

    a) 进入cli容器

docker exec -it cli bash 

    b) 设置环境变量

export CHANNEL_NAME=mychannel
export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

    c) 根据环境变量,来创建通道

peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile $ORDERER_CA

4.2 加入通道

    a) peer0.org1加入通道
由于cli 容器默认为peer0.org1,所以可以直接加入通道。

peer channel join -b mychannel.block

    b) peer1.org1加入通道
peer1.org1与peer0.org1只有peer的地址不相同,修改即可,然后加入通道。

CORE_PEER_ADDRESS=peer1.org1.example.com:8051
peer channel join -b mychannel.block

    c)peer0.org2 加入通道

    由于peer0.org2是在org2里,当前cli是org1,所以需要切换peer参数。

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ADDRESS=peer0.org2.example.com:9051
CORE_PEER_LOCALMSPID="Org2MSP"
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

peer channel join -b mychannel.block

d) peer1.org2加入通道

CORE_PEER_ADDRESS=peer1.org2.example.com:10051
peer channel join -b mychannel.block

5、更新锚节点,并安装链码

    每个组织里只有一个锚节点,它负责跨组织通信。现在有2个组织:org1、org2,所以只需要为这2个组织分别设置一锚节点即可。

5.1 将peer0.org1 更新为org1里的锚节点,并安装链码

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile $ORDERER_CA
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/

5.2 将peer0.org2 更新为org2里的锚节点,并安装链码

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
CORE_PEER_ADDRESS=peer0.org2.example.com:9051
CORE_PEER_LOCALMSPID="Org2MSP"
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

peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile $ORDERER_CA
peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/

6、实例化链码,并测试

    a) 实例化

peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

    b) 查询

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

    c) 调用

peer chaincode invoke -o orderer.example.com:7050 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'

效果如下:

图(2) 在order上实例化链码,并调用

    d) 在peer1.org1上也安装链码,并测试

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer1.org1.example.com:8051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls/ca.crt

peer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/

    查询a的值

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

    效果如下:

图(3) 在peer1.org1上安装链码,并调用

6、关闭和清空fabric网络

    使用指定的 docker-compose-cli.yaml 配置文件关闭网络:

sudo docker-compose -f docker-compose-cli.yaml down --volumes 

    清空channel-artifacts文件夹,只保留空文件夹;删除整个crypto-config文件。

sudo rm -r channel-artifacts crypto-config

标签:network,Fabric,org2,peer,org1,com,example,channel,first
来源: https://blog.csdn.net/sanqima/article/details/119346016

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有