Fabric1.4.0网络搭建_手动实现

备注1:下面这两步可以用命令./byfn.sh generate代替
1.根据配置文件手动生成秘钥及创世区块
2.创建必需的应用通道交易配置文件

1.根据配置文件手动生成秘钥及创世区块

1.进入 /fabric-samples-release-1.4/first-network

2.生成证书和密钥,保存在crypto-config 文件夹中。

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

3.配置configtx.yaml位置变量【…】

export FABRIC_CFG_PATH=$PWD

4.使用configtxgen工具生成创世区块(区块生成到first-network/channel-artifacts目录下)

../bin/configtxgen -profile TwoOrgsOrdererGenesis -channelID byfn-sys-channel -outputBlock ./channel-artifacts/genesis.block

2.创建必需的应用通道交易配置文件

5.指定通道名称的环境变量

export CHANNEL_NAME=mychannel

6.生成应用通道交易配置文件

../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME

#####生成锚节点更新配置文件
7.为构建的通道上的Org1定义锚节点

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

8.为构建的通道上的Org2定义锚节点

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

3.启动网络

9.使用配置好了的docker-compose文件关联下载好了的镜像,然后通过前面生成的 genesis.block引导排序节点。

docker-compose -f docker-compose-cli.yaml up -d

关闭网络:docker-compose -f docker-compose-cli.yaml down

4.创建并加入通道

10.执行docker exec命令进入指定的CLI容器

docker exec -it cli bash

11.设置环境变量
查看环境变量是否设置

echo $CHANNEL_NAME

设置环境变量

export CHANNEL_NAME=mychannel

12.创建通道

peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

13.将节点加入应用通道

peer channel join -b mychannel.block

14.使用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 /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

15.使用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 /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

5.链码部分

5.0 链码部分操作时必须要执行的步骤(否则后续操作时会报错)

16.使用命令exit退出CLI容器

exit

17.利用docker-compose命令查看容器是否处于活动状态(一般操作到此处,容器是处于活动状态)

sudo docker ps 

如果没有活动的容器,则先试用docker-compose命令启动网络,然后进入CLI容器
启动网络

sudo docker-compose -f docker-compose-cli.yaml up -d

进入CLI容器

sudo docker exec -it cli bash

18.检查当前节点(默认为peer0.example.com)已加入哪些通道中

peer channel list

执行成功后终端输出如下信息:

2021-08-22 14:02:17.178 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Channels peers has joined: 
mychannel

19.检查通道名称的环境变量是否正确

echo $CHANNEL_NAME

设置环境变量

export CHANNEL_NAME=mychannel

5.1 链码安装、实例化、查询与调用

先执行5.0操作
a.安装链码,使用install命令

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

b.实例化链码,安装成功之后进行链码的实例化操作,同时指定交易的背书策略。(OR和AND的区别)

peer chaincode instantiate -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

c.查询链码

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

d.调用链码(执行链码)

peer chaincode invoke -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

e.查询链码

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

f.fabric1.4.x安装sacc链码

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

peer chaincode instantiate -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["str","helloworld"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

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

5.2 链码的打包与签名

先执行5.0操作
a.链码打包,对于一个已经编写完成的链码可以使用 package 命令进行打包操作

peer chaincode package -n exacc -v 1.0 -p github.com/chaincode/chaincode_example02/go/ -s -S -i "AND('Org1MSP.admin')" ccpack.out

b.链码签名,对一个打包文件进行签名操作(添加当前 MSP 签名到签名列表中),使用 signpackage 命令实现

peer chaincode signpackage ccpack.out signedccpack.out

指定生成的signedccpack.out文件包含一个用本地MSP对包进行的附加签名。签名的链码可以进行下一步的处理。
c.安装已添加签名的链码

peer chaincode install signedccpack.out

d.安装成功之后进行链码的实例化操作,同时指定交易的背书策略。(OR和AND的区别)

peer chaincode instantiate -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n exacc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

e.查询链码

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

f.调用链码(执行链码)

peer chaincode invoke -o orderer.example.com:7050  --tls --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 $CHANNEL_NAME -n exacc -c '{"Args":["invoke","a","b","10"]}'

g.查询链码

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

5.3 链码的升级

注:查看节点都安装了哪些链码 peer chaincode list --installed
先执行5.0操作
a.安装链码(mycc v1.0),使用install命令

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

b.实例化链码,安装成功之后进行链码的实例化操作,同时指定交易的背书策略。(OR和AND的区别)

peer chaincode instantiate -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')"

c.查询链码

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

输出结果是:100
d.调用链码(执行链码)

peer chaincode invoke -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

e.查询链码

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

输出结果是:90
f.安装链码(mycc v2.0),使用install命令

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

g.升级链码(直接升级安装后的mycc v2.0,不用实例化,因为mycc之前已经实例化过了)

peer chaincode upgrade -o orderer.example.com:7050 --tls --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 $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer')"

h.查询链码

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

输出结果是:100(说明版本更新后a,b的值又重新定义),可以继续升级mycc v3.0等版本
i.查看节点都安装了哪些链码

peer chaincode list --installed

待学习:
[1].HYPERLEDGER FABRIC V1.4.6(一)手动搭建FABRIC网络(基于FIRST-NETWORK)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值