本文主要介绍Hyperledger Fabric的主要设计特点,为了满足功能丰富、可定制、企业化区块链解决方案。

  1. Assets - 资产定义,使得任何形式的资产,从食物到汽车到货币都可以进行自由的交换。
  2. Chaincode - 链码的执行从交易共识中分离,将需要的可信等级和验证分担给各种类型的节点,优化了网络的可扩展性和性能。
  3. Ledger-Features - 不可更改的,共享的账本对每个通道中的所有历史进行编码,为高效的审计和解决分歧等提供了类SQL的查询能力。
  4. Privacy-through-Channels 采用通道的方式使得业务隔离,为多方在同一个网络中执行资产交易提供了更高的隐私性和机密性。
  5. Security-Membership-Services - 准入服务提供了一个可信的区块链网络,参与者可以知道所有的交易都会被权威机构和审计来检查和追溯。
  6. Consensus - 独特的共识方式为企业提供了灵活性和扩展性需求。

资产


资产包括有形资产(房产和五金制品)和无形资产(合约和知识财产)。超级账本Fabric使用链码交易提供了一种修改资产的功能。

资产在Fabric中使用健值对集合来表示,资产状态的改变通过交易来记录。参考Channel .资产可以用二进制或者JSON的形式来表示。
在你的Fabric应用中,你可以很容易的使用Hyperledger Composer工具来定义和使用资产。

链码


链码是用来定义一个或一组资产的程序,交易指令用来修改资产。换句话说,就是业务逻辑。链码在读取或修改健值对或者其他状态数据库信息会强制执行一些规则。链码中函数操作账本当前的状态数据库。链码执行结果会生成一组健值写入集合,可以提交到网络中,并添加到所有节点的账本中。

账本特点


账本是一个线性的,不可篡改的所有状态转变记录。状态的转变是链码执行的结果。每个交易都会引起资产资产健值对的改变,比如创建,更新或者删除动作。
账本由区块组成,用来存储不可更改的,序列的交易区块,还有一个维护当前fabric状态的状态数据库。每个通道有一个账本。每个节点都会维护一个他们所加入通道的账本。

  • 查询和更新账本,使用健,范围查询和组合键查询。
  • 只读查询使用富查询语言(如果使用CouchDB作为状态数据库)
  • 只读历史查询 - 通过key查询账本历史,数据证明场景
  • 交易包含读集合(健/值的版本)和写集合(健值对)
  • 交易排序后记录到区块中,然后由ordering服务递交给通道中的所有节点
  • 节点验证交易的背书策略,并执行策略
  • 在提交区块前,会执行版本检查以保证读取的资产状态在链码执行阶段没有改变
  • 交易一旦验证和提交,就不能更改
  • 通道账本包含配置块定义一系列策略,访问控制列表,和其他有关信息
  • 通道包含MSP实例,允许加密配置来自不同证书中心。
    想要进一步了解数据库,存储结构和query-ability,请参考ledger

通道保密性


超级账本Fabric在每个通道中使用一个永久账本,结合链码来操作和修改资产的当前状态(例如,更新健值对)。账本属于某个通道 - 可以在整个网络中进行共享(假设参与者都在同一个通道中) - 或者可以创建仅包含特定数量的参与者的私有通道。

在以后的场景中,参与者可以创建隔离的通道来隔离他们的交易和账本。为了平衡隐私性和透明性,链码可以只安装在需要访问资产状态的节点上(换句话说,如果链码不安装在某个节点上,节点就不能够访问该账本)。为了进一步保护数据,链码中的数据可以进行加密(部分或者全部),使用AES等加密算法等,然后在提交到账本中。

安全性&成员服务


超级账本Fabric是一个交易网络,其中所有参与者都有已知的身份。使用PKI体系来为组织,网络组建,终端用户以及客户端应用来颁发数字证书。因此,数据访问控制可以在更广的网络或者通道上进行。Fabric的准入机制结合通道技术,共同解决了注重隐私性和机密性的区块链场景。
想要进一步了解Hyperledger Fabric中密码实现,以及签名、验证和授权方式,请参考MSP.

共识


在分布式账本技术中,共识最近已经成为某个函数中的一种特定的算法。然而,共识强调的不仅仅是对交易顺序达成一致,在Fabric中,注重整个交易流程,从提议和背书,到排序,再到验证和提交。 简言之,共识被定义为一个块中所有交易在整个流程中的正确性验证。
当排序和区块中交易满足策略检查,共识最终达成。这些检查在交易的整个生命周期中,从背书策略(指定哪些成员背书特定交易)的使用,到系统链码保证这些策略执行和维持。在提交前,节点会使用系统链码来保证交易有足够的背书,交易来自合法的实体。此外,在区块提交到账本前,会对达成的账本状态进行版本检查。
最后的这个检查用来防止双花以及其他可能破外数据完整性的威胁。

