分布式账本技术知多少:Ethereum,Hyperledger Fabric ,R3 Corda有何不同?

论坛 期权论坛 期权     
永旗技术研发中心   2019-10-27 06:16   1037   0
永旗技术研发中心
技术驱动 · 科技赋能


我们将对三种分布式账本技术(DLT)Ethereum,Hyperledger Fabric(以下称Fabric),R3 Corda(以下称Corda),进行简短的分析,解读它们之间最突出的差异,以便让那些新接触到分布式账本技术的决策者能够了解Ethereum,Fabric,Corda最适合的用户场景。



图1: Ethereum,Hyperledger Fabric ,R3 Corda的主要差异

三个不同的框架

从Ethereum,Fabric,Corda的白皮书可以获知,就所适用的可能应用领域,这三者有着非常不同的展望。Fabric和Corda的研发是由具体用户案例所驱动的,具体来说,Corda的用户案例主要来自金融服务业,因此,Corda以金融服务业为其主要的应用领域。与此形成对比的是,Fabric意图提供一个模块化的,可扩展的基础架构,可用于从银行业,医疗,供应链等不同行业。Ethereum则自认为是完全独立于任何具体的应用领域。不过,与Fabric形成对比的是,它不是模块化的,但它为各种交易和应用提供一个通用型平台。

节点的参与

在传统的中心数据存储方面,只有所有者这一单个机构保留底层数据库的拷贝,也就是账本。因此,这一机构控制着数据如何分配,确定允许哪些其它机构可以接触数据库。随着分布式账本技术的发展,这一点已发生了重大变化,分布式数据存储越来越占上风,多个机构掌握着底层数据库的拷贝,它们很自然地也被允许对数据库做出贡献。所有参与分布式数据存储的构建了一个所谓的“节点”网络。由于是分布式数据存储,确保所有节点就共同事实,例如一个账本的正确性达成一致就成为一个难点,因为一个节点所做出的变化必须要传播至网络的其它节点。这一达成共同事实的结果被称为“共识”


就参与共识而言可以有两种运作方式,无需得到许可和事先要得到许可的。如果参与是无需获得许可的,那么所有人都可以参与这一网络。作为公共区块链的Ethereum,它就采用了这种无需获得许可的模式。另一方面,如果参与其中要事先需要获得许可,那么参与者是提前确定的,只有它们可以参与网络,Fabric,Corda采用了这种运作模式。这两种不同的参与模式对于如何达成共识有着深远的影响。

共识

Ethereum:就Ethereum而言,所有参与者要就所有交易发生的顺序达成共识,无论一个参与者是否参与了某一具体交易。交易的顺序对于账本保持一致状态是至关重要的。如果无法确定一个明确的交易顺序,那么就可能发生双花,也就是,两个并行的交易将同一个币转给不同接收者,从而不当得利。由于网络参与者可能包括互不信任和匿名方,因此必须部署一个共识机制来保护账本不受试图进行双花的欺诈或者敌对参与者的破坏。Ethereum目前采用的机制是通过工作量证明挖矿proof-of-work(PoW) 来确定的。所有参与者要就共同账本达成共识,所有参与者都可以接触到记录到的所有内容。这样做的后果是,工作量证明机制对交易处理的性能造成不利影响。由于数据是记录在账本里的,即便这些记录是匿名的,但所有参与者仍可以接触到这些记录,这对于那些需要更高隐私度的应用是有问题的。

与Ethereum形成对比的是,Fabric和 Corda就共识的解读更加完善,并不仅仅是归结至基于PoW的一种挖矿方法或者更外一种变型。由于是通过事先许可的方式进行运行,Fabric和Corda就记录提供了一个更加颗粒化的权限控制,从而加强了隐私性。此外,由于只需要参加交易其中的交易方就交易达成共识,网络的性能得到了提升。


Fabric:Fabric对于共识的理解是广泛的,包括了整个交易流程,从向网络提议进行交易到将交易记录至账本。此外,节点在达成共识的过程中担负着不同的角色和任务。这与Ethereum非常不同,参加其中的节点在达成共识方面所担负的角色和任务是相同的。


在Fabric里,节点是根据它们是clients(客户),peer节点或者排序节点(orderers)来加以区别的。客户代表终端用户行事,创建并调用交易,它们与peer节点和排序节点进行通讯。peer节点对账本进行维护,从排序节点接收最新信息,以便将新的交易记录在帐本上。背书节点(Endorsers)是一种特殊节点,它们的任务是对交易是否符合必要和充分的条件进行检查,从而批准交易。排序节点向客户和peer节点提供了一个通信渠道,包括交易在内的信息在这一渠道内进行广播。就共识而言,这些渠道确保所有联接起来的peer根据一样的逻辑顺序交付几乎是一样的信息。

