当前位置: > 快讯 > 正文

超级账本是什么(超级账本是什么链)

区块链上有国外比较著名的组织比如R3联盟、超级账本(Hyperledger),国内的中国区块链研究联盟(China Blockchain Research Alliance)、中国分布式总账基础协议联盟(China Ledger联盟)、金融区块链合作联盟等。

比特币、以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外、还有私有链和联盟链。公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难以快速落地 ,多中心的联盟链被认为是更有可能快速融入现实,落地实践。当前最著名的的联盟链基础平台就是“超级账本(Hyperledger)”项目。

1、超级账本是什么?

超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,30家初始企业成员(包括IBM、Accenture、Intel、J.P.Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco等)。目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程。

由于点对点网络的特性,分布式账本技术是完全共享、透明和去中心化的,故非常适合于在金融行业的应用,以及其他的例如制造、银行、保险、物联网等无数个其他行业。通过创建分布式账本的公开标准,实现虚拟和数字形式的价值交换,例如资产合约、能源交易、结婚证书、能够安全和高效低成本的进行追踪和交易。

超级账本在区块链中的位置:

- 比特币- 代表数字货币、区块链思想的诞生,提供了区块链技术应用的原型

- 以太坊- 挣脱数字货币的枷锁,智能合约的诞生,延伸了区块链技术的功能

- 超级账本- 进一步引入权限控制和安全保障,首次将区块链技术引入到分布式联盟账本的应用场景。

2、超级账本的组成

作为一个联合项目(collaborative project),超级账本由面向不同目的和场景的子项目构成。目前包括Fabric、Sawtooth、Iroha、Blockchain Explorer、Cello、Indy、Composer、Burrow等8大顶级项目,所有项目都遵守Apache v2许可,直接上思维导图把。

3、超级账本架构设计

超级账本包括三大组件:区块链(Blockchain)、链码(Chaincode)、成员权限管理(Membership)。

区块链提供一个分布式账本平台。一般地,多个交易被打包进区块中,多个区块构成一条区块链。区块链代表的是账本状态机发生变更的历史过程。

链码包含所有的处理逻辑,并对外提供接口,外部通过调用链码接口来改变世界观。世界观是一个键值数据库,用于存放链码执行过程中涉及到的状态变量。

成员权限管理基于 PKI ,平台可以对接入的节点和客户端的能力进行限制。

币通,提供最专业的数字货币趋势分析,行情分析等多维度,全方位的分析服务。

白皮书提供的Hyperledger典型架构

4、超级账本应用场景

这部分内容,在 “超级账本白皮书”中描述得很多。下面简单列举一些:

- 开放可信供应链

- 资产存管

- 商务合同

- 银联积分交换平台

- 商品身份溯源

- 食品安全等

5、开发者可以做什么

作为区块链应用开发者,需要根据业务逻辑来开发与分布式账本打交道的智能合约,以及相应的用户侧应用程序。超级账本支持了基于主流编程语言的智能合约(链码)设计,极大地方便了应用开发人员快速开发新型的分布式应用,或将已有应用迁移到区块链系统上。

区块链应用,一般由若干部署在区块链网络中的智能合约,以及调用这些智能合约的应用程序组成。典型的区块链应用程序的工作过程如下图所示。其中,用户专注于与业务本身相关的应用程序;智能合约则封装了与区块账本直接交互的相关过程,被应用程序调用。

智能合约开发

智能合约直接与账本结构打交道,处于十分核心的位置。智能合约代码本质上是为了对上层业务逻辑进行支持。智能合约最终会部署在区块链网络中与账本进行交互。开发者需要了解所选用区块链平台的智能合约结构、语言特性、状态存储方式等知识。

此外,开发者还需要对智能合约的生命周期管理进行考虑,包括代码的编写、版本管理、提交验证,以及升级版本等,都需要遵循一套标准的规范。

应用程序开发

应用程序通过调用智能合约提供的方法接口来实现业务逻辑。由于离用户侧更贴近,应用程序的开发更为灵活,可以采用已有的主流开发语言进行开发,包括Javascript、Python、Go、Java等。

在运行位置上,应用程序既可以运行在区块链网络的节点上,又可以运行在中心化的服务器上,但必须保证可以访问到智能合约暴露的服务接口。

附带提一下官方提供的开发案例:

- 案例一:转账

- 案例二:资产权属管理

- 案例三:调用其他链码

- 案例四:发送事件

6、参考资料

hyperledger 官网

区块链和HyperLedger开源技术讲堂

hyperledger-fabric 官方文档

