前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >超级账本——Hyperledger Fabric

超级账本——Hyperledger Fabric

作者头像
歪歪梯
发布于 2020-08-26 09:41:49
发布于 2020-08-26 09:41:49
1.6K00
代码可运行
举报
文章被收录于专栏:歪歪梯Club歪歪梯Club
运行总次数:0
代码可运行

简介

Hyperledger Fabric是一个开放源代码企业级许可分布式账本技术(DLT)平台,旨在用于企业环境中,是第一个支持以通用编程语言(例如Java,Go和Node.js)而非受约束的领域特定语言(DSL)编写的智能合约编写的分布式分类帐平台。

基础概念

陶老师的博客——https://blog.csdn.net/russell_tao/article/details/80459698 官方文档——https://hyperledger-fabric.readthedocs.io/zh_CN/latest/membership/membership.html

  • ChainCode——链码,也称智能合约。自动判断条件满足,执行的回调脚本(如补偿扣款,自动还款)
  • MSP——Membership Service Provider,基于CA认证的身份信息验证服务。它定义了对于自己所在的 Peer 节点的信任域 (比如,组织) 节点本地 MSP 定义了节点的权限(比如,谁是节点管理员),同时也包含了对已注销过期的信息 用户的本地 MSP 允许用户在交易中证明自己是通道的成员(比如在链码交易中),或者系统中指定角色的所有者(比如,在配置交易中的组织管理员) 同属于一个Channel中的组织,将需要参与到Channel中的交易的所有身份MSP共享到Channel里,不在Channel全局MSP信任下的交易将会被Channel拒绝
  • channel——私有的子网络,也就是子网络中的各个peer各自维护一份同步的全局MSP,互相信任。每个Channel里会部署有多套合约,供channel里的peer去签订
  • world state——世界状态,每个peer上面的联盟实时状态数据副本
  • endorsement——背书,即peer为提案添加验证通过的peer签名
  • endorsement policy——背书策略,智能合约相关的配置,决定要签订该合约需要哪些peer参与背书
  • peer——存放区块链数据的结点,同时还有endorse和commit功能
  • Orderer——排序结点,提供共识服务
  • transaction——交易,每条指令都是一次交易
  • org——orginazation,管理一系列合作企业的组织
  • OUS——organizationUnits,组织下的多个企业单位,一般会为不同的organizationUnit定义不同的MSP进行区分,如下为官方示意图

MSP

MSP分级

MSP结构如下为官方图

MSP struct

  • 网络 MSP:网络配置通过定义参与组织的 MSP 定义了谁是这个网络的成员,并且定义了授权哪些成员执行管理任务(比如,创建通道)
  • Channel MSP:通道单独维护着它的成员的 MSP,也即子网络。通道在指定的一系列组织间提供了私有的通信方式,这些组织又管理着这个通道。在通道 MSP 上下文中的通道策略定义了谁有能力参与通道上的某些操作,比如,添加组织,或者实例化链码
  • Peer 节点MSP:由一个单独组织所有,每个 Peer 节点都有一个单独的 MSP 实例维护在本地文件系统。概念上讲,它同通道 MSP 执行着完全一样的操作,但是具有这些操作只能应用到它被定义的那个 Peer 节点上。使用 Peer 节点本地 MSP 来判定谁被授权操作的例子就是在 Peer 节点上安装链码
  • Orderer节点 MSP:就像 Peer 节点,排序节点也是由一个单独的组织所有,因此具有一个单独的 MSP保存在本地文件系统, 来列出它所信任的操作者或者节点,信任应用于自己节点上的操作

MSP中保存的对于其他信任结点在Intermediate CAS中,结点权限声明在Administrators中的,一般为对应结点的X509 证书。TLS文件夹对应为相关的TLS版本证书 结构中,private keys是peer结点和orderer结点必须有的,用于投票加签名,signingCert是对应的公钥。而对于通道MSP则不是必须的

fabric2.2部署环境

此处以windows为开发环境,Linux环境后续更新在其他文章 windows10专业版 docker desktop 最新版 golang 最新版 gitbash 最新版 1.运行docker,确保在gitbash下可以使用docker命令 2.配置go环境变量gopath,确保在gitbash下可以使用go命令 3.下载fabric仓库的scripts/bootstrap.sh 4.执行bootstrap.sh 具体会做:

  • git clone sample仓库
  • 下载二进制文件到sample仓库下面的bin目录 (fabric代码编译后的本平台可执行文件,也可以通过自己编译源码得到,编译依赖的环境比较麻烦配置)
  • pull fabric示例网络的docker镜像
  • 生成两个peerer一个orderer的ca证书
  • 配置测试域名的host解析

