两种典型的区块链设计思路

区块链发展到了现在,产生了很多不同形式的区块链技术。随着技术的发展,目前比较公认的看法是区块链已经走进了2.0时代。区块链1.0是以比特币为代表的去中心化数字货币区块链系统,而2.0则是引入了智能合约的区块链系统。

在支持智能合约的区块链系统中,Linux基金会所属的Hyperledger Fabric(由IBM贡献)和Vitalik Buterin所领导的以太坊基金会所创造并管理的Ethereum(以太坊)是两个典型。这两种区块链系统具有截然不同的设计思路,充分体现了传统企业信息系统思维设计模式(Fabric)和区块链原教旨主义思维设计模式的区别。

首先看一下Ethereum,Ethereum是非常典型的受到Bitcoin(比特币)架构影响的一个区块链系统。其最典型的特点是——链是基础。所有的信任都来自与基于Hash密码学安全的链式数据结构,在这个信任基础上,架构所有的功能。

而对于Fabric来说,系统一定要有一个漂亮的技术架构:可插拔的模块化设计、高扩展性、高内聚低耦合。在一个漂亮的技术架构上,调用各个模块,来构造一个功能——链,每增加一个功能,可以使用已有的链,也可以创建一个新链。

Ethereum使用了虚拟机方式实现智能合约,Ethereum中的虚拟机叫做EVM,是一个轻量级的沙盒执行环境。为了让智能合约更加方便,以太坊开发者创造了新的语言来编写智能合约,目前最流行的EVM编程语言是Solidity。EVM的一大特点就是只能对链上的数据进行读写,非链上的数据只能在调用智能合约的时候,由调用者通过函数参数传递到智能合约中。(EVM的这个特点确保了智能合约的结果是确定的,不会因不同的节点执行而导致不同的结果。)而智能合约本身和智能合约的调用过程(或者叫做使用智能合约的交易)都会记录在链上。

因此,我们可以看出,以太坊的架构中,“链”是信任的锚点,所有的信任都来自于链。

而Fabric使用了Docker机制实现智能合约。相比于Ethereum的EVM,Docker可以算是一个重量级的沙盒执行环境。由于Docker的特性,Fabric可以使用很多语言开发智能合约,同时也可以使用很多库函数和系统函数,因此,Fabric的智能合约灵活性更高,(比如可以和物联网设备通讯),但是这种灵活性也导致了可能不同的节点执行后产生不同的结果而无法达成共识的风险。而Channel的引入,使得Fabric的智能合约是直接部署在某几个节点上的。每个智能合约可以创建新的链,也可以和其他智能合约共用一个链。“链”在Fabric的架构里,相当于实现某个功能时,参与该功能的几个节点所共用的一个存储空间。

明白了这两种智能合约的实现方式区别后,我们就会发现这两种典型的区块链的设计思路的区别了——“链”到底应该位于架构的哪一层?

在区块链原教旨主义中,由于大家都不可信,所以只能相信由Hash算法串起来的一个完整的数据系统。而在面向企业间应用的联盟链中,由于节点都是需要身份认证才能加入的,因此可信程度高一些。所以,只要关键的一些数据达成共识实现可信就可以了。

正是由于这种设计思路上的区别,在Ethereum中,所有的智能合约都运行在同一个链上,大家共用一个可信的基础设施;而在Fabric中,一个应用对应一个链,整个系统由很多子链构成,这些子链共用一套基本互信的基础设施。

从系统架构角度看,Ethereum是一个完整基础设施,不会拆散了来用。虽然Ethereum内部的设计耦合性很高,各个模块依赖性极强,甚至整个系统都依赖于某些基础的智能合约(例如以太币合约),但这可以看做是整个基础设施的内聚性导致的。

而Fabric更像是一个区块链云服务平台,能够让用户方便的在基础平台上,使用各个模块创建一个一个的链进而实现一个一个的应用。所以,Fabric是低耦合设计的一个平台。

Hyperledger裂变?IBM与英特尔之间的区块链拔河比赛

Hyperledger管理委员会本月早些时候批准了英特尔主导的一个新供应链项目——Sawtooth,标志着Hyperledger开源区块链联盟的重大转变。

