普京集团娱乐网区块链技术流派和各主流平台概览

联盟链是目前区块链落地实践的热点,也是大家对“杀手级应用”期望最大的区块链部署形态。联盟链的诞生源于对区块链技术的“反思”,是对比特币、以太坊所体现的技术特点与企业客户实际需要的融合与折衷,蕴含了大量区块链工作者的智慧与辛劳。由于对未来价值的“共识”,很多厂商推出了自己的联盟链框架或平台,本文选择了
Hyperledger Fabric、FISCO BCOS、微软的 Coco、企业以太坊联盟(EEA)及 R3
的 Corda
这五个具有一定影响力的联盟链,拟从设计理念、生态、效率、扩展性、节点管理与权限管理、智能合约、部署与运维友好性、隐私保护、公链结合或演化能力九个方面进行比对,以供各位开发者、爱好者参考。其中,EEA
由于只出具规范而不涉及代码,所以比对中采用了其官方承认的技术基础——摩根大通的
Quorum 平台;Corda
并不是区块链,严格说与其他四者的比较属于分布式账本技术这个层级的比较,但是由于其承认设计上是受到区块链技术启发,且对其他联盟链也产生了一定的影响,因此,也列入了比较范围。本文的信息主要来源于公开的技术白皮书、Github
中的开源信息,就不在文中一一注明了。一、设计理念设计理念其实决定了一个框架或者系统的最佳应用方式,是其设计的出发点,因此,研究每种区块链时,都应当认真关注其如何“看待自己”,以免在应用上出现“硬套”的问题。设计理念上本文分成核心思路与市场定位两部分进行比较。(一)核心思路核心思路体现的是其设计初衷,这个“初心”对其后续技术走向有一定的影响。Hyperledger
Fabric
是希望改变公链的单一通用网络模式,通过建立多个可以互联的区块链网络覆盖各类不同的业务场景,实现设计的灵活性,满足多样化的要求,并实现网络间的交互,这种思路体现在了其独特的通道机制设计上。FISCO
BCOS
初衷是设计一个国内企业主导研发、自主可控、对外开源的满足金融行业需求企业级区块链底层平台,并逐渐扩展至其他领域、适用于广泛的分布式商业场景,所以进行了自底向上的完整设计,并考虑了较多国内的特殊需求。Coco
基于保密联盟环境的假定,重新评估了公链的设计,通过将其他区块链协议集成为底层,快速高效地构建区块链应用。在这种思路下
Coco
大胆放松了一些关键的设计限制,并且最终实现了一个对现有区块链协议的加速机制,可集成的协议已经包括
Hyperledger Fabric、以太坊、Corda、Quorum 等。EEA
是力求引导一种基于以太坊的标准区块链设计,可根据成员需要定制,但不提供代码(Quorum
提供部分开源代码)。官方承认其技术基础是摩根大通开发的 Quorum
平台,该平台的目标则是提供高速、高吞吐量交易的能力,以解决区块链技术在金融等领域遭遇的挑战。Corda
希望提供一个具有唯一性、权威性、可以记录企业间所有协议的全局逻辑账本,核心是实现具有节点间最小信任机制的无中心数据库,因此,Corda
主张充分考虑与现有业务系统的结合,而非将现有业务系统拆掉重来。Corda
的设计思路对 Hyperledger Fabric
有一定影响,也参与了对后者的建设。(二)市场定位市场定位反映了对自身应用方向的价值主张。五个联盟链都是面向企业级应用的,但是具体的定位略有差异:Hyperledger
Fabric 旨在打造不分行业的通用区块链开源框架;FISCO BCOS
源自企业级区块链平台
BCOS,做为一个金融版本分支,保留通用性的同时,更关注于金融行业,并且较多考虑了监管机构的特殊性;Coco
希望提供更高效易用的区块链技术,没有特殊的行业定位;EEA
比较有趣,它以将所有企业导向一个统一的路线图(该路线图以以太坊技术发展为基础)为目标,但是由于目前的技术代表是摩根大通的
Quorum,所以,应用实例上对金融行业更有指导性;Corda
则是针对金融行业的,并且明确提出至少一定时间内不会考虑其他行业。从设计理念的角度来讲,选用
Hyperledger Fabric
时,应当善用其通道机制,通过通道机制降低业务或者环境的复杂度,但是要注意其跨通道能力的一些技术限制;FISCO
BCOS
则应关注其对国内市场特殊需求的适应性设计,这些设计会带来很多部署上的优势;Coco