5.下载fabric仓库的sampleConfig目录下全部内容到sample仓库的config目录下 6.进入sample仓库的test-network目录 7.执行./network.sh up 启动区块链网络 8.执行docker ps查看到启动的三个node,分别代表一个orderer和两个组织的peer 0.执行./network.sh down 停止区块链网络

Channel

Channel是通信的基本网络,作为整个区块链系统的子网络 使用官方命令./network.sh createChannel -c testchannel 可以直接将当前network中的两个结点创建并加入一个channel,名称为testchannel 另外还有可以通过进入每个结点,手动创建并加入channel的过程:

  • 进入peer的docker cli命令行
  • 执行peer help查看全部帮助命令
  • peer channel create创建通道,参数如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
          -o: orderer容器的域名和端口,如orderer.exmaple.com:7050
          -c: 指定通道名,利用configtxgen生成Channel配置区块文件channel.tx时指定的通道名
          -f: 指定通道配置交易文件(channel.tx)
          --tls:开启TLS验证
         --cafile:指定了orderer的ca根证书在peer本地的存放路径
  • peer channel fetch newest filename -c testchannel --orderer orderer.example.com:7050 从orderer上,fetch下来testchannel的最新的创世区块的信息存放到filename路径代表的文件
  • peer channel join filename 加入对应文件指向的channel
  • peer channel signconfigtx -f 配置文件名 给对应的通道配置文件加上当前peer的签名
  • peer channel update -c testchannel -f 配置文件名 给对应的通道配置文件加上当前peer的签名,并发送配置文件到Channel,更新Channel的配置 通道配置文件编写教程见官方文档——https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/configtx.html
  • configtxgen 与 configtx.yaml 因为编写go代码生成较麻烦,可以使用官方提供的工具configtxgen,通过configtx.yaml配置文件生成对应的配置文件的区块编码文件(一般命名为configtx.tx)。官方文档——https://hyperledger-fabric.readthedocs.io/zh_CN/release-2.2/commands/configtxgen.html
  • AnchorPeers 锚节点,是通道配置文件中比较重要的配置,指定一个peer,作为组织间的通信代表,负责转发所有组织间交易给内部其他peer

ChainCode

