超级账本学习笔记(7)-多机多节点

前言

不知不觉,研究生三年的时光即将告一段落,毕业在即。回想起当初学习的场景,那时候笔记本上记满了密密麻麻的笔记,如今想要扔掉却又舍不得。因此,我决定将当初刚入门区块链时的学习笔记分享出来。由于是跨考的,所以当时的我对区块链甚至是计算机都一窍不通,直接开始了学习之旅。因此,笔记中可能存在一些错误,仅供参考,切勿直接照搬。希望读者能够在阅读的过程中保持思考,同时,大体逻辑是可靠的。如果发现了任何错误,请务必告知我,我将及时进行修改。

备用命令

1、docker命令

1.1docker启动了

docker stop $(docker ps -aq)

docker rm $(docker ps -aq)

systemctl daemon-reload

sudo service docker restart

1.2docker未启动

systemctl daemon-reload

sudo service docker restart

docker stop $(docker ps -aq)

docker rm $(docker ps -aq)

2、防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

3、链码

peer chaincode list --installed

docker ps

4、挂载命令

vmware-hgfsclient

vmhgfs-fuse .host:/ /mnt/hgfs/

cd  /mnt/hgfs/myshare

5、目录

/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

6、虚拟机修改为静态ip

相关配置:

网关:192.168.203.2

文件:

TYPE="Ethernet"

PROXY_METHOD="none"

BROWSER_ONLY="no"

BOOTPROTO="static"#静态/动态

DEFROUTE="yes"

IPV4_FAILURE_FATAL="no"

IPV6INIT="yes"

IPV6_AUTOCONF="yes"

IPV6_DEFROUTE="yes"

IPV6_FAILURE_FATAL="no"

IPV6_ADDR_GEN_MODE="stable-privacy"

NAME="ens33"

UUID="b66f381b-97cb-4766-b5ff-51ae42409a2f"

DEVICE="ens33"

ONBOOT="yes"

IPADDR="192.168.203.3"#ip地址

PREFIX="24"

GATEWAY="192.168.203.2"#网关

DNS1="192.168.203.2"#

DNS2="8.8.8.8"

IPV6_PRIVACY="no"

1.找到网卡配置文件

cd /etc/sysconfig/network-scripts/

ls

2.修改配置文件

vim ifcfg-ens33

将BOOTPROTO=“dhcp” 修改为”static",即将动态获取,修改为静态ip

DNS2="8.8.8.8"

然后在后面加上静态ip的相关配置

DNS1:DNS服务器选择

IPADDR:静态ip地址

NETMASN:子网掩码

GATEWAY:网关

修改完成后按ESC,输入:wq 回车保存文档

然后重启网络,静态ip配置成功,且ip、子网掩码、网关信息会和配置文件中的相同

第五步:重启网络

systemctl restart network

第六步:测试:

查看IP地址的命令:ifconfig

inet:192.168.203.3

在win上面ping命令

1、Orderer.example.com

创建  multipeer

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

mkdir multipeer

cd multipeer

复制文件

cd  /mnt/hgfs/myshare/multipeer/orderer.example.com

目录

cp -rf bin  chaincode  configtx.yaml  crypto-config.yaml  docker-compose-orderer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

备注:

(1)crypto-config. yaml :生成证书配置文件,配置如下。

(2) configtx.yaml:生成区块及通道配置文件,配置如下。

修改ip地址

修改权限

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

chmod -R 777 ./bin

生成公私钥和证书

rm -rf  channel-artifacts crypto-config

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

生成创世区块

mkdir channel-artifacts

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

生成通道配置区块

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

备份文件

cd ..

cp -rf multipeer /mnt/hgfs/myshare/multipeer/

cd multipeer

备份文件高级版本

scp -r multipeer root@192.168.203.134:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

scp -r multipeer root@192.168.203.135:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

scp -r multipeer root@192.168.203.136:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

错误

The authenticity of host '192.168.203.134 (192.168.203.134)' can't be established.

ECDSA key fingerprint is SHA256:i8hk3fPtW5MzXYGmMdp/QAuBO/9aXB7/WDzWjpqz67s.

ECDSA key fingerprint is MD5:2a:e2:57:fa:fb:31:6b:c4:cc:f0:8a:9d:47:24:ae:fb.

Are you sure you want to continue connecting (yes/no)? y

Please type 'yes' or 'no': yes

Warning: Permanently added '192.168.203.134' (ECDSA) to the list of known hosts.

Authentication failed.

lost connection

解决办法

