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 ...
随机推荐
- vscode 添加 includePath
使用vscode打开C项目时,vscode无法找到头文件路径,提示:configure includePath for better intellisense results 解决: 编辑~/.vsc ...
- nginx的锁
一.原理 nginx的锁是基于共享内存实现的,这点跟redis中利用一个存储(也就是一个键值对)来实现锁的原理是一致的,每一项操作通过检查锁对象的lock域是否为0,来判断能否获取锁并尝试获取锁. 二 ...
- 微信支付接口调用H5(C#)
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付.主要用于触屏版的手机浏览器请求微信支付的场景.可以方便的从外部浏览器唤 ...
- VS Code 调试 Angular 和 TypeScript 的配置
一.安装插件 在 Visual Studio Code 中打开扩展面板(快捷键 Ctrl+Shift+X),搜索安装 Debugger for chrome 插件). 二.配置启动参数 在 Visua ...
- 【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求
[.NET Core项目实战-统一认证平台]开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这 ...
- 【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权
[.NET Core项目实战-统一认证平台]开篇及目录索引 上篇文章我们介绍了网关使用Redis进行缓存,并介绍了如何进行缓存实现,缓存信息清理接口的使用.本篇我们将介绍如何实现网关自定义客户端授权, ...
- 64位 windows10,MYSQL8.0.13重置密码(忘记密码或者无法登录)
上一节的MySQL的配置安装里,并没有用到配置文件my.ini.那在MYSQL8.0.13如何解决密码重置问题呢.我去网上搜了好多的资料都是改配置文件my.ini的,后来终于找到了一条命令:操作步骤如 ...
- Android Studio 合并分支代码到主干的操作总结
一.背景 使用SVN进行版本管理时,一般的,我们的所有的开发都是基于trunk进行开发,当一个版本开发告一段落,经验证测试发布上线后,代码处于冻结状态,基于当前冻结的代码库,打一个tag进行管理,与发 ...
- ScrollView嵌套子View的getDrawingCache为空的解决方法
ScrollView嵌套子View的getDrawingCache为空的解决方法 问题 将组件的显示布局改为可以滚动的,然后用ScrollView作为了View的父类,发现View的getDrawin ...
- Kali学习笔记34:配置TFTP和FTP服务
配置TFTP: 默认情况下windowsXP和2003是开启TFTP服务的 其他windows到控制面板设置好就行 kali系统也是安装了TFTP服务的:atftpd 下面是一些配置并放入一个文件 w ...