Hyperledger Fabric的使用及开发

这篇具有很好参考价值的文章主要介绍了Hyperledger Fabric的使用及开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hyperledger Fabric是Linux基金会发起的一种跨行业的区块链技术,目前在多家大型公司有着应用,这里就不多做HF本身的介绍了,有兴趣可关注其官网。

1. 准备工作:

开始前需要一定的准备工作,安装各类中间件:

Hyperledger Fabric的使用及开发,区块链HF,fabric,运维,区块链

其中安装docker compose的时候如出现以下问题,可如此处理

问题:

command 'gcc' failed with exit status 1

yum install python-devel

问题:

Cannot uninstall 'requests'.

pip install docker-compose --ignore-installed requests

如果有需要可以安装cello、explorer两个管理工具,均为Hyperledger下的开源产品。

2. 本地网络部署(HF2.0+)

此模式一般用于用户学习Hyperledger Fabric网络,并尝试在本地运行起测试网络和代码编写,不在生产环境下使用,生产环境会使用k8s部署相关网络且一般仅仅需要合约或apiserver等内容。

1. 源码拷贝,最好在网络畅通的情况进行

2. 启动网络(couchdb+CA节点)

./byfn.sh up -a -s couchdb

单独启动couchDB

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

3. 涉及到改动Hyperledger Fabric源码的,例如改掉其加密算法为国密,需要编译和打包,命令如下:

(1)Fabric编译 - 二级制文件及主要demo镜像

make dist-clean all

(2)Fabric-node编译

cd docker
docker build -t hyperledger/fabric-nodeenv:latest .

(3)离线部署、一般情况

docker save -o fabric-tools.tar hyperledger/fabric-tools:latest
docker load --input fabric-tools21.rar

如出现save-load失败,如couchdb节点,使用export-import替代

docker export -o fabric-couchdb.tar couchdb1
docker import fabric-couchdb.tar hyperledger/fabric-couchdb:0.4.18

3. 智能合约安装(HF2.0+)

编写(或更新)完智能合约代码后,

(1)使用go build进行代码编译

(2)智能合约安装(需要每个节点执行)

peer lifecycle chaincode install record9.tar.gz
# 环境变量设置
export CC_PACKAGE_ID=record9:0305dad14704dbdd48c2650d35f45038452e0aa281541f463c37a0e293a266b4

(3)查询已安装合约

peer lifecycle chaincode queryinstalled

(4)切换节点组织

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

(5)承认合约定义(需要每个组织执行)

peer lifecycle chaincode approveformyorg --channelID $CHANNEL_NAME --name {{test7}} --version 1.0 --init-required --package-id $CC_PACKAGE_ID --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

(6)查看已承认合约的组织

peer lifecycle chaincode checkcommitreadiness --channelID $CHANNEL_NAME --name record9 --version 1.0 --init-required --sequence 1 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --output json

(7)提交合约定义至Channel

peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID $CHANNEL_NAME --name record9 --version 1.0 --sequence 1 --init-required --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt

(8)合约初始化

peer chaincode invoke -o orderer.example.com:7050 --isInit --tls true --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 record9 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["Init","a","100"]}' --waitForEvent

(9)执行合约查询(代码已提供)

peer chaincode query -C $CHANNEL_NAME -n record9 -c '{"Args":["queryRecord","-2"]}'

(10)执行合约调用(代码已提供)

peer chaincode invoke -o orderer.example.com:7050 --tls true --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 record9 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:9051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["createRecord","-2","0","test file hash","10000", "2020-2-13 10:11:00"]}' --waitForEvent

3. ApiServer安装及部署(HF2.0+)

apiserver部署比较多样化,根据使用的语言go、java、nodejs不同而有所区别,这里主要介绍下大体步骤,实际脚本就不放了。

1. 修改生成镜像文件的配置参数,或填写输入变量(如已经搭建CI平台)

2. 生成镜像(例如./buildImages.sh apiserver 1.0)

3. 生成编译工具(makeYaml)

4. 生辰配置文件 ,合约识别名/网络名/组织识别名/暴露的ip+端口/国密-非国密(取决于网络),使用第三步的编译工具进行

5. 拷贝client_sdk.yaml/crypto-config到deploy文件夹下

6. 启动镜像(docker compose)

7. 反向代理设置文章来源地址https://www.toymoban.com/news/detail-652367.html

