比特币、以太坊、Fabric…你知道它们的优缺点吗?

链客,专为开发者而生,有问必答!算法

此文章来自区块链技术社区,未经容许拒绝转载。
图片描述数据库

时常听人们谈起区块链,从2009年比特币诞生至今,各式各样的区块链系统或基于区块链的应用不断被开发出来,并被应用到大量的场景中,而区块链技术自己也在不停地变化和改进。编程

区块链又被称为分布式帐本,与之对应的则是中心化帐本,好比银行。与中心化帐本不一样的是,分布式帐本依靠的是将帐本数据冗余存储在全部参与节点中来保证帐本的安全性。简单地说,区块链会用到三种底层技术:点对点网络、密码学和分布式一致性算法。而一般,区块链系统还会“免费附赠”一种被称为智能合约的功能。智能合约虽然不是区块链系统的必要组成部分,但因为区块链天生所具有的去中心化特色,使它能够很好地为智能合约提供可信的计算环境。数组

为了适应不一样场景的需求,区块链系统在实际应用的过程当中每每会须要进行各类改造,以知足特定业务的要求,好比身份认证、共识机制、密钥管理、吞吐量、响应时间、隐私保护、监管要求等。而实际应用区块链系统的公司每每没有进行这种改造的能力,因而市场上慢慢出现了一些用于定制专用区块链系统的框架,采用这些框架就能够很方便地定制出适用于企业自身业务需求的区块链系统。本文将对目前市场上几个典型的区块链框架进行横向对比。安全

比特币服务器

比特币(Bitcoin)源自中本聪(Satoshi Nakamoto)在2008年发表的一篇论文《比特币:一种点对点的电子现金系统》(Bitcoin:A Peer-to-PeerElectronic Cash System),文中描述了一种被他称为“比特币”的电子货币及其算法。在以后的几年里,比特币不断成长和成熟,而它的底层技术也逐渐被人们认识并抽象出来,这就是区块链技术。比特币做为区块链的鼻祖,在区块链的你们族中具备举足轻重的地位,基于比特币技术开发出的山寨币(Altcoins)的数量有如天上繁星,难以计数。网络

中本聪设计比特币的目的,就是但愿可以实现一种彻底基于点对点网络的电子现金系统,使得在线支付可以直接由一方发起并支付给另一方,中间不须要经过任何的中介机构。总结来讲,他但愿比特币可以实现如下这些设计目标:数据结构

不须要中央机构就能够发行货币架构

不须要中介机构就能够支付并发

保持使用者匿名

交易没法被撤销

从电子现金系统的角度来看,以上这些目标在比特币中基本都获得了实现,可是依然有一些技术问题有待解决,好比延展性攻击、区块容量限制、区块分叉、扩展性等。

在应用场景方面,目前大量的数字货币项目都是基于比特币架构来设计的,此外还有一些比较实际的应用案例,好比彩色币、tØ等。

彩色币(Coloredcoin),经过仔细跟踪一些特定比特币的前因后果,能够将它们与其余的比特币区分开来,这些特定的比特币就叫做彩色币。它们具备一些特殊的属性,从而具备与比特币面值无关的价值,利用彩色币的这种特性,开发者能够在比特币网络上建立其余的数字资产。彩色币自己就是比特币,存储和转移不须要第三方,能够利用已经存在的比特币基础网络。

tØ是比特币区块链在金融领域的应用,是美国在线零售商Overstock推出的基于区块链的私有和公有股权交易平台。

以太坊

以太坊(Ethereum)的目标是提供一个带有图灵完备语言的区块链,用这种语言能够建立合约来编写任意状态转换功能。用户只要简单地用几行代码来实现逻辑,就可以建立一个基于区块链的应用程序,并应用于货币之外的场景。以太坊的设计思想是不直接“支持”任何应用,但图灵完备的编程语言意味着理论上任意合约逻辑和任何类型的应用均可以被建立出来。总结来讲,以太坊在比特币的功能以外,还有如下几个设计目标:

图灵完备的合约语言

内置的持久化状态存储