此时,当采用许多相互不信任的排序节点时,在传递消息时可能会出现错误。因此,必须使用共识算法以便在出现故障时也能达成共识,例如,消息的顺序不一致,从而使分布式账本的复制可以容错。使用Fabric,所采用的算法是“可插拔的”,这意味着根据应用程序的具体要求,可以使用各种算法。例如,为了处理如上所述的随机或恶意复制错误,可以使用拜占庭容错(BFT)算法的变体。此外,渠道划分消息流,这意味着客户只能看到它们所连接的通道的消息和相关事务,对其他通道并不知情。这样,对交易的访问仅限于参与方,其结果是只能在交易层达到共识,而不是像Ethereum那样在账本层达成共识。

现在,上文所提到的节点在交易流程所担负的角色是:客户向连接的背书节点发送交易,以启动账本的更新。所有背书节点都必须就拟议的交易达成一致,因此必须就拟议的账本更新达成某种共识。客户现在成功收集所有背书节点的批准。已批准的交易现已发送给已连接的排序节点,并再次达成共识。随后,交易被转发给持有账本的peer节点以记录交易。

很明显,Fabric允许对共识进行细粒度控制,只能在进行交易时才能访问账本,从而提高性能可扩展性和隐私性。

Corda:与Fabric相类似,Corda的共识也只是在参与的各方在交易层达成,达成共识的条件是交易有效性和唯一性。有效性是通过运行与交易相关的智能合约编码来实现的,对所有需要的签名进行核查,并确保所涉及的交易也是有效的。唯一性涉及交易的输入状态,具体来说,应当确保所涉及的交易是所有输入内容所说明的那个唯一的客户。换句话说,不存在同一状态的其它交易。进行这样安排的原因是防止双花。就唯一性所达成的共识是通过被称作是公证节点的参与者所达成的,所采用的算法和Fabric所使用的算法都是可插拔的,因此可能将再次使用拜占庭容错算法。


智能合约

所有分布式账本技术都具有智能合约代码意义上的智能合约,Fabric使用的是Go或Java, Ethereum 使用的是Solidity,Corda使用的是Java或Kotlin。在Fabri中,“Chaincode”被用作智能合约的同义词。在Corda的共识机制中使用智能合约代码以确保交易有效性。然而,Fabric 和Ethereum 与Corda之间存在明显区别。


在Corda,智能合约不仅包含代码,而且允许包含法律条文。因此,智能法律合同之上的是法律条文,其制定方式可以用智能合同代码表达和实施。这背后的基本原理是赋予代码合法性,这种合法性源于相关的法律条文。这种结构称为Ricardian Contract。此时,非常明显,Corda是被明确地设计用于应对金融服务行业高度监管的环境。Fabric和Ethereum都缺少此功能。

内置通证

另一个值得注意的区别是,Ethereum包括一个名为Ether的内置加密通证,这种通证被用于向通过挖掘区块来帮助达成共识以的节点支付费用以及支付交易费用。因此,可以为Ethereum构建允许通证交易的分散式应用程序(DApps)。此外,可以通过部署符合预定义标准的智能合约来创建用于自定义用例的数字通证,从而定义自己的通证或资产。


Fabric和Corda不需要内置加密通证,因为它们不是通过挖矿来达成共识的。但是,使用Fabric可以开发内生货币或带有chaincode的数字通证。Corda则无意创建数字货币或代币。


总结:定制 VS. 通用平台


总结来说,上述三种分布式帐本技术覆盖了两个极端,一边是Fabric和Ethereum,它们都非常灵活,但体现不同方面。Ethereum强大的智能合约引擎使其成为适合任何类型应用程序的通用平台,然而,Ethereum无需获得批准的运作方式及完全透明性是以牺牲性能可扩展性和隐私为代价的。Fabric通过事先需要获得允许的操作模式,特别是通过使用BFT算法和细粒度访问控制来解决性能可扩展性和隐私问题。此外,模块化架构允许Fabric适用于多种应用。

另一边则是Corda,它被有意识地设计为金融服务行业的DLT。最值得注意的是,它通过增加具有法律条文的智能合约来适应高度监管的环境。

显然,与Fabric相比,Corda专注于金融服务交易简化了其架构设计。因此,它可能提供更开箱即用的体验。然而,由于其模块化,Fabric可能定制为类似Corda的功能集。寻求将Corda纳入到Hyperledger项目中的努力已经存在。因此,Corda不应被视为Fabric的竞争对手,而更多的是对Fabric的补充。



永旗技术研发中心
没时间解释了,快长按左边二维码关注我们~~


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:8
帖子:4
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP