区块链

区块链之联盟链(二) 认识Quorum

2019-12-04  本文已影响0人  Charles_linzc

       以太坊企业联盟相关的项目中,最有名的就要属Quorum,本文我们将简单介绍一下Quorum项目,以及其对以太坊公有链的扩展。对于以太坊这些公链,其建立的目标是完全分布的、无政府监督的、无准入限制的、完全公开的网络。 但当应用到企业环境时,其自身并不能完全全试用。

  要理解公有链在企业间环境的局限性,我们有必要先探讨一下,企业为什么对区块链感兴趣:

1) 新的企业间信任机制    现实世界充满尔虞我诈,企业间的信任通常建立在复杂体系下,例如跨国转账业务,你是年来的标准,复杂而效率低下,所有参与方都要负担高昂的成本;而区块链技术,将信任数字化、代码化,提高了效率,降低了成本,所以在金融领域最先得到了应用。

1)  分布式账本   区块链上所有交易的数据都会存在相应节点记录, 所有的事物内容不允许篡改,参与方都可以访问数据,这对企业间的信息化集成提供了很好的技术方案,企业很希望从区块链上获益。

2)   所有事物可溯原    分布式账本的特点,决定所有的交易都可以溯源,在供应链,食品安全领域,企业实实在在的看到了好处。

3)   资产数字化需求    区块链的以这个重要特点就是资产数字化,其理念就是万物皆可Token。 不是衍生币可以数字化,所有存在的资产都可以数字化。 数字化的资产更方便交易,流通。这是对当前社会交易模式的一次变革,将会有长远的意义。

但是,从企业的需求,当前基于公链的区块链还远远不能满足用户的需求,在企业间环境,区块链技术还被期望更多的要求:

1.   交易速度与成本    世界互联网已经足够发达,双11每秒的交易数量是数以亿计。可是当前所有主流的公链,每秒甚至很难完成一次交易,其基于POW的公式不仅浪费速度,而其浪费电力,作为企业间业务,这个还是无法满足的。所以联盟链需要抛弃POW此类比较耗时、好成本的公式。

2.   安全与保密     公链上所有智能合约都是可以访问的,所有的交易信息也可以被查询,这在企业间是不允许的,企业间又更多的安全要求,似有数据应该只在参与方间公开。另外只有被许可的企业才可以加入到交易中来,被许可的用户才能发起交易。

相对于企业市场的需求,Quorum基于以太坊技术做了新的扩展,通过quorum node, 提供企业层的区块链平台:

1)  新的共识算法    RAFT, IBFT 、Clique POA, 基于许可的联盟链需要更快更方便的公式层。 基于Raft的选举型共识算法对比POW方式能够满足企业的性能等方便的需求,而且不需要消耗能源成本。 而IBFT拜占庭容错类型的公式,允许部分节点存在欺骗,对于特定场景也是很合适的算法。

2)  基于信任的准入机制    企业加入联盟链是要经过许可的,Quorum Node的一个重要扩展就是加入这个许可机制,只有经过许可的节点才可以加入。

3)   支持public 和 private 两类状态   在公有链中,所有的状态都是包含在world state里,所有人都有机会查询到。 而在企业里,很多数据信息是很敏感的,除了共享的状态信息外,企业间还在各自的节点中存储Private状态,这些状态只有交易双方知道。Quorum 支持这两种状态的隔离, 也就是说,企业间似有的数据是可以不存储在World State里的,这有效地扩展了区块链对企业场景的应用。

4)   支持私有事务   与私有状态相对应的就是私有事务,Quorum通过Private Manager来完成私有事务的支持,与私有事务相关的只能合约只在相关节点。

5)   on-chain 和 off-chain 支持   线上的交易又慢又耗费大量成本,企业间的应用希望将线上的复杂业务转移到现下执行,EEA中就规定了线下执行业务的方式。

Quorum的架构

Quorum在以太坊上做了尽可能轻量级的修改,以尽可能的使用以太坊的社区和技术。其最显著的特点就是对私有事务的支持(底层的共识这里就不说了)。

public transaction:   事务消息体的payload可以被区块链中所有的参与节点看到。

private transaction: 事务消息体的payload只能被被区块链中该事务所涉及的节点看到。(在quorum中这些节点的Public key被定义在privateFor 字段中,可以有多个值)