链码,又称智能合约

  • peer chaincodeinstall -n name -v ver -p path 把path对应的链码打包为CDS(Chaincode Deployment Spec)格式,命名为name,版本为ver,安装到当前节点上
  • peer chaincode instantiate -n name -v ver -o orderer.example.com:7050 -C channelName 初始化name对应的CDS格式链码,通过orderer节点安装到channelName上
  • peer chaincode invoke -n name -o orderer.example.com:7050 -C channelName 提交事务执行链码
  • peer chaincode query -C channelName -n name -c '{"Args":["query","a"]}' 查询channelName通道中,name链码上,变量a的值
  • peer chaincode upgrade -o orderer.example.com:7050 -C channelName -n name -v 1.2 -c '{"Args":["init","a","100","b","200","c","300"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')" 在两个peer上面更新链码,升级版本为1.2,设置链码变量a,b,c,值分别为100,200,300 更多文章,请搜索公众号歪歪梯Club
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 歪歪梯Club 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Hyperledger Fabric 网络构建
在peer-base.yaml文件里,第16行,${COMPOSE_PROJECT_NAME}是docker网络命名,这里自己填写
R0A1NG
2022/02/19
7850
Hyperledger Fabric BYFN之配置基础篇
参考https://hyperledger-fabric.readthedocs.io/en/release-1.2/build_network.html
Zeal
2020/11/11
1.2K0
Hyperledger Fabric BYFN之配置基础篇
hyperledger fabric fabric-samples 环境测试
1、进入gopath目录下,创建目录src/github.com/hyperledger,进到该目录
Tiny熊
2020/08/10
1.1K0
Fabric示例——first network
1.环境部署 包括需要的软件环境以及docker镜像,具体参考http://zhayujie.com/fabric/deploy.html
zhayujie
2020/04/29
2.1K0
Hyperledger Fabric 2.x 环境搭建
Hyperledger Fabric是一个是开源的,企业级的,带权限的分布式账本解决方案的平台。Hyperledger Fabric由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性。Hyperledger Fabric被设计成支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景。
陶陶技术笔记
2022/02/25
1.8K0
Hyperledger Fabric 2.x 环境搭建
超级账本(Hyperledger Fabric)源码分析之一:总览
1)Go,注意设置好gopath(笔者安装的是go1.8.3,对应的源码是v1.0.0这个tag,版本不对可能会出现编译不过或者运行出现问题)
qudamahcui
2018/06/26
1.9K0
hyperledger v1.0.5 区块链运维入门(一)
中国广东省深圳市龙华新区民治街道溪山美地 518131 +86 13113668890 <netkiller@msn.com>
netkiller old
2018/02/09
2.3K0
深入理解Fabric环境搭建的详细过程
博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家!
深蓝studyzy
2022/06/16
2.1K0
Hyperledger Fabric1.0运行Fabcar以及常见问题解决(持续更新)
下载hyperledger-fabric-linux-amd64-1.0.5.tar.gz压缩包
洞链
2019/03/17
2.2K0
Hyperledger Fabric1.0运行Fabcar以及常见问题解决(持续更新)
fabric区块链(二)—调用示例合约
这个命令将启动一个包含两个组织和四个Peer节点的测试网络。如果一切顺利,可以使用以下命令检查网络是否启动成功:
酒楼
2023/05/29
7590
fabric区块链(二)—调用示例合约
超级账本(Hyperledger Fabric)之权限管理浅析
超级账本是联盟链的代表,而其相对于共链(例如比特币,以太坊)一个较大的区别在于其强大的角色管理和权限把控上,本文主要介绍其角色管理和权限把控的一些核心机制。
qudamahcui
2018/09/13
6.4K6
Hyperledger fabric 1.4 kafka排序服务原理与安装
参考翻译 https://www.jianshu.com/p/db006359133d
Zeal
2020/11/11
9680
万字长文,教你用go开发区块链应用
大概 2 年前,碰巧学习区块链(Hyperledger Fabric),便写了一个入门级的项目放在 GitHub 上,公众号有不少读者是通过这个项目关注到我的,也经常问我,有没有区块链这方面的学习资料,有没有这个项目的详细讲解,如何搭建一个区块链网络,林林总总。
gopher云原生
2022/04/15
4.2K0
Hyperledger Fabric权限进阶篇
对于Fabric的权限和MSP配置这块,可能大家实际部署会给一堆msp目录绕晕,我们回过头来梳理一下。
Zeal
2020/11/11
1.5K0
Hyperledger Fabric权限进阶篇
Hyperledger Fabric基础之Peer节点
https://hyperledger-fabric.readthedocs.io/en/release-1.2/peers/peers.html
Zeal
2020/11/11
1.4K0
用Kubernetes部署超级账本Fabric的区块链即服务(3)
以下操作都在图 2-1的 cmd 客户机上进行,NFS 的共享目录为 /opt/share ,该共享目录的 拥有者:用户组 建议设为 nobody:nogroup 。
Henry Zhang
2019/04/12
1.2K0
用Kubernetes部署超级账本Fabric的区块链即服务(3)
Hyperledger Fabric BYFN之配置进阶篇
http://www.javatree.cn/news/b25c5e3b9d4640e4a0da2039981c7a03
Zeal
2020/11/11
1.5K0
私有区块链Hyperledger Fabric和公共区块链ARK.io如何通过solidity智能合约结合
我想展示如何将公共区块链(如ARK.io)的功能与私有区块链(如Hyperledger)结合起来。特别是,我们将看到ARK.io上的交易如何触发在Hyperledger Fabric + Burrow中部署的Solidity Smart Contract的执行。
笔阁
2019/05/17
1.4K0
私有区块链Hyperledger Fabric和公共区块链ARK.io如何通过solidity智能合约结合
fabric区块链(二)—调用示例合约
这个命令将启动一个包含两个组织和四个Peer节点的测试网络。如果一切顺利,可以使用以下命令检查网络是否启动成功:
酒楼
2023/05/30
8720
fabric区块链(二)—调用示例合约
超级账本Fabric 1.0 多节点集群的部署(3)
( 接上期,部署配置中大量使用了 docker 和 docker compose ,建议不熟悉的读者先补充相关知识。)
Henry Zhang
2019/04/12
6400
相关推荐
Hyperledger Fabric 网络构建
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验