目前基于以太坊的合约项目已达到数百个,比较有名的有Augur、TheDAO、Digix、FirstBlood等。

Augur是一个去中心化的预测市场平台,基于以太坊区块链技术。用户能够用数字货币进行预测和下注,依靠群众的智慧来预判事件的发展结果,能够有效地消除对手方风险和服务器的中心化风险。

限于篇幅,基于以太坊智能合约平台的项目就很少介绍了。基于以太坊的代码进行改造的区块链项目也有很多,但几乎都是闭源项目,只能依靠一些公开的特性来推断,因此就不在本文展开讨论了。

Fabric

Fabric是由IBM和DAH主导开发的一个区块链框架,是超级账本的项目成员之一。它的功能与以太坊相似,也是一个分布式的智能合约平台。但与以太坊和比特币不一样的是,它从一开始就是一个框架,而不是一个公有链,也没有内置的代币(Token)。

超级帐本(Hyperledger)是Linux基金会于2015年发起的推动区块链技术和标准的开源项目,加入成员包括:荷兰银行(ABN AMRO)、埃森哲(Accenture)等十几个不一样利益体,目标是让成员共同合做,共建开放平台,知足来自多个不一样行业各类用户案例,并简化业务流程。

做为一个区块链框架,Fabric采用了松耦合的设计,将共识机制、身份验证等组件模块化,使之在应用过程当中能够方便地根据应用场景来选择相应的模块。除此以外,Fabric还采用了容器技术,将智能合约代码(Chaincode)放在Docker中运行,从而使智能合约能够用几乎任意的高级语言来编写。

如下是Fabric的一些设计目标:

模块化设计,组件可替换

运行于Docker的智能合约

目前已经有很多采用Fabric架构进行开发的概念验证(POC)项目在实施过程当中,其中不乏一些金融机构作出的尝试,不过因为项目刚刚起步,尚未比较成熟的落地应用。

Onchain DNA

Onchain DNA(Onchain Distributed Networks Architecture),是由总部位于上海的区块链创业公司“分布科技”开发的区块链架构,能够同时支持公有链、联盟链、私有链等不一样应用类型和场景,并快速与业务系统集成。分布科技一样也是超级帐本的成员之一。

与以太坊、Fabric不一样的是,Onchain DNA在系统底层实现了对多种数字资产的支持,用户能够直接在链上建立本身的资产类型,并用智能合约来控制它的发行和交易逻辑。对于绝大部分的区块链应用场景,数字资产是必不可少的,而为每一种数字资产都开发一套基于智能合约的业务流程很是浪费且低效。所以,由区块链底层提供直接的数字资产功能十分必要。而对于那些彻底不须要数字资产的应用场景,一样能够基于Onchain DNA提供的智能合约功能来编写任意的自定义逻辑来实现。

Onchain DNA的设计目标主要有如下几点:

多种数字资产的底层支持

图灵完备的智能合约和持久化状态

跨链互操做性

交易的最终性

目前已有很多金融机构采用Onchain DNA架构来进行区块链概念验证产品的开发,如银行、券商、支付、登记结算机构等。除此以外,还有一些已经落地的区块链项目,如小蚁、法链等。

小蚁(Antshares)是一个定位于资产数字化的公有链,将实体世界的资产和权益进行数字化,经过点对点网络进行登记发行、转让交易、清算交割等金融业务的去中心化网络协议。它采用社区化开发的模式,在架构上与Onchain DNA保持一致,从而能够与任何基于Onchain DNA的区块链系统发生跨链互操做。

法链是全球第一个大规模商用的法律存证区块链,一个底层基于Onchain DNA区块链技术,并由多个机构参与创建和运营的证据记录和保存系统。该系统没有中心控制点,且数据一旦录入,单个机构或节点没法篡改,从而知足司法存证的要求。

Corda

