Hyperledger Fabric技术内幕:架构设计与实现原理(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-19 14:35:19

点击下载

作者:李鑫

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Hyperledger Fabric技术内幕:架构设计与实现原理

Hyperledger Fabric技术内幕:架构设计与实现原理试读:

前言

2016年12月,“区块链”(BlockChain)被列入国家十三五规划,并作为未来重点突破与发展的六大关键技术之一。2018年5月,两院院士大会将区块链的发展趋势表述为“以人工智能、量子信息、移动通信、物联网、区块链为代表的新一代信息技术加速突破应用”。区块链领域正在以前所未有的速度聚集着社会资源,加速技术应用与关键技术的突破,并受到国家、企业、资本等各方的广泛关注。当前,区块链作为风口概念受到国内外媒体的火热炒作,同时受到大量VC风投的极力热捧。

根据产业创新创投数据平台Innov100的数据统计,2017年全球ICO(Initial Coin Offering,首次代币发行)融资金额高达350亿元。2018年1月至5月,ICO融资规模为118亿美元。博链研究发布的《全球区块链+创投报告》指出,截至2017年4月底,全球455家区块链公司累计获得融资金额达19.47亿美元。在获投公司数量上,中国共有61家位列全球第二。2018年第1季度,“俄罗斯微信”Telegram进行了两轮ICO融资分别获得8.5亿美元共17亿美元。中国平安旗下金融管理门户金融壹账通获得SBI投资(思佰益)和IDG资本的6.5亿美元融资,成为2018年第1季度中国区块链行业融资额最高的项目。2018年6月,Block.one推出的加密数字货币EOS结束了为期350天的众筹活动,总融资额近42亿美元。

截至2018年3月底,我国以区块链业务为主营业务的区块链公司数量已经达到了456家,区块链产业初步形成规模。同时,区块链明星创业公司如井通科技、智链、量子链、小蚁、趣链、布比等如雨后春笋般纷纷出现并迅速成长,国内BAT、小米等互联网巨头与众安保险等新型互联网公司相继投入资源,研发核心技术与探索应用落地,传统行业巨头如中国平安、万向集团等也耗巨资,成立新型网络科技公司或实验室,研究区块链技术与应用。这些企业都试图在未来的科技竞争中弯道超车,抢占先发优势,积累资源与技术壁垒。鉴于国内行业发展的碎片化,以及应用存在一定的盲目性,国家工信部在区块链产业整合上积极引导,由中国电子技术标准化研究院牵头,联合国内典型区块链企业成立中国区块链技术和产业发展论坛,共同制定我国区块链技术的相关标准与推动产业发展。该组织于2016年10月18日发布了《2016年中国区块链技术和应用发展白皮书》;2017年5月与12月分别提出了我国区块链技术和产业发展论坛标准《区块链参考架构》与《区块链数据格式规范》,其中,《区块链参考架构》已处于国家标准立项阶段;2018年5月发布了《2018年中国区块链产业白皮书》,2018年6月拟筹建全国区块链和分布式记账技术标准化技术委员会,推进区块链标准体系框架工作,提出了基础、业务和应用、过程和方法、可信和互操作、信息安全等标准,并初步明确了21个标准化重点方向及相关标准化方案。同时,2016年12月以来,中国信息通信研究院联合数据中心联盟等单位相继发布了可信区块链系列标准《第1部分 区块链技术参考框架》《第2部分 总体要求和评价指标》《第3部分 评测方法》等,2018年4月9日,牵头与158家企业联手启动了“可信区块链推进计划”,截至2018年9月初,推进计划成员已发展至225家,陆续成立了标准与评测、知识产权、云服务等10个工作组,积极推动国内外企业的可信区块链标准以及产品评测工作。另外,中国电子产品可靠性与环境试验研究所、中国银联电子支付研究院与同济苏州区块链研究院、贵阳区块链测试中心等都在研究与提供相应的区块链平台测评服务。国内的这些工作都在积极推动和促进国内区块链产业的发展,并积极与国际标准(ISO/TC 307等)、ITU-T FGDLT组与SG16研究组等进行接轨及交流,这有利于统一对区块链新兴技术的认知和共同解决区块链关键技术问题,对我国区块链产业的发展具有重大意义。

与此同时,国际上影响力较大的主流区块链开源平台逐渐融合发展,互相借鉴,目前已经涌现出数个典型的生态体系及平台。

·以比特币为代表的“虚拟货币”平台开源社区生态体系。比特币就是以区块链作为底层技术进行设计与研发的,中本聪(Satoshi Nakamoto)在2008年发表的论文《Bitcoin:A Peer-to-Peer Electronic Cash System》中就曾指出,比特币是通过随机哈希值为全部交易加上时间戳,并将它们融入不断延伸的、基于随机哈希值的工作量证明链条中作为交易记录(即区块),除非重新完成全部的工作量证明,否则形成的交易记录将不可更改。这种独特的记账方式使得比特币的发行可以不依赖于任何政府与货币机构的公信力,而是根据特定共识算法并通过大规模计算来生成的,由全系统所有节点共同背书,其记账权由全网51%的算力决定,第一次在全球范围内实现了一个去中心化的真实的点对点电子现金系统。这完全颠覆了以往人们对“货币”的认知,点燃了以比特币为代表的“虚拟货币”风口。

·以以太坊(Ethereum)为代表的支持可编程智能合约的公有链或公链平台开源社区生态体系。其核心理念是将区块链作为可编程的分布式信用基础设施,支持自动化运行的智能合约应用,并将平台交易内容扩展到金融、股权、债务凭证等领域。Vitalik Buterin等创始人于2013年12月开始发起以太坊项目,并迅速激发了人们在可信平台上交易金融资产的热情与创造力,现在应用方面有超过上千个DApp上链(https://www.stateofthedapps.com/),已经成为具有国际影响力的开源公链平台。

·以超级账本Hyperledger Fabric为代表的联盟链平台开源社区生态体系。其目标是完全面向企业级应用场景的许可区块链(Permissioned Chain),用以解决多个弱信任企业主体之间的信任问题,以降低企业间复杂繁琐业务流程带来的信任成本,实现在可控主体范围内共享敏感数据,从而有效提升企业主体之间大规模协作活动的效率。Hyperledger Fabric开源社区提供带有身份权限认证的商用区块链平台,采用模块化插件的灵活设计架构,避免了比特币类公链平台与以太坊类公链平台交易效率低下、缺乏完善的身份认证模块等问题,能够广泛应用于金融资产存管、供应链、共享经济等领域。Hyperledger Fabric自2015年底开源以来发展迅速,已经成为主流的联盟链开源平台。另外,值得注意的是,企业以太坊联盟(Enterprise Ethereum Alliance,EEA)、蚂蚁金服、腾讯、百度、BCOS(由微众银行、万向、矩阵元共同发布的开源联盟链平台)、众安、趣链、CITA(秘猿科技)等都是其潜在的竞争对手或产品。企业级BaaS(Blockchain as a Service)平台作为基础设施服务亦是未来国际企业市场的竞争焦点,国际巨头IBM、微软等已经在此领域深耕发力多年,以实现高效动态的部署跨域区块链网络的能力,从而提供高质量的商用企业级服务。

此外,目前还涌现出IPFS(InterPlanetary File System,星际文件系统)、石墨烯(Graphene)、哈希图(Hashgraph)、Blockstack、侧链、DAG、分片技术(Sharding)、抗量子攻击算法、高性能跨链技术、新型共识机制(如拜占庭协商BA-VRF、DDPOS、HyperPOW等)等众多的新型区块链平台、新型底层支撑技术以及相关方向,以着力解决当前区块链系统面向领域应用中遇到的关键技术问题(如指数量级提升单链或多链交易处理性能),积极探索新型技术落地与大规模应用场景,这些都是未来具有前景与值得关注的潜在技术。

本书重点介绍了Hyperledger Fabric系统架构的设计与实现,根据Hyperledger的官网介绍,超级账本旨在通过创建企业级的开源分布式账本框架,协助组织扩展、建立行业专属的应用程序、平台和硬件系统来支持交易业务,是全球跨行业领导者的合作项目,覆盖金融、银行、物联网、供应链、制造行业和技术领域。Hyperledger Fabric作为联盟链的典型架构,逐渐得到了国际主流公司与研究机构的青睐与大力支持。截至2018年2月底,已经有260个组织机构加入了Hyperledger社区阵营,包括IBM、Intel、Oracle、思科、摩根大通、富国银行、百度、阿里巴巴、腾讯、联想、小米、迅雷、华为等,分为高级会员、标准会员与联盟会员;另外还有一种学术性机构联盟会员,如剑桥大学贾吉商学院、北京大学、浙江大学等。Hyperledger项目设有理事会、技术指导委员会、市场委员会和用户顾问团等,代码许可协议采用Apache License Version 2.0,以满足大多数商业用途需求。截至2018年7月底,超级账本亚太副总裁Julian Gordon声称超级账本中20%的会员(50多个中国会员,百度属于高级会员)与10%的贡献都来自中国。目前,Hyperledger开源社区包括11个商业区块链和分布式账本项目,其中3个项目是中国企业与个人首先发起或提供主要工作的,包括Hyperledger Caliper(区块链性能测试平台,华为等)、Hyperledger Cello(区块链平台部署和运行管理项目,Oracle区块链首席架构师杨保华博士等)以及Hyperledger Explorer(区块链数据可视化工具项目,上海旺链科技等)。另外,中国企业与个人也为Hyperledger Fabric等项目做出了重大贡献。

Hyperledger Fabric得益于模块化插件架构等良好特性,近年来的发展异常迅速,已经开始在很多国内外机构和大公司的实际PoC(Proof of Concept,概念验证)项目以及实际应用系统中推广使用,如民生银行贸易金融领域产品即国内信用证信息传输系统目前支撑数十亿级别的交易业务量,以及智链ChainNova航运物流行业项目等。Hyperledger Fabric所在的GitHub开源社区也非常活跃,Meetup以及国内外会议上的相关研讨交流同样异常频繁。自2017年3月正式发布1.0测试版本以来,GitHub代码更新速度飞快,经过2016年0.6技术预览版本的升级之后,1.0版架构重新分离出Orderer节点与Committer节点,以提高系统的可扩展性与并发性,并且引入模块插件化的共识算法,整个系统架构日臻成熟实用。Hyperledger Fabric于2017年7月在社区正式发布了1.0正式版代码,在这个过程中约有27个组织、159名开发者、3500多个代码修改以及超过一年的协作和测试。发布1.0版是超级账本社区真正的里程碑事件,用户和技术供应商可以基于Hyperledger Fabric来推进产品的部署和运营。这标志着Hyperledger Fabric已经能够作为一个较为独立完整的开源软件被集成到其他系统中,提供给全世界的开发者进行研究。然而,Hyperledger Fabric开源社区并没有在1.0版本中发布sbft等支持拜占庭容错的重要共识机制模块,而是谨慎地推迟了该模块加入发布的时间,因此,Hyperledger Fabric还有很长的路要走。但是作为一个开源区块链系统,Hyperledger Fabric已经可以作为一个有影响力的典型联盟链范例来进行深入研究,这对于普及推广区块链技术有着积极意义。

作为Blockstream、Digital Asset Holdings与IBM贡献给开源社区的许可联盟链平台,Hyperledger Fabric是一个模块插件化的链式区块数据共享账本平台,支持自动化智能合约。更准确地说,它是利用密码学特征将构造成区块的交易数据集合基于区块哈希值链接起来,按时间戳顺序形成以区块对象为基本单元的“链”,并在参与节点之间共享该“链”,同时链上内容根据共识机制由参识节点集体维护,而不再由单一节点决定记账权,关于其来源在本书中会有更详细的探讨。总体来说,Hyperledger Fabric具有如下鲜明的技术特点:

·支持可插拔的架构;

·基于PKI体系与X.509标准身份证书的安全管理体系;

·支持多通道、隐私数据集合等多粒度的数据隐私保护特性;

·Peer、Orderer等节点可扩展性良好;

·支持多种链码(智能合约)开发语言(Node.js、Go、Java等);

·基于Docker容器技术提供链码运行时环境等。

这些特点使得Hyperledger Fabric能够具备提供高效可靠的企业级区块链平台服务能力的潜质,并真正从研究走向实用,企业界与开源社区对Hyperledger Fabric异常热情,纷纷表示热烈拥抱与接纳。除了Fabric项目外,Hyperledger还包括Burrow(支持以太坊虚拟机)、Indy(提供去中心化的身份管理机制)、Iroha(关注移动特性的账本平台项目)、Sawtooth(区块链平台)、Caliper(区块链性能测试平台)、Cello(提供区块链平台部署和运行管理)、Composer(提供面向链码开发的高级语言支持)、Explorer(区块链数据可视化工具)、Quilt(关注账本互操作性)、uRSA(共享加密库项目)等,这些项目构成了相对完善的区块链生态系统。

笔者正是在了解Hyperledger Fabric源码中逐渐熟悉其系统架构与实现机制的,并选择1.1.0正式版作为剖析对象,能够体现当前Fabric架构设计发展的主流新特性(隐私数据集合等)演变,并兼顾Fabric 1.2(1.2.0与1.2.1版本)与Fabric 1.3(1.3.0版本)中架构与功能升级的源码,以帮助读者能够深入了解整体架构的演变,让读者在应用Hyperledger Fabric时有所参考,从而对推进项目落地能够有所帮助。

本书面向的读者

·区块链应用开发人员

·区块链底层开发人员

·区块链技术爱好者

·分布式计算方向研究人员

如何阅读本书

限于篇幅,本书没有深入介绍比特币、以太坊等主流平台体系架构以及Docker、gRPC、protocol buffer、yaml配置文件、现代密码学等常用系统知识。本书不是一本初级入门资料,所以需要读者具备相关的基础知识。同时,Hyperledger Fabric知识体系非常丰富,本书也不试图成为一部能够兼顾所有方面的百科全书式的权威指南,例如本书就没有重点分析Fabric CA与Fabric SDK等相关模块。

本书介绍了Hyperledger Fabric的架构设计与实现原理,基于源码剖析了Hyperledger Fabric核心模块,以Hyperledger Fabric系统运行流程为主线展开分析,是一部面向Hyperledger Fabric系统架构的技术专著。因此,本书更适合于Hyperledger Fabric底层架构开发者与应用开发者,以及对Hyperledger Fabric感兴趣的技术爱好者。

希望读者学习相关知识(现代密码学、X.509标准等),搭建实验环境以配合源码阅读学习(推荐JetBrains GoLand或IDEA编程开发环境阅读源码与编写Go程序)。Hyperledger Fabric官方网站提供了非常不错的入门教程与背景资料,介绍了Hyperledger Fabric的专业知识与示例。如果读者对现代密码学和PKI安全体系有所了解,将更容易理解Fabric的身份权限控制机制,有兴趣的读者可以进一步参考相关资料。当然,最重要的学习资源还是源代码本身,正如大师所言,“源码面前,了无秘密”。

研究底层架构需要把握真正有价值的整体系统架构,应该将研究的关注点集中在理解系统设计的逻辑思路、重要原理与机制、核心模块接口等方面,如果不是为了改进和优化专用模块,则不必过分关注局部实现细节,从而丢失全局架构设计的宏观视野。因此,结合整体系统架构去研究核心模块会更容易理解Hyperledger Fabric系统设计的精髓。

对于区块链应用开发者,推荐按照交易处理流程的顺序阅读本书。对于区块链底层开发者,推荐按照本书章节的正常顺序进行阅读。对于区块链技术爱好者,推荐除了核心模块章节之外,可以尝试研究第6章Gossip消息模块,该模块是通道上组织节点间通信的基础,提供了高效数据分发与状态的同步机制,属于更底层的基础服务,实现机制相对比较复杂。如果读者更关注Hyperledger Fabric其他层次的主题,则可以暂时跳过不作深入了解。

本书结构

本书分为7个正文章节与附录。第1章介绍区块链的基本概念、Hyperledger Fabric架构等基础知识。第2章至第7章分别介绍Orderer排序节点、Peer节点、Endorser背书节点、Committer记账节点、Gossip消息模块、公共功能模块等核心模块的底层细节,使得读者可以完整了解Hyperledger Fabric架构的设计思想与实现机制。

第1章介绍了区块链的基本概念、Hyperledger Fabric架构与流程,并以e2e_cli为例介绍Fabric系统部署流程,帮助读者搭建实验环境进行研究。

第2章介绍了Orderer排序节点,包括Orderer服务节点启动流程、Broadcast交易广播服务、Orderer共识排序服务、Deliver区块分发服务等。

第3章介绍了Peer节点功能模块,包括Peer节点启动流程与Peer命令模块(Channel通道子命令、chaincode链码子命令等)。

第4章介绍了Endorser背书节点的背书处理流程,负责启动链码容器提供链码服务,对模拟执行结果签名背书并返回提案响应消息。

第5章介绍了Committer记账节点的功能模块。其中,交易验证器用于验证交易数据,并调用VSCC验证背书策略的有效性,账本提交器执行MVCC检查以标记交易的有效性,并提交数据更新账本。

第6章介绍了Gossip消息功能模块,包括Gossip消息模块的启动流程、消息通信与处理机制、节点管理机制、数据分发与状态同步机制、反熵算法等,可以支持节点的动态加入与退出,提供高效的数据分发与状态同步机制。

第7章介绍了Hyperledger Fabric中常见的公共功能模块,包括账本数据存储模块、安全服务模块、Events事件模块等。

附录包括Hyperledger Fabric相关文件的解析,包括orderer.yaml配置文件、core.yaml配置文件、e2e_cli示例相关文件等。

关于本书代码

本书分析的代码版本为Hyperledger Fabric 1.1.0正式版(2018年3月发布),研究思路是以Hyperledger Fabric运行流程为主线展开分析,重点解析Hyperledger Fabric的架构设计与实现原理,完整代码请从Github官网https://github.com/hyperledger/fabric下载。

致谢

非常感谢Hyperledger Fabric开源社区贡献者以及本书所有文献引用的原作者,开源共享促进社会与技术进步!

非常感谢机械工业出版社华章分社的编辑杨福川、张锡鹏以及背后的工作人员,是你们的专业精神、严格要求与辛勤付出使得本书的出版成为可能!

在撰写本书的同时,本人获得了互联网上众多区块链开发人员以及高校、企业同行们的无私支持,他们对技术的执着追求令人印象深刻,是值得尊敬与学习的资深领域专家。同时本人也得到很多领导、同事与朋友的热情帮助,如果没有他们的默默支持,本人是无法完成本书的,在此一并致谢。

因时间仓促与水平有限,本书难免有错误遗漏之处。欢迎读者批评指正,将错误与不当之处发送至邮箱xinli@nudt.edu.cn,或者通过QQ交流群491318059以及微信群与笔者(QQ号/微信号501319508)交流,以便重印或再版时及时更正。同时,本书在撰写过程中参考了大量文献与互联网资料并标注了引用出处,在此表示感谢,如果存在疏漏或版权问题,请发送邮件或直接联系笔者,以便及时更正。李鑫第1章区块链基础与Hyperledger Fabric架构

The Times 03/Jan/2009 Chancellor on brink of second bailout for banks.

2009年1月3日,(英国)财政大臣正处于实施第二轮银行紧急援助的边缘。(在比特币创世区块中记录的永不修改的话)——中本聪

本章将从区块链产生的背景开始介绍比特币、以太坊等热点词汇,探讨区块链当前与未来的发展趋势,并逐步介绍区块链的基本概念与核心技术,进而分析Hyperledger Fabric的架构与核心机制。另外,读者可以在本章中学习到如何搭建Hyperledger Fabric实验环境,尝试运行并查看实验结果。1.1 区块链背景、概念与现状

本节将介绍区块链产生的背景及研究热潮、区块链的概念与核心技术,并分析目前国际上影响力较大的主流区块链开源平台。1.1.1 区块链产生的背景及研究热潮

近年来,比特币(Bitcoin)无疑是最热门的投资品词汇,其价格最高时突破了两万美元,成为投资者眼中的新宠和竞相追逐的“真金白银”。比特币一词最初来源于2008年中本聪(Satoshi Nakamoto)在metzdowd.com网站发表的《Bitcoin:A Peer-to-Peer Electronic Cash System》(《比特币:一个点对点的电子现金系统》),这是比特币与区块链理论形成中重要的奠基性论文,并真正开启了虚拟数字货币与区块链应用的人类社会新时代。

中本聪在这篇论文中解决了之前发行虚拟数字货币存在的货币伪造、双重支付(或称“双花”,Double Spent)、匿名化交易、中心化货币发行等挑战,可以不依赖第三方信用机构进行背书,无须基于中心化货币发行体系,在全球范围内实现了点对点交易的可靠记账。比特币持续9年多不间断的正常运行表明,这种分布式架构在适当的激励机制与共识算法的作用下拥有支撑全球范围交易的潜力,为当前金融领域造价不菲的中心化架构提供了新的解决思路。因此,在比特币的“挖矿”产业生态中,每个人都可以参与记账,充分利用非对称加密、哈希算法等现代密码学技术确保比特币交易不可伪造、不可篡改且可溯源的特性,并通过记账奖励的方式激发每个节点参与记账的积极性,这就使得黑客的攻击成本非常高昂,还不如“挖矿”参与社区贡献。正是这种结合正反馈奖励机制与博弈心理学的巧妙设计,使得比特币交易系统迅速发展为一个国际共享的分布式账本系统,比特币也一跃成为当下最热门的投资品种之一。但是,比特币没有类似于传统货币相应对等的背书信用标的物作担保,缺乏全社会认同的货币价值基础。因此,比特币相继被各国进行监管并禁止流通兑现或接受为可交换的“货币”。时至2018年,比特币已经运行了9年多的时间,支持过单笔上亿美元的交易,截至2018年11月,比特币交易系统已经累计生成超过55万个区块(https://www.blockchain.com/en/explorer)。虽然遭到无数次黑客攻击,但从未停止运行,总市值一度超过了上千亿美元,毫无疑问,比特币已成为人类历史上最有影响力的虚拟数字资产之一。

以太坊去中心化自治组织(Decentralized Autonomous Organization,DAO)项目的想法极具天才般的创造性,它旨在构造一个完全去中心化的自治服务平台,并基于超过一定比例的虚拟实体或股东(如67%)来决定投资或修改运行机制,完全透明且无须人类集中式管理。2016年5月,DAO项目通过分布式众筹在28天内筹集了超过1.52亿美元,一举成为当时人类历史上的最大单笔金额众筹项目,同日在各大数字货币交易所开始交易。然而,半个多月后,黑客利用智能合约中递归调用等漏洞盗走了近三分之一众筹所得的以太币,震惊了整个DAO社区,公众也由此对去中心化自治系统的安全性与可行性产生了质疑。项目开发者通过研究发现该漏洞不是出现在DAO架构本身,而是智能合约出现了问题。这迫使开发者对DAO项目强行“硬分叉”,即在挖出第192000个区块后的分支上消除被盗走的货币,并决定最终在提取分发完后自动解散DAO项目。该事件引起了极大的社会争论与媒体关注,但是,以太坊DAO项目无疑是人类社会在去中心化自治系统上具有深远影响力的一次伟大的创新尝试。

近年来,这些创新项目与事件已经开始深刻影响和改变着人类社会,各种琳琅满目的数字虚拟货币以及“去中心化”的分布式应用纷纷出现,虚拟货币交易所在全球遍地开花,追逐企业“币改”与“链改”的大潮席卷而来,而“区块链”就是比特币、以太坊DAO等项目采用的底层核心技术,人们发现它不仅可以作为比特币这种“虚拟货币”诸多优良特性的技术基础,而且还可以用来构筑开放信用体系与资产确权的基石,被认为可能开启人类社会基于互联网与虚拟平台传递价值的时代。

区块链技术通过去中心化方式建立起点对点的信任关系,可能会影响甚至改变决定人类社会组织形式与现象的基本作用力,包括生产力水平、生产资料和生产成果的分配总量与速率、权力的中心化程度等,尤其是弱化了权力集中与运作方式,直接改变了生产资料和生产成果的分配方式,进一步提高了生产力水平。因此,人们普遍认为区块链技术具备改变当前很多领域的潜力,可以与电力、互联网等技术革命相提并论,甚至被《华尔街日报》誉为五百年来最具影响力的金融创新之一。与此同时,区块链已经成为社会与科研人员关注的热点,在金融服务、供应链管理、文化娱乐、智能制造、社会公益、教育就业、医疗健康等垂直领域都引起了人们的广泛关注和强烈兴趣。

目前,区块链被普遍认为是一种具有“颠覆性”的新兴技术,它可能会带来公共与私营服务实现方式上的创新,其最大的“颠覆性”就是重构弱信任主体之间的信用体系,从而避免传统信用体系依靠第三方中介证明的方式。这种信用体系是建立在程序化的区块链共识算法与安全加密算法的基础上,而不是基于单个人或单个系统。同时,数据记录的生成与记录保存需要全网络参识节点按照共识算法进行确认并且不易篡改,如比特币获得51%以上的全网计算能力,就可能拥有记账权并修改账本。

因此,区块链摆脱了传统信任体系中需要第三方信息验证的信用确认模式,能够有效降低信用体系构建成本,提高跨组织体系要素的协同效率,同时提高链上资产的真实性、可信性与安全性,天然适合于松耦合的去中心化应用场景,在协调大规模跨组织活动中能显著降低集中式系统带来的复杂性、安全风险、信息不透明度等问题。人们甚至认为,区块链可以帮助建立去中心化的全球信用体系,让互联网价值传递可以像互联网信息传递一样具有低成本与高效率的特点。这样,人们就能够基于区块链技术,通过去中心化的方式重构新型的经济生态体系,促进个体行为与社区生态之间的高效协调和可持续发展,引入合法的激励机制与监管手段,鼓励个体创造社区价值与协作交换,更加强调点到点的直接个性化服务,连接与盘活互联网的巨量边缘资源,大幅降低社会经济活动成本,从而培育可持续发展的垂直领域社区价值生态,以激发潜在的用户场景需求(如存储、泛娱乐、即时通信、物联网支付等)。同时,区块链也可以为弱信任主体间提供可信平台支持共享敏感数据,以提升行业上下游甚至跨行业大规模协作的效率,减少企业联盟间繁冗业务流程的生产成本,提高信息监管透明度,避免高度中心化系统中单点故障带来的系统失效,降低黑客攻击风险。因此,区块链具有改变未来社会生产与生活形态的潜力,赋能产业经济推动共享经济的普及与发展,催生新的区块链产业与促进相关产业升级,创造社会经济价值。

事实上,研究区块链相关技术与应用场景结合,为生产经济、国防安全、科学研究、社会稳定等领域构建高效、稳定、安全的区块链基础设施,提供高效动态的部署跨域区块链网络的能力,从而抢占战略制高点与商业市场,已经成为目前人们竞相研究区块链相关科学与工程问题的基本动机。区块链的应用场景所引起的有别于传统数据库的核心问题,如互联网大规模数据存储与同步技术、高效共识算法、高强度密码安全技术、高性能跨链技术、新型匿名隐私安全技术等正面临着一场深刻的技术变革,可能会孕育爆发出“区块链+”时代的到来。

但是,人们也应该看到,区块链技术只能确保链上数据的真实性与可信性,可防止不被轻易攻击且不易被随意篡改,却无法解决链下虚假数据或真实数据“转移”到链上数据过程中的真实性问题。同时,以比特币为代表的“虚拟货币”或Token(通证)数字资产也带来了风险定价与管理、价值锚定与信任体系缺失、区块链经济系统顶层设计等新挑战仍然是在各国法律框架和行业监管需求内挑战人类智慧与技术极限的重大难题。

如图1-1所示,2008年以来的区块链典型事件表明,区块链作为一种可能会重塑社会运作方式的“颠覆性”创新技术,已得到越来越多的关注与研究,且已经发展成为具有较大影响力的生态体系。图1-1 区块链典型事件

国际著名区块链专家Melanie Swan在其重要著作《Blueprint for A New Economy》(《区块链:新经济蓝图及导读》)中较全面地阐述了全球区块链产业理念与实践,并根据区块链带来的革新与应用范围将区块链技术分为区块链1.0、区块链2.0和区块链3.0。(1)区块链1.0:以比特币为代表的可编程“虚拟货币”

中本聪设计比特币是为了构建一个可信去中心的电子货币交易系统。尽管比特币的发展出现了价格的剧烈波动、数量上限带来的通货紧缩、挖矿造成的巨大能源消耗、各国政府监管限制或者态度不明等问题,但是,以比特币为代表的可编程货币使得价值在互联网中流通交易成为可能,比特币仍然是区块链最成功的实际应用案例。可编程货币意味着比特币类的“虚拟货币”可以按照设计方或者合作方的约定,在达到一定条件时触发指定的专用交易动作(如转账),这对于严格的资金管理控制非常重要。同时,作为一种全球发行的创新数字支付系统,比特币的去中心化特性与安全加密机制降低了交易成本,对传统金融产生了挑战,并且试图成为不依赖于主权国家央行而发行的全球统一货币,为国际金融交易提供“货币”支持。(2)区块链2.0:基于区块链的可编程金融

人们通过研究发现,数字货币底层的区块链技术同样可以应用到金融的其他领域,并将比特币中的脚本合约系统重新抽象成“智能合约”,同时利用区块链基于去中心化账本具有不可伪造、不可篡改与可溯源的特性,能够用于注册、确认与转移各种不同类型的资产及合约。因此,人们结合具体的金融应用塑造出可编程金融的概念并积极探索实践,包括股权登记转让、证券、私募股权、跨境支付、金融衍生品合约等。例如,新加坡资讯通讯发展局(Infocomm Development Authority of Singapore)联合新加坡星展银行和渣打银行共同进行发票金融区块链应用的概念证明,试图使得对企业和放贷银行的发票金融贸易更加安全和简单。2016年,日本软银(Softbank)联合Topcoder举办了一次区块链开发竞赛,希望可以找到一个基于区块链技术的互联网筹款平台原型。(3)区块链3.0:将区块链扩展到其他领域应用

人们进一步将区块链扩展到金融以外的其他领域。在法律、零售业、物联网、公共医疗、公益事业等领域,依靠区块链提供的信任平台实现信息共享与身份自证明,而不用完全依赖于权威的第三方认证机构,从而降低信用认证成本,提高行业运行效率。

当前,区块链行业的发展如火如荼,相关公司如雨后春笋般迅速成长起来,整个区块链产业已经发展成包括跨境支付、供应链金融、贸易金融、征信、交易清算、商品溯源、区块链硬件等跨越多个细分市场的完整生态系统,既包括传统的资深计算机厂商,也包括迅速崛起的新兴区块链公司,呈现出共同发展、共同成长、共同促进的行业发展态势。然而,目前区块链技术的发展还至少存在以下三个问题。

一是技术架构上还存在效率不高、安全性挑战、资源消耗高等问题,尤其是低效率的数据吞吐量与共识机制。以公有链为例,目前,比特币在公网上大约每分钟交易笔数峰值不超过7,而2017年双十一支付宝峰值每秒最高超过25.6万笔交易,数据库处理峰值为4200万次/秒。与此同时,比特币交易验证时间长,目前大约是10分钟确认一次交易,6次确认大约需要1个小时,而支付宝、Visa等仅仅需要几秒钟。2016年2月,周小川就指出区块链技术是数字货币的一项可选技术,但目前存在占用计算存储资源过多的问题,无法应对现在的交易规模,这对于高频应用场景可能是无法忍受的瓶颈,只有对时间不敏感的餐馆等消费场所可能会成为线下使用场景。

二是行业监管问题。国内存在严格的金融监管要求和互联网金融实名认证规定,在金融领域需要明确风险责任人,必须要有专门的部门来维护金融市场基础设施。这些要求本身就与某些区块链应用具有的身份匿名等特性存在冲突,如比特币由于其匿名特性已经成为犯罪资金进行洗钱与非法网站进行支付的主要载体,2017年5月爆发的WannaCry“勒索”病毒要求支付比特币,使得犯罪分子身份无法直接通过传统手段进行快速查询定位。因此,如何结合具体应用在两者之间进行权衡是应用开发者需要研究的重要课题。

三是商业应用场景上除了比特币等“虚拟货币”产业生态,还尚未出现“杀手级”应用。就如同微信在移动互联网时代的即时通信领域、支付宝在互联网电商的线上支付领域一样。目前,大多数区块链应用还停留在概念验证与初步探索应用阶段,缺乏类似真实需求的大规模商业应用场景或垂直领域产品,以有效推动区块链生态爆发式的迅速发展。如图1-2所示,2017年,Gartner公司认为区块链技术(Blockchain)在国际上已经开始进入幻灭期的初期,但在中国还处于期望膨胀期,两者都被标记为未来5年到10年才可能落地成熟的技术。2018年10月,Gartner在其发布的2019年十大战略科技发展(具有巨大颠覆性潜力)中仍然将区块链列入其中,并认为到2030年,区块链将创造3.1万亿美元的商业价值。但可以肯定的是,各国将在未来对区块链研究投入更多的关注与资源,以期望提升国家整体的科技创新能力,世界各国在该领域的竞争已经开始并必将更加激烈。图1-2 2017年版Gartner新兴技术成熟度曲线国际版(左)与中国版(右)1.1.2 区块链概念与核心技术

本节介绍区块链的概念定义与核心技术,包括共识机制、安全机制、存储机制、P2P通信机制以及智能合约等。

1.区块链概念定义

区块链是一种在对等网络环境下,通过透明和可信规则,(按照时间戳顺序)构建不可伪造、不可篡改和可追溯的块链式数据结构,实现和管理事务(或称交易)处理的模式。实际上,它是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。作为一种创新的应用模式,区块链具有分布式对等、数据块链式、不可伪造和防篡改、透明可信、高可靠性等关键特征。用户可以对链上数据执行交叉验证以防止欺诈,虽然可以对本地数据进行删除和修改(恶意节点行为),但是不会影响全网共识后的数据一致性(只能防止一定比例的恶意节点)。同时,还出现了非链式的DAG、Hashgraph等区块链系统。

根据不同的应用场景与设计体系,区块链可以采用对应的开放共享与节点权限方案,包括如下三种区块链部署模型。

·公有链:任意区块链服务客户都可以使用,任意节点均可接入,由所有节点共同参与共识和读写数据,具有较强的去中心化特征,如比特币和以太坊;

·联盟链:只有利益相关的特定区块链服务客户才能使用,节点只有经过授权许可后方可接入网络,接入节点按照规则参与共识和读写数据,具有较弱的去中心化的特征,如Hyperledger Fabric;

·私有链:仅由单个区块链服务客户使用,仅有授权的节点才能接入,并按照规则参与共识和读写数据。

区块链上记录的区块对象是打包了一段时间内发生的交易与状态的集合。交易是指每次改变状态变化的操作,并拥有唯一的交易标识(如哈希值)。同时,区块头部保存了上一个区块的哈希值、当前区块的哈希值等信息,通常以一种链式结构保存所有的区块结构。事实上,区块链是通过现代密码学与分布式共识机制等技术来确保交易可信,而不是通过大型中心化信用机构解决信任背书问题。

目前,区块链系统包括共识机制、安全机制、存储机制、P2P通信机制、智能合约等核心技术。

2.共识机制

共识机制是一个经典的分布式计算领域问题。在区块链系统中,共识机制是指实现不同信任主体节点之间建立信任、获取权益的数学算法,提供给分布式网络参识节点以用于确认交易动作引起的账本中的状态数据变化,并且能够达成最终一致性。即使出现节点故障或不可信节点等情况,区块链系统上已经发生的交易也能够按照正确的预期方式执行,而不会出现全网节点数据与账本状态不一致的情况。目前,常见的共识机制包括PoW、PoS、DPoS、PBFT等,它们在合规监管、性能效率、资源消耗以及容错性等方面都有各自不同的特点。鉴于共识机制对区块链系统性能的影响至关重要,很多研究都对此进行了深入探讨,并针对区块链应用特点不断进行改进与完善。(1)PoW(工作量证明)

PoW(Proof of Work,工作量证明)是比特币交易系统最早引入的共识机制,在比特币中称之为“挖矿”,即通过自身算力不断计算寻找满足规则和小于难度目标(前若干位全部为0的数值)的哈希值。这个想法来源于Adam Back设计的用于阻挡垃圾邮件的Hashcash算法。该哈希值是将区块头中80个字节作为工作量证明输入,尝试变换区块头中的随机数Nonce,并连续做两次SHA-256哈希运算得到的。因此,“挖矿”的过程就是寻找碰撞随机数Nonce的过程。通常,“挖矿”找到这个随机数的时间取决于难度目标门槛,这样就可以通过控制难度目标来控制生成新区块的时间,比特币交易系统就是通过上述这种方式控制区块生成速度稳定在10分钟左右,约定由最快计算找到随机数Nonce的节点竞争获得本次交易区块的记账权,并获得一定数量的比特币奖励。接着,该节点将打包后的区块结构对象发送给全网其他节点进行验证存储,再添加到区块链上。整个网络中最长的链就是正确的链,即被认为是最长的有效工作量证明链。上述整个过程完全依赖于节点进行数学运算来测试随机生成的哈希值是否符合规则。理论上,如果需要找到小于难度目标前导17位16进制数值都是0的两次SHA-256哈希运算结果,最坏的情况下大约需要尝试268次(约2.95万亿亿次)才能找到一个合格的随机数,其概率非常低(国内双色球头等奖中奖概率约为1772万分之一)。因此,竞争记账权带来的资源消耗相比其他共识机制更高,根据Digiconomist网站估计,每年比特币消耗的电能高达32.4太瓦时,超过了摩洛哥全国的耗电量。PoW可监管性弱且需要全网参与共识运算,性能效率不高,只允许全网50%的节点出现故障问题。(2)PoS(权益证明)

PoS(Proof of Stake,权益证明)机制要求网络节点必须提供一定数量的代币证明,与上市公司股票类似,节点证明持有越多的代币,获得记账权的概率就越高。PoS机制被应用在Peercoin、NXT、Blackcoin、以太坊第四个阶段Serenity等处,都会在单纯的权益证明机制上结合不同的方式来增加记账权的随机性以避免中心化,如Peercoin采用获得记账创造区块后起算的币龄(即时间)选择记账权节点,等同于PoW机制中的算力,Blackcoin则采用随机方式预测选择记账节点。同时,PoS机制是根据节点拥有代币的比例与时间来等比例降低挖矿难度,以提高寻找随机数的效率。实际上,PoS机制挖矿产生区块的难度与所有者持有的权益成反比,却依然是通过哈希运算竞争来获取记账权。但是,可以有效增加51%攻击难度(攻击者需要持有超过51%的货币量),且交易的权益证明只能被记在该区块所构成的区块链上,攻击者无法隐藏自己的秘密区块链以影响公链交易上代币被销毁的天数。因此,PoS机制在一定程度上减少了纯粹依靠哈希数学运算来争夺记账权所引起的大量资源消耗,缩短了全网达成共识的时间,性能与安全性有所提升,可监管性弱,依然只能允许全网50%的节点出现故障问题。(3)DPoS(股份授权证明)

DPoS(Delegated Proof of Stake,股份授权证明)机制是为了防止大矿池垄断全网算力,由Bitshares设计提出的(https://bitshares.org/technology/delegating-proof-of-stake-consensus/)。类似于PoS机制,其区别在于持币节点选举若干数量的代理节点进行验证和记账,类似于董事会投票制度。该机制的优点是可以有效减少参与共识验证的节点数量,缩短共识验证时间,提升区块生成速度,在可监管性与容错性等方面的表现与PoS机制相似,EOS就采用了DPoS共识机制。(4)PBFT(实用拜占庭容错)

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法可以容忍经典拜占庭故障模型,即假设节点具有不确定性故障行为的特点,适用于一般情况下的网络环境,含有软件错误、设备停机、通信故障等常见及不易察觉的错误,甚至包括具有恶意行为的节点,这使得PBFT具有很强的算法适应性。Leslie Lamport等人最初提出的BFT算法只能单纯解决分布式环境下的故障问题,没有考虑实用的算法运行性能,需要指数级算法时间复杂度,后来人们通过研究提出了多项式级别算法才降低其开销,使得实用的BFT算法得以广泛应用。

如图1-3所示,PBFT算法中通常需要包括request、pre-request、prepare、commit和reply五个阶段才能完成,其中,prepare与commit阶段需要两两交互以确保所有节点达成共识一致。通常,PBFT系统至少需要部署到3f+1个节点上,最多可以容忍f个恶意节点出现拜占庭故障,整个系统状态是由其中2f+1个节点决定的。与非拜占庭系统相比,其主要问题是共识算法确定状态的时间较长、占用节点资源较多、长时间应用可能存在错误积累导致系统崩溃等。目前,人们研究通过减少一致性协议包含的阶段数量或者简化条件(如网络稳定等)来解决其性能瓶颈,并通过定期检错来减少可能发生错误的节点,同时,也开始尝试通过可信计算部件来降低所需节点的数量。PBFT共识机制允许监管节点参与,相对其他共识算法,其性能相对更高且耗能较低,可以允许近33%的错误节点。目前,其变种算法已经在Hyperledger Fabric、腾讯TrustSQL、BCOS平台等联盟链系统中研究或应用。图1-3 PBFT算法运行示意图

目前,很多商业平台都在积极研发自适应共识机制的方式来提高全网参识节点进行共识的效率。如果在状态良好、无恶意节点等可信网络环境中,系统平台可以采用Raft等较成熟的分布式一致性解决方案,高效完成交易并达成共识,占用较少资源并且性能较高。同时,一旦检测到网络环境中出现恶意节点等不可信的交易行为,系统平台就将自动切换到类PBFT共识算法,提高对拜占庭节点错误的容错能力。

3.安全机制

区块链中采用了现代密码学中的哈希算法、对称加密算法、非对称加密算法等来保证数据机密性、完整性、抗抵赖性等安全特性。(1)哈希算法

哈希算法可以将任意长度的消息明文转换映射为固定长度的二进制串输出,称为哈希值或散列值,又称为该消息的指纹(fingerprint)或摘要(digest)。即使两个消息只差一个字符,在经过哈希函数计算之后,它们所产生的字符串也会十分杂乱随机且完全不存在任何关联性,被广泛应用于检测签名有效性与完整性的场景中。目前,常见的哈希算法包括MD4(RFC1320,输出128位哈希值)、MD5(RFC1321)、SHA-1(输出长度为160位哈希值)、SHA-2(包括SHA-224、SHA-256、SHA-384、SHA-512等算法)、SM3(国密安全算法)等。其中,MD4已经被证明不够安全,MD5与SHA-1不具备强抗碰撞性,具有安全隐患,因此都不推荐使用。安全术语“碰撞”是指两个不同的消息使用同一个哈希函数计算时获得相同哈希值的情况,哈希算法具有抗碰撞性意味着找到两个能够产生碰撞的消息在计算上是非常困难的(注意不是不可能的)。哈希算法应当具有抗碰撞性、原像不可逆性、难题友好性等特点。目前,区块链通常采用SHA-256、Keccak-256CSHA3或更高安全级别的主流算法,常用于构造货币地址、哈希指针、消息摘要等对象。(2)对称加密算法

对称加密算法中加密与解密的密钥是相同的,速度快且占用空间小,加密强度高,但缺点是密钥一旦泄露就无法继续保持当前系统的安全性,且必须解决如何安全地提前分发密钥问题。目前,典型的对称加密算法包括DES(Data Encryption Standard,经典的分组加密算法,64位密钥,可以被暴力破解)、3DES、ADE(Advanced Encryption Standard,对称加密实现标准,处理速度快)、IDEA(类似于3DES,密钥长度达到128位)以及序列密码(每次变换密钥加密处理数据,如RC4)等。对称加密算法适用于较大数据量的加解密过程,不适合签名与验签的应用场景。(3)非对称加密算法

非对称加密算法为用户提供一组对应的公开密钥和私有密钥。任何人都可以使用公钥对数据进行加密,只有用户能使用自己的私钥解密,任何未授权的用户包括发送者都无法解密该信息。同时,用户可以使用私钥对信息进行签名,任何人都可以用该用户公开的公钥检验该信息签名的身份,即验证该信息是否由指定用户签名,其身份具有不可否认性,从而使得签名具有不可伪造性。由于加密和解密时使用的密钥是不同的,因此,这类公钥密码算法也称为非对称密码算法。现代公钥密码体系的安全性通常是基于难解的可计算问题,通过私钥计算出公钥非常容易,但是,通过公钥计算出私钥则非常困难,包括RSA(基于大数质因子分解困难特性)、Diffie-Hellman密钥交换、ECC(椭圆曲线算法,密钥短性能高,区块链采用的常见主流算法如ECDSA)、SM2(国密安全算法,同样基于椭圆曲线算法)等,比特币使用的是Certicom密码技术公司提供的椭圆曲线算法secp256k1。非对称加密算法适用于签名与验签场景,同时解决了密钥分发的安全性问题,但不适合大量数据的快速加解密过程,如签名消息时通常要先计算消息摘要,再使用私钥对摘要签名(ECDSA算法)。

4.存储机制

区块链数据通常存储在包括KV键值型数据库、关系型数据库、普通文件等中。其中,KV键值型数据库中数据结构与接口都比较简单,具有很高的读写性能与良好的可扩展性,能支持大规模并发键值对数据的读写请求,支持基本增删改查功能,通常不支持复杂SQL功能与强事务性,无法快速执行范围查询等统计功能。为了获得高性能、低延迟与高吞吐量,目前还出现了分布式内存型的KV键值型数据库,如Redis等,它们通过在内存中维护大量的哈希表来存储关键字及指向键值对的指针,利用并发与索引优化,支持内存数据的高效查询、插入与更新操作。同时,还涌现出了TiDB等新型分布式KV键值型数据库,其支持SQL语句的高效复杂查询,包括范围查询、Join查询支持等,提供接近线性的系统扩展能力与实时并发写入能力。区块链平台常用的KV键值型数据库包括LevelDB、CouchDB、BerkeleyDB等,用于保存区块链中的区块索引信息、状态数据等键值对类型的数据。Hyperledger Fabric还使用普通文件存储原始的账本区块数据,将共识后的区块数据按protocol buffer编码格式序列化为二进制字节数组后,写入文件进行持久化保存。

RDBMS(Relational Database Management System,关系型数据库系统)是基于严格的关系模型来表示与组织结构化数据的,支持SQL语句的增删改查操作,提供能够满足ACID原则的复杂事务处理机制。分布式架构版本具有高并发的读写性能和容错能力,并广泛部署在大规模高可用集群系统中。有些区块链系统考虑将链上相关的账户数据、区块信息、交易流水等信息保存在关系型数据库中,以提供历史数据的快速统计查询等功能,提高数据查询效率。

5.P2P通信机制

区块链网络通常采用P2P(Peer to Peer)协议,节点之间直接通过交换方式共享信息,又被称为对等计算。P2P网络中的每个节点地位平等,不需要中心服务器节点来分配任务,每个节点可同时作为服务提供者与服务请求者。这种分布式架构避免了集中式架构中心节点的性能瓶颈,可以有效利用网络节点的性能与网络带宽,从而提升系统的整体效率。同时,还可以根据需求扩展节点规模,具有良好的可扩展性与负载均衡能力。例如,BitTorrent是基于P2P技术共享大文件并进行内容分发的典型平台,每个用户节点在下载文件的同时又不断为其他用户节点提供上传已经下载的数据。

P2P通信机制用于实现与其他节点之间的通信功能,比特币默认配置连接8个近邻节点,最多允许125个连接请求,包括全功能节点(带有钱包、挖矿、校验与转发区块等功能)与基础全节点(转发区块与交易等功能)、SPV节点(校验区块与交易等功能)等,同时利用Zero MQ实现节点通信机制。Hyperledger Fabric采用gRPC库与Gossip消息协议构建P2P通信机制。以太坊使用基于RLP(Recursive Length Prefix)编码及认证的加密P2P协议,包括whisper协议、swarm协议等具体通信协议,分别用于不同的通信场景。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载