Sawtooth供应链(Github)进入了一个新的领域——应用层。在此之前,Hyperledger的定位是底层技术框架,并避免涉及行业参与者对区块链应用程序代码的定制设计。 这给供应商开发专有应用留下空间 – 正如IBM一直在与沃尔玛合作的食品跟踪供应链平台。   但是英特尔的Sawtooth把Hyperledger的范围拓展到了应用层,这势必会给IBM的区块链商业利益布局带来重大影响。

尽管如此,Hyperledger的11个技术指导委员会(TSC)成员中有9个在12月6日投票赞成Sawtooth新项目。Sawtooth供应链作为高级项目获得批准大大提高了其形象,同时也意味着它进入了Hyperledger的正式项目生命周期并将获得相应的支持(社区,营销,安全审查等)。

但是TSC的另外两名成员的反对意见让人们嗅到了IBM的不满,他们两人都在IBM工作,分别是没有参加投票的Arnaud Le Hors 和前TSC主席Chris Ferris出席了会议但弃权。 两人质疑该项目是否属于Hyperledger的范围。

从表面一团和气的企业区块链社区内部,IBM与英特尔之间已经展开一场拔河比赛,一方是IBM及其受欢迎的Hyperledger实现(Fabric),另一方则是英特尔支持的Sawtooth。后者坚定的支持者中包括新任命的TSC主席和Sawtooth领导者——英特尔的丹米德尔顿。

除了在应用层进一步提升工程量外,Sawtooth Supply Chain还是由非科技公司美国食品巨头嘉吉赞助的第一个项目。因此,虽然该供应链项目尚未获得永久名称,但可能会比Hyperledger部署速度更快,而嘉吉的参与,意味着IBM食品安全领域出现了一个潜在竞争对手。

Hyerledger的五大框架和五大工具

2015年12月,Linux基金会宣布启动协作,开发企业级区块链工具和平台,目标是帮助实现分布式账本技术进入主流企业信息化技术领域。

Linux基金会是全球最大的非盈利性组织,致力于支持可持续的开源生态系统,以及更大的开源社区。Hyperledger Foundation的目的是使开发人员“能够专注于构建强大的行业特定应用程序,平台和硬件系统,以支持业务事务。”Hyperledger是Linux Foundation推出的增长最快的开源组织。

这是一个全球性的合力项目,参与者来自银行,金融,物联网,制造,供应链和技术领域的领导者; 获得包括IBM,英特尔,R3,Sovrin基金会以及许多其他公司的大量软件贡献。Hyperledger Foundation最早的支持来自埃森哲,思科,富士通有限公司,IC3,IBM,英特尔,摩根大通,伦敦证券交易所集团,三菱(MUFG),R3,SWIFT,VMware和富国银行。

关于Hyperledger项目

Hyperledger旗下目前有十个项目:五个分布式分类帐框架和五个工具。其框架包括Fabric,Sawtooth,Indy,Burrow和Iroha。它的工具包括Caliper,Cello,Composer,Explorer和Quilt。

5框架

Hyperledger的五个框架由用于创建各种分布式分类账及其组件的主要构建块组成。

Fabric

Fabric是Hyperledger的首批提案之一,其代码库结合了Digital Asset,Blockstream和IBM的工作。这是第一个从孵化阶段毕业的Hyperledger项目。Fabric是用Go编写的,是Hyperledger最受欢迎的框架,具有可插拔组件和可定制的架构。

Fabric具有许可的基础结构,具有分布式操作系统,执行以通用编程语言编写的智能合约。Fabric采用模块化共识机制,信任级别和权限。结构的模块化特性使其更容易与现有架构集成; 并根据您的需求变化轻松升级单个组件。

Sawtooth

Sawtooth是从Hyperledger孵化阶段毕业的第二个项目。Sawtooth是英特尔对许可区块链协议的处理方法。Sawtooth-core主要是Python,而Sawtooth-raft和Sawtooth-saber是Rust; 它还有使用JavaScript和Go的组件。Sawtooth使用经过时间证明(PoET)共识。Sawtooth具有可插入的一致性算法,提供并行事务处理和私有事务的可能性。

Sawtooth可以部署为公共,私有或联盟网络。在公共网络中,任何客户端都可以签署交易。然而,这种使用超出了其当前设计的范围,并且需要激励系统。一个财团网络具有权限的共识层,而事务层是开放的。在专用网络上,每个层都经过特别许可。

Burrow