当主机使用ssh免密码登录时,弹出Warning:Permanently added (RSA) to the list of known hosts的警告,看着很碍眼。通过以下方法进行解决:

1:vim  /etc/ssh/ssh_config(master和slave1都需要设置)

找到#StrictHostKeyChecking ask去掉注释(去掉#),并把ask改为no即可

主机配置如下

Order.example.com

192.168.203.3

Peer0.org1.example.com(01)

192.168.203.133

Peer1.org1.example.com(1-1)

192.168.203.134

Peer0.org2.example.com(0-2)

192.168.203.135

Peer1.org2.example.com(1-2)

192.168.203.136

启动fabric 网络

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

2、Peer0.org1.example.com

复制文件

备注:两个主机nat模式下ping不通,暂时没有找到解决方案

可以ping通原来是ip地址错了

复制公共文件

 cd  /mnt/hgfs/myshare/multipeer/

ls

cp -rf multipeer /home/lhc/go-work/src/github.com/hyperledger/fabric/

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

复制转耍文件

cd  /mnt/hgfs/myshare/multipeer/peer0.org1.example.com

cp -rf chaincode /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

docker配置文件 docker-compose-peer.yaml

修改ip

vim  docker-compose-peer.yaml

启动peer

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

docker-compose -f docker-compose-peer.yaml down

ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule:  (iptables failed: iptables --wait -t nat -I DOCKER -i br-15e692469f79 -j RETURN: iptables: No chain/target/match by that name.

 (exit status 1))

原因是关闭防火墙之后docker需要重启,执行以下命令重启docker即可:

service docker restart

启动 cli 容器

docker exec -it cli bash

创建通道

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

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

更新通道

错误1

Fatal error when initializing core config : Could not find config file. Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml

未进入容器

错误2

Error: failed to create deliver client: failed to load config for OrdererClient: unable to load orderer.tls.rootcert.file: open /home/lhc/go-work/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem: no such file or directory

地址写错

Error: genesis block file not found open mychannel.block: no such file or directory

停掉防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

错误3

Error: failed to create deliver client: orderer client failed to connect to orderer.example.com:7050: failed to create new connection: context deadline exceeded

重启网络

161 / 5,000

翻译结果

错误:未能创建交付客户端:orderer 客户端无法连接到 orderer.example.com:7050:未能创建新连接:超出上下文期限

一般来讲这是orderer服务启动有问题导致的网络连接无法建立,可以排查orderer是否正常运行。

但是本次部署,查看日志orderer服务是正常启动的,没有问题;那么从日志上,应该是网络问题。

从网络上出发去排查,通过telnet 127.0.0.1 7050是通的,猜测是因为虚拟机docker里面的服务通过映射网络无法访问导致,即bridge模式不好使。

通过查看防火墙,iptables等一系列操作,没啥用。

决定采用host模式,docker-compose.yaml配置:

network_mode: "host"

情况二

停掉网络,防火墙等也不好使

关机重启好使了

错误4

Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'mychannel': error authorizing update: error validating ReadSet: proposed update requires that key [Group]  /Channel/Application be at version 0, but it is currently at version 1

错误:获取意外状态:BAD_REQUEST--将配置更新应用于现有通道‘myChannel’时出错:授权更新时出错:验证ReadSet时出错:建议的更新要求密钥[Group]/Channel/Application为版本0,但当前为版本1

解决办法

  创建通道的时候,报这个错!! 已经存在通道了,就不要再添加了,可以通过 peer channel list来查看通道.

查看日志

docker ps -a

docker logs -f orderer.guojiu.com  //查询id为orderer.guojiu.com的log日志信息

或docker logs -f peer1.org2.guojiu.com  //查询id为peer1.org2.guojiu.com的log日志信息

错误5

Cannot run peer because cannot init crypto, folder "/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" does not exist

原因是没有将虚拟机1生成的证书和密钥文件复制到虚拟机2下相应的目录中

错误6

Error: failed to create deliver client: orderer client failed to connect to orderer.example.com:7050: failed to create new connection: connection error: desc = "transport: error while dialing: dial tcp 192.168.203.3:7050: connect: connection refused

网络没连上:防火墙或者ip地址错了,检查自己的ip地址和文件的ip地址

将peer节点加入通道

peer channel join -b mychannel.block

Error: genesis block file not found open mychannel.block: no such file or directory

保存mychannel.bloack

退出

复制代码root@后边的文字替换

docker cp ca4ed7ad46d1:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel.block  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

将mychannel.block复制到其他计算机

新方法

