fabric简介

fabric简介

在这里插入图片描述

Fabric架构的核心包括三部分:
  • Identity - 身份管理
  • Smart Contact - 智能合约
  • Ledger及Transactions - 账本和交易
1.身份管理
  • 用户身份
    • order节点
      • 对交易排序,打包
    • peer节点
      • 存储账本
      • 需要安装链代码,处理客户端请求,管理账本数据
    • 客户端
      • 对账本数据进行读写操作

fabric网络中的每一类用户,可以有一个或多个,每个节点都有属于自己的证书(秘钥对),不同角色的节点有不同权限

2.账本管理
  • 对于程序员来说对账本的操作就是调用对应API
  • 对于fabric来说需要对账本进行管理
    • 账本组成
      • 区块链
        • 所有的交易的集合,交易的历史记录
      • 世界状态
        • 用户的最新状态
        • 存储在账本的默认数据库中
          • 账本在peer节点上,这个节点上有默认的数据库,levelDB
            • 数据存储格式:键值对
              • key:value
                • key:字符串
                • value:字符串
3.交易管理
  • 部署交易
    • 根据实际的业务需求来发链代码
    • 把链代码安装到peer节点上
  • 调用交易
    • 客户端节点发起的,将请求发送给peer节点
    • peer节点收到请求后,通过智能合约的逻辑处理,最终实现账本数据的读写操作
4.智能合约(链代码)

智能合约不仅是封装信息并使整个网络保持简单的关键机制,还可以通过编写它们以允许参与者某些方面的交易自动执行。

例如,可以编写智能合约来规定运输物品的成本,其中运费根据物品到达的速度而变化。根据双方同意并写入分类账的条款,当收到物品时,适当的资金会自动转手。

智能合约支持的语言:

  • Java(最早支持,后来不支持,1.4又支持)
  • node.js
  • go
基础概念
节点
  • peer节点
    • 存储账本
    • 安装智能合约
    • 接收并处理客户端请求
    • 运行在docker容器中,
    • 镜像:hyperledger/fabric-peer
    • 分为四个角色(后面详细介绍)
  • 客户端节点
    • 连接peer节点、order节点
    • 发送请求给peer节点
    • 镜像:hyperledger/fabric-tools
  • orderer节点
    • 对交易排序
      • 为什么要排序
        • 解决双花问题
      • 使用排序算法
        • solo==>>用于测试环境(队列模型,先进先出,后进后出)
        • kafka==>>工作环境中使用(分布式的消息处理系统)
    • 对交易打包
      • 得到了区块
        • 频率==>>在搭建fabric网络时候,手动设置的
    • 镜像:hyperledger/fabric-orderer
Peer、Ledger和 ChainCode

在这里插入图片描述

  • N-区块链网络
  • P1-P3:3个peer节点,共同处于一个网络中
  • S1:智能合约(链码)
  • L1:账本,每个peer节点上都有账本

账本和智能合约:

  • 在peer上
  • 账本是先天存在的
  • 智能合约是后天的,程序员安装上去的
  • 每个peer节点上都有智能合约,对账本进行管理
    在这里插入图片描述
  • 一个peer节点上可以有多个账本(加入到了不同的通道中)
  • 一个peer上可以安装多个智能合约
    • 账本1–合约1
    • 账本2–合约1、2
  • 智能合约业务逻辑处理,项目中有多个模块,模块之间关联性不大,可以将每个模块的逻辑单独封装,每个模块对应一个链码,举例:装修公司
    • 改水电
    • 刷墙
    • 贴地砖
    • 吊顶
通道==>>channel

用来隔离数据的, 用户在不同的通道中, 使用的数据是不同的, 而且数据不共享, 理解为群

通道是由共识服务(ordering)提供的一种通讯机制,将peer和orderer连接在一起,形成一个个具有保密性的通讯链路(虚拟),实现了业务隔离的要求
在这里插入图片描述

  • N:区块链网络
  • C:通道,区块链网络中通道,可以一到多个,至少一个
  • P1,P2:peer节点,加入到同一个通道中
    • P1,P2节点上的账本数据是相同的
  • L1:账本
  • S1:智能合约(链码)
  • A:客户端,访问属于通道C中的peer节点
  • 结论
    • peer节点如果要共享数据,必须要加入到同一个通道
    • 加入到同一个通道的节点上的账本数据是相同的
    • P1和P2上的智能合约可以不同(比如卖家和买家就不同)
    • 对peer节点上账本数据的操作,是通过客户端完成的
      • 发送查询请求
      • 交易请求