Corda是由一家总部位于纽约的区块链创业公司R3CEV开发的,由其发起的R3区块链联盟,至今已吸引了数十家巨头银行的参与,其中包括富国银行、美国银行、纽约梅隆银行、花旗银行、德国商业银行、德意志银行、汇丰银行、三菱UFJ金融集团、摩根士丹利、澳大利亚国民银行、加拿大皇家银行、瑞典北欧斯安银行(SEB)、法国兴业银行等。从R3成员的组成上也能够看出,Corda是一款专门用于银行与银行间业务的技术架构。尽管R3声称Corda不是区块链,但它具有区块链的一些重要特性。

Corda由Java和Kotlin开发,并在其各项功能中充分依赖于Java,好比智能合约、数据访问接口等。Corda的设计目标主要是:

没有全局帐本

由公证人(Notaries)来解决交易的多重支付问题

只有交易的参与者和公证人才能看到交易

为此,Corda的全部交易都不会向全网进行广播,并且全部的节点都是直接通讯,没有P2P网络。这一点致使了其网络规模会被限制在一个较小的规模内,没法造成大规模的联盟链,适用的业务场景比较狭窄。

接下来,咱们将针对前文中所提到的这些区块链框架进行一系列的技术对比,并从多个维度展开讨论它们的区别与类似之处。

数字资产

区块链的内置代币一般是一种经济激励模型和防止垃圾交易的手段。比特币天生就有且只有一种内置代币,因此在比特币系统中全部的“交易”本质上都是转帐行为,除非经过外部的协议层来给比特币增长额外的数字资产。

以太坊和Onchain DNA具备内置代币,它们的做用除了以上提到的经济激励和防止垃圾交易以外,还为系统内置功能提供了一个收费的渠道。好比以太坊的智能合约运行须要消耗GAS,而Onchain DNA的数字资产建立也须要消耗必定的代币(可选)。

以太坊和Fabric没有内置的多种数字资产支持,而是经过智能合约来实现相应的功能。这种方式的好处在于,系统设计能够作到很是简洁,并且资产的行为能够任意指定,自由度极高。然而这样的设计也会带来一系列的负面影响,好比全部的资产建立者不得不本身编写重复的业务逻辑,而用户也没有办法经过统一的方式去操做本身的资产。

相比之下,Onchain DNA和Corda采用了在底层支持多种数字资产的方式,让资产建立者能够方便地建立本身的资产类型,而用户也能够在同一个客户端中管理全部的资产。对于逻辑更加复杂一点的业务场景来讲,他们一样能够利用智能合约来强化资产的功能,或者建立一种与资产无关的业务逻辑。

帐户系统

UTXO(Unspent Transaction Output)是这样一种机制:每一枚数字货币都会被登记在一个帐户的全部权之下,一枚数字货币有两种状态,即要么尚未被花费,要么已经被花费。当须要使用一枚数字货币的时候,就将它的状态标记为已经花费,并创造一枚新的与之等额的数字货币,将它的全部权登记到新的帐户之下。在这个过程当中,被标记为已花费的数字货币就被称为交易的输入,而创造出来的新的数字货币被称为交易的输出,在一笔交易中,能够包含多个输入和多个输出,可是输入之和与输出之和必须相等。计算一个帐户的余额时,只要将全部登记在该帐户下的数字货币的面额相加便可。

比特币和Corda就采用了UTXO这样一种帐户机制,而以太坊则采用了更加直观的余额机制:每一个帐户都有一个状态,状态中直接记录了帐户当前的余额,转帐的逻辑就是从一个帐户中减去一部分金额,并在另外一个帐户中加上相应的金额,减去的部分和加上的部分必须相等。Onchain DNA在帐户机制上同时兼容这两种模式。

那么UTXO模式和余额模式,究竟有什么区别呢?UTXO最大的好处就是,基于UTXO的交易能够并行验证且任意排序,由于全部的UTXO之间都是没有关联的,这对区块链将来的扩展性有很大的帮助,而基于余额的设计就没有这个优点了。反过来,余额设计的优势是设计思想很是简洁和直观,便于程序实现,特别是在智能合约中,要处理UTXO的状态是很是困难的。这也是为何以智能合约为主要功能的以太坊选择余额设计的缘由,而比特币、OnchainDNA、Corda这些以数字资产为核心的架构则更倾向于UTXO设计。

关于身份认证,比特币和以太坊基本没有身份认证的设计,缘由很简单,由于这二者的设计思想都是强调隐私和匿名,反对监管和中心化,而身份认证就势必要引入一些中心或者弱化的中心机构。

Fabric、Onchain DNA和Corda不约而同地选择了采用数字证书来对用户身份进行认证,缘由在于这三者都有应用于现有金融系统的设计目标,而金融系统必然要考虑合规化并接受监管,此外现有的金融系统已经大范围地采用数字证书方案,这样即可以和区块链系统快速集成。

共识机制

共识机制是分布式系统的核心算法,由于分布式系统的数据分散在各个参与节点中,这些分散的数据必须经过一种算法来保持一致性,不然系统将没法正常工做。与传统的分布式系统不一样,区块链是一个去中心化的系统,而且可能会承载大量的金融资产,因此它可能会面临大量的拜占庭故障而非通常性故障,而中心化的分布式系统则不多遇到拜占庭故障。所以,区块链的共识机制与传统的分布式系统存在较大的差别。

比特币和以太坊采用了工做量证实(Proof-of-Work)机制来保证帐本数据的一致性。工做量证实同时也是一种代币分发机制,它经过经济激励的方式来鼓励节点参与区块的构造过程,节点在构造区块的时候须要穷举一个随机数以使得区块符合规定的难度要求,一旦区块链出现分叉,诚实的节点将选择工做量较大的链条,而抛弃工做量较小的。因为假设全部节点都是逐利的,而选择工做量较小的链条就会使本身得到的激励无效,因此最终全部的节点都会是诚实的,从而使每一个节点的区块链数据都保持一致。

为了维护这样一个工做量证实机制的区块链,须要全网具有较大规模的算力支撑来保证网络的安全性,不然帐本数据就有可能被篡改。此外,即便维持较大的算力来保护网络,工做量证实也没法从根本上保证交易的最终性,好比比特币就常常产生孤立区块(Orphaned Block),而包含在孤立区块中的交易就有可能被撤销。所以比特币一般要求用户等待6个区块的确认,即1小时左右的时间,才能在一个可接受的几率上认为交易已经最终完成,而这个几率也并不是是最终性的——你永远也不知道暗中是否有一个远超过全网的庞大算力正在试图撤销之前的交易。而为了维护庞大算力而支出的电力成本也是至关可观,所以,以太坊已经在设计从工做量证实机制切换到其余共识机制上的方案。

Fabric和Onchain DNA都设计了基于拜占庭容错(Byzantine Fault Tolerance)模型的共识机制。节点被分为普通节点和记帐节点(Validating Peer),只有记帐节点才会参与到区块的构造过程,这种角色的分离使得算法的设计者有机会将运行共识算法的节点数量限定在一个可控的规模内。

拜占庭容错模型对网络中的节点作出了假设和要求:若是共识中有f个节点会出现拜占庭故障,那么至少须要3f+1个节点参与共识才能避免网络出现分叉。在这个模型下,每一个区块的构造过程都须要至少2f+1个节点的参与才可以完成,而不像工做量证实机制下每一个节点都独立构造区块。一旦区块被构造出来,它就没法被撤销,由于2f+1个诚实的记帐节点不会在同一高度对两个不一样的区块进行签名认证。

相比较而言,工做量证实机制提供了极高的灵活性和可用性,由于每一个节点都独立构造区块而几乎不须要其余节点的参与,节点能够随时加入或者退出网络,即便全网只剩下一个节点,网络仍是能够继续工做,可是相应的它也失去了交易的最终性;而拜占庭容错的机制则与之相反,牺牲了必定的灵活性和可用性,记帐节点必须在线提供服务而不能退出网络,一旦出现1/3的记帐节点停机,那么网络将变得不可用,但它保证了交易的最终性。

智能合约

