fabric安装请查看这里,很全的fabric 安装资料。
可能会遇到的bug,golang的环境配置问题。golang的环境变量配置请参考这里。这里环境编译的命令为
sudo gedit /etc/profile
or
sudo vim /etc/profile
vim 退出命令为:wq,当时犯傻啦,用的:wq!,出现了swp文件。(swp文件需要删除)
golang可能因为很多墙的原因,go get命令下载依赖很麻烦。所以改一下镜像
参考方案点击
安装过程中可能会遇到很多权限问题所以执行每条命令的时候最好加上sudo
我为了省力,把文件的权限改成了都改为可读写可执行(777)
修改命令为sudo chmod -R 777 "filename"
安装的过程中可能会遇到curl问题,设置了代理后,可能需要暂时绕过代理。需要使用的命令为:curl -x ""
curl -x "" http://www.stackoverflow.com
使用sudo apt-get update时,可能会提示GPG错误:由于没有公钥,无法验证下列签名
解决方案参考这里
安装完成后,需要进行测试环节
测试命令:
./network.sh up (启动网络)
./network.sh createChannel(创建通道,默认通道名字为mychannel)
./network.sh deployCC(部署链码,默认是go语言版本)
在执行链码的时候可能会因为执行sudo 命令改变的go语言的环境变量(重置到默认的环境变量)
解决方案为:(忘记在哪个博客啦。我找到在放出来)
部署链码:fabcar
官网给的例子是错误的。
找到fabcar文件,执行sudo ./startFabric.sh 进行初始化。(这个跟text-network不是一个控制台)可参考
回到text-network控制台进行配置
export PATH=${PWD}/../bin:$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/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
测试代码
运行以下命令以获取已添加到通道账本中的汽车列表:
peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
使用以下命令调用fabcar链码来更改账本上汽车的所有者:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --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"]}'
还有很多命令请自行google(可能执行链码的时候出现错误,可执行sudo chomod 777 text-network/)
修改链码:
在fabcar中进行修改的。在chaincode/fabcar/go下的go文件进行修改。
func (s *SmartContract) Queryhelloworld(ctx contractapi.TransactionContextInterface, carNumber string)(int,error) {
message:="hello world"
fmt.Printf(message)
return 111111,nil
//return message,nil
}
修改完毕后,执行sudo ./startFbric.sh
进入test-network控制台。进行操作
peer chaincode query -C mychannel -n fabcar -c '{"Args":[
"queryhelloworld","CAR9"]}'
会出现111111
表示成功!祝顺利!!!!!!!!!!