组织

fabric中的组织是通过职能划分的, 每个组织中可以有很多用户
在这里插入图片描述

  • N: 区块链网络
  • C: 通道
  • P1-P8: peer节点
    • 加入到了同一个通道
    • 节点上的账本数据是相同的
      • 对其中某一节点的账本数据修改, 数据会自动同步到其他节点的账本上
  • Org1-Org4: 组织
  • A1-A4: 客户端
    • 不同的组织的客户端不同, 不同组织处理的业务逻辑不同
交易流程

在这里插入图片描述

  1. 客户端发送请求到peer节点
  2. peer节点收到请求, 通过安装的智能合约对请求进行处理
  3. peer将处理 的结果发送给客户端 -> 客户端拿到了请求的结果
  4. 以上三步只是进行交易的模拟, 账本数据并没有被修改
  5. 客户端收集到了所有参与交易的节点的回复
    1. 有一部分同意
    2. 有一部分不同意
  6. 客户端将交易请求和模拟交易的结果发送给orderer节点
  7. orderer将得到的数据进行排序打包
  8. orderer将打包的数据发送给peer节点
    1. 得到区块的peer对其中的交易进行校验
    2. 因为有一部分模拟结果失败了, 因此交易失败
      • 失败: 账本数据数据是不会被修改的
    3. 校验没问题
      • 修改账本数据
  9. peer将校验的结果发送给客户端
账本

在这里插入图片描述
账本分两部分:

  • 世界状态
    • 最后一个交易完成之后的状态
    • 通过key:value结构存储数据
  • 区块链
    • 所有交易的历史记录
  • 世界状态的变更是通过读区块链数据来完成的
    在这里插入图片描述
    区块链中的数据:

第一个区块:创始(世)区块

  • 不存储数据
  • 存储通道节点信息
  • 第一个节点以后存储的是交易信息

H1 - Hn: 区块头

  • 上一个区块的哈希
  • 当前区块的哈希

D1 - Dn: 数据块

T1 - Tn: 交易

img-Cgc7WLLG-1562243617497)]

区块链中的数据:

第一个区块:创始(世)区块

  • 不存储数据
  • 存储通道节点信息
  • 第一个节点以后存储的是交易信息

H1 - Hn: 区块头

  • 上一个区块的哈希
  • 当前区块的哈希

D1 - Dn: 数据块

T1 - Tn: 交易

