8. Hyperledger Fabric 专题 - Hyperledger Fabric Model

Hyperledger Fabric 专题 - Hyperledger Fabric Model

本专题文档概述了 Hyperledger Fabric 的关键设计特征,这些特征可以实现 Fabric 对全面但可自定义的企业区块链解决方案的承诺:

  • 资产 (Asset) - 资产定义允许通过网络交换几乎所有具有货币价值的东西,从完整食品到古董车再到货币期货。
  • 链码 (Chaincode) - 链码执行从交易排序中划分出来,限制了节点类型之间的信任和验证级别,并优化了网络可伸缩性和性能。
  • 帐本特征 - 不变的共享帐本对每个通道的整个交易历史进行编码,并包括类似 SQL 的查询功能,以进行有效的审计和争议解决。
  • 隐私 (Privacy) - 通道和私人数据集可实现私有和机密的多方交易,这通常是竞争企业和受管制的行业在同一网络上交换资产时需要的。
  • 安全和 MSP (Security & Membership Services) - 会员许可制提供了一个受信任的区块链网络,参与者知道所有交易都可以由授权的监管机构和审计员检测和追踪。
  • 共识 (Consensus) - 达成共识的独特方法可实现企业所需的灵活性和可扩展性。

1. 资产

资产的范围从有形的 (房地产和硬件) 到无形的 (合同和知识产权)。 Hyperledger Fabric 提供了使用链码交易修改资产的功能。

资产在 Hyperledger Fabric 中表示为键值对的集合,状态更改记录为通道账本中的交易。资产可以二进制和/或 JSON 形式表示。

2. 链码

链码是定义一项或多项资产的软件,以及用于修改资产的交易指令。换句话说,这就是业务逻辑。链码定义了用于读取或更改键值对或其他状态数据库信息的规则。链码函数针对帐本的当前状态数据库执行,并通过交易提案启动。链码执行会产生一组键值写操作 (写集),这些键值写操作可以提交给网络,并应用于所有对端节点的帐本中。

3. 账本功能

账本是 Fabric 中所有状态转换的有序和防篡改的记录。状态转换是参与方提交的链码调用 (“交易”) 的结果。每笔交易都会产生一组资产键值对,这些键值对在创建,更新或删除时将被提交到账本。

帐本由一个区块链 (“链”) 和一个状态数据库组成,该区块链将不可变的顺序记录存储在区块中,并维护一个状态数据库。每个通道有一个帐本。每个对端节点都为其所属的每个通道维护一个帐本的副本。

Fabric 帐本的一些功能:

  • 使用基于键的查询,范围查询和组合键查询来查询和更新帐本。
  • 使用富查询语言的只读查询 (如果使用 CouchDB 作为状态数据库)。
  • 只读历史记录查询 — 查询键的帐本历史记录,从而启用数据起源场景。
  • 交易版本包括链码读取的键/值 (读集) 和链码写入的键/值 (写集)。
  • 交易包含每个背书对端节点的签名,并提交给交易排序服务。
  • 交易被分为几大块,并从交易排序服务分发到通道上的对端节点。
  • 对端节点根据背书策略验证交易并执行。
  • 在添加区块之前,执行版本检查,以确保自链码执行以来,已读取资产的状态未更改。
  • 一旦交易被验证并被提交,就不可改变。
  • 通道的帐本包含一个配置块,用于定义策略,访问控制列表和其他相关信息。
  • 通道包含成员资格服务提供者实例,允许从不同的证书颁发机构派生加密材料。

有关数据库,存储结构和“查询能力”的更深入了解,请参阅 帐本 专题文档。

4. 隐私

Hyperledger Fabric 在每个通道的基础上使用不变的帐本,以及可以操纵和修改资产当前状态 (即更新键值对) 的链码。账本存在于通道范围内 - 可以在整个网络中共享 (假设每个参与者都在一个公共通道上工作) - 或可以将其私有化以仅包括一组特定的参与者。

在后一种情况下,这些参与者将创建一个单独的通道,从而隔离他们的交易和帐本。为了解决想要弥合总体透明度和隐私之间的差距的方案,只能在需要访问资产状态以执行读写的对端节点上安装链码 (换句话说,如果未在对端节点上安装链码, 它将无法与帐本正确连接)。

