现今我们一般认知的区块链技术,也就是公有链(Public Chain),首先起源于骇客圈,其强调的是去中心化的治理与无需许可的参与,以太坊便是箇中代表。尽管这些技术是完全开源的,企业若想直接应用这些成果,则会碰到一些问题:
- 公有链上的身份识别仅能透过公私钥,是半匿名的,缺乏联盟治理机制,企业若发生问题无法归责
- 公有链的资料储存在任意的外部节点,企业之间若涉及商业机密会缺乏隐私
- 公有链的交易手续费基于市场机制,企业难以预估成本
企业应用区块链的首要考量就是「提升效率、降低成本」,当碰到上述这些问题时,企业便无法保证这一点。因此,专属企业的区块链:「联盟链」应运而生。以太坊是目前汇聚最多开发者投入的公有链,因此它的企业化也标志了一个里程碑。
在这篇文章中,我们将回答以下问题:
- 企业以太坊(Enterprise Ethereum)解决了什么问题?
- 企业以太坊联盟(EEA)在做什么?
- 企业以太坊有哪些规格?有哪些技术特点?
企业以太坊联盟(EEA)在做什么?
顾名思义,企业以太坊联盟(EEA)是在企业界推动区块链的一个「联盟」,它成立于2017,是一个由成员主导的行业组织(Industry Organization),其目标是推动以太坊于企业间的开放标准,以促进所有企业在同一套标准体系下运用该技术。
具体来说,EEA 在做的事情有:
- 提供开放并基于标准的架构与规格文件
- 创建企业以太坊客户端规范以及测试和认证计划
EEA 的成员包含知名企业如Microsoft/Intel/Fedex、区块链新创如Consensys/Chainlink、金融业如JP Morgan Chase,还有其他数十个来自不同产业的企业,这里就不一一列举。
在阅读这篇文章之前,你可能还没听过EEA ,但是知道其他两个联盟:
- Linux基金会底下的Hyperledger
- 由R3这间公司建构的R3生态系
这些联盟之间并非只存在竞争关系,它们彼此也会互相合作,例如:Hyperledger 本身是EEA 成员之一,而EEA 和R3 也都加入了Hyperledger 。
企业以太坊:它跟以太坊哪里不一样?
EEA为企业以太坊提供了标准化的规格,依照规格实作的客户端(Client)即为企业以太坊(Enterprise Ethreum, EE)。这些客户端可以由不同团队开发,简单来说就是「一个标准,各自实作」,这一点与以太坊也是如出一辙,例如以太坊2.0就有多达7种不同的客户端!
这里列出两个比较知名的EE:
- Quorum,由JP Morgan开发
- Besu,由PegaSys开发
BSOS 同时也是Quorum 在台湾唯一的技术大使
企业以太坊的技术架构
那么EE 跟以太坊到底哪里不一样呢?EEA 把区块链整个架构略分为5 个抽象层(Layer),我们就来看看EEA 在每个层次分别多做了哪些事情:
- 应用层(Application):应用层是整个区块链架构的最顶层,也是一般使用者与区块链互动的介面(Interface),例如各种钱包(Wallet)、区块链浏览器(Blockchain Explorer)、以及如ERC20 / ERC721等等代币标准。
- 工具层(Tooling):工具层是开发工具的组合,开发者可以基于工具层搭建去中心化应用程式(DApp),EE沿用了大部分以太坊现有的开发工具,能带给开发者良好的开发体验。例如:私钥管理、部署整合程式库与JSON-RPC。
- 企业PPP层(Privacy/Permission/Performance):企业PPP层定义了隐私(Privacy)、权限(Permission)以及效能(Performance)这三个目前公链普遍缺乏的要素。EE的主要功能便是针对企业PPP层进行扩充,这些规格也是EE的价值之所在,详细规格笔者将于下文详述。
- 核心层(Core Blockchain):核心层大致上涵盖了广义的「区块链」技术,例如智能合约、资料储存与共识等等。核心层也是以太坊2.0主要改进的对象。EE沿用了以太坊的资料储存与智能合约引擎,并且需实作Clique —一种权威证明(Proof of Authority)的共识机制。除了Clique,各家客户端也可以实作共识机制,以因应实务上对于安全和效率不同的要求,例如IBFT / RAFT,笔者会在下文详细说明Clique的原理与细节。
- 网络层(Network):网络层对应了区块链的底层网络,EE也承接了以太坊的网络协定,例如devp2p。整个区块链其实是覆盖于TCP/IP协定之上的对等网络,如果想知道关于区块链网络层的详细说明可以参考这篇文章。
企业以太坊的软件架构
在软件架构方面,EE 可以视为以太坊的「扩充」,它于既有以太坊客户端之上增添了以下两个组件:
- 企业以太坊扩充(Enterprise Ethereum Extension):实作企业所需的联盟治理与其他模组。
- 私密交易管理者(Private Transaction Manager):实作企业所需的数据交换隐私。
接下来我们就深入看看EEA 对于企业PPP 层中的权限(Permission)与隐私(Privacy)的具体规格,以及核心层中Clique 的运作机制。
企业以太坊的规格
权限(Permission)
权限简单来说指的是两件事:「谁可以跟我连线」以及「谁可以发出交易」。具体来说,EEA支持以下不同层级的权限控管。
例如,在网络(Network)层级,节点可以:
- 启动时只跟某些节点连线
- 开启/关闭节点探索(Node Discovery)
- 设定连线的白名单(Whitelist)
而在帐号(Account)层级,每个帐号可以:
- 创建组织(Organization)与次组织(Sub-organization),并支持巢状组织
- 依照不同的角色(Role)给予不同权限
为了提供开发者最大的弹性及最好的开发体验,EE的设计哲学是:使用智能合约实现权限控管,这些合约也称为权限合约(Permissioning Contract),并且在权限合约中可以使用基于角色的存取控制(Role-based Access Control, RBAC)。
EEA制定了利用智能合约实作网络层与链层权限管理的介面(Interface),例如:权限合约必须实作connectionAllowed方法以支持网络层的权限控管,以及实作transactionAllowed方法以支持链层的权限控管。
相关作法可见于Quorum的实作,这里列出的数个合约共同协作实现了权限控管。
隐私(Privacy)
隐私就是「我知道你是谁,但是我不知道你在做什么」。隐私可以略分为链上与链下:
- 链上(On-chain):透过零知识证明(Zero-knowledge Proof, ZKP)保护交易资料与区块资料。
- 链下(Off-chain): 让私密交易的各方组成另一个覆盖网络传送资料或者使用可信计算(Trusted Computing)。
虽然隐私性是区块链的其中一个大难题,但近期以太坊社群中也有愈来愈多支持隐私的提案出现,例如Tornado Cash与Semaphore。
EEA 规范了两种私密交易:
- 受限的私密交易(Restricted Private Transaction):只有交易各方才能传送/解密交易密文。
- 不受限的私密交易(Unrestricted Private Transaction):所有节点都能传送交易密文,但只有交易各方能解密交易密文。
EEA 虽然没有明确规范这一块的实作方式,但交易各方另组覆盖网络是比较常见的做法,例如:Alice 跟Bob 可以在另一个网络中进行Charlie 无法解密的私密交易,这里「另一个网络」的意思就是「不透过区块链网络传送资料」,也就是符合「链下」的定义。
类似作法可见于Quorum的实作:在发出交易时,A发起的交易T1会经由A节点的TxMgr加密,这个交易密文会透过另一个网络传送给B节点的TxMgr,而交易杂凑值(Transaction Hash)T1_hash则会透过区块链网络广播出去。所有节点在收到T1_hash后会检查这个交易是否为私密交易,以及这个交易自己是否能解开,而只有A/B才能解开交易密文。
企业以太坊的共识机制(Consensus)
区块链的共识机制可以略分成两种:可以是「从乐透机里面抽号码球」或者「投票表决」。主流公有链采取的工作证明(Proof of Work, PoW)就好比是「从乐透机里面抽号码球」,是一个完全奠基于机率的赛局。但正是如此简单暴力的解决方案造就了加密货币数千亿美元的市值!如果想了解更多关于共识机制运作原理的话可以参考这里。
然而,工作证明只能在算力接近上限的条件下保有「安全性」(Safety)与「活跃性」(Liveness)。在算力不足的场景,例如公有链的测试网(Testnet),很容易沦为骇客攻击的目标。为了解决这个问题,以太坊核心团队提出了「权威证明」(Proof of Authority, PoA)以作为测试网的共识机制,这个实作也被称为Clique,是EE必须内建的共识机制。
Clique可视为「有限个出块节点的中本共识」(Nakamoto Consensus),它最大的特色是:在不修改现有的资料格式之下,重新利用(Re-purpose)区块标头(Block Header)的各个栏位。
Clique的运作方式如下:首先,各节点需维护一份权威清单(Authorization List),这份清单内载明了N个具有出块权力的「签名节点」(Singer),且各签名节点需「轮替」出块,并且都有一个最适合出块的高度。如果签名节点出块的高度正好吻合它最适合的高度,那这个区块就会具有较高的难度值;反之难度值则较低— 也就是说,这里的「难度」不像工作证明是透过算力决定的,而是透过在「权威」清单里的顺序决定,因此可以大幅提升共识形成的效率。
同时,为了不让所有签名节点每个高度都「同时出块」使网络壅塞,出块后的节点只能在经过N/2+1 个区块后才能再度出块。
接下来各节点收到区块时,会做三件事:
- 验证区块标头
- 检查签名节点是否在权威清单中
- 比较难度值,选择难度值最大的区块
另一个Clique的特色是:签名节点可以透过「投票」更新权威清单:
- 出块时可以「投一票」给一个新节点
- 各签名节点收到区块时计算票数,超过N/2 票的新节点则可加入权威清单中,成为新的签名节点
在正确性分析方面,由于Clique 的本质还是中本共识,因此它没有即时敲定性(Instant Finality),还是有一定机率发生分岔(Fork);并且由于签名节点只能每N/2+1 个区块出一次块,若有N/2 个签名节点离线,或者恶意不出块,则其他签名节点也无法出块,整个区块链会陷入停摆的状况。
Clique所具有的「轮替」以及「投票」的特性,很符合企业应用的场景,也使得它适合作为企业以太坊的共识机制。由于Clique是以太坊原生就有的实作,因此所有EE可以直接使用Clique。值得一提的是:除了Clique之外,大部分EE都还会支持其他共识机制,例如IBFT / RAFT等等。IBFT可以视为结合PBFT与Clique的共识机制:各节点透过类似Clique的投票机制维护验证节点(Validator)清单,而这些验证节点则轮流出块并使用PBFT达成共识与出块节点的轮替。关于PBFT详细说明可以参考这篇文章。
企业以太坊vs Hyperledger Fabric
EE与Hyperledger Fabric这两者经常被开发者或媒体拿来比较,他们在许多方面都有或大或小的差异,例如:它们有不同的智能合约管理模式、不同的分散式计算模型,并支持不同的椭圆曲线(ECC)。更详细的技术比较就留待日后详述,不过这边笔者想举出一个他们在设计哲学上的差异:Hyperledger Fabric使用凭证机构(Certificate Authority, CA)管理身份,并设计了一个称为「会员服务提供者」(Membership Service Provider, MSP)的组件搭配CA控管权限,整体来说比较中心化;EE则沿袭区块链原生的公私钥对,具有整合去中心化身份(DID)的发展潜力,并可利用智能合约实现权限控管,比较贴近原生区块链「去中心化」的设计。
除了设计哲学的差异,另一个笔者认为的较大差别是:EEA奠基于目前世界最活跃的区块链开发者社群:以太坊社群。目前已有超过1000个开发者贡献在各项EE专案之上!在这个软件都是开源的时代,复制程式码也只是弹指间的事,但唯有「人」才有赋予技术长期发展的能量。
结语
所以企业以太坊到底解决了什么问题呢?
- 企业以太坊具有联盟治理机制,企业间及组织内可以有清楚的权责定义
- 企业以太坊具有隐私机制,企业之间的商业机密可以获得确保
- 企业以太坊可以选择更高效的共识机制,使企业可以在安全、效率及去中心化的比重上获得最佳化
尽管EE 解决了企业对于权限与隐私的问题,企业在真正导入区块链时其实还有一些挑战,例如:
- 企业如何管理私钥?
- 联盟链系统的开发技术门槛仍然很高
- 联盟链如何与关联式资料库(RDB)、档案伺服器(File Server)等企业现有的IT 服务进行高效协作
- 全球区块链技术人才稀缺
- 各种企业IT 环境的区块链部署问题
本文链接地址:https://www.wwsww.cn/ytf/6268.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。