智能合约是1994年由密码学家尼克萨博(Nick Szabo)首次提出的理念,几乎与互联网同龄。智能合约是指可以自动执行合约条款的计算机程序,在比特币出现之前,由于不存在安全可靠的执行环境,智能合约一直不可以应用到现实中。区块链因为其去中心化、公开透明等特性,天生就能够为智能合约提供可信的执行环境。因此,新型的区块链框架几乎都会内置智能合约的功能。

比特币内置了一套基于栈的脚本执行引擎,能够运行一种独有的脚本代码,用于对交易进行简单的有效性验证,好比签名验证和多重签名验证等。比特币这套脚本语言被有意设计成非图灵完备的,足够简单却也足以应对货币转帐的各类需求。

以太坊是首个以图灵完备智能合约为主要功能的区块链,用户能够在以太坊的平台上建立本身的合约,而合约的内容能够包含货币转帐在内的任意逻辑。合约使用一种名为Solidity的语言来编写,它是以太坊团队开发的专门用于编写智能合约的一种高级语言,语法相似JavaScript,最终被编译成字节码并运行在EVM(Ethereum Virtual Machine)之中。EVM提供了堆栈、内存、存储器等虚拟硬件,以及一套专用的指令集,全部的代码都在沙盒中运行。它提供了合约间相互调用的能力,甚至能够在运行时动态加载其它合约的代码来执行。这种能力使得以太坊的合约具备很是高的灵活性,但也可能会使合约的功能具备不肯定性。

与以太坊本身动手开发语言、虚拟机的思路不一样,Fabric选择了使用现有的容器技术来支持智能合约功能。Fabric的智能合约理论上能够用任何语言来编写,这一点对开发者至关友好,他们将无需学习新的语言,而且能够复用现有的业务代码和丰富的开发库,并使用本身熟悉的开发工具。相对的,采用Docker的智能合约架构也有大量的问题:首先,它很难对智能合约的执行流程进行控制,从而没法对其功能进行限制;其次,它没法对合约运行所消耗的计算资源进行精确的评估;此外,运行Docker相对而言是极其耗费资源的操做,这就使得难以在移动设备上运行合约;最后,不一样节点的硬件配置、合约引用的开发库等,都有可能会使合约的行为具备很强的不肯定性。

Onchain DNA采用了AVM(Antshares Virtual Machine)做为其智能合约功能的底层支持。AVM是一个微核心的、平台无关的智能合约执行环境,它提供了一套包含堆栈操做、流程控制、逻辑运算、算数运算、密码学运算、字符串操做、数组操做的指令集,在硬件方面,它只提供了两个计算堆栈。不过,因为它容许区块链的实现者建立本身的虚拟硬件,并以接口的形式开放给智能合约来使用,使得合约能够在运行时取得平台相关的数据、持久化存储以及访问互联网等。虽然这也有可能会使合约的行为具备不肯定性,但区块链的实现者能够经过合理编写虚拟硬件来消除这种不肯定性。不过,因为目前尚无与AVM配套的编译器和开发环境,这使得基于AVM进行智能合约开发变得至关困难,开发者不得不使用一种相似汇编的语法来进行合约编写,须要较高的技术能力。

Corda的智能合约功能与其自身同样,都是基于JVM(Java Virtual Machine)的。所以,你可使用任何与JVM兼容的语言来进行开发,好比Java、Kotlin等。不过,它对JVM进行了必定的改造,使得在其上运行的合约脚本具有肯定性。开发的过程大体是这样的:使用Java建立一个实现Contract接口的类(Class),并提供一个名为verify的函数(Function)用于对交易进行验证,该函数接受当前的交易做为参数,若是交易验证失败,则抛出异常(Exception),没有异常就表示验证经过。Corda使用JPA(Java Persistence Architecture)来提供持久化功能,支持SQL语句和经常使用的数据库,不过须要安装相应的插件,而且因为数据仅存放在合约执行者的节点,所以没法进行全局的持久化存储。

扩展性

