Hyperledger_Fabric_Model
Hyperledger_Fabric_Model
本部分描述了Hyperledger Fabric的主要设计特点
- Assets: 资产定义使得任何东西都可以通过货币值在网络中交易,从食物到老爷车再到期货。
- Chaincode: 由以下几部分构成的执行部分,包括交易排序,限制信任等级,验证节点类型以及优化网络性能。
- Ledger Features: 不可更改的、共享的账本编码了整个交易历史(for each channel),包含了类似于SQL语句的查询命用于高效审计和解决纠纷。
- Privacy through Channels: 可以使具有高度隐私和机密性的多边交易成为竞争企业和受监管行业在公共网络上交换资产所必需的。
- Security & Membership Services: Permissioned membership 提供了一个可信任的区块链网络,它的参与者知道所有的交易都可以被检测到兵器被管理者追踪。
- Consensus: 一个统一的方法用来建立共识,实现了企业级网络所需要的灵活性与可扩展性。
Assets(资产)
资产可以是任何有型的无形的资产,Hyperledger Fabric提供了通过chaincode来修改资产的能力。
资产在Hyperledger Fabric中表现为一个键值对的集合,状态的改变会记录在一个channel的ledger上。资产可以以二进制或者是JSON格式。
在Hyperledger Fabric中,你可以通过Hyperledger Composer工具很容易的定义并使用资产。
Chaincode
Chaincode是通过软件定义资产,以及资产修改的指令。或者说,chaincode是商业逻辑。chaincode执行读取或者更改键值对的规则。Chaincode函数根据账本的当前状态来执行。如果chaincode的执行结果是更改键值对,那么这个操作会传播到网内的所有节点。
Ledger Features
ledger是顺序的、难以破坏的记录,其记录了整个fabric上所有状态变化。状态变化是chain code的执行结果。每个交易都会导致一系列键值对创建、修改或是删除。
ledger是用区块链来用来存储不变的、顺序记录的交易信息,除此之外还有一个状态数据库用来表示当前的fabric状态。每个channel都有一个ledger。每个peer都包含了他所属那个channel的ledger的整个拷贝。
privacy through channels
HyperLedger Fabric在每一个channel上都实现了一个不可变更的账本,chaincode可以管理修改资产的当前状态。一个账本存在于一个channel的作用域内,可以在网络间所有节点内共享(这时所有节点都使用这个channel),也可以只在部分节点中共享。
在后一种情况下,共享账本的节点会创建一个独立的channel以以在相互之间共享账本。为了解决在完全透明的账本和部分可见的账本之间的通讯问题,chaincode可以只在需要访问资产状态的节点上实现。换句话说就是,如果节点上没有安装chaincode,那么该节点就不能正确访问资产。
Security & Membership Services
Hyperledger Fabric实现的区块链网络中,所有节点都有一个唯一的ID,Public Key Infrastructure 用来产生加密证书,这些证书绑定到组织、网络参与者、用户或者客户端应用上。数据访问控制可以在整个网络,在channel级别进行管理。
Consensus 共识
在分布式分类帐技术中,共识最近已经成为特定算法的同义词,在一个单一的函数内。共识已经不仅仅是简单地同意交易的顺序,从提案和背书,到订购、验证和承诺,都突出显示在超级分类账上。简而言之,共识被定义为对包含块的一组事务的正确性进行全面的验证。
endorsement: 背书,是转让汇票权利的一种法定手续,就是由汇票持有人在汇票背面签上自己的名字,或再加上受让人的名字,并把汇票交给受让人的行为。
当块事务的顺序和结果满足显式策略标准检查时,最终会达成一致。这些检查和平衡在事务的生命周期中都会发生,包括使用背书策略来规定哪些特定成员必须认可某个事务类,以及系统链码以确保这些策略得到执行和维护。在确认之前,节点将使用这些chaincode,以确保有足够的背书存在,并且这些背书来自适当的实体。此外,在将包含交易的任何块附加到分类账之前,将进行版本检查,在此期间,对分类账的当前状态达成一致或同意。这个最后的检查提供了对重复开销操作和其他可能危及数据完整性的威胁的保护,并允许对非静态变量执行函数。
除了进行大量的背书、有效性和版本控制检查之外,还有在事务流的各个方向上正在进行的身份验证。访问控制列表在网络的层次层上实现(从服务到通道),并且有效负载在通过不同体系结构组件的事务提案时被反复签名、验证和验证。综上所述,共识不仅限于达成一致的一批交易的顺序,而是作为交易从提案到承诺的过程中正在进行的验证的副产品实现的总体特征。
Hyperledger_Fabric_Model的更多相关文章
随机推荐
- JAVA语言编程思维入门
Java语言是一门强数据类型语言,也就是所有的数据有自己的数据类型,不能搞混淆.比如整数int 字符串String 不能用int a="字符串123";这样写是错的,因为数据类型不 ...
- Oracle 11g R2 RAC with ASM存储迁移--Rman copy&ASM Rebalance(一)
ASM GROUP-Rman copy迁移 0x00--环境介绍 VMware版本:VMware12pro 主机操作系统:RHEL6.5_64 共享存储使用VMWARE创建共享磁盘文件 数据库版本:O ...
- js获取当前时间并转化
1.转化为 年月日 function getNowFormatDate() { var date = new Date(); var seperator1 = "-"; var ...
- hubilder 打包app ios高版本不支持问题
<script type="text/javascript"> document.addEventListener('plusready', function(){ v ...
- Msql浅析-基础命令(二)
篇幅简介 一.Msql数据类型 1.整型 tinyint, 占 1字节 ,有符号: -128~127,无符号位 :0~255 smallint, 占 2字节 ,有符号: -32768~32767无符 ...
- android studio 插件开发(自动生成框架代码插件)
android studio 插件开发 起因 去年公司开始上新项目,正好android在架构这方面的讨论也开始多了起来,于是mvp架构模型就进入我们技术选择方案里面,mvp有很多好处,但是有一个非常麻 ...
- golang基础--Gocurrency并发
Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销. 并发不是并行(多CPU): Concu ...
- python+MongoDB使用示例
本博客起源于博主的大三NoSQL课程设计,采用python+MongoDB结合方式,将数据从txt文件导入MongoDB之中,再将其取出以作图.主要技术是采用python与MongoDB结合存储读取方 ...
- Linux入门进阶第六天——登录文件、开机与模块管理
一.登录文件概述 1.什么是登录文件 简单的说,就是记录系统活动信息的几个文件, 例如:何时.何地(来源 IP).何人 (什么服务名称).做了什么动作 (讯息登录啰). 换句话说就是:记录系统在什么时 ...
- 20155235 2006-2007-2 《Java程序设计》第1周学习总结
20155235 2006-2007-2 <Java程序设计>第1周学习总结 教材学习内容总结 第二章 使用的JRE不同,对JAVA的执行有什么影响 第三章 字符串的用法在JAVA和C中有 ...