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