区块链的数据结构一般是只能追加记录,而不能修改或删除记录,它真实地记录下完整的历史数据,使得新加入的节点有能力对全网的完整交易历史进行验证,而无需信任其它节点。这种特性带来了去中心化的便利性,但也影响了区块链系统的扩展性,由于区块会无休止地增加,直到塞满整个硬盘。因此有必要提供一种空间回收的机制来应对不断增加的数据。

比特币提出了使用默克尔树(Merkle tree)来存放交易散列的方式,当须要回收硬盘空间时,只需将老旧的交易从默克尔树中剔除便可。一个不含交易信息的区块头大小仅有80字节。按照比特币区块生成的速率为每10分钟一个,那么每年产生的数据约为4.2MB,即便将所有的区块头存储于内存之中都不是问题。

以太坊、Fabric和Onchain DNA在比特币区块压缩的基础上,又采用了状态快照的方式来节约硬盘空间。具体来讲,就是在区块头的结构中不但记录了当前区块全部交易的根散列,还记录了当前区块及过去全部区块中的状态根散列。这些状态包括全部的UTXO、帐户余额、合约存储等,因此节点只须要保留最新的区块和完整的状态信息便可。

扩展性的另外一个重要指标是交易的吞吐量。决定吞吐量的因素有不少种,如网络结构、加密算法、共识机制等,但最重要的仍是交易是否能够被并行验证。若是交易能够被并行验证,那么将来就能够经过简单地增长CPU数量来提升吞吐量。

基于UTXO系统的比特币能够很容易地对交易进行并行验证,由于UTXO之间是没有关联的,对任何一个UTXO的状态改变均可以独立进行且与顺序无关;而基于余额的帐户系统则不那么容易实现并行,由于可能会同时发生多笔交易对同一个帐户进行资产操做,须要进行一些额外的步骤来处理。举个例子,假设帐户中的余额为10元,有两笔针对该帐户的交易同时发生,第一笔交易在帐户中+5元,而第二笔交易在帐户中-11元。那么若是先执行第一笔交易,则两笔都能成功,最终余额为4元;若是先执行第二笔交易,那么它会因余额不足而失败,只有第一笔交易会成功,最终余额为15元。

而对交易的并行验证起到决定性做用的,是智能合约是否具有状态持久化的能力。若是一组合约都是无状态的,那么它们就能够按任意的顺序被执行,不会产生任何反作用;相反,若是合约能够对一组状态产生影响,那么按不一样的顺序来执行合约产生的结果也会不一样。举个例子,一个计算存款利息的合约,它具备两个子功能:存款和利息结算。假设帐户中有100元,利率为10%,如今同时发生了两笔交易,第一笔交易的内容是存入100元,第二笔交易的内容是结算利息。假如第一笔交易先执行,那么最终帐户的余额是:100+100)110%=220元;若是第二笔交易先执行,那么帐户余额将是:100110%+100=210元。因而可知,具有状态持久化能力的智能合约是顺序相关的,所以难以并发验证,特别是若是合约之间还能够相互调用的话,状况将会更加复杂。

目前Fabric没有提出什么好的办法来解决这个问题;而Corda则没有这个问题,由于它的交易自己就不会向全网进行广播,因此只要交易参与者和公证人能够验证便可。以太坊和Onchain DNA的方法都是分区,即将各个合约分到不一样的逻辑区中,每一个区中的合约都顺序执行,而不一样的区之间并行执行。以太坊将合约地址的首个字节做为分区依据,由此产生了256个分区,每一个合约都在本身的分区中运行,且只能调用与本身相同分区的合约。但这种作法实际上并不能有效地解决问题,由于总有一些通用的底层合约由于被普遍使用,而把大多数的调用者合约汇集在同一个分区中。

Onchain DNA将合约分为功能合约(Function code)和应用合约(Applicationcode)。其中功能合约专门用于提供可复用的功能函数,被其它合约调用,且必须被声明为无状态,这一点消除了绝大部分的合约汇集现象;而只有应用合约能够保存本身的状态,因此在执行应用合约时,对其采用动态分区方案:在合约被执行以前,会先计算出它们的调用树,并将调用树有交集的合约放在同一个分区中执行。

5大项目独有特性

扩展性

