Hyperledger Fabric学习(一)初识

1、 设计

       在Fabric中,包括身份的认证、共识服务以及链码服务。身份认证主要负责成员属性证书认证;共识服务包括分布式账本、网络协议、背书、排序等;链码服务主要负责提供链码运行所需的环境(即容器)
在这里插入图片描述
       简单来说,主要是三层:业务层、组织管理、系统管理;如下图所示
在这里插入图片描述

2、架构

在这里插入图片描述
       在Fabric的设计中,主要由peer、order、ca、客户端四部分组成,peer是集记账、背书、主节点角色于一身的节点,各个角色互不干扰。在一个组织内所有peer节点初始化的时候,会通过选举选出主节点(leader),主节点用于对外接受排序节点的区块信息,并且同步到组内的其他peer节点。背书节点负责对交易进行投票,通常由链码(chaincode)指定背书策略;链码是链上代码,主要是对SDK的调用的相关逻辑代码,包括增删改(一笔新交易的操作)、查(世界状态的查询);组织内的所有peer节点通过gossip通讯,主节点与排序节点通过gRPC进行通信。在排序节点中,order主要的作用根据不同交易提交的时间进行排序,打包结块,到各个组织中去;order中存在通道(channel)的概念,类似于主题(topic),好比订阅/消费的模式,每个组织(peer集群)只会收到并同步与自己相关的channel最新的交易;在一定程度上达到了交易信息的安全隔离;
图片: https://uploader.shimo.im/f/2zDo39oQP7U5MJ3w.png

三、 Fabric交易概述

  • 简单版
    • 执行一个交易并检查其准确性,从而给它背书;
    • 通过(可插拔的)共识协议将交易排序;
    • 提交交易到账本前先根据特定应用程序的背书策略验证交易;
  • 正式版
    • 由client上的CLI或者SDK进行proposal议案的提出(即进行交易的增删改操作,此操作需要写入记账记录);
    • client会依据智能合约chaincode根据背书策略endorse policy决定把proposal发往哪些背书的peer节点,执行背书的peer节点进行投票,client汇总各背书节点的结果;
    • client将获得多数同意的提案连同各peer的背书(包括其投票结果以及背书签名)交给orderring service,而order会汇总各client递交过来的transaction交易,排序、打包;
    • order讲交易打包成区块block后,通知所有commit peer,各peer各自验证结果,最后将区块block记录到自己的ledger账本中;
  • 白话版
    • 应用程序(client)提交交易提案;
    • 背书节点(peer节点)模拟执行交易提案并签名,返回模拟执行结果给应用程序(client);
    • 应用程序(client)提交交易(包括模拟执行结果 + 签名)给排序节点;
    • 排序节点给交易排序,并打包结块;
    • 排序节点给各个组织里的主节点广播区块,主节点分别保存区块、更新世界状态;
    • 背书节点和记账节点与主节点通过gossip通信,同步区块信息(包括记账记录和世界状态);
      在这里插入图片描述

四、Fabric账本

       账本由一个区块链组成,它以区块的形式存储不可变、有序的记录,以及一个状态数据库来维护当前的Fabric状态。每个通道有一个账本。每个节点为其所属的每个通道维护一份账本副本;如下图所示,FileSystem文件系统保存区块链账本,LevelDB(或CouchDB)存放世界状态;
图片: https://uploader.shimo.im/f/yEXg3CPxn3AhfFti.png

发布了622 篇原创文章 · 获赞 150 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/feizaoSYUACM/article/details/104972581