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的更多相关文章
随机推荐
- Linux-- 文件编辑器 vi/vim(1)
			初识 vi/vim 文本编辑器 1.vi 和 vim 相同,都是文本编辑器,在 vi 模式下可以查看文本,编辑文本,是 Linux 最常用的命令,vi 模式下分为三部分,第一部分一般模式,在一般模式中 ... 
- let与var的区别,为什么什么要用let?
			1.var是全局声明,let是块级作用的,只适用于当前代码块 var a = 1: if(true){ let a; a=22: console.log(a);'//22 } if(){}内就是let ... 
- MySQL-5.5.32 配置文件优化详解
			目录 MySQL-5.5.32 配置文件优化详解 一.配置文件说明 2.my-medium.cnf 3.my-large.cnf 4.my-huge.cnf 5.my-innodb-heavy-4G. ... 
- windbg调试虚拟机XP系统
			一.先介绍一下被调试的虚拟机系统环境: 虚拟机:vmware workstation 10.0版本 虚拟机操作系统: Microsoft windows xp professional 2002 se ... 
- python 消息队列-rabbitMQ 和 redis介绍使用
			1.rabbitMQ 与ptyhon 进程queue 区别.进程queue 主要用户Python父子进程之间或者统一进程不同子进程.rabbit可以用户不同语言之前的相互交流,socket可以实现同样 ... 
- PTA基础编程题目集6-5求自定类型元素的最大值 (函数题)
			原题目: 本题要求实现一个函数,求N个集合元素S[]中的最大值,其中集合元素的类型为自定义的ElementType. 函数接口定义: ElementType Max( ElementType S[], ... 
- Linux下c语言实现myod
			首先根据od要输出16进制的功能,以及c语言中文件的打开读取等函数,编写了如下代码. #include<stdio.h> #define N 1000 int main() { int c ... 
- 20155220 2016-2017-2 《java程序设计》第二周学习总结
			教材学习内容总结 3.1类型.变量与运算符 1)基本类型 byte 字节型 1 byte short 短整型 2 bytes int 整型 4 bytes long 长整型 8 bytes float ... 
- 20155305 2016-2017-2 《Java程序设计》 实验五 Java网络编程及安全实验报告
			20155305 2016-2017-2 <Java程序设计> 实验五 Java网络编程及安全实验报告 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传 ... 
- kali更新源相关 -- 没有release文件、签名无效、404
			kali更新源相关 -- 没有release文件.签名无效.404 这个随笔主要是处理Mac下使用VMare虚拟机安装Kali时候我遇到的一些关于更新源的问题 (因为本人为了这个问题折腾了四五个小时, ... 