scp mychannel.block root@192.168.203.134:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

scp mychannel.block root@192.168.203.135:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

scp mychannel.block root@192.168.203.136:/home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

错误:ssh: connect to host 192.168.144.134 port 22: No route to host

lost connection

ping ip地址试一试。不通

备选方法

未解决,换一种方法

 cp  /home/lhc/myfile/mychannel.block   /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

安装智能合约

docker exec -it cli bash

peer chaincode install -n mycc -p github.com/hyperledger/fabric/multipeer/chaincode/go/example02/cmd -v 1.4

Error: error getting endorser client for install: endorser client failed to connect to peer0.org1.example.com:7051: failed to create new connection: context deadline exceeded

实例化智能合约\

这个智能合约错了,转账没反应

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

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

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

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

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

这个才是对的

//peer chaincode install -n mycc -p github.com/hyperledger/fabric/multipeer/chaincode/go/example02/cmd/ -v 1.0

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

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

错误1

Error: could not assemble transaction, err proposal response was not successful, error code 500, msg transaction returned with failure: Incorrect arguments. Expecting a key and a value

错误2

Error: error endorsing chaincode: rpc error: code = Unknown desc = access denied: channel [mychannel] creator org [Org1MSP]

错误:错误认可链代码:rpc 错误:代码 = 未知 desc = 拒绝访问:通道 [mychannel] 创建者组织 [Org1MSP]

错误3

Error: The required parameter 'channelID' is empty. Rerun the command with -C flag

未知错误,下边的运行成公了

在peer 节点查询A显示100

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

错误1

Error: endorsement failure during query. response: status:500 message:“make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found”

解决方法:

找到区块生成的配置文件。将本地的ip地址改为orderer容器服务名称。 fabric中许多莫名其妙的错误都可以试一试将ip改为容器名称。

Peer上进行a向b转10交易

peer chaincode invoke --tls --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

Error: The required parameter 'channelID' is empty. Rerun the command with -C flag

可能是 ORDERER_CA -C没写或者写错了

 Peer上查询b,显示210

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

转账之后没反应:

原因

解决办法;下次遇到再解决

Peer1.org1.example.com(1-1)

文件夹

cd  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

复制文件

新:

cd  /mnt/hgfs/myshare/multipeer/peer1.org1.example.com

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

旧:

mkdir /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd  /mnt/hgfs/myshare/multipeer/orderer.example.com

cp -rf bin  configtx.yaml  crypto-config.yaml  docker-compose-orderer.yaml  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd  /mnt/hgfs/myshare/multipeer/peer1.org1.example.com

cp -rf chaincode  docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd  /mnt/hgfs/myshare/multipeer/peer1.org1.example.com

cp -rf chaincode /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

 cp -rf  mychannel.block  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

docker配置文件 docker-compose-peer.yaml

修改ip

vim  docker-compose-peer.yaml

启动peer

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

启动 cli 容器

docker exec -it cli bash

复制mychannel,block到peer中

退出

复制代码root@后边的文字替换

docker cp  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block ca4ed7ad46d1:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/home/lhc/go-work/src/github.com/hyperledger/fabric/peer/

将peer节点加入通道

docker exec -it cli bash

peer channel join -b mychannel.block

错误1

Fatal error when initializing core config : Could not find config file. Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml

未进入容器

错误2

Error: error getting endorser client for channel: endorser client failed to connect to peer1.org1.example.com:7051: failed to create new connection: context deadline exceeded

地址不对。检查vim  docker-compose-peer.yaml

安装智能合约

peer chaincode install -n mycc -p github.com/hyperledger/fabric/multipeer/chaincode/go/example02/cmd -v 1.4

peer chaincode list --installed

查询节点a 值为90

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

Error: error endorsing query: rpc error: code = Unknown desc = access denied: channel [mychannel] creator org [Org1MSP] - proposal response: <nil>

错误:错误支持查询:rpc错误:代码=未知的desc=访问被拒绝:通道[我的通道]创建者org[Org1MSP]-建议响应:

可能原因

首先查看配置msp文件是否错误,若没有重新down掉网络再加入通道一遍,可能没复制对

docker-compose -f docker-compose-peer.yaml down

Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found"

错误

use the FABRIC_LOGGING_SPEC environment variable

Error: endorsement failure during query. response: status:500 message:"failed to execute transaction d48e4ab9a87a7c444c370b5e0aea2a0cac3a1f4c4748cc24e444261b40e2d634: [channel mychannel] failed to get chaincode container info for mycc:1.4: could not get chaincode code: chaincode fingerprint mismatch: data mismatch"

