本文主要介绍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. C#语法快速热身

    if选择结构: 简单:if结构 单分子:If-else结构 多重:f-else-if结构 嵌套:if结构 语法: If(条件1){ If(条件2) }else{ } }else{ } Switch结构 ...

  2. Leetcode(一)两数之和

    1.两数之和 题目要求: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重 ...

  3. 用不到 50 行的 Python 代码构建最小的区块链

    引用 译者注:随着比特币的不断发展,它的底层技术区块链也逐步走进公众视野,引起大众注意.本文用不到50行的Python代码构建最小的数据区块链,简单介绍了区块链去中心化的结构与其实现原理. 尽管一些人 ...

  4. 更改了ssh文件下,还没有权限

    执行 cd /root/.ssh chmod 600 id_*

  5. mysql的一点小错误

    当使用sql语句时,字段记得使用``反向单引号,而不是单引号

  6. 获取resource下文件

    Resource resource = new ClassPathResource(certPath);File file= resource.getFile();

  7. Oracle ebs 数据脱敏

    https://blog.csdn.net/pan_tian/article/details/16120351Data Masking可对数据进行不可逆的去身份化后,再用于非生产环境,同时自动保留引用 ...

  8. ZJOI2019二试游记

    ZJOI2019二试游记 Day -2 今天就要去被虐了!开一篇占个坑.禁赛警告 Day -1 早上zzy,下午zzq,无限懵逼... 过来的时候Sooke,memset0,老K坐我旁边,瑟瑟发抖.. ...

  9. python爬虫学习之使用BeautifulSoup库爬取开奖网站信息-模块化

    实例需求:运用python语言爬取http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html这个开奖网站所有的信息,并且保存为txt文件和excel文件. 实 ...

  10. JavaPoet开源项目的使用

    一.介绍 JavaPoet项目可以动态的生成Java文件,这是一个很强大和很动态的方法,使用注解的时候假如需要生成新的Java文件就可以通过这个开源项目实现. 项目地址:https://github. ...