Fabric区块链网络的组成


区块链网络结构图

区块链网络组成

组成区块链网络相关的节点

节点是区块链的通信主体,和区块链网络相关的节点有多种类型:客户端(应用)、Peer节点、排序服务(Orderer)节点、CA节点

客户端(应用程序)节点

客户端必须连接到某一个Peer节点或者排序服务节点才可以与区块链网络通信。

Peer节点

Peer节点主要负责通过执行链码(chaincode)实现对账本的读写操作

所有的Peer节点都是记账节点(Committer),负责维护状态数据和账本的副本

部分Peer节点根据背书策略的设定会执行交易并对结果进行签名背书,充当了背书节点(Endorser)的角色。背书节点是动态的角色,每个链码在实例化的时候都会设置背书策略,指定哪些节点对交易背书后才是有效的。只有在应用程序向节点发起交易背书请求的时候该Peer节点才是背书节点,否则它就是普通的记账节点。

一个组织(其实是成员)在一个通道上可以有多个Peer节点,这时候为了提高通信效率,需要选举出来一个主节点(Leader Peer)作为代表和排序服务节点通信,负责从排序服务节点处获取最新的区块并在组织内部同步。

节点可以同时是背书节点和记账节点,也可以同时是背书节点、主节点和记账节点。

排序服务节点(Orderer)

排序服务节点接收包含背书签名的交易,对未打包的交易进行排序生成区块,并广播给Peer节点

一个区块链网络中,只能有一组排序服务,这个排序服务是由多个排序节点组成的。

排序服务启动的时候需要一个整个网络的创世区块,该创世区块中包含了排序节点信息、联盟组织信息、共识算法类型、区块配置信息及访问控制策略。同时在排序服务启动时会创建系统通道,系统通道在网络中有且只有一个,系统通道对应存储了系统账本,其中的有网络排序服务的定义、联盟成员的定义,以及其他初始配置参数,系统通道主要作用就是创建其他通道。

CA节点

CA节点是可选的,它主要作为证书颁发机构,也可以用其他成熟的第三方CA颁发证书。

区块链网络与通道

一个区块链网络可以有多个通道,其中系统通道只能有一个。
一个通道对应一个账本,也对应一个链。不同通道的账本和智能合约、策略都是隔离的。

Hyperledger Fabric网络节点架构的更多相关文章

  1. hyperledger fabric各类节点及其故障分析 摘自https://www.cnblogs.com/preminem/p/8729781.html

    hyperledger fabric各类节点及其故障分析   1.Client节点 client代表由最终用户操作的实体,它必须连接到某一个peer节点或者orderer节点上与区块链网络通信.客户端 ...

  2. hyperledger fabric各类节点及其故障分析

    1.Client节点 client代表由最终用户操作的实体,它必须连接到某一个peer节点或者orderer节点上与区块链网络通信.客户端向endorser提交交易提案,当收集到足够背书后,向排序服务 ...

  3. 基于ubuntu16.04快速构建Hyperledger Fabric网络

    前言 最近在参加一个比赛,使用到了区块链的开源软件hyperledger,由于之前从未接触过区块链,以及和区块链开发相关的内容,所有在网上查阅了大量的资料,并且通过学习yeasy(杨宝华)开源的入门书 ...

  4. Fabric网络节点发现及成员管理

    一个新节点通过已知的节点加入到网络中,此时,它所知的网络节点信息是非常有限的,需要通过节点发现获知更多的节点,建立起足够的连接.另外,当一个新节点加入到网络时,原有网络节点也需要通过节点发现感知到新节 ...

  5. 在本地搭建hyperledger fabric 网络

    参考了官方文档,直接就可以了https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html 很好用 ➜ ~ cd $GOP ...

  6. HyperLedger Fabric 1.4 架构(6.2)

    6.2.1 架构演进       Fabric架构经历了0.6版本到1.0版本的演进,架构上进行了重大改进,从0.6版本的结构简单演进到可扩展.多通道的设计,在架构上有了质的飞跃:从1.0版本以后,架 ...

  7. Hyperledger Fabric Orderer节点启动

    Orderer 节点启动通过 orderer 包下的 main() 方法实现,会进一步调用到 orderer/common/server 包中的 Main() 方法. 核心代码如下所示. // Mai ...

  8. [转帖]Hyperledger Fabric 学习一:简介

    Hyperledger Fabric 学习一:简介 https://www.jianshu.com/p/f971858b70f3?utm_campaign=maleskine&utm_cont ...

  9. hyperledger中文文档学习-4-构建第一个fabric网络

    接下来的操作都将在hyperledge环境安装构建的虚拟机的环境下进行 参考https://hyperledgercn.github.io/hyperledgerDocs/build_network_ ...

随机推荐

  1. JavaScript原型链基础(prototype chain)

    1.函数基础 2.对象基础 3.原型链基础

  2. linux命令1—安装optimizer

    ZendChina官方:下面介绍一下关于在linux环境下Zend Optimizer 3.3的安装方法.本篇文章是基于RHEL5架构的linux系统. (1)ZendOptimizer 3.3.3版 ...

  3. [ML学习笔记] XGBoost算法

    [ML学习笔记] XGBoost算法 回归树 决策树可用于分类和回归,分类的结果是离散值(类别),回归的结果是连续值(数值),但本质都是特征(feature)到结果/标签(label)之间的映射. 这 ...

  4. U-Mail:如何实现EDM的个性化和定制化?

    设想一下,一个上班族一天要接到多少垃圾邮件?据媒体报道,目前来往的邮件中,高达95%以上的是垃圾邮件,而且有些垃圾邮件还会故意占据着邮箱的最前列.同时,随着人们接受资讯越来越快捷便利,渠道越来越多,也 ...

  5. canvas实例_时钟

    效果图:是一个会动的时钟 一.时钟的组成 1.表盘(蓝色)  2.刻度(黑色)  3.时针(黑色)  4.分针(黑色)  5.秒针(红色)需美化     二.主要应用的技术 Canvas画线 Canv ...

  6. python+jenkins 构建节点环境编译器配置问题

    python 编译器默认添加环境变量路径 

  7. android java.lang.ExceptionInInitializerError

    11-08 13:36:05.108: E/AndroidRuntime(5318): java.lang.ExceptionInInitializerError 11-08 13:36:05.108 ...

  8. Android自定义布局的背景在多分辨率的情况下设置fill_parent时背景不能够横向全屏的问题解决

    问题描述:最近做了一个自定义的控件LinearLayout就是公用的底部菜单条,在指定分辨率下(例如:480x800,480x854)下背景是正常的,但是当程序运行到非指定(默认)的分辨率下就不正常了 ...

  9. kubernetes 限制网络带宽 annotation -- 注解 -- 类似 label

    1.可以通过给Pod增加 kubernetes.io/ingressbandwidth和 kubernetes.io/egress-bandwidth 这两个annotation来限制Pod的网络带宽 ...

  10. 使用Gitblit 在Windows2008 r2上部署Git Server(完整版)

    第一章 前言 使用gitblit搭建git server需要配置两个大件:java jdk.gitblit 本次搭建gitServer采用是当前最新版的两个版本,分别如下: jdk:Java SE D ...