EEA(Quorum)设计理念上都属于基于现有协议的优化加速机制,只是前者“博爱”,兼容的协议更多,后者“专一”,只针对以太坊;选用
Corda
则要先明确,它不是区块链,不要带着区块链的价值假定去应用。二、生态大家常说建联盟链就是建生态,所以本文就比较下要帮着别人建生态的联盟链,其自身的生态建的如何。生态考察主要包括管理方、社区和商业应用这三个方面。(一)管理方从管理方看,各家都是“实力派”。Hyperledger
Fabric 的管理方是 Linux 基金会,基金会管理下的 Hyperledger
其实是一个项目系列,包括 Cello、Swatooth、Burrow、Iroha 等;FISCO BCOS
管理方是金链盟,金链盟是由深圳市金融科技协会、深圳前海微众银行、深证通、腾讯、华为、中科院等金融机构、科技企业、学术机构等组成的非营利性组织;(参考
的管理方是微软;EEA
是由芝加哥交易所、因特尔、ING、摩根大通和微软等三十几家创始成员组成的;Corda
的管理方 R3 是以银行为主的组织,至少已经吸收了 42
家金融巨头,包括富国银行、美国银行、花旗银行、德意志银行、加拿大皇家银行等,我国的平安、招行等也是其成员,不过
R3
麻烦不断,也有些重量级成员已经退出。(二)社区现今科技发展比较流行开源,五大联盟链也都是开源的,开源意味着要搞好社区建设,通过社区推广和改进设计,凝聚更多智慧。Hyperledger
Fabric 已经打造了国际化的社区,除了在 GitHub 上比较活跃外,大量的线下
Meetup、技术推广活动也比较多,加上 IBM
的有力推动,使其有了大量的活跃用户;FISCO BCOS
社区建设初现规模,已有了千级成员、百级机构参与,除了 GitHub
外,还有官方微信群。FISCO BCOS
在不断迭代源码和文档的基础上,陆续推出了线上线下多种形式的系列运营活动,包括技术培训、高校开课、线上线下讲座沙龙、包括近期举办的金链盟中国区块链大赛,影响力逐渐扩散。作为国内开源项目,相信未来发展上会有一定的“天时地利人和”;Coco
社区不是很活跃;Quorum 在 GitHub 上已经有了 551
个话题,有一定活跃度;Corda
也不是很活跃。(三)商业应用商业应用是大家打造区块链平台的目的,也是一个联盟链最重要的人气所在。Hyperledger
Fabric 得益于 IBM
的大力推广,加上技术框架比较成熟、推出较早,目前已有较多商业应用,据 IBM
披露有 400
多个落地项目,其中不乏马士基、沃尔玛、联想、邮储银行这类大型客户,也有统计称,所有联盟链项目中
Hyperledger Fabric 已占据半壁江山;FISCO BCOS
从金融出发,携本土优势,落地项目也有数十个,包括微众银行的机构间对账平台、网易的竞猜游戏,四方精创的供应链金融、城商行旅游金融联盟的旅游金融、仲裁链、安妮股份的版权存证平台、乐寻坊的人才活动平台、链动时代的不动产登记系统等;Coco
目前在项目方面乏善可陈,除了其白皮书中提到的 Mojix 将其供应链 Dapp
转移到 Coco 平台上之外,没有更多公开的项目信息;Quorum
上,比较有影响的应该算是 2017 年 10 月摩根大通开发的 IIN(Interbank
Information
Network)平台,实现跨行信息交互,摩根大通、加拿大皇家银行、澳大利亚 ANZ
银行、新西兰银行等相继加入该平台;Corda
也是同样的境地,雷大雨小,耗费巨资,但是测试的多,落地的少。从生态角度看,Hyperledger
Fabric启动的比较早,目前领先一步,但是 FISCO BCOS
奋起直追,已经初见规模,Coco、Quorum、Corda
还需要做很大努力。三、效率区块链目前最差强人意的指标莫过于效率,虽然现在也有些人开始反思也许不应当苛求区块链的效率,但是商业应用总是回避不了这个问题。效率方面,本文从共识协议、出块速度、TPS
和存储消耗这四点加以比对。(一)共识协议联盟链为了提升交易速度,往往是先从共识协议“下手”。POW
和 POS
都无法满足商业应用的需要,“挖矿”对联盟链来讲也是没必要的,因此,各家都采用了替代的共识方案。Hyperledger
Fabric 在 0.6 版中应用了 PBFT,而在 1.0 版中放弃了
PBFT,转而采用效率更高的 Kafka,支持单点和集群两种方式,由 Kafka
直接给交易排序和出块。FISCO BCOS 支持并行计算的 PBFT 和标准 RAFT
两种方式,前者是将通常的 PBFT
中议长节点和投票节点分步验证的方式优化为并发验证,从而进一步提高共识效率;Coco
支持 Paxos 和 Caesar 两种协议。由于 Coco 节点是建立在基于硬件的
TEEs(可信执行环境)上,因此就假定了节点充分可信,所以在 Paxos
中,leader 节点处理过的事务,follwer
节点简单跟随即可,这体现了其对公链假定的改变;Caesar
支持灵活的容错模型,可以与 Paxos 共同使用以防范 leader 节点由于 TEEs
遭到破坏产生的安全威胁,该协议支持在 follwer 节点发现 leader
节点不可靠时将其驱逐,从而保证全网的安全;Quorum 支持 Raft 和 Istanbul
BFT 两种协议。后者是由来自台湾的 AMIS 帐联网公司在 2017
年研发的,可以大幅提升现有的以太坊架构的讯息交换效率;Corda
比较特殊,它借鉴“矿工”角色设计了公证人模块来提供交易公证(也即签名)服务,整个网络不依赖于任何特定的共识算法。但公证人是一个集群概念,一般使用
BFT 或 Raft
在公证人间达成一致,因此,公证人是存在效率问题,可能成为效率瓶颈;与传统分布式系统的共识设计相比,Hyperledger
Fabric 并没有什么改进,其共识方式与中心化共识的分布式数据库一致;FISCO
BCOS 支持 PBFT 共识算法,具备拜占庭容错功能,也提供 RAFT
共识算法,适用于在节点可信度比较乐观的场景;Coco 是通过 TEEs
提高节点可信性,以降低共识协议的复杂度;Quorum
也没做多少调整,尤其是在引入 Istanbul BFT 之前;Corda
应该说是在传统设计中引入了“矿工”理念。(二)出块速度由于替换了共识机制,因此相比使用
POW 的比特币、以太坊,联盟链出块速度要提高很多。Hyperledger
Fabric、FISCO BCOS、Coco 都是秒级出块;Quorum 则称是毫秒级,默认设定是
50 毫秒,可以调整;Corda
没有块,所以也没有出块速度可以考量。(三)TPSTPS
相当于区块链世界中的“网红”,很多新出现的链都把 TPS
贴在“脑门”上。这五大联盟链虽然 TPS
远高于比特币、以太坊,但还是比现有的分布式系统逊色:Hyperledger Fabric
通常实测的 TPS 在 300-500 之间;FISCO BCOS 实测单链可以达到 1000
以上。并且支持多链架构下的并行计算,可灵活扩展,理论上无上限。Coco
官方数据是 1600;Quorum 在 Istanbul BFT 协议下可以达到 400-800,Raft
下缺少数据;Corda 由于其网络结构的原因,没有全局吞吐量可以衡量。其实 TPS
方面如果没有达到一个数量级以上的差异,是不用特殊关注的,因为在实际应用中,节点数量、网络环境、硬件配置、软件设计等都会对
TPS
产生影响,而现有的联盟链在吞吐量上已经可以满足相当一部分商业场景的要求,毕竟
Visa 在 2016 年每秒实际处理的交易也只有 1,667 笔,尽管 Visanet
据称有每秒处理 56,000
笔交易的能力。(四)存储消耗区块链可以说是以“浪费”存储来换取信任的技术。虽然存储设备的价格越来越低廉,但这不代表“浪费”就没毛病,存储的快速膨胀一定会带来效率、成本、可用性等诸多问题,甚至会要求改变设计架构,尤其是在大家都想追求“杀手级应用”的时候。Hyperledger
Fabric 方面,蚂蚁金服倒是给出了一个详细的计算公式,Fabric
数据容量估算(GB) = 每种业务每天平均交易笔数 x (Fabric 每笔交易基本开销

如果你关注区块链技术长达几个月,可能也会跟我一样,对没完没了的原理介绍、前景描绘、行业探讨和链圈新闻产生了审美疲劳。没错,区块链必须与行业紧密结合,它也有颠覆人类协作方式之洪荒巨力,但是说到底它还是一个技术活,是要写代码的,在咖啡厅里整天坐而论道是造不出金链子来的。技术人员的逻辑简单直接,这个事情有没有前(钱)途?有,那怎么干?

  • 每笔交易平均业务数据大小 KB x 2 ) x 业务 Channel 数量 x(365 x 年数
    x(Peer 节点数量 x 2~1 之间 + Orderer 节点数量)+ Kafka Retention 天数 x
    Kafka Replica 数量) / (1024 x 1024),其计算示例中,在业务笔数每天 10
    万、4 节点、2 通道、单笔交易容量 1K
    的情况(其他因素不详细列出了)下,年存储消耗 4619G;FISCO BCOS
    支持历史数据快速追踪,对接数据库,实现分布式存储,能够支持海量服务的存储需求,提高存储访问速率,节省存储消耗。Coco
    由于设计上需要集成区块链协议做底层,因此其消耗就取决于集成的区块链协议,比如集成了
    Hyperledger Fabric,那加上 Coco 自身的消耗,其存储消耗量至少应该是比肩
    Fabric 的;Quorum
    也没有针对存储的特殊优化,至少应当按照大于以太坊消耗来估算;Corda
    倒是不同于其他联盟链,因为它基本上就是传统的分布式数据库,而且没有任何节点保存全局数据,每个节点都只保存跟自己有关的数据,所以,其存储消耗应该与传统分布式系统设计类似,没有过多的冗余消耗。综上,从效率方面看,在
    Hyperledger Fabric 之后推出或开源的其他联盟链,效率高于它也属正常。FISCO
    BCOS、Quorum
    本就是面向金融的设计,所以效率要求自然要高于一开始就希望做通用框架
    Hyperledger Fabric;Coco
    设计理念上就是希望做成“加速器”的,它的效率理应高于任何它可以集成的区块链;而
    Corda
    的设计模式决定了很难全面评价其效率,只能去单独观察每个实例。四、扩展性联盟链的用户都希望自己能发展成生态圈,比如海尔的供应链、中化的原油进出口贸易平台、马士基的全球交易平台等,因此,扩展性是联盟链设计必须要考虑的问题。这方面本文关注了节点数量扩展、共识扩展、单多链模式、加密算法扩展、第三方认证证书支持这五点。(一)节点数量扩展Hyperledger
    Fabric
    在节点数量扩展方面是弱项,已落地项目多是个位数节点,但是可以支持较多的客户端,算是一种弥补,不过节点数少其实意味着参与方的独立性是会有所下降的;FISCO
    BCOS
    的分组模式支持根据节点数量进行水平扩容,因此理论上节点数量是不受限制的;Coco
    在这方面有些“投机取巧”,可支持的节点数量取决于其集成的区块链协议,如果集成的是公链协议,在理论上也不受限制;Quorum
    是基于以太坊的,因此理论上也没有限制;Corda
    同样也没有节点数限制。虽然除了 Hyperledger
    Fabric,其他联盟链似乎都没有节点数量问题,但是节点数量其实还受共识协议的影响,BFT
    类共识协议在节点数量超过一定水平时会出现吞吐量下降,设计时应当考虑这点。(二)共识协议扩展共识协议的扩展能力对联盟链的稳定性有很大影响,能否根据节点数量、网络平衡情况、吞吐量进行调整决定了其网络的扩展能力。Hyperledger
    Fabric
    虽然很早在设计上就称其共识模块可插拔,但是目前实际应用上看是不具备插拔能力的,每个版本仅支持一种共识模式;FISCO
    BCOS 支持共识协议的插件式实现,允许切换共识机制;Coco、Quorum
    目前也具备了这种能力;Corda
    实现的应该说不是共识协议的直接插拔,而是公证人模块的可插拔,可以通过切换公证人模块来选择公证人的共识模式。(三)单多链模式多链模式目前被很多新出现的链用于性能扩展,不过多链模式有利有弊,提升性能的同时也增加了设计复杂度。Hyperledger
    Fabric 的通道机制其实可以算是早期的多链设计,但是通道在 Hyperledger
    Fabric
    中并不是出于提升效率的目的设计的,而是为了满足业务多样性要求,以降低业务复杂度,因此,通道机制目前在性能扩展方面没有显著贡献;FISCO
    BCOS
    是明确的并行计算多链设计,设计上要求开发者尽可能保持多链的同构特征以减少冲突,多链设计被直接应用在系统扩展方面;Coco
    的模式仍然取决于其集成的区块链协议;Quorum
    是单链模式的,底层的性能扩展要跟随以太坊的技术路线,可能要依赖以太坊的分片等技术进行扩展;Corda
    设计上是多网络模式,没有单多链的概念,但是可以建立两个网络节点的双向连接,配置双方信任的公正和认证机构进行网络融合,融合算是其扩展的一种方式。(四)加密算法扩展对于国内的应用,加密算法的扩展也即国密替换是一个强烈需求,尤其是在金融领域。Hyperledger
    Fabric
    不支持国密替换,目前已有的应用凡实现国密的基本上是自行替换或者依赖第三方服务;FISCO
    BCOS 是支持国密的;Coco 未对加密算法的选择有明确说明,因为这对 Coco
    而言属于底层,取决于其集成区块链协议,但目前它所集成的协议中还没有支持国密的;Quorum、Corda
    都没有对国密的支持方案。(五)第三方认证证书支持这一点对国内的应用也很重要。Hyperledger
    Fabric 目前不支持第三方 CA;FISCO BCOS
    支持第三方证书,支持证书的撤销,支持多CA;Coco
    由于私钥都保管在本地业务系统且允许自己生成,网络上只存公钥集,因此技术上看应该可以支持第三方
    CA;Quorum、Corda 都未见有此类支持。综上,Hyperledger Fabric
    在扩展性上有一定的限制; FISCO BCOS
    的可扩展性是很有优势的,尤其是面向国内应用时;Coco
    扩展性取决于其集成的协议;Quorum 的扩展性与以太坊关系密切;Corda
    除了在加密算法和第三方认证证书方面外,扩展的自由度有可能是最高的。五、节点管理与权限管理除了共识之外,联盟链与公链的显著区别当属在节点和权限上的设计了。本文从节点类型、作用、成员准入控制、角色和权限管理这几个方面比较下各联盟链之间的差异。(一)节点类型Hyperledger
    Fabric
    网络中的节点主要分为排序节点、背书节点和记账节点三类,实际应用中还可以加入只有同步账本能力的二级节点;FISCO
    BCOS 中包含核心节点、全节点、轻节点;Coco
    是一个可信验证节点(VN)分布式网络,也即,它只有一类节点就是 VN;Quorum
    中的节点是基于的以太坊 Golang
    版本实现的,因此节点之间是对等的,没有节点类型的区分,节点之间可以有白名单管理;Corda
    也不区分节点类型。(二)节点作用Hyperledger Fabric
    网络中背书节点负责提供签名服务,经背书节点签名且满足签名策略的交易提案会提交给排序节点进行交易排序和出块,再由记账节点完成账本更新;FISCO
    BCOS 中核心节点负责共识和记账,共识节点参与记账共识,
    观察节点同步账本;Coco、Quorum、Corda
    中节点都是对等的。(三)准入控制Hyperledger Fabric 中有专门的 CA
    模块提供用户信息注册、数字证书发行、延期和吊销等服务,成员管理采用 MSP
    方式,同一个组织内的成员通过共用同一个 MSP 标识进行识别;FISCO BCOS
    中,成员加入网络采用管理员认证的方式,提供合法有效的成员信息与CA证书,由管理员审核通过后,加入网络;Coco
    网络中的角色分为成员和参与者两种,成员是网络的集体管理者,拥有投票权,投票决定其他机构的加入或删除;Quorum
    网络中节点通过授权才能加入网络,授权是集中式的,通过 Java
    控制台操作;Corda
    中节点也是需要授权加入的,节点选择加入一个或多个网络地图,网络地图相当于网络成员及其地址列表,节点只能与所在地图中的成员进行交易。(四)角色Hyperledger
    Fabric
    中虽然成员没有明确的角色划分,但是基于其运维或对应的节点的差异会自然形成不同的角色;FISCO
    BCOS
    网络中的角色包含超级管理员、链或权限管理员、运维、交易、监管等;Coco
    网络中的角色分为成员和参与者两种,但不是必须同时具有两类参加者,也可以只有成员类型;Quorum
    网络中没有角色的区分;Corda
    网络中的角色分为公证人和参与者两种,公证人提供公证服务,参与者进行交易。(五)权限管理Hyperledger
    Fabric
    中权限主要通过策略进行管理,策略实际上是成员通过节点进行某种操作,比如提交交易提案等,所需要满足的签名数量要求。FISCO
    BCOS
    权限管理采用系统合约的方式,并可以通过自定义合约的方式进行权限管理功能的扩展,权限管理模型为
    ARPI(账户——角色——权限——接口)模式,多个账户可以对应同一个角色,角色有明确的权限列表,每个权限对应一个接口,接口指向智能合约,权限列表按照系统合约方式维护。业务中的权限管理则采用交易权限链的方式,一个交易相当于一组权限链,包含多个
    Filter,交易处理是逐个 Filter 进行权限判断,一个交易完成相当于一组
    Filter 审核都通过。Coco
    网络有成员负责治理,参与者是没有投票权的,不能参加网络管理。成员和参与者都可以拥有
    VN。成员对网络的管理通过共同维护一个可编程的网络章程来进行,章程内容至少包括成员列表、VN
    列表、代码清单、TEE 清单和投票策略。Quorum、Corda
    没有明显的权限管理内容。综合比较,FISCO BCOS
    的设计比较周全,也有一定的复杂性,但这也意味着它能够支持更复杂的场景;
    Hyperledger Fabric 、Coco 带有一定中心化因素;相较之下,Quorum、Corda
    更接近公链思路。带有中心化因素本就是联盟链对其应用的商业环境的体现,这也无可厚非。六、智能合约为了提升效率,支持更加友好的设计,各联盟链在智能合约上也出现了不同的发展思路。Hyperledger
    Fabric
    中的智能合约称为“链码”。链码分为系统链码和普通链码,前者包括生命周期管理、配置管理等,属于系统控制层面的链码;普通链码则是用于实现业务逻辑的链码,智能合约开发通常指的就是这部分链码。链码的业务模型为“MCV-B”,即,在传统的
    MVC(模型、控制器、视图)模式中嵌入
    B(区块链),强调链码是业务逻辑的加强。链码的生命周期包括打包、安装、实例化、升级、停止和启动,运行在
    Docker 中,由背书节点进行调用,目前主要支持的是 Go 语言。Hyperledger
    Fabric
    虽然提供了跨通道机制,允许跨通道调用链码,但是跨通道调用只支持读而不支持写。FISCO
    BCOS
    中除了通常用于业务逻辑的智能合约外,将系统管理也智能合约化了,统称为系统合约,包含系统代理、节点管理、机构证书、权限管理、全网配置五类。上述合约原则上由区块链管理员在网络启动时部署,网络运行期间的变更则需要在去全网所有节点许可的情况下由管理员操作。FISCO
    BCOS 主要支持 EVM 引擎的智能合约。Coco
    由于其节点运行在可信执行环境中,因此,与其他联盟链不同的是智能合约只需单个节点运行,不必多次验证。更与众不同的是,因为可以单点只运行一次,所以
    Coco
    的智能合约支持不确定交易。此外,允许智能合约直接连接外部可信数据源。Quorum
    是基于以太坊智能合约的,智能合约本身没有特别之处,合约运行结果方面,节点只对公开交易和节点涉及的私有交易进行验证,而不必验证所有交易。Corda
    的智能合约设计思路也比较独特,首先,它主张智能合约的业务数据和业务逻辑要能关联到明确的法律依据上,这相当于要智能合约跟业务凭证之间具有强联系;其次,Corda
    主张纯函数式设计,力推金融合约的标准化,提供小型类库,以减少对低层次逻辑的重新开发;再次,单纯看智能合约的话,Corda
    的智能合约是“碎片化”的小段程序,而且只能做为起流转控制作用的“验证程序”,做不到一般智能合约那种价值转移功能,在
    Corda
    中,“交易”、“智能合约”和“流式架构”加起来才能与其他平台的智能合约相当。总结一下,Hyperledger
    Fabric 的链码设计给了智能合约一个新的设计框架,这方面它是开创性的;FISCO
    BCOS 则将智能合约应用扩展到了系统管理方面;Coco
    采取了改变公链设计假定的思路,不仅不对智能合约进行重复验证,还支持不确定交易;Quorum
    的智能合约基本沿袭公链思路;Corda
    的思路也比较另类,但是智能合约本身却更弱化了。智能合约是随着以太坊火起来的,成了区块链的标志性技术,但其实目前的智能合约还远不够“智能”,这个名字容易引起误解。以太坊创始人
    Vitalik
    最近在推特上发文称对使用智能合约这个术语表示“十分遗憾”,应该使用更专业或更无聊的名字,比如,“持续的脚本”之类的东西,想来也有此意。七、部署与运维友好性联盟链常被称为是个“坑”,这个“坑”主要是在部署和运维方面。(一)部署Hyperledger
    Fabric
    虽然已经是个成熟框架了,有良好的社区环境,市面上还有若干不错的教材,但是部署方面依然让很多新人不知就里,笔者所在的微信群里大部分时间都在交流部署问题而非设计问题;FISCO
    BCOS提供一键安装/step-by-step/docker等搭链方式,同时还未企业生产部署提供物料包的打包工具,简化部署复杂度;Coco
    的部署特点是增加了一次对其他区块链协议的集成,要先有底层区块链协议,才能部署
    Coco,这其实要设计人员对 Coco
    和其集成的区块链协议都有一定了解才好,学习成本较大,此外,Coco 需要部署
    TEE 硬件设备来支持可信执行环境构建,这是其他联盟链通常不需要的,TEE
    因此也成为一个安全隐患;Quorum 需要在以太坊之上部署,依赖以太坊,与 Coco
    相同,设计人员最好也要了解以太坊;Corda
    的部署目前缺乏实例来做比较。(二)运维Fabric
    目前没有提供多少支持工具,多数需要设计者自己开发;FISCO BCOS
    提供了方便运维的合约命名服务,提供区块链浏览器和监控,并且有上帝模式用于处理节点崩溃问题,运维友好度有一定改善;Coco
    目前未见提供多少运维工具;Quorum 有一些第三方支持工具;Corda
    与其他联盟链相比,运维方面最大的特色莫过于支持受限形式的数据库回滚。联盟链的部署和运维都有一定的学习曲线,其复杂度远高于公链,一个新手部署一条以太坊要不了多少时间,但是运转起一个联盟链,还是需要打听不少“小伙伴”的。八、隐私保护联盟链有一个让大家纠结的问题是,明明要上链一起共建生态、共享信息,却纷纷要求隐私保护,要上链又不能随意公开,不仅希望身份保密,还希望交易信息保密,这与公链信息公开、身份保密的设计理念有很大不同,但这是合理要求,尤其是在金融领域。本文从可见范围、加密措施两方面对各链加以比较。(一)可见范围Hyperledger
    Fabric
    的通道可以用来隔离数据,只有在同一通道内的节点才可以共享同一套账本信息,而通过组织设计,基于
    MSP 标识可以在同一通道内进一步控制数据可见范围,1.2
    版中加入了私有数据模式,允许指定的节点间共享信息,这比组织更加灵活;FISCO
    BCOS 设计了 AMOP
    协议,以提供机构间的点对点通信,通信信息属于链下信息,不在全网共享,链上部分在引入中央对手方提供信用背书的情况下,数据也仅在交易方和中央对手方之间共享,多链方式也可用于数据隔离,必要时通过跨连互通;Coco
    支持两个或多个交易者的机密交易,通过 TEE
    控制可见性,但要求集成的区块链协议最好也提供一定支持;Quorum
    区分公开数据和私有数据,私有数据只允许限定的交易方可见;Corda
    数据仅在交易方之间可见,节点之间提供一个交易依赖关系图,数据根据需要发送,而不在全局广播,任何参与方都无法见到包含全部数据的全局账本。(二)加密措施Hyperledger
    Fabric 1.1 开始支持账本数据加密,1.2 版引入私有数据后,设计上允许只给
    Kafka 提供交易 Hash 用于排序而不向 Kafka
    提供交易信息,以防排序节点泄露数据;FISCO BCOS
    允许采用高强度的加密数据信封进行保护,未参与交易的机构只能接收到密文,此外,建议对敏感数据采用脱敏上链、Hash
    上链等方式进行保密处理;支持零知识证明,环签名,群签名,同态加密等隐私保护方法。Coco
    允许应用程序先进行数据加密再提交事务,公网数据采用加密传播的方式,以对不受信任的
    host 保密;Quorum 有独立的 Constellation
    模块,对私有事务的交易数据进行加密保护,还提供了独立的零知识证明(ZSL)模块以防止验证用户身份时发生信息泄露;Corda
    也使用 enclave
    进行数据保护,并考虑使用安全硬件。在隐私保护上,各链都下了很大力气,这方面与其一较短长,不如考虑互相借鉴。九、选型建议通过以上八个方面,本文粗略比较了五大联盟链的设计与差异,如果非要从技术角度给各家打个分、排个名,实在有些“霸王硬上弓”之嫌,各家原本思路和焦点就不同,都有自己的“小目标”,非要不管人家自己的想法去论个短长,有些不太“科学”,也不是应用的合理“姿势”。各联盟链毕竟都是为了解决实际问题、为了落地区块链项目而设计的,所以,本文最后从大家都会关心的技术选型角度做个总结。整体而言,Hyperledger
    Fabric
    的综合实力依然最强,推出时间早、框架完整且比较成熟,有国际化应用和国际化社区加持,案例和技术支持对于仍属早期发展阶段的区块链而言非常重要,Hyperledger
    Fabric
    在这方面可以说优势极大。但是,它也有些不能回避的问题,比如基础研发进展缓慢,研发主体不明确,一些应用者关心的关键问题迟迟不见解决。随着百度、阿里、腾讯、京东等一众国内大厂的强势加入,Hyperledger
    Fabric
    的优势地位也会受到越来越多的挑战,对此,它急需合适的应对措施。FISCO BCOS
    应该说是本土化设计的代表,其在底层研究上的投入、关键技术上的改进、对国内需要的适应性调整、对社区建设和运维的重视,都有可圈点之处,平台在各行业的通用性也在加强,随着开源工作的推进和案例的不断增加,其本土化优势会逐步显现。在国家政策的鼓励下,国内大厂如今纷纷高调杀入联盟链市场,如果这些大厂真的“倾情”加入,那与
    Hyperledger Fabric
    相较,其开发主体、资金投入的稳定性要更有优势,而且,大厂们基本自带生态和流量,案例的增长、生态的发展也是可以预期的,是很多项目可以借力之处。Coco、Quorum、Corda
    都存在支持能力不足、缺乏有效案例的问题,虽然微软目前在 Coco 以及其他基于
    Azure
    的区块链平台和应用上投入了一定力量,但是对国内应用者而言,仍显不足。因此,从技术选型角度来讲,应用者,尤其是新入局的应用者,最好还是在
    Hyperledger Fabric 这种影响广泛的成熟框架或者 FISCO BCOS
    这种有实力且能提供较强本土支持的平台上做选择,而在开发过程中借鉴下
    Coco、Quorum、Corda
    中的优秀设计理念。区块链仍属于技术的早期阶段,这个阶段必然要求应用者具备较强的学习能力,多做基础研究,敢于对所选择的技术平台进行改良,积极与平台提供商合作进行技术探索,区块链还没到像主流操作系统那样可以“坐享其成”的阶段,仍然需要所有参与者秉持“开源”思想,不辞辛苦、热情奉献、共同进步。作者按:文章大部分是晚上写的,是“夜话”;挑来选去,最后写了五个链,想起了“春秋”。春秋之后是战国,估计是随着
    BATJ
    积极加入后的战国。“天下大势,合久必分,分久必合”,联盟链乃至区块链会否如此,可能要“久”到下一代技术来决定了。近期有文章称当前的基础研究越来越难以支撑技术的创新发展了,区块链也有此忧虑。作为早期形态,刻意“浪费”算力和存储换取信任,可以;作为未来的成熟形态,不妥。五大联盟链中也有对此问题的些许思考,但现有方案乃是当下之技术或认知所能达到的较高水平了。今日“链人”之努力乃是前进的必经之路,足以启发天下之想象。没有今日的“痛苦”,就没有未来理想的区块链世界,愿大家广发宏愿,持续努力。作者介绍付晓岩,原中国建设银行资深业务架构师,负责业务架构设计、项目管理,热衷新技术探索与实践,具有丰富的银行业务经验和企业级项目业务架构设计经验。2000
    年加入建行,曾长期参加建行“新一代核心业务系统”建设,主导客户关系、金融市场、同业、资管、养老金等多个领域核心系统的业务架构设计。从
    2017
    年开始探索区块链技术及其应用,并发表《关于使用区块链技术建设行业级同业交易平台的探讨》、《数字货币可能诱发的现金社会经济活动的模拟与思考》等多篇文章。

本文试图对区块链有关技术流派和主流平台进行一个概览,作为学习区块链技术体系的导览,意在抛砖引玉,促进区块链开发社区的讨论与共识。

区块链技术的流派

普京集团娱乐网,未战先谋局,你想投入区块链开发这个领域,至少先要搞清楚现在有哪些玩家,各自的主张和实力如何。

划分区块链技术流派并无一定之规,据我所见,或可有以下四种方式:

第一是按照节点准入规则,划分为公有链、私有链和联盟链

公有链的代表自然是比特币和以太坊,私有链则以R3
Corda声名最盛,联盟链的代表作品是Hyperledger名下的Fabric。公有链注重匿名性与去中心化,而私有链及联盟链注重高效率,而且还往往设置了准入门槛。公有链、私有链与联盟链之间的这些不同都在技术中有所体现,比如私有链和联盟链假设节点数目不大,可以采用PBFT算法来形成共识。而公有链假设有大量且不断动态变化的节点网络,用PBFT效率太低,只能采用类似抽彩票的算法来确定意见领袖。这就意味着,私有链与联盟链很难变成公有链,而用公有链来作联盟链或私有链虽然容易,却也并非即插即用。此种差异,学者不可不察。

第二是按照共享目标,划分为共享账本和共享状态机两派

比特币是典型的共享账本,而Chain和BigchainDB也应属此类,这几个区块链系统在各个节点之间共享一本总账,因此对接金融应用比较方便。另一大类区块链系统中,各个节点所共享的是可完成图灵完备计算的状态机,如以太坊、Fabric,它们都通过执行智能合约而改变共享状态机状态,进而达成种种复杂功能。

第三是按照梅兰妮 · 斯旺所描述的代际演进,将区块链系统分为1.0、2.0和3.0三代

其中1.0支撑去中心化交易和支付系统,2.0通过智能合约支撑行业应用,3.0支撑去中心化的社会体系。比特币和Chain应属于区块链1.0系统,而以太坊和Fabric是区块链2.0系统,目前尚无成功的区块链3.0系统出现,不成功的尝试倒是有那么一个,就是著名的The
DAO。

第四是按照核心数据结构,分为区块链和分布式总账两派

区块链这一派在系统中真的实现了一个区块的链作为核心数据结构,而分布式总账这一派,只是吸取了区块链的精神,并没有真用一条区块链作为核心数据结构,或者虽然暂时用了,但声明说吾项庄舞区块链,意在分布式总账耳,若假以时日,因缘际会,未尝不可取而代之也。

主流区块链技术平台

了解流派划分,仍是只能用来指点江山,吹牛论道,要动手,总要有个切入点。区块链货币据说已经有上千个了,但值得关注的技术平台大概只有数十个,而如果要进入区块链开发领域,打下一个好基础,练出一身好功夫,捞到几个好offer,则值得深入研究学习的平台,屈指可数。

首先当然是比特币

比特币作为区块链的第一个也是目前为止最成功、最重要的样板工程,已经上线运行了八年多,本身没有发生任何严重的安全和运维事故,其稳定与强悍堪称当代软件系统典范。比特币Bitcoin
Core是一个代码质量高、文档良好的开源软件,从学习区块链原理、掌握核心技术的角度来说,Bitcoin
Core是最佳切入点,能够学到原汁原味的区块链技术。当然,Bitcoin
Core是用C++写的,而且用了一些C++11和Boost库的机制,对学习者的C++水平提出了较高的要求。

学习比特币平台开发还有一个优势,就是可以对接繁荣的比特币技术社区。目前围绕比特币进行改进和提升的人很多,人多力量就大,诸如隔离验证、闪电网络、侧链等比较新的想法和技术,都率先在比特币社区里落地。比如侧链技术的主要领导者Blockstream是由密码学货币元老Adam
Back领衔的,而Blockstream是Bitcoin
Core最大的贡献者之一,所以一些有关侧链的技术在比特币社区里讨论最充分。

但比特币作为一个典型的区块链1.0系统,是不是支撑其他类型区块链应用的最佳技术平台,存在很大的争议。另外,也不是所有人都有能力和必要精通区块链底层技术。所以对那些急于冲到区块链领域里做(quān)事(qián)的人来说,可能更直截了当的学习目标是以太坊和Hyperledger
Fabric。

以太坊

在以太坊上面用Solidity进行的智能合约开发是切入区块链开发最简单的方式,没有之一。以太坊的理想非常宏大,由于配备了强大的图灵完备的智能合约虚拟机,因此可以成为一切区块链项目的母平台,是驮住整个区块链世界的大乌龟。在以太坊上开发一个类似比特币的加密货币,是一个不折不扣的小目标。一般有经验的开发者在文档指导下,半天到一天即可入门。问题在于,入门以后又如何?靠写Solidity是否就可以包打天下?这是大大存疑的。我们也可以反过来说,如果以太坊+Solidity是区块链的终极解决方案,那么怎么还会出现那么多区块链技术门派呢?特别是,以太坊似乎并没有给现实世界中巨型的中心化组织们留下一条活路,这种彻底不妥协的革命态度有可能也成为以太坊推广的障碍。

当前以太坊项目的开发进展并不顺利。一个比较突出的问题是项目过多,力量分散,导致项目质量参差不齐。但尽管如此,跟其他区块链2.0平台相比,以太坊提供的开发环境是最简单最完善的。初学区块链的人绝对有必要学习以太坊,从而对区块链和智能合约建立起一个最“正宗”的认识。

Fabric

主流区块链技术平台的第三支就是Fabric,它是Hyperledger的第一个也是最知名的孵化项目。
Fabric最早来自IBM的Open
Blockchain项目,到2015年11月,IBM将当时已经开发完成的44,000行Go语言代码交给Linux基金会,并入Hyperledger项目之中。在2016年3月一次黑客马拉松中,Blockstream和DAH两家公司将各自的代码并入Open
Blockchain,随后改名为Fabric。到目前为止,Fabric与Intel提供的Sawtooth
Lake并列为Hyperledger的一级孵化项目,但前者得到的关注远超后者。

从技术角度来说,Fabric思路不错,重点是满足企业商用的需求,比如解决交易量问题。众所周知,比特币最大的短板是它每秒钟7个交易的上限,完全无法满足现实需要。而Fabric目标是实现每秒钟10万交易,这个量接近刚刚过去的双十一交易量瞬时峰值,完全可以满足正常条件下的行业级应用。Fabric用Go语言开发,也提供多种语言的API。特别值得一提的是,Fabric比较充分地运用了容器技术,比如其智能合约就运行在容器当中。这也是Go语言带给Fabric的一项福利,因为Go语言静态编译部署的特征很适合开发容器中的程序。

Fabric还有一些特点,比如其membership服务可以设置节点准入审查,这是典型的联盟链特征。再比如其共识算法是可定制的。Fabric自带PBFT共识算法实现,但是PBFT的算法效率是O(n²),其中n是节点数量。因此PBFT用在节点数量受限的联盟链里是没有问题的,但用在公有链里效率过低。

Fabric的短板是体系较为复杂,虽有文档,但缺少经验的开发者学习起来障碍比较大。然而由于其定位清楚,迎合了不少企业的心态,所以已经有多家机构在基于Fabric秘密研发行业内的联盟链项目。

小众门派

上述区块链开发的三大主流平台,从活跃度、受关注和参与人数来说,远远超过其他平台。但俗话说莫欺少年穷,一些眼下还默默无闻的平台也不容忽视。

Sawtooth Lake

Hyperledger的另一个一级孵化项目Sawtooth
Lake是Intel开发的区块链平台,是一个很少被关注的项目,大概是因为被同在Hyperledger旗下的Fabric给掩盖了,再加上名字拗口,所以很少看到有人讨论它,项目活跃度也不高。但其实Sawtooth
Lake是一个挺有想法的区块链项目,设计十分精心。它以数字金融资产管理为目标,整体架构清晰,模块化程度高,因此可定制能力也强。概念上独创了“交易族(transaction
family)”概念,而且还支持PoET和Quorum两种共识机制。当节点数量很多(公有链环境)时,使用第6代Intel
Core
CPU所提供的SGX扩展功能提供一种称为时间流逝证明(PoET)的机制来形成共识,这种机制与比特币所采用的PoW同属“抽彩票”式的共识算法,但杜绝了通过ASIC专用硬件“作弊”的可能性,排除了比特币出现的算力过于集中的隐患,可靠性由Intel
CPU硬件来保障,是公有链系统里很有价值的一个共识机制。另一方面,当节点数量少且受控时,Sawtooth
Lake可以采用Quorum共识机制,这是由Ripple提出并验证的共识机制,非常适合于联盟链场景,这样Sawtooth
Lake就摇身一变成为很好用的联盟链了。

Sawtooth Lake采用Python开发,并提供了Java
SDK。由于这两种语言的流行度,实际上它应该有很大的潜在开发者人群。事实上,R3
CEV曾经测试过Sawtooth
Lake并进行了成功的证券交易实验。当前它主要的问题是受关注度不足,不知Intel是否有足够的耐心和毅力坚持到底。如果Intel战略更明确一些,支持力度更大一些,我建议大家可以对它投以更多的关注。

Corda

R3 Corda是一个备受关注的分布式账本项目。
R3是由数十家银行和金融机构支持的区块链企业,融资上亿美元,号称汇集了一票高手,潜心研究符合金融行业需求的分布式账本系统。Corda是R3分布式账本系统中的核心,在千呼万唤之后,于11月30日正式开源。

Corda采用JetBrain原创的小众语言Kotlin开发,对Java世界敞开大门,这是令人点赞的。此外,Corda更重要的特色是其与现有世界里大银行、大型中心机构的全面妥协、全面合作的姿态,这与以太坊革命无罪、造反有理的形象形成鲜明对比。Corda在设计中有多项独特考虑,就是为了对接现有的业务规则。比如在其他几乎所有区块链平台里,每一个交易对于各节点来说都是可见的,可见才能验证,能验证才谈得上共识,所以交易的全网可见性是顺理成章的。但是现实世界里金融机构之间的交易,只有交易相关方才能看到交易详情,工行与建行的一笔交易,绝无必要让招行看到。为了对接这个现实,Corda设计了与众不同的机制,牺牲了交易验证的全局可见性,确保只有交易相关方才能看到和验证交易本身。可是另一方面,银行业务是被重度监管的业务,不能因为你用了区块链系统,就把洋洋洒洒的巴塞尔协议晾在一边,监管机构的职能如何体现?这是其他区块链系统里考虑不多的。而Corda设计了独特的Notary和Oracle节点,为监管体系进入留下了空间。仔细品味,这些都是给现实世界当中的大机构预留的美差。这些设计上的考虑,无疑大大增强了Corda被现有大型金融机构采纳的机会。不过这一切看上去很美好,但目前Corda的实现基本上是个花架子,设想的种种,不少处于TODO状态。

Chain和BigchainDB

另外两个值得点名的区块链门派分别是Chain和BigchainDB。前者跟Visa有合作,后者是一个基于RethinkDB开发的分布式账本,两者各有各的思路和特色,也拿到了为数可观的投资,不排除未来能有大的发展。限于篇幅,在这里不展开介绍了。

区块链开发所需具备的技术基础

开发基于区块链的Web或移动App

可以预见,未来从事区块链开发的主要有三类开发者,一类是开发基于区块链的Web或移动App,这种开发者所需要的技能与今天的Web和移动开发者并无二致,这里就不赘述了。

开发智能合约开发者

第二类开发者是开发智能合约的。这类开发者使用类似Solidity这样的智能合约语言,或者直接用Go、Java、Python等语言开发。开发智能合约所要求的语言和算法技术水平不高,什么并发、多线程之类的东西一般用不到,普通开发者均可胜任。但是智能合约的难点在于业务与安全。本质上智能合约就是以代码写成的商业合同,必须对于业务有非常清晰的认识,对于安全有着深刻的理解,才能够写出正确的智能合约。因此,我认为未来智能合约的开发者,可能反而是具体应用领域的行业专家出身居多,因为让他们掌握Python语言,远比让程序员去理解进出口贸易规则或者商业票据业务要容易得多。

开发区块链核心应用系统和核心平台

第三类开发者,就是区块链核心应用系统和核心平台的开发者。这部分人当然必须是技术高手,按现在通俗的说法,得是后端专家。从语言上讲,C++、Java、Python、Go、JavaScript都有可能要触及。从基础知识来说,要求对密码学、分布式系统、网络编程、系统架构和部署都有相当程度的理解和实践经验。这种开发者显然将是区块链技术浪潮当中的弄潮儿,也将是最大的受益者之一。

特别要点一下密码学。密码学是大多数开发人员的短板,但若要在区块链核心技术领域搞出能够碾压竞品的创新点,密码学是最有可能出成果的地方。不用说搞出什么密码学突破,就是将密码学现有成果充分运用在区块链里,都可能会搞出一些逆天的创新来。比如用零知识证明协议(zero-knowledge
proof)构造高度匿名化的区块链系统,比如用私有计算外包(private computing
outsourcing)技术让别的节点既能够验证交易,又对交易本身的内容一无所知,这都是能够激发大量商业模式创新的技术,等待密码学黑客们发掘和实现。因此,我相信密码学成为显学的时代即将到来。

原文:http://geek.csdn.net/news/detail/134967
作者:孟岩

发表评论

电子邮件地址不会被公开。 必填项已用*标注

CopyRight © 2015-2020 普京集团娱乐网 All Rights Reserved.
网站地图xml地图