前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hyperledger Fabric1.0运行Fabcar以及常见问题解决(持续更新)

Hyperledger Fabric1.0运行Fabcar以及常见问题解决(持续更新)

原创
作者头像
洞链
修改2019-03-18 10:36:10
2K0
修改2019-03-18 10:36:10
举报
文章被收录于专栏:洞链洞链

如果后续补充更新不及时,请移步看简书或知乎专栏:洞链,或下面文章

https://www.jianshu.com/p/b097e489dd99

Hyperledger Fabric基础环境搭建


#先看这个搭建Hyperledger Fabric基础环境
https://zhuanlan.zhihu.com/p/54759061
#(看到安装docker-compose完成即可,接下来看此篇)

安装Node.js

wget https://nodejs.org/dist/v6.9.5/node-v6.9.5-linux-x64.tar.xz
tar -xvf node-v6.9.5-linux-x64.tar.xz
sudo mv node-v6.9.5-linux-x64 /usr/local/node
sudo ln -s /usr/local/node/bin/node /usr/local/bin/node
sudo ln -s /usr/local/node/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm

测试nodejs并设置镜像加速

node -v
npm -v
npm config set registry https://registry.npm.taobao.org

构建网络


创建fabric-samples

mkdir -p github.com/hyperledger/fabric-samples

进入fabric-samples

git clone https://github.com/hyperledger/fabric-samples.git

查看版本分支

git tag

查看版本分支

切换项目版本

git checkout  release1.0

查看当前项目的版本

git branch
#删除已命名的分支
git branch -d release1.0

进入下方目录

https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric

下载hyperledger-fabric-linux-amd64-1.0.5.tar.gz压缩包

下载Linux对应压缩包

wget https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.0.5/hyperledger-fabric-linux-amd64-1.0.5.tar.gz

解压到fabric-samples目录下

tar -zxvf hyperledger-fabric-linux-amd64-1.0.5.tar.gz -C /home/go/src/github.com/hyperledger/fabric-samples

下载dockerimages执行文件复制并在fabric-samples中创建init.sh

image.png

https://raw.githubusercontent.com/hyperledger/fabric/v1.0.5/scripts/bootstrap.sh
vim init.sh

赋予权限

chmod -R 777 init.sh

运行文件

./bootstrap.sh

进入first-network目录中

cd first-network

是否已经构建,如果构建关闭重新构建

关闭应用

./byfn.sh -m down

执行以下命令构建网络

./byfn.sh -m generate

生成创世区块


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

first-network目录下设置变量:

export FABRIC_CFG_PATH=$PWD

设置变量并创建初始区块

执行

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

生成应用通道的配置信息


生成应用通道的配置信息

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

生成锚节点配置更新文件


../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

操作网络


编辑docker-compose-cli.yaml,注释command命令

vim docker-compose-cli.yaml

注释`command`命令

运行docker-compose-cli.yaml

image.png

CHANNEL_NAME=$CHANNEL_NAME TIMEOUT=600 docker-compose -f docker-compose-cli.yaml up -d

创建和加入通道


  • 进入Docker容器
docker exec -it cli bash
  • 创建通道

image.png

export CHANNEL_NAME=mychannel
peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls $CORE_PEER_TLS_ENABLED --cafile /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 join -b mychannel.block

链码


  • 安装链码
peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
  • 实例化链码
peer chaincode instantiate \
-o orderer.example.com:7050 \
--tls $CORE_PEER_TLS_ENABLED \
--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 "OR    ('Org1MSP.member','Org2MSP.member')"
  • 查询
peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

查询结果

  • 转账
peer chaincode invoke \
-o orderer.example.com:7050 \
--tls $CORE_PEER_TLS_ENABLED \
--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"]}'

点击exit退出docker容器

./byfn.sh -m down

参数说明:

  • -o:指定order服务节点地址
  • --tls:是否开启TLS验证
  • --cafile:指定TLS_CA证书的所在路径
  • -C:指定通道名称
  • -n:指定链码名称
  • -c:指定调用链码的所需参数
  • -p:指定安装链码的所在路径
  • -P:指定背书策略

Node.js SDK和fabcar交互


进入fabric-samples目录下的fabcar目录中

cd fabric-samples/fabcar

查看package.json文件

查看`package.json`文件

cat package.json

Fabcar准备环境


关闭活跃容器

docker rm -f  $(docker ps -a)

清理缓存的网络

docker network prune
docker rmi dev-peer0.org1.example.com-fabcar-1.0-5c906e402ed29f20260ae42283216aa75549c571e2e380f3615826365d8269ba
  • fabcar目录中安装客户端
npm install

npm install 中1

npm install 中2

  • 启动网络
./startFabric.sh  node

./startFabric.sh node

  • 执行完成后,注册管理用户
node encrollAdmin.js

node encrollAdmin.js运行成功

  • 实现registerUser.js,生成用户账户
node registerUser.js

node registerUser.js运行成功

  • 现在我们可以运行JavaScript程序。首先,运行query.js 程序,返回账本上所有汽车列表。应用程序中预先加载了一个queryAllCars函数,用于查询所有车辆,因此我们可以简单地运行程序:
node query.js

node query.js运行成功

  • 如果想返回某个车辆信息,编辑query.js,我们将函数queryAllCars更改为queryCar并将特定的“Key” 传递给args参数。在这里,我们使用CAR4。 所以我们编辑后的query.js程序现在应该包含以下内容:

编辑query.js

  • 重新运行query.js
node query.js

image.png

FAQ

  1. 运行./byfn.sh -m down出现错误的解决方法:
https://segmentfault.com/a/1190000014221967
  1. 执行node registerUser.js出现错误:Failed to register: Error: fabric-ca request register failed with errors [[{"code":0,"message":"No identity type provided. Please provide identity type"}]]

执行`node registerUser.js `出现错误

  • 编辑 node registerUser.js文件
vim node registerUser.js
  • returnfabric_ca_client.register({enrollmentID: 'user1', affiliation:'org1.department1'}, admin_user);替换为下方代码
returnfabric_ca_client.register({enrollmentID: 'user1', affiliation:'org1.department1',role: 'client'}, admin_user);

node registerUser.js替换

  • 点击保存重新运行即可

node registerUser.js

参考文档

https://blog.csdn.net/weixin_34960892/article/details/81094375
https://blog.csdn.net/smallone233/article/details/86569536
https://www.cnblogs.com/EasonJim/p/8324834.html
https://hyperledger-fabric.readthedocs.io/en/release-1.0/chaincode4noah.html
https://hyperledger-fabric.readthedocs.io/en/release-1.0/write_first_app.html
https://blog.csdn.net/qq_36956154/article/details/82317514
https://blog.csdn.net/weixin_34960892/article/details/81116646

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hyperledger Fabric基础环境搭建
  • 构建网络
  • 生成创世区块
  • 生成应用通道的配置信息
  • 生成锚节点配置更新文件
  • 操作网络
  • 创建和加入通道
  • 链码
    • 参数说明:
    • Node.js SDK和fabcar交互
      • Fabcar准备环境
      • FAQ
      • 参考文档
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档