Hyperledger Fabric之模型
本文主要介绍Hyperledger Fabric的主要设计特点,为了满足功能丰富、可定制、企业化区块链解决方案。
Assets
- 资产定义,使得任何形式的资产,从食物到汽车到货币都可以进行自由的交换。Chaincode
- 链码的执行从交易共识中分离,将需要的可信等级和验证分担给各种类型的节点,优化了网络的可扩展性和性能。Ledger-Features
- 不可更改的,共享的账本对每个通道中的所有历史进行编码,为高效的审计和解决分歧等提供了类SQL的查询能力。Privacy-through-Channels
采用通道的方式使得业务隔离,为多方在同一个网络中执行资产交易提供了更高的隐私性和机密性。Security-Membership-Services
- 准入服务提供了一个可信的区块链网络,参与者可以知道所有的交易都会被权威机构和审计来检查和追溯。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之模型的更多相关文章
- Hyperledger Fabric Model——超级账本组成模型
超级账本组成模型 本文主要讲述Hyperledger Fabric的关键设计特性,并细述如何实现了一个全面的.可定制的企业级区块链解决方案: 资产定义--资产这里理解为任何具有货币价值的东西,它们都可 ...
- 第6章 Hyperledger Fabric模型
This section outlines the key design features woven into Hyperledger Fabric that fulfill its promise ...
- Hyperledger Fabric CouchDB as the State Database
使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...
- Hyperledger Fabric Chaincode for Operators——实操智能合约
什么是Chaincode(智能合约)? chaincode是一个程序,它是使用Go语言编写的,最终在Java等其他编程语言中实现了指定的接口.chaincode运行在一个被背书peer进程独立出来的安 ...
- Hyperledger Fabric链码之三
在<Hyperledger Fabric链码之一>和<Hyperledger Fabric链码之二>中我们介绍了链码的定义,并通过dev网络测试了测试了自己编写的链码程序. 本 ...
- Hyperledger Fabric CouchDB as the State Database——使用CouchDB
使用CouchDB作为状态数据库 状态数据库选项 状态数据库包括LevelDB和CouchDB.LevelDB是嵌入在peer进程中的默认键/值状态数据库,CouchDB是一个可选的外部状态数据库.与 ...
- HyperLedger Fabric 1.4 超级账本项目(5.4)
超级账本(Hyperledger)项目分框架类和工具类两种项目,框架类有Hyperledger Burrow.Hyperledger Fabric.Hyperledger Indy.Hyperledg ...
- Hyperledger Fabric on SAP Cloud Platform
今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...
- 联盟链IBM的超级账本Hyperledger Fabric框架,JP Morgan’s Quorum
联盟链IBM的超级账本Hyperledger Fabric框架,JP Morgan’s Quorum JP Morgan’s Quorum https://www.coindesk.com/jpmor ...
随机推荐
- redis操作(String,Hash,List,Set,其他操作)
一.String操作 String操作,redis中的String在在内存中按照一个name对应一个value来存储.如图: set(name,value,ex=None,px=None,nx=Fal ...
- sklearn导入模块问题:python ImportError: No module named datasets
提示无法导入module 问题原因:将文件命名为sklearn.py. 解决方式:将文件命名为其他. 引用: [1] https://stackoverflow.com/questions/49635 ...
- Python机器学习步骤
推荐学习顺序 学习机器学习得有个步骤, 下面大家就能按照自己所需, 来探索这个网站. 图中请找到 "Start", 然后依次沿着箭头, 看看有没有不了解/没学过的地方, 接着, 就 ...
- angular-指令
ng-app 作用域 ng-init 声明 module 模块 ng-model 双向绑定 ng-bind 绑定 angular是一个MVC框架:即 M------------------module ...
- 使用ILSpy软件反编译.Net应用程序的方法及注意事项
今天遇到之前同事写的代码没有源码了,但是客户要在原来的基础上修改程序!好在没有做加壳处理,所以就用了ILSpy软件进行反编译!下面把步骤及遇到的问题写下来: 1.打开ILSpy软件,点击File , ...
- 【腾讯Bugly干货分享】Android 插件技术实战总结
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/1p5Y0f5XdVXN2EZYT0AM_A 前言 安 ...
- 【翻译】Neural Collaborative Filtering--神经协同过滤
[说明] 本文翻译自新加坡国立大学何向南博士 et al.发布在<World Wide Web>(2017)上的一篇论文<Neural Collaborative Filtering ...
- Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
第2章 Java程序设计环境 本章内容: 安装Java开发工具箱 使用集成开发环境 选择开发环境 运行图形化应用程序 使用命令行工具 建立并运行applet本章主要介绍如何安装Java开发工具箱(JD ...
- Redis 搭建文档,备份及认证
wget http://download.redis.io/releases/redis-3.0.6.tar.gz为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中[root ...
- C#zip压缩类
改造了网上的代码,可以压缩文件夹.指定文件列表(文件和文件夹的混合列表,需要指定子文件夹下需要压缩的文件),注释很详细不做解释 public class ZipHelper { /// <sum ...