Hyperledger fabric 1.0Beta网络组成及构建流程

一、fabric网络结构(暂时不包括CA)

  如上图所示,在fabric网络中,O表示Orderer,P代表Peer,EP代表Endorsing Peer(endorser),CC代表Chaincode以及Client、Channel、Ledger、Transaction,由它们组成了整个网络,下面对每种元素进行介绍:

  Client:安装在节点(Peer)处的客户端,可以发起构建channel的请求,也可以创建和发起事务(transaction);它不能直接操作chaincode,必须通过peer。

  Peer:从orderer处获取区块用于维护当前状态以及存储在本地的帐本(ledger)。

  Transaction:部署事务(Deploy Transaction)用于生成新的chaincode;唤醒事务(Invoke Transaction)用于通过chaincode执行一次操作。

  Endorsing Peer:一种特殊的节点,在channel内部署chaincode的时候需定义好备书节点列表;在Client发起事务时,在备书节点上模拟该事务的执行并返回响应。

  Orderer:负责维护网络中的多个channgel;负责接收Client通过备书策略后的事务消息,将事务进行排序放入block中,再传递给该channel中的所有peer。

  Channel:在网络中的若干个节点中组成的子网,用于隔绝子网与其它节点间的通信和信息共享,Peer可以属于不同的channel。

  Orderer System Channel:是网络中创建的第一个channel,channel能有多个,但Orderer System Channel有且只能有一个,它根据配置文件创建,对它具有读权限可以看到所有生成的  channel,不推荐在该channel跑任何应用。

  Chaincode:是运行在peer上的一段程序,用于对当前状态或帐本进行读写操作。

  Ledger:对channel中所有事务的执行结果的一个有序的、防篡改的记录。

  Anchor Peer:属于多个channel的节点。

  Leading Peer: channel中负责与orderer通信的节点。

二、网络的构建流程

  1. 系统开始部署时,会根据channel配置文件自动生成orderer system channel,这是网络中的第一个channel,channel上的节点都是Orderer;
  2. client发送createChannel消息结某个orderer来创建一个channel,order经过多重认证后生成一个配置模板,并将带有这个新建channel配置的CONFIG事务发送至orderer system channel;
  3. client通过对orderer轮询channel是否创建成功,若成功,通过该channel发送joinChannel消息邀请相应的节点加入到该channel中;
  4. client调用installChaincode将chaincode源码存放位置及相关信息告知channel内的所有节点;
  5. chainCode实例化:client通过channel发送sendInstantiateProposal消息至备书节点,通过channel的备书策略决定是否通过;
  6. client将备书节点的签名封装在事务消息中,发送至orderer,由orderer封装成block后发送至其它节点,其它节点收到收到block后判断事务的有效性,若有效则完成实例化。

  (5,6的执行和事务的处理流程完全一样,将在下一篇里详细讲述)

时间: 2024-10-09 04:56:48

Hyperledger fabric 1.0Beta网络组成及构建流程的相关文章

Hyperledger Fabric区块链工具configtxgen配置configtx.yaml

configtx.yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件,configtx.yaml的内容直接决定了所生成的创世区块的内容.本文将给出configtx.yaml的详细中文说明. 如果需要快速掌握Fabric区块链的链码与应用开发,推荐访问汇智网的在线互动教程: Fabric区块链Java开发详解 Fabric区块链NodeJS开发详解 Capabilities / 通道能力配置 Capabilities段用来定

Hyperledger Fabric 1.0 从零开始(三)——内网(准离线)环境构建

有公网环境的服务器可以直接看 Hyperledger Fabric 1.0 从零开始(二)--公网环境构建 ,本篇内容与上篇相似,只不过环境搭建需要在内网下,也就是网络被限制的情况下. 1:环境构建与测试 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先安装Docker.Docker-compose和Go语言环境,然后在网上拉取相关的Docker镜像,再通过配

Hyperledger Fabric 1.0 从零开始(二)——公网环境构建

1:环境构建 在本文中用到的宿主机环境是Centos ,版本为Centos.x86_647.2,通过Docker 容器来运行Fabric的节点,版本为v1.0.因此,启动Fabric网络中的节点需要先安装Docker.Docker-compose和Go语言环境,然后在网上拉取相关的Docker镜像,再通过配置compose文件来启动各个节点. 1.1:Docker安装 进入docker官网 GetDocker ->Centos ->Get CE(社区版)->Get Docker CE o

Hyperledger Fabric 建立一个简单网络

p { margin-bottom: 0.25cm; line-height: 120% } Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sample下的示例first-network p { margin-bottom: 0.25cm; line-height: 120% } 其中byfn.sh为启动这个网络的启动脚本,启动脚本中除建立一个包含

Hyperledger Fabric外部链码构建与运行

外部链码构建与运行 官方文档 在Hyperledger Fabric 2.0版本之前,链码的构建和运行是节点实现的一部分,并且定制化是困难的.所有链码在节点上实例化是通过"构建"即根据语言指定的逻辑在节点上硬编码.构建过程将生成Docker容器镜像作为客户端连接节点用来运行可执行的链码. 这种方法将链代码实现限制为只能使用几种语言实现,要求Docker成为部署环境的一部分,并阻止将链代码作为长时间运行的服务器进程运行. 外部构建模式 Hyperledger Fabric外部构建器和启动

Hyperledger Fabric(二)运行测试网络(test-network)

测试网络用于测试本地Fabric环境是否正常,过程如下: ① cd fabric-samples/test-network   #进入test-network目录下,关键脚本network.sh包含了启动网络,创建通道,销毁网络等功能,./network.sh -h可查看详细信息 ② ./network.sh up   #以默认选项启动网络,创建一个由两个peer节点(属于两个组织)和一个order节点组成的网络,可通过 docker ps -a 查看启动的容器 ./network.sh up

Hyperledger Fabric 架构梳理

区块链的数据结构 State数据结构 由peer维护,key/value store Ledger  记录了所有成功和不成功的状态更新交易.Ledger被ordering service构造,是一个全排序的交易区块(有效的和无效的)哈希链. Ledger存储在peer节点和orderer的一个子集里.存储在peer上的Ledger和存储在Orderer上的Ledger不同地方在于peer上的Ledger在本地维护一个位掩码(比特位)用来区分有效交易和无效交易. PeerLedger在v1后续版本

Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理

2:Fabric源码及镜像文件处理 2.1下载Fabric源码 下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下.通过1.3中go的安装配置,$GOPATH设置为/opt/gopath. 我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码: go get github.com/hyperledger/fabric [注:使用离线环境或者内网环境的朋友

Hyperledger Fabric 1.0 从零开始(六)——创建Fabric多节点集群

4:创建Fabric多节点集群 4.1.配置说明 首先可以根据官方Fabric自带的e2e_cli列子中的集群方案来生成我们自己的集群,与案例不同的是我们需要把容器都分配到不同的服务器上,彼此之间通过网络来进行通信,网络构建完成后则进行相关的channel和chaincode操作. 笔者目前申请了五台服务器,所有的服务器均是按照上述e2e_cli环境构建与测试步骤配置.计划其中四台服务器运行peer节点,另外一台服务器运行orderer节点,为其它四个节点提供order服务. 虚拟机具体参数如下