### 回答1: 一、Hyperledger Fabric简介 Hyperledger Fabric是一个开源项目,是Linux基金会下的Hyperledger项目的一部分。它是一个模块化的框架,用于建立区块链解决方案,并可部署在各种基础架构上。它的设计目的是支持高度可扩展性、灵活性和机密性。它使用智能合约(Chaincode)来提供智能合约功能,这些智能合约可以编写成各种语言,如Java、Go等。 二、Hyperledger Fabric的工作原理 Hyperledger Fabric是一个分布式账本技术(DLT),它提供了一种安全、高效、灵活和可扩展的方式来处理交易和共享数据。Fabric核心原理是将交易打包为区块,然后将这些区块添加到区块链中。每个区块包含多个交易,每个交易都由一个客户端向网络中的节点发出,并经过策略验证后被节点接受。 为了确保高度安全性,Fabric使用了多种身份验证机制。每个参与者都有一个身份和一组权限,这些身份和权限由证书颁发机构(CA)颁发和管理。当一个参与者发起一个交易时,他的身份将与交易一起提交到网络中。然后,网络中的节点将使用其本地副本验证交易,并将其添加到区块链中。这样,区块链可以保证所有参与者都可以看到完整的交易历史记录,并且可以验证每个交易的合法性。 三、Hyperledger Fabric的组织结构 1.数据层:Hyperledger Fabric使用CouchDB来存储状态和交易数据。CouchDB是一个开源的文档数据库,它支持高可用性和水平扩展性。CouchDB是Fabric中的默认数据库,但也可以使用其他数据库。 2.链码层:链码是Hyperledger Fabric中的智能合约。它们是用于定义和执行应用程序逻辑的代码。链码可以被编写成各种语言,如Java、Go等。链码可以实现任何类型的业务逻辑,如资产管理、身份验证等。 3.底层:Hyperledger Fabric的底层由多个模块组成,如共识模块、身份认证模块等。这些模块提供了必要的功能来确保网络的安全性和可靠性。 四、Hyperledger Fabric的链码开发 链码是Hyperledger Fabric中的智能合约,它们是用于定义和执行应用程序逻辑的代码。链码可以被编写成各种语言,如Java、Go等。链码可以实现任何类型的业务逻辑,如资产管理、身份验证等。 链码通常由两个部分组成:init和invoke。init函数用于初始化链码,而invoke函数用于执行链码中的逻辑。链码可以使用Fabric SDK编写和部署,也可以使用命令行工具进行操作。 五、Hyperledger Fabric的客户端开发 Hyperledger Fabric的客户端开发可以使用Fabric SDK或命令行工具完成。SDK提供了一组API,用于与Hyperledger Fabric网络交互。它支持多种编程语言,并可用于开发各种类型的应用程序。命令行工具提供了一种简单的方式来与网络交互,但它不如SDK灵活。 六、Hyperledger Fabric的测试部署 Hyperledger Fabric的测试部署可以使用Docker容器完成。Docker是一种轻量级容器技术,它可以帮助我们快速搭建测试环境。使用Docker,我们可以快速部署Hyperledger Fabric网络,并模拟交易和其他操作。此外,Hyperledger Fabric还提供了一些工具,如Fabric CA、Fabric CLI等,这些工具可以帮助我们快速部署和测试网络。 ### 回答2: Hyperledger Fabric是超级账本项目的一个开源平台,旨在建立可靠的、适用企业级应用的、可扩展的分布式账本技术。它为不同组织之间提供了一个去中心化的共享账本,允许多个参与者在没有中间人的情况下进行交易和合作。 在Hyperledger Fabric中,网络由多个节点组成,这些节点可以是客户端节点、对等节点或排序节点。对等节点负责维护账本,并处理交易的验证和背书。排序节点用于按照合理的顺序对交易进行排序,并将结果写入账本。客户端节点是与区块链网络进行交互的应用程序。 Hyperledger Fabric的数据层由世界状态和账本状态组成。世界状态是一个键值对的数据库,用于存储账本的最新状态。账本状态则是一个不可变的、可追溯的事务日志。两者结合起来构成了账本的完整状态。 链码层是Hyperledger Fabric的主要执行环境,用于处理交易的执行和合约的管理。链码可以被认为是类似于智能合约的逻辑,它定义了业务规则和数据模型。链码可以使用不同的编程语言编写,如Go、Java等。 Hyperledger Fabric的底层由一系列核心组件组成,包括共识模块、身份验证模块、通信层和存储层。共识模块负责确保网络中的节点达成一致的交易排序。身份验证模块用于验证交易的发起者身份。通信层负责节点之间的通信,而存储层则用于持久化存储账本数据。 在Hyperledger Fabric的链码开发中,首先需要定义链码的接口和实现,定义链码的输入输出格式和业务逻辑。然后,使用支持的编程语言编写链码,编译链码并将其部署到网络中的对等节点。最后,通过调用链码的方法来实现具体的业务功能。 在客户端开发中,开发人员可以使用提供的SDK来与链码进行交互。SDK提供了一组API,可以用于发起交易、查询账本状态等操作。 在测试和部署方面,Hyperledger Fabric提供了一套测试工具和部署工具。测试工具可以用于模拟交易和网络行为,并检查合约的正确性和性能。部署工具可以用于部署和配置网络,包括创建和加入组织、部署链码等操作。 总结来说,Hyperledger Fabric是一个适用于企业级应用的分布式账本技术平台,它提供了灵活的组织结构和数据层,支持链码开发、客户端开发和测试部署。它的设计使得多个组织可以在去中心化的环境下进行安全、可靠的交易和合作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值