幽灵协议是以太坊对现有POW算法的改进,它提出的动机是当前快速确认的区块链由于区块的高做废率而受到的低安全性困扰。由于区块须要花必定时间扩散至全网,若是矿工A挖出了一个区块而后矿工B碰巧在A的区块传播至B以前挖出了另一个区块,矿工B的区块就会做废而且没有对网络安全做出贡献。若是A是一个拥有全网30%算力的矿池而B拥有10%的算力,A将面临70%的时间都在产生做废区块的风险而B在90%的时间里都在产生做废区块。经过在计算哪条链“最长”的时候把废区块也包含进来,幽灵协议解决了下降网络安全性的第一个问题;这就是说,不只一个区块的父区块和更早的祖先块,祖先块的做废的后代区块(以太坊术语中称之为“叔区块”)也被加进来以计算哪个区块拥有最大的工做量证实。以太坊付给以“叔区块”身份为新块确认做出贡献的废区块87.5%的奖励,把它们归入计算的“侄子区块”将得到奖励的12.5%。计算代表,带有激励的五层幽灵协议即便在出块时间为15s的状况下也实现了95%以上的效率,而拥有25%算力的矿工从中心化获得的益处小于3%。

国密算法

国密算法是由中国国家密码管理局制定的一系列商用密码学算法,其中包括了对称加密算法SM1,椭圆曲线非对称加密算法SM2,杂凑算法SM3等。一般区块链在使用密码学算法时会采用国际标准,如AES、ECDSA、SHA2等。而国内的金融机构在选用密码学方案的时候,一般会考虑国密算法。Onchain DNA提供了可选的密码学模块,针对不一样的应用场景能够选择不一样密码学标准,解决了安全性和政策性风险。

跨链互操做

目前,区块链技术正处于百花齐放、百家争鸣的时代,各类不一样的区块链纷纷涌现出来,区块链之间的互操做性成为了一个很是重要而又迫切的需求。企业用户可能须要在不一样的链之间进行业务迁移;普通用户可能须要在不一样的链之间进行资产交换;央行的数字法币可能会须要在各个区块链上流通等。Onchain DNA提供了一种跨链互操做协议,经过这种跨链协议,用户能够跨越不一样的区块链进行资产交易、合约执行等操做,并保证该操做在各个区块链上的事务一致性。

无链结构

正如Corda在白皮书中所宣称的那样,它没有链式结构,交易也不向全网进行广播,而只在交易的参与者和公证人之间发送。所以,数据只有“须要访问的人”才能访问,避免了隐私泄露的问题。因为没有全局的链式结构,每一个节点只存放和本身有关的交易,而无需存放全网的全部交易,大大的节省了空间。

总结

本文从多个维度比较并讨论了当前各个区块链框架的特色和功能,并阐述了它们在各方面的优缺点,以及在应用领域上的适用性和局限性。

比特币虽然是区块链技术的原型,具备很是重要的地位,但因为其技术架构的局限性,如挖矿、非图灵完备等,很难应用到复杂的业务场景中去,但很是适合用于货币发行。

以太坊虽然也采用挖矿的形式,但其幽灵协议提升了挖矿效率,新的共识算法也在开发中。以太坊还开发了较多基于密码学的隐私保护方案,好比环签名混币方案,很是适合于建立去中心化自治组织(Decentralized Autonomous Organization)。

Fabric和Onchain DNA的定位都是企业级区块链解决方案,适合用于定制各类特定业务的联盟链,包括金融领域的应用场景。区别在于Fabric以智能合约为导向,而Onchain DNA则以数字资产为导向;前者更适合开发复杂的自定义业务流程,然后者则更适合于构建以数字资产为核心的金融业务系统或权益登记流转系统,且具备较强的扩展性。

Corda的定位是用于银行间业务的“分布式数据库”,它摒弃了区块和链式结构,更好地把参与者的业务数据区隔开来;但引入了公证人的角色,网络结构较为固定不具灵活性和扩展性,且与现有的银行体系的运做方式差异不大。

相关文章
相关标签/搜索