Hyperledger Burrow是一个允许的以太坊节点,能够在许可的虚拟机上运行以太坊EVM智能合约。Burrow的一些核心功能包括交易终结性和高吞吐量。伯罗始建于围棋,使用Tendermint POS和应用BlockChain接口(农银国际)。

Hyperledger基础最初由Monax开发,在将Burrow与Fabric整合方面取得了相当大的进展。

Indy

Hyperledger Indy旨在为人员,组织和事物提供分散的身份。Indy-node是用Python编写的,而Indy-SDK是用Rust编写的。Indy的代码库最初由Evernym开发,提交给Sovrin基金会,以支持其开源基础。为了同样的目的被引入Hyperledger基金会。

Hyperledger是权力下放的身份基金会(DIF)的成员,与埃森哲,微软,洛克菲勒基金会,IBM,Blockstack,R3,思域,Evernym,Sovrin,ID2020,万事达卡以及其他人共享创建分散身份生态系统的目标。

Indy是第一个使用分散标识符(DID)作为主键的分布式分类帐。正在与W3C的凭证社区小组合作开发DID规范,以实现可加密验证的数字身份,而无需集中注册。Indy支持零知识证明(ZKP),使其用户能够证明自己的个性,同时仅揭示交互绝对必要的信息。例如,这项技术可以向店员证明您已经足够大,可以购买酒精饮料,而不会泄露您的姓名,确切年龄或任何其他个人信息。

Iroha

Iroha最初为Soramitsu,Hitachi,NTT Dat和Colu的Hyperledger项目做出了贡献; 受Fabric的启发。Iroha是用C ++创建的,带有YAC一致性算法,旨在很容易地融入现有的基础设施项目中。

Iroha旨在促进最终用户应用程序的创建,特别是移动和Web应用程序。Iroha的iOS,Android和JavaScript库可与其他Hyperledger项目互操作,允许开发人员创建执行常见操作的功能。

五大工具

除了5个区块链组件框架之外,Hyperledger还构建了5个工具来配合这些组件。

Caliper

Caliper是用JavaScript构建的,它是一个允许用户通过一组预定义试验来衡量特定区块链实现的性能的工具。Caliper显示区块链性能指标,如TPS(每秒事务数),延迟和资源使用情况。

其目的是让Caliper结果被其他Hyperledger项目使用,并支持选择适合用户特定需求的区块链实现。Caliper目前支持Fabric,Iroha和Sawtooth; 最初由华为,Hyperchain,Oracle,Bitwise,Soramitsu,IBM和布达佩斯技术与经济大学共同贡献。

CELLO

主要用Go编写,CELLO是为了减少创建,管理和终止区块链所需的努力; 将“按需”业务模型引入区块链,并提供各种性能指标的仪表板。Hyperledger Cello最初由IBM提供,目前支持Fabric。

Composer

Hyperledger Composer是一个开发工具集和框架,可以更轻松地开发区块链应用程序。Composer是用JavaScript编写的; 利用node.js,npm,CLI和流行编辑器。Composer是Hyperledger最活跃的开发工具。Composer目前支持Fabric,可用于建模您的业务网络,将现有系统\数据与区块链应用程序集成。

Explorer

Explorer提供了一个浏览器,用于查看Fabric区块链上的活动。Explorer主要使用JavaScipt编写,可以查看,调用,部署或查询块,事务和相关数据,包括网络信息,链代码和事务系列。

Quilt

正在创建Quilt以支持跨平台互操作性。Quilt实现了Interledger Protocol(ILP),旨在跨分布式和非分布式分类账传输价值。

Interledger的标准和规范由开源社区通过万维网联盟定义。通过在Hyperledger中添加Quilt,Linux Foundation现在可以托管Java(Quilt)和JavaScript(Interledger.js)Interledger实现。最终,它应该启用所有Hyperledger项目之间的互操作性。

Hyperledger白皮书:Hyperledger简介

结论

Hyperledger项目包括企业区块链生态系统中最大的开源软件集合。使用开源解决方案进行开发使您可以专注于创建所需的功能,而不是其核心协议。随着区块链技术的发展和新技术在整个生态系统中的测试,更多好的框架和工具将继续进入我们推荐的Hyperledger产品最佳阵容。

虽然只有三岁,但Hyperledger已经是一个令人印象深刻的社区。每个区块链开发者都期待着学习这些框架和工具的各种使用方式。