翻译

使用FABRIC_LOGGING_SPEC环境变量 错误:查询过程中的背书失败。响应:状态:500消息:“无法执行事务d48e4ab9a87a7c444c370b5e0aea2a0cac3a1f4c4748cc24e444261b40e2d634:[通道我的通道]未能获取mycc的链码容器信息:1.4:无法获取链码代码:链码指纹不匹配:数据不匹配”

peer节点a向b转10交易

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

peer chaincode invoke --tls --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

错误

Error: endorsement failure during invoke. response: status:500 message:"cannot retrieve package for chaincode mycc/1.4, error open /var/hyperledger/production/chaincodes/mycc.1.4: no such file or directory"

错误:调用过程中的背书失败。响应:状态:500消息:“无法检索链代码mycc/1.4的包,错误打开/var/hyperledger/production/chaincodes/mycc.1.4:没有这样的文件或目录”

猜想原因

在peee节点上查询b显示220

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

2、Peer0.org2.example.com(0-2

文件夹

cd  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

复制文件

新:

cd  /mnt/hgfs/myshare/multipeer/peer0.org2.example.com

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cd /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

旧:

cd  /home/lhc/myfile/peer0.org2.example.com

cp -rf chaincode /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

 cp -rf  mychannel.block  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

docker配置文件 docker-compose-peer.yaml

修改ip

vim  docker-compose-peer.yaml

启动peer

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

启动 cli 容器

docker exec -it cli bash

复制mychannel,block到peer中

退出

复制代码root@后边的文字替换

docker cp  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block ca4ed7ad46d1:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/home/lhc/go-work/src/github.com/hyperledger/fabric/peer/

将peer节点加入通道

docker exec -it cli bash

peer channel join -b mychannel.block

错误1

Fatal error when initializing core config : Could not find config file. Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml

未进入容器

错误2

Error: error getting endorser client for channel: endorser client failed to connect to peer1.org1.example.com:7051: failed to create new connection: context deadline exceeded

地址不对。检查vim  docker-compose-peer.yaml

安装智能合约

peer chaincode install -n mycc -p github.com/hyperledger/fabric/multipeer/chaincode/go/example02/cmd -v 1.4

查询节点a 值为80

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

错误1

Error: error endorsing query: rpc error: code = Unknown desc = access denied: channel [mychannel] creator org [Org1MSP] - proposal response: <nil>

错误2

Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found"

可能原因,通道错了

peer节点a向b转20交易

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

peer chaincode invoke --tls --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

在peee节点上查询b显示240

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

4、Peer1.org2.example.com(0-2

文件夹

cd  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

复制文件

cd  /home/lhc/myfile/peer1.org2.example.com

cp -rf chaincode /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

cp -rf docker-compose-peer.yaml /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

 cp -rf  mychannel.block  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer

docker配置文件 docker-compose-peer.yaml

修改ip

vim  docker-compose-peer.yaml

启动peer

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

启动 cli 容器

docker exec -it cli bash

复制mychannel,block到peer中

退出

复制代码root@后边的文字替换

docker cp  /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block ca4ed7ad46d1:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/opt/gopath/src/github.com/hyperledger/fabric/peer/

docker cp /home/lhc/go-work/src/github.com/hyperledger/fabric/multipeer/mychannel.block  6d9d4920546a:/home/lhc/go-work/src/github.com/hyperledger/fabric/peer/

将peer节点加入通道

docker exec -it cli bash

peer channel join -b mychannel.block

错误1

Fatal error when initializing core config : Could not find config file. Please make sure that FABRIC_CFG_PATH is set to a path which contains core.yaml

未进入容器

错误2

Error: error getting endorser client for channel: endorser client failed to connect to peer1.org1.example.com:7051: failed to create new connection: context deadline exceeded

地址不对。检查vim  docker-compose-peer.yaml

安装智能合约

peer chaincode install -n mycc -p github.com/hyperledger/fabric/multipeer/chaincode/go/example02/cmd -v 1.4

查询节点a 值为60

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

错误1

Error: error endorsing query: rpc error: code = Unknown desc = access denied: channel [mychannel] creator org [Org1MSP] - proposal response: <nil>

错误2

Error: endorsement failure during query. response: status:500 message:"make sure the chaincode mycc has been successfully instantiated and try again: chaincode mycc not found"

可能原因,通道错了

peer节点a向b转30交易

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

peer chaincode invoke --tls --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["invoke","a","b","30"]}'

在peee节点上查询b显示270

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值