事实上Quorum 并没有定义任何新的transaction, 只是在以太坊的transaction定义上增加了相应的字段用意表述私有的语义而已。另外需要区别理解的是,public和private知识quorum引入的语义,public是相对于private来说的,跟公链没有关系。在Quorum的说明文档里说到:对于公有以太坊,更合适的词语也许是Globle Transaction。

Quorum中企业的私有事务是通过Transaction Manager 和Enclave实现的,下图是他们参与后的消息流程:

绿色虚线框起来的是和以太坊节点基本相同的Quorum 节点, 无论Public或是Private事务都需要通过这些节点通信,并完成相关处理(共识,智能合约,状态存储更新都是由这些节点完成的)。

与Quorum节点对应的Tessera节点即使Quorum平台中的隐私支持服务,它有两部分组成:

Transaction Manager:  负责与Quorum节点沟通,并与其它Tessera节点中的Transaction Manager 自动组网通信,同时负责调用Enclave完成事务的Payload加密,解密。

Enclave: 相应TM的加密请求和解密请求,独立的Enclave加密、解密设计,有利于系统扩展和各种安全方案(例如使用加密硬件,需要时接入加密).

在Quorum的网络中,public事务仅是相对于Private来说: public 事务中的Payload也可以加密(如果合约仅需要验证就不信要完全理解内容), public事务存储和变更的状态也可以包含加密后的内容(只有Dapp或合约自己理解)。而与Private的更显而易见的区别是:

1. 所有的Public 事务的Payload都是通过Quorum节点组网广播的;而Private事务中,payload是被加密后通过Tessera节点在发起方和涉及的其它交易方间,通过点对点传播的; 虽然私有事务最终也通过Quorum广播,但是payload已经被替换成加密后的payload的签名(SHA3-512 hash)。

2. 所有的Quorum节点都可以处理Public事务;而对于Private事务,仅能通过私有事务涉及的的节点处理。

3. private的事务会记录到区块里,但是状态保存在独立的私有空间(仅有事务的关联方可以查看).

联盟链平台相对于公链平台来说,一个巨大的变化是准入制度,Quorum 中的准入机制是设置在node这一层,仅有被许可的节点才可以加入网络(可加入的许可是现在permissioned-nodes.json中的),同时为了满足企业需求,quorum的准入制度是建立在通用的智能协议的基础上的(通过一些列智能合约来管理节点的准入制度)。

一下是通过智能合约建立的准入管理模型,包括组织、账户、角色、节点 等:

Quorum网络物理上是有被准许的节点组成,他们通过P2p协议连接在一起,从治理逻辑上讲所有的节点安企业或企业联盟划分为组织(org)。 在组织内又有账户,每个账户有相应的角色, 每个角色具有不同的权限。一个组织也可以创建新的子组织,子组织同样拥有节点,账户,角色。

除此之外,整个网络拥有一类特殊的账户(account),叫做Voter。他们具有投票和其它特定功能的能力。

在整个网络层面,有特殊的角色NetworkAdmin, 管理所有组织的创建等。在每个组织又可以创建OrgAdmin角色,管理整个组织。

根据以上的模型,我们可以创建相应的树桩结构的管理实例。

Quorum对利用了以太坊的绝大数功能,其对以太坊作为公网的一个底层修改时使用raft共识替换pow公式。

RAFT共识在企业环境中的显著特点就是:

1.  交易速度快   

2.  不产生空块

3.  不产生分叉

在Quorum中,事务是通过以太坊原有的P2P协议传播,但是区块是通过RAFT节点组成的网络完成的,也就是说共识层完全由RAFT网络完成。另外RAFT网络支持”预挖矿(Speculative Minting),能有效共识达成速度。

另一个需要注意的是私有协约,与公有协约不同,私有协约只能被事务的关联方执行。但是私有协约也是全局部署的,类似于私有业务,协约内容被替换为Hash,真正的内容是部署在相关节点,相关节点验证并可执行协约。

总之,通过加入Private Manager, 新的准入机制,新的共识协议,Quorum 一方面极大地利用了以太坊的现有技术,以方便又迅速的适应了企业间对区块链的需求。下一部分我们将介绍Fabric, 相对Quorum,Fabric在企业间的考量更多,更复杂。当然我们也容易看到两种框架的适应场景和优缺点。

区块链之联盟链(一) 认识以太坊

区块链之联盟链(二) 认识Quotum

区块链之联盟链(三) 认识Fabric

区块链之联盟链(四) 认识Sawtooth

上一篇下一篇

猜你喜欢

热点阅读