当该通道上的组织子集需要对其交易数据保密时,可以使用私有数据集合将这些数据隔离在逻辑上与通道帐本分离的私有数据库中,该数据库只能由组织的授权子集访问。

因此,通道使交易对于更广泛的网络而言是不公开的,而集合则对通道上的组织子集之间的数据保持不公开。

为了进一步模糊数据,可以在将交易发送到交易排序服务并将区块添加到账本之前,使用 AES 等通用加密算法对链码中的值进行加密 (部分或全部)。一旦加密数据已写入帐本,则只有拥有用于生成密文的相应密钥的用户才能对其解密。有关链码加密的更多详细信息,请参阅 链码开发人员 主题。

有关如何在区块链网络上实现隐私的更多详细信息,请参见 私有数据 主题。

5. 安全和 MSP

Hyperledger Fabric 支持所有参与者都具有已知身份的交易网络。公钥基础结构 (Public Key Infrastructure, PKI) 用于生成与组织,网络组件以及最终用户或客户端应用程序绑定的加密证书。结果,可以在更广泛的网络和通道级别上操纵和控制数据访问控制。Hyperledger Fabrc 的这种“许可制”的概念,再加上通道的存在和能力,帮助解决那些需要隐私和保密性要求非常高的情况。

查看 会员服务提供商 ( Membership Service Providers , MSP) 主题,以更好地了解加密实现,并签名,验证,在 Hyperledger Fabric 用于身份验证的方法。

6. 共识

在分布式帐本技术中,共识最近已成为单一功能内特定算法的同义词。但是,共识不仅包括简单地同意交易顺序,而且这种差异在 Hyperledger Fabric 中得到了体现,它在整个交易流程 (从提案和背书到交易排序,验证和承诺) 中的基本作用得到了强调。简而言之,共识被定义为对包含一个区块的一组交易的正确性的全面验证。

区块交易的顺序和结果满足明确的政策标准检查后,才能最终达成共识。这些检查发生在交易的生命周期中,包括使用背书策略来指示哪些特定成员必须背书某个交易类,以及系统链码以确保这些策略得到执行和维护。在作出承诺之前,对端节点将使用这些系统链码来确保存在足够的背书,并且它们是从适当的实体派生的。此外,在将包含交易的任何区块追加到账本之前,将进行版本控制检查,在此期间将对账本的当前状态达成一致。最终检查可以防止重复使用操作和其他可能危害数据完整性的威胁,并可以针对非静态变量执行功能。

除了进行大量的背书,有效性和版本检查外,还在交易流程的所有方向上进行持续的身份验证。访问控制列表是在网络的分层层上实现的 (将交易排序服务分布到各个通道),有效载荷在交易提案通过不同的体系结构组件时被重复签名,验证和认证。总而言之,共识不仅限于一批交易的商定顺序。相反,它是一项总体特征,它是交易从提案到承诺过程中不断进行的验证的副产品。

查看 交易流程图 以直观表示共识。

Reference

  • Docs » Key Concepts » Hyperledger Fabric Model, https://hyperledger-fabric.readthedocs.io/en/release-1.4/fabric_model.html
  • Docs » Ledger, https://hyperledger-fabric.readthedocs.io/en/release-1.4/ledger.html
  • Docs » Tutorials » Chaincode for Developers, https://hyperledger-fabric.readthedocs.io/en/release-1.4/chaincode4ade.html
  • Docs » Architecture Reference » Private Data, https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html
  • Docs » Operations Guides » Membership Service Providers (MSP), https://hyperledger-fabric.readthedocs.io/en/release-1.4/msp.html
  • Docs » Architecture Reference » Transaction Flow, https://hyperledger-fabric.readthedocs.io/en/release-1.4/txflow.html

项目源代码

项目源代码会逐步上传到 Github,地址为 https://github.com/windstamp。

Contributor

  1. Windstamp, https://github.com/windstamp

你可能感兴趣的:(8. Hyperledger Fabric 专题 - Hyperledger Fabric Model)