超级账本Hyperledger白皮书(中文版)

区块链向我们展示了一个所有资产都将被数字化的世界,在互联网上,资产的转移将像今天信息的传递一样简单、方便、快捷。区块链不会“颠覆”这个世界,但一定会给这个世界带来更多不可思议的改变。

什么是超级账本?

超级账本(hyperledger)是Linux基金会于2015年发起的推进区块链数字技术和册猛交州羡桥易派慧验证的开源项目。通过创建通用的分布式账本技术,协助组织扩展、建立行业专属应用程序、平台和硬件系统来支持成员各自的交易业务。

(译)超级账本官方文档 基本概念(三) - 节点(Peer)

超级账本是Linux基金会发起的项目,意在提供一套企业级区块链应用框架,便于大家开发基于区块链技术的应用。 Fabric的基本概念 最开始,应用程序会选出一组peer来生成账本更新提议。哪些peer会被选出来是依据的背书策略,这个背书策略决定了哪些组织需要在广播账本更新提议前对更新提议进行背书。这会影响到共识方式,任何一个关心更新提议是否背书的组织都会在广播给peer更新提议并被peer接受前确认提议是否有背书。 peer对一个提议响应进行背书,就是把自己的数字签名加入到响应中,并用自己的私钥对整个响应签名。背书内容随后可以被用于证明这个响应是某个组织的peer生成的。在我们的例子中,如果peer P1属于组织1(Org1),那么背书E1就相当于可以证明L1上的交易T1和响应R1是由Org1的peer P1提供的。 当应用程序得到了足够多的签名的提议响应时,第一阶段就结束了。 我们注意到peer可能返回不同的信息,因此同一笔交易可能有不一致的返回信息。这可能由于响应是在不同时间,不同peer,在不同账本状态下生成的,大多数情况下应用程序可以多次请求更新的提议响应。另外更严重,但概率很小的原因是因为链码的不确定性导致的响应不一致。不确定性是链码和账本的大敌,如果悔老这种情况发生了,对提议交易来说是很严重的,不一致的提议响应肯定不能提交到账本中。一个独立的节点是不可能知道交易结果是非确定性的交易,在检测到非确定性交易前,必须将交易汇总比较(严格地说,即使这还不够,但我们将此讨论推迟到交易部分,其中详细讨论了非确定性)。 在第一阶段结束时,如果应用程序希望如此的话,可以放心丢弃不一致的响应以提前结束交易流程。后面我们会看到如果应用程序使用不一致的响应提交到账本时,会被拒绝。 过程2 打包 第二个交易流程是打包。Orderer节点这个过程关键的点,它接收来自很多应用传来的背书过的提议交易响应。Orderer对交易进行排序,并将大量的交易打包进区块,并准备将区块分发到所有连接到Orderer的peer,包括背书peer。 orderer的第一个角色就是打包账本更新提议。在上图的例子中,应用A1发送给Orderer O1一个被E1和E2背书的交易T1。同时,应用A2发送给Orderer O1一个被E1背书的交易T2。O1将A1传来的交易和A2传来的交易以及其它交易共同打包进区块B2。我们可以看到区块B2里的交易排序是T1,T2,T3,T4,T6,T5,并不一定是按照到达orderer节点的顺序(这个例子展示了一个非常简单的orderer配置)。 Orderer节点会同时收到网络Channel中不同应用程序发送的账本更新提议。Orderer节点的任务就是按照事先定义好的顺序整理这些更新提议,并把它们打包进区块,为下一步的分发做准备。这些区块将构成区块链。一旦Orderer节点生成了期望大小的区块,或者超过最大等待时间,Orderer会向连接到它特定Channel的Peer发送区块。第三个过程会详述这个流程。 区块中的交易排列顺序和交易到达Orderer节点的顺序没有直接关系。交易在区块中可以是任意的排列顺序,这个次序就是交易执行的顺序。重点是有一个严格的交易排序,但具碧老升体是怎样的排序并不重要。 区块中的严格交易顺序排列使得Fabric与公链中一笔交易可以含神被打包进多个不同区块的情况不同。在Fabric中,这不可能发生,由多个Orderer生成的区块就是最终的区块,因为交易被写入区块后,交易的位置顺序就确定了。这意味着Fabric不会存在分叉。一旦交易被写入区块,以后就不能再重写了。 我们可以看到,peer是存储账本和链码的,orderer完全不会存储这些。每一笔交易到达orderer时,orderer只是机械的将交易打包进区块,而不会理会交易的价值,额度等。这是Fabric的一个重要特性,所有交易都会按照一个严格的顺序进行整理,没有交易会被抛弃掉。 到第二阶段结束时,我们可以了解到orderer的责任就是进行必要的,简单的收集交易更新提议,将他们排序,打包进区块,准备分发出去。 过程3 认证 最后一个交易工作流程是分发和验证从orderer到peer的区块,如果验证成功,将会被提交到账本中。 特别的,在每个peer中,在区块中的每一笔交易在更新到账本之前都是验证过的,以保证所有交易都是由相关的组织背书过的。失败的交易会保留,作为日后审查用,并不会更新到账本中。 Orderer除了在过程2中的打包角色外,在过程3中还负责分发区块到peer节点。在这个例子中,O1分发区块到P1和P2。P1处理区块2,然后将区块2添加到P1的账本L1中。同时,P2处理区块2,然后将区块2添加到P2的账本L1中。一旦操作完成,账本L1在P1和P2中都被更新了,每个Peer都可以向连接到他们的应用程序发送处理结果。 Orderer向连接到他的Peer分发区块是过程3的开始。连接到orderer节点的某个渠道的peer,会收到orderer生成的新区块的一份拷贝。每个peer节点都会独立的处理收到的区块,但所有peer处理区块的方式都是相同的。采用这种方式,不同peer中的账本可以达成共识。并不是所有的peer都必须连接到orderer节点,peer和peer之间可以通过gossip协议来传递区块,这样peer也可以独立的处理相同区块。 收到一个区块后,peer会按照交易在区块中出现的顺序依次处理。对于每一笔交易,peer会按照生成这笔交易的链码背书策略检查交易是否被与之相关组织的背书。例如,某些交易可能只需要一个组织背书,而另一些交易需要多个组织同时背书才有效。这个验证过程验证了所有相关组织产生的结果或者输出是否一致。同时请注意,第三阶段的验证和第一阶段不同,阶段一只是应用程序收到背书节点的响应,判断是否需要发送交易提议。如果应用程序发送错误的交易,违反了背书策略,在第三阶段的验证过程中peer还是可以拒绝本次交易。 如果交易背书正确,peer将尝试把交易提交到账本中。为了能写账本,peer必须进行账本一致性检查,保证当前账本的状态与账本更新后的状态一致。这个状态并不总会是一致的,即使交易拥有完整的背书。举个栗子,另外一笔交易可能已经更新了账本中的同一个资产,以至于我们正要更新的交易将永远不会被写入账本。这样的话,每个节点中的账本必须通过网络保持共识,每个节点的验证方式是一样的。 在peer验证完每笔独立交易后,将更新账本。失败的交易会保存下来作为审查资料。这意味着peer中的区块和从orderer中收到的区块一致,除了区块中指示交易成功或失败的标志。 我们也要注意到,第三阶段并没有执行链码,这一步只会在第一阶段完成,这很重要。这意味着链码只在背书节点可用,而不是整个网络中都可用,这保证了链码在背书组织中的安全及私密。这和收到链码的执行结果不同,执行结果会分享到所有在Channel里的peer,不论他是否能背书交易。背书节点的这种设计方式是为了方便扩展。 最后,每次区块被提交到peer的账本中时,这个peer会生成对应的事件。区块事件包含区块的所有内容,而区块交易事件只包含简要信息,比如每笔区块中的交易是否有效。由链码的执行而产生的链码事件也可以在这个时候发布。应用程序可以注册这些事件,当这些事件发生时,可以收到通知。这些通知在交易工作流程的第三阶段和最后阶段完成。 总的来说,我们可以知道第三阶段由orderer产生的区块被不断地同步到账本中。区块中交易的严格排序能让每个peer在区块链网络中始终如一地验证交易并提交到账本中。 Orderer和共识 整个交易工作流程被称为共识,因为所有peer都认同交易的排序和内容,在执行过程中由orderer节点来协调。共识是多步骤的过程,应用程序只会在共识过程结束时收到通知,但通知的时间在不同的peer上可能不同。 我们将会在后面更多的探讨orderer,现在,把orderer仅仅当做从应用程序收集、分发账本更新提议到peer,由peer进行验证及更新账本的过程。

超级账本什么时候出的

2017年3月。超级账本是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导誉行空发起庆瞎,于2017年3月底正式推出。基金会,是指利用自然人、法人或者其他组织带尺捐赠的财产,以从事公益事业为目的,按照本条例的规定成立的非营利性法人。

发表评论

  • 人参与,条评论

热门阅读

最新文章

取消
扫码支持 支付码