除了大量的背书,有效性和版本检查,在交易流程中还有大量的身份检查。在网络的分层结构中是加入了访问控制列表(从排序服务到通道),交易内容也会被反复的签名,验证以及授权,然后发送的fabric网络中。总结下来,共识不仅仅是对一组交易的顺序达成一致,还包括从交易提议到最终提交整个过程中的所有相关验证。
txflow以可视化的方式展现共识过程。

--------------------------------------------------------------------------完美的终结线------------------------------------------------------------

Hyperledger Fabric之模型的更多相关文章

  1. Hyperledger Fabric Model——超级账本组成模型

    超级账本组成模型 本文主要讲述Hyperledger Fabric的关键设计特性,并细述如何实现了一个全面的.可定制的企业级区块链解决方案: 资产定义--资产这里理解为任何具有货币价值的东西,它们都可 ...

  2. 第6章 Hyperledger Fabric模型

    This section outlines the key design features woven into Hyperledger Fabric that fulfill its promise ...

  3. Hyperledger Fabric CouchDB as the State Database

    使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...

  4. Hyperledger Fabric Chaincode for Operators——实操智能合约

    什么是Chaincode(智能合约)? chaincode是一个程序,它是使用Go语言编写的,最终在Java等其他编程语言中实现了指定的接口.chaincode运行在一个被背书peer进程独立出来的安 ...

  5. Hyperledger Fabric链码之三

    在<Hyperledger Fabric链码之一>和<Hyperledger Fabric链码之二>中我们介绍了链码的定义,并通过dev网络测试了测试了自己编写的链码程序. 本 ...

  6. Hyperledger Fabric CouchDB as the State Database——使用CouchDB

    使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...

  7. HyperLedger Fabric 1.4 超级账本项目(5.4)

    超级账本(Hyperledger)项目分框架类和工具类两种项目,框架类有Hyperledger Burrow.Hyperledger Fabric.Hyperledger Indy.Hyperledg ...

  8. Hyperledger Fabric on SAP Cloud Platform

    今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...

  9. 联盟链IBM的超级账本Hyperledger Fabric框架,JP Morgan’s Quorum

    联盟链IBM的超级账本Hyperledger Fabric框架,JP Morgan’s Quorum JP Morgan’s Quorum https://www.coindesk.com/jpmor ...

随机推荐

  1. alfred3配置

    搜索功能配置 github https://github.com/search?utf8=%E2%9C%93&q={query} github'{query}' g baidu http:// ...

  2. XSS攻击 CSRF攻击

    XSS攻击: 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆, 故将跨站脚本攻击缩写为XSS.恶意攻击者 ...

  3. LCD_FSMC

    /************************************************************************** * 文件名:LCD_FSMC.h * * 编写人 ...

  4. 一招让 IOS 自动化化快的飞起

    前言 最近在做IOS自动化测试,IOS的Appium环境都配置OK,Demo脚本运行没有问题,多开执行没有问题,IOS安卓统一平台调度集成没有问题,可以进行自动化测试.课时真正执行用例时发现个严重问题 ...

  5. OC基础成员变量、属性变量、实例方法与类方法

    首先,为什么我们要定义一个新类呢?按照我的理解,就是为了抽象出来一个新的东西(也就是类),用来存储更多的数据变量和方法,一切类都直接或间接继承与NSObject. 在类的头文件里我们可以定义成员变量. ...

  6. java web 开发手册

    W3School离线手册(2017.03)               提取密码: b2fo JavaScript高级程序设计第三版             提取密码: cscv CSS4.2.4 参 ...

  7. CentOS6.8手动安装MySQL5.6(转)

    1.安装mysql5.6依存包 2.下载编译包 wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.35-linux-glibc2 ...

  8. Python OR & AND

    These are the Boolean operations, ordered by ascending priority: Operation Result Notes x or y if x ...

  9. 《HTTP权威指南》5-Web服务器

    各种形状,风格,尺寸的Web服务器 Web服务器会对HTTP请求进行处理并提供响应.Web服务器有着不同的风格,形状和尺寸但是不管功能,外貌,风格有何差异,所有的Web服务器都能够接收请求资源的HTT ...

  10. 如何将自己的jar包发布到mavan中央仓库

    最近自己写了一个关于网关限流的插件,然后想着肯定会有很多兄弟也需要使用到,所以就想着把jar包上传到Maven的中央仓库上让大家可以更方便的使用 现在咱们来看一下这个流程是什么样的呢. 首先呢,你得去 ...