Hyperledger Fabric Model——超级账本组成模型
超级账本组成模型
本文主要讲述Hyperledger Fabric的关键设计特性,并细述如何实现了一个全面的、可定制的企业级区块链解决方案:
资产定义——资产这里理解为任何具有货币价值的东西,它们都可以通过网络进行交易,无论是超市商品到古董车再到货币期货都属于资产。
智能合约——链码(chaincode)即Fabric的智能合约,分为系统链码和用户链码。链码的执行由事务排序划分,限制了节点类型间的信任和验证级别,并优化了网络的可伸缩性和性能。
账本特征——账本不可变的、共享的并且为每个通道(channel)编码了整个事务历史,还包含了类似sql的查询功能,用于高效的审计和解决争议。
隐私通道——多通道(channel)交易的设计方案可以确保竞争的企业和受监管的行业在一个公共网络上交换资产时的高度隐私及保密性。
成员安全——Hyperledger Fabric只允许被授权加盟的成员参与数据维护,且成员间相互认可所有的交易都会被彼此发现和跟踪。这种方式提供了一个可信的区块链网络。
共识机制——共识策略的设定是为了达成一致的一种独特的方法,它可以实现企业间所需的灵活性和可伸缩性。
资产
资产可以从有形资产(如房地产和硬件)到无形资产(如合同和知识产权)。Hyperledger Fabric提供了使用智能合约交易修改资产的能力。
资产在Hyperledger Fabric中以键-值对集合的形态存在,在通道(channel)中各本地账本可以对其状态提交变更事务。资产可以用二进制和/或JSON形式表示。
我们可以通过Hyperledger Fabric的Composer工具很容易地定义和使用Hyperledger Fabric应用程序中的资产。
智能合约
智能合约是定义资产并且可以用于修改资产的事务指令的软件。换句话说,它就是一个通道(channel)所有的业务逻辑。智能合约制定了执行读取或修改键值对以及其它状态数据库信息操作的规则。智能合约通过一个事务请求来执行对账本的当前状态数据库操作。智能合约执行会生成一组读写集,这组读写集可以通过网络提交给排序服务节点,并由排序服务节点广播且应用到所有的对等节点上。
账本特征
在Fabric中产生的所有针对数据状态变更的请求都会生成有序且不可篡改的记录存于账本中。数据状态的变更是由所有参与方认可的智能合约调用事务的结果。每个事务都将产生一组资产键-值对,这些键值对作为创建、更新或删除等操作而同步到所有账本。
账本由区块链(区块根据hash等算法组成的链条)组成,而每一个区块中都存储有一条或一组有序的且不可篡改的记录,也就是一个状态数据库来维护当前的Fabric的状态。每个通道(channel)都有且仅有一个账本,在该通道(channel)中的每个加盟成员的对等点都维护同一份账本。
- 通过使用基键(键查询)、范围查询及组合键查询等方法可对账本执行查询和更新操作
- 使用富查询语言的只读查询(如果使用CouchDB作为状态数据库)
- 只读历史查询——通过一个键来查询账本历史记录,支持数据来源场景
- 每一条请求的结果都由通过智能合约读取的读集和智能合约写入的写集的键值的多版本组成
- 每一条被提交的请求都包含提交该请求的节点的签名证书,并同时提交到排序服务节点
- 同一个通道(channel)中的区块里的所有请求事务都会被排序,并且这些区块会被排序服务节点广播到该通道(channel)内的所有对等节点
- 对等节点对请求事务的验证依靠背书策略并严格执行该策略
- 在添加一个块之前,执行了版本控制检查,以确保被读取的资产的状态在链代码执行时间之后没有改变
- 即将执行变更的请求事务集在新增到一个区块之前必须要做一次版本验证,以确保被读取的资产状态集在本条智能合约执行时间之前没有改变过
- 一旦请求事务被验证且提交,就不可篡改
- 一个通道(channel)的账本包含一个区块生成的配置策略、访问控制列表和其它相关信息
- 考虑到通道(channel)将会从不同的证书机构得到加密文件,因此通道(channel)中拥有成员服务提供者(MSP)实例
隐私通道
Hyperledger Fabric在每个通道(channel)中都有一个不可篡改的账本,以及一个可以操纵和修改当前资产状态的智能合约(例如,更新键值对)。一个账本限制在一个通道(channel)的范围内——它可以在整个网络中共享(假设每个参与者都在一个公共通道(channel)上运行)——或者它也可以被私有化,只包含一组特定的参与者。
在上述中的后一种情况下,这些参与者将创建一个单独的通道(channel),从而使他们的事务和账本隔离出来。为了满足即公开透明又能保护隐私的场景,智能合约只能在需要访问资产状态来执行读和写操作的对等节点上安装(换句话说,如果一个智能合约没有安装在对等节点上,它将无法调用账本暴露出去的接口)。
为了进一步混淆数据,智能合约中的值可以使用诸如AES之类的通用加密算法进行加密(在一定程度上或全部使用),然后将事务发送到排序服务,并将生成的区块追加到账本上。一旦加密的数据被写入到账本,它只能被拥有相应的密钥用户解密。
成员安全
Hyperledger Fabric是一个支持所有参与者都有自己的身份的交易网络。公钥的底层方案用于生成与组织、网络组件和最终用户或客户端应用程序绑定的加密证书。因此,可以在更广泛的网络和通道(channel)层次上对数据访问控制进行操作和治理。隐私和保密是最重要和最关键的问题,Hyperledger Fabric这种“被许可”的概念,再加上通道(channel)的存在和功能,有助于解决该问题。
共识机制
在分布式账本技术中,共识作为单一功能最近成为了一种特定算法的同义词。然而,共识不仅仅是简单地就事务的顺序达成一致,而且在Hyperledger Fabric中这种通过它在整个事务流中的基本作用,包括从提交请求、背书验证,到事务排序、确认和广播,这种区别显得尤为突出。简单地说,共识被定义为一个完整的循环,它是由一个经过验证核实的区块所包含的一组事务。
当一个区块中的事务集合的顺序和结果经过所有的检查而符合策略标准时,将最终达成一致。这些检查和平衡发生在一个个请求事务的生命周期中,包括使用背书策略来规定哪些特定的成员必须支持某个事务类,以及系统智能合约,以确保这些策略得到执行和维护。在提交排序服务节点之前,这些执行验证的对等节点将使用这些系统智能合约来确保足够的背书支持,并从适当的实体中获得。此外,在任何包含事务的区块被添加进账本之前,将进行版本控制,在此期间,将对账本的当前状态进行商定或同意。最后的检查提供了对双重开销操作(处理相同事务)和其他可能危害数据完整性的威胁的保护,并允许被执行的方法依赖非静态变量。
除了大量的背书认可、有效性和版本控制检查之外,在事务流的各个方向上也有正在进行的身份验证。访问控制列表是在通过网络实现的(排序服务下发到所有通道),并且因为一条事务请求将会通过不同的体系结构组件,所以payloads会被反复地签名、复核及验证。总之,达成共识并不仅仅局限于一组交易的达成一致,而是一种包罗万象的特性,它是在交易从提案到最终广播过程中进行的持续验证的副产品。
Hyperledger Fabric Model——超级账本组成模型的更多相关文章
- windows 搭建 IBM Hyperledger Fabric(超级账本)开发环境
一.概述 Hyperledge fabric项目是IBM开源的区块链项目.Github地址:https://github.com/hyperledger/fabric 想对fabric有具体的认识,可 ...
- Hyperledger Fabric Capabilities——超级账本功能汇总
Hyperledger Fabric是一种模块化的区块链架构,是分布式记账技术(DLT)的一种独特的实现,它提供了可供企业运用的网络,具备安全.可伸缩.加密和可执行等特性.Hyperledger Fa ...
- Hyperledger Fabric 账本结构解析
前言 现在很多人都在从事区块链方面的研究,作者也一直在基于Hyperledger Fabric做一些开发工作.为了方便后来人更快的入门,本着“开源”的精神,在本文中向大家讲解一下Hyperledger ...
- SAP云平台,区块链,超级账本和智能合约
前一篇文章<Hyperledger Fabric on SAP Cloud Platform>,我的同事Aviva已经给大家介绍了基于区块链技术的超级账本(Hyperledger)的一些概 ...
- Hyperledger Fabric on SAP Cloud Platform
今天的文章来自Wen Aviva, 坐Jerry面对面的程序媛. Jerry在之前的公众号文章<在SAP UI中使用纯JavaScript显示产品主数据的3D模型视图>已经介绍过Aviva ...
- HyperLedger Fabric部署与链码解读
1.Fabric简介 Fabric是超级账本中的一个项目,用以推进区块链技术.和其他区块链类似,它也有一个账本,使用智能合约,且是一个参与者可以分别管理自身交易的系统.它是一个联盟链.Fabric与其 ...
- Hyperledger Fabric【区块链学习一】
Hyperledger Fabric 学习 什么是区块链 什么是区块链在我们没有接触的时候,只知道它是一个去中心化的存储方式.当我们发生交易,或者动作的时候我们会将记录通知给所有参与者共同维护,达到去 ...
- Hyperledger Fabric 核心概念
一.说明 区块链是一个透明的,基于不可变模式的去中心化系统,核心就是一个分布式账本,记录网络上发生的所有交易. 区块链网络主要有三种类型:公共区块链.联盟区块链,以及私有区块链:我们熟知的比特币.以太 ...
- HyperLedger Fabric 1.4 超级账本项目(5.4)
超级账本(Hyperledger)项目分框架类和工具类两种项目,框架类有Hyperledger Burrow.Hyperledger Fabric.Hyperledger Indy.Hyperledg ...
随机推荐
- JavaScript操作符(一元操作符)
JavaScript操作符包括算术操作符.位操作符.关系操作符和相等操作符.只能操作一个值的操作符叫做一元操作符. 递增和递减操作符 递增和递减操作符有两个版本:前置型和后置型.前置型操作符位于要操作 ...
- DotNetCore跨平台~为Lind.DotNetCore框架添加单元测试的意义
回到目录 单元测试大叔认为有几下两个必要的作用,也是为什么要上单元测试的原因 组件,框架在修改和BUG解决后,进行正确性的测试,然后才能打包 业务模块,主要提现在进行业务规则的模拟上面,保证了业务逻辑 ...
- ES6函数的拓展
ES里面现在支持在函数的参数直接给参数赋一个默认值,ES6支持拓展运算符(...)三个英文的点,这个形式如function(...a)这个里面...a可以接受若干的值,这个拓展运算符也可以把若干的值转 ...
- puppet配置问题统计
一. [root@client puppet]# puppetd --test --server master.test.cominfo: Creating a new SSL key for cli ...
- mouseout、mouseover和mouseleave、mouseenter区别
今天在使用鼠标事件时,用错了mouseout,于是做个测试总结. 结论: mouseenter:当鼠标移入某元素时触发. mouseleave:当鼠标移出某元素时触发. mouseover:当鼠标移入 ...
- Java多线程之赛跑游戏
在JavaSE中,多线程是一个重要的内容. 我们要了解多线程的概念,就要先了解进程的概念:要了解进程的概念,就离不开操作系统的概念. 在一台正常运行的电脑中,计算机硬件(如CPU.内存.硬盘.网卡.显 ...
- 在Ubuntu14.04下安装 ffmpeg-2.4.13(处理视频用,将视频保存为图片序列)
首先在 http://www.ffmpeg.org/olddownload.html 下载 ffmpeg-2.4.13.tar.bz2 : 然后安装 yasm 和 libx264: apt-get i ...
- 小白的Python之路 day4 迭代器
迭代器 学习前,我们回想一下可以直接作用于for循环的数据类型有以下几种: 1.集合数据类型,如list.tuple.dict.set.str等: 2.是generator,包括生成器和带yield的 ...
- 502 VS 504
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/89 首先看一下概念: 502:作为网关或者代理工作的服务器尝试执 ...
- 二分查找(折半查找)C++
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少: 其缺点是要求待查表为有序表,且插入删除困难. 因此,折半查找方法适用于不经常变动而查找频繁的有序列表. 首先,假设表 ...