到了这里,关于Hyperledger Fabric的使用及开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链技术和Hyperledger Fabric介绍

    1.1.1 起源 在比特币诞生之时,技术专家们开始研究比特币的底层技术,并抽象提取出来,形成区块链技术,或者称分布式账本技术。 1.1.2 定义 简称BT(Blockchain technology),也称为分布式账本技术,是一种互联网数据库技术,其特点是去中心化、公开透明,让每个人均可参与

    2024年02月22日
    浏览(37)
  • Hyperledger Fabric 使用 CouchDB 和复杂智能合约开发

    在上个实验中,我们已经实现了简单智能合约实现及客户端开发,但该实验中智能合约只有基础的增删改查功能,且其中的数据管理功能与传统 MySQL 比相差甚远。本文将在前面实验的基础上,将 Hyperledger Fabric 的默认数据库支持 LevelDB 改为 CouchDB 模式,以实现更复杂的数据检

    2023年04月15日
    浏览(47)
  • 区块链 2.0:Hyperledger Fabric学习(一)

    参考链接1 操作系统 : Ubuntu 22.04 一、启动命令 1.进入文件夹目录,启动网络(fabric-samples/fabcar) 2.可能错误: 没有配置JAVA_HOME环境变量 使用JAVA 18会出现无法编译的错误,更换为JAVA 8之后成功解决 二、脚本解析

    2024年02月12日
    浏览(38)
  • 【Hyperledger Fabric】学习笔记1—— 区块链介绍

    目录 1. 区块链介绍 1.1 区块链技术起源 1.1.1 区块链技术 1.1.2 区块链技术发展 1.2 区块链核心技术 1.2.1 定义 1.2.2 区块链技术原理 1.2.3 区块链工作过程 1.3 区块链开发平台 1.3.1 公有链平台 1.3.2 联盟链系统 1.3.3 应用场景 1.1.1 区块链技术 1.1.2 区块链技术发展 1.2.1 定义 1.2.2 区块链

    2023年04月23日
    浏览(41)
  • Fabric 超级账本学习【5】Fabric2.4网络环境下——搭建Hyperledger Fabric区块链浏览器

    博主最近在搭建Hyperledger Fabric区块链浏览器过程中也学习了很多博主的搭建流程,踩了很多雷,踩了很多 坑,现将成功搭建好的Hyperledger Fabric区块链浏览器详细流程分享如下,帮助大家避雷闭坑 Hyperledger Explorer 是一个简单,强大,易于使用,维护良好的开源实用程序,可浏

    2023年04月23日
    浏览(46)
  • Fabric 超级账本学习【8】Hyperledger Fabric 实战——基于区块链的学历学位系统

    近年来,高学历人才成为了各企业快速发展的基石,而学历认证成为判断高学历人才的重要指标,但现有的学历信息系统存在许多数据安全问题

    2023年04月08日
    浏览(47)
  • Hyperledger Fabric explorer区块链浏览器搭建

    https://github.com/hyperledger-labs/blockchain-explorer 官方浏览器的github地址 根据文档,采用docker容器的方法搭建explorer。 根据官方提供的文件,需要创建的目录结构如下: 这是官网提供的模板 这里的organizations就是你搭建区块链网络的证书配置文件crypto-config文件,因为之前的网络创建

    2024年02月11日
    浏览(48)
  • 【跟小嘉学习区块链】二、Hyperledger Fabric 架构详解

    【跟小嘉学习区块链】一、区块链基础知识与关键技术解析 【跟小嘉学习区块链】二、区块链基础知识与关键技术解析 本系列章节主要讲解 Hyperledger 社区、Hyperledger项目、Hyperledger 社区工作流程、Hyperledger Fabric 架构详解 [参考资料] Fabric技术概览 Fabric智能合约 Fabric架构初探

    2024年02月08日
    浏览(40)
  • 【区块链学习】番外一:Hyperledger Fabric 2.x环境搭建

    由于疫情,只能乖乖滚回家了。回到家休息了几天,整理了一下家里的资源,找到一台win10老台式机,重装了Ubuntu18.04系统勉强够用。之前在实验室搭建过一次环境,这次希望少踩一些坑。 惯例,先附上hyperledger fabric的官方文档 更换镜像源(阿里云) 正式安装环境前,咱先把

    2024年02月02日
    浏览(47)
  • (Fabric学习八)部署区块链浏览器Hyperledger explorer

    区块链浏览器Hyperledger explorer: 区块链浏览器:官方网站https://github.com/hyperledger-labs/blockchain-explorer 可以看到他需要以下几个文件 : docker-compose.yaml test-network.json config.json 注意:如果从来没有设置过postgreSQL,那最好使用默认的账号hppoc和密码password,不然会报role \\\'你自己的定

    2024年02月09日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包