博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quorum-企业级分布式账本和智能合约平台
阅读量:4226 次
发布时间:2019-05-26

本文共 1608 字,大约阅读时间需要 5 分钟。

位置

平台象限,建议评估

标签

Blockchain, DLT, Ethereum, Quorum

目标受众

区块链架构师与开发者

关注问题

以Ethereum为代表的公有链平台工作于信任度较低的public internet,一般采用PoW/PoS等效率较低的共识机制。而企业业务环境下一般有更高的信任度,对网络许可管理、交易的隐私性以及吞吐量/延迟也有更高的要求。因此联盟链和公有链相比有完全不同的设计关注点。

解决方案

是由摩根大通开发的企业级区块链平台,它从以太坊的官方客户端fork出代码并对部分模块重新设计实现。通过添加交易隐私、节点许可管理等特性,将Ethereum原有的共识算法替换成可选的Raft/IBFT协议,Quorum可以在适配Ethereum开发工具链的同时,更好地服务于企业联盟链场景。

解读

在区块链行业中,Ethereum有较高的知名度和生态成熟度,被很多人当成区块链/去中心化应用开发的首选平台。然而Ethereum是针对公有链进行设计,虽然可以单独部署私有网络,但很多特点不适合企业联盟链场景。因此一些团队选择基于Ethereum开发适合企业的区块链平台,从而充分利用Ethereum在社区和工具链等方面的优势。

Quorum的代码fork自Ethereum官方EVM(Ethereum Virtual Machine)之一go-ethereum,并跟进主要release的更新。而Quorum对Ethereum主要在以下方面进行了改进:

  • 交易隐私性

在公有链中,所有交易都是公开可见的,任何人都可以查看Ethereum主网络历史某个区块的交易。这种透明性也是公有链的特性之一,很多团队基于区块链的这一特性开发出公证/鉴证等服务。然而在企业对企业的交易环境中,很多时候需要保证交易的隐私性。即使在一个企业联盟内部,交易也只对发起的双方可见。Quorum对此添加了私有交易的支持。

Quorum会将需要保证隐私性的交易标记为私有事务,其事务管理器会将交易内容载荷加密后进行替换。其他的Quorum节点接受到交易时只能看到被加密过后的内容,而只有这次交易的参与者才能用自己的秘钥解密私有事务,并将其存储在本地的私有状态数据库中。

  • 节点许可管理

在公有链中,任何人都可以运行全节点进行挖矿,成为公有链网络的一部分。这种基于完全去中心化的设计方式跟企业业务有较大差异。在企业联盟中,所有成员的身份都是已知的,节点的分布往往基于实际的商业规则进行考量。此外联盟链需要相应的机制,对成员节点的加入、维护、退出等进行许可管理。

每个Quorum节点可以通过维护一份permissioned-nodes列表来组件一个许可网络。该列表中维护了传入/传出节点的白名单,并配置相应的IP/端口/公钥地址。

  • 共识协议

公有链处于信任度较低的公有因特网中,且成员加入不需许可,往往面临女巫攻击的风险;此外公有链往往会设计相应的经济机制用于激励参与挖矿记账的矿工。基于博弈的共识类协议(PoW/PoS等)应运而生。此类协议可以很好的解决公有链的问题,但在性能、效率方面有很多限制。

在联盟链中所有成员身份已知节点数量有限,一般不会受到女巫攻击威胁;且成员间通过商业达成合作,不需要设置挖矿激励。因此可以采用更高效率的共识协议。Quorum替换掉了Ethereum原有的共识协议,并支持可选的Raft/ Istanbul BFT协议,更具灵活性。

总结

Quorum为以太坊开发者提供了一个平台,可以用Solidity/Truffle等熟悉的工具链构建一个企业联盟链。虽然在我们的实践中,该平台仍存在一些缺陷,成熟度有待提升。但我们建议区块链架构师和开发者将该平台放到自己的评估备选中,持续观察。

相关Blip


文/ThoughtWorks刘尚奇

更多精彩洞见,请关注微信公众号:ThoughtWorks洞见

转载地址:http://acdqi.baihongyu.com/

你可能感兴趣的文章
window消息大全
查看>>
Visual C++ MFC 中常用宏的含义(转贴)
查看>>
关于MFC下检查和消除内存泄露的技巧
查看>>
内存操作越界略述
查看>>
消息与消息队列
查看>>
关于#include "stdafx.h"
查看>>
VC下线程同步的三种方法(互斥、事件、临界区)/(转)
查看>>
释放对象数组:delete与delete[]
查看>>
非常好的一篇U-BOOT的文章--转载
查看>>
计算机经典书籍
查看>>
ubuntu9.10 下开通samba 服务
查看>>
你的第一个中断处理程序
查看>>
内核模块编程-第一课
查看>>
ubuntu内核源码树的建立
查看>>
linux device driver II 的模块程序在linux kernel 2.6.x 上的移植
查看>>
Linux启动过程综述 作者:杨沙洲
查看>>
linux2.6.x的配置文件kconfig语法
查看>>
中断实例-tasklet
查看>>
linux内核引导参数
查看>>
MIPS Linux 下添加系统调用,以Linux kernel 2.6.18为例
查看>>