编辑推荐
适读人群:《区块链轻松上手:原理、源码、搭建与应用》兼顾原理与实战,主要面向想快速上手区块链及了解其原理与架构的学生、爱好者、开发人员、架构师与技术管理人员。
√全新思路,区块链上手性极强,一步步引导和深入
√以HyperLedgerFabric为主线,框架剖析更详尽、干货更多
√深入浅出区块链原理,有理论有实践,完美结合
√若想快速上手区块链,了解其原理与架构,那么《区块链轻松上手:原理、源码、搭建与应用》很适合
内容简介
《区块链轻松上手:原理、源码、搭建与应用》首先从以比特币为代表的数字货币的历史与现状开始,讲解区块链的概念、生态、底层技术与架构;然后讲解Fabric的开发环境与调试方法,并细致解析配置文件及命令行的用法;其次以FabricJavaSDK为主介绍如何使用Java代码开发Fabric应用,包括客户端管理、通道配置、事件监听、智能合约开发等;再次深入解析Fabric源码,解析客户端交易、智能合约初始化及背书流程;最后深入讲解Fabric的安全机制,以及FabricCA的使用与管理等内容。
《区块链轻松上手:原理、源码、搭建与应用》兼顾原理与实战,主要面向想快速上手区块链及了解其原理与架构的学生、爱好者、开发人员、架构师与技术管理人员。
作者简介
Leader-us,
本名吴治辉,HPE资深架构师,拥有超过15年的软件研发经验,专注于电信软件和云计算领域的软件研发,拥有丰富的大型项目架构设计经验,是业界少有的具备很强Coding能力的S级资深架构师,也是《ZeroCIce木又威指南》《架构解密:从分布式到微服务》《Kubernetes木又威指南:从Docker到Kubernetes实践全接触》《Kubernetes木又威指南:企业级容器云实战》等书的作者。
李艳军,
拥有多年IT行业从业经验,开源软件爱好者,专注于区块链、云计算方面的技术研究。
赵锴,
拥有十多年IT行业从业经验,热爱开源事业,致力于将前沿技术转化为生产力,曾在多家手游、电信及医疗公司担任架构师和技术总监。
精彩书评
2016年,在解决客户的结算支付系统的架构选型问题时,我和治辉相识,当时我便深深折服于他对技术的专注及由此积累的深厚技术功底。这些年,从分布式数据库中间件、微服务架构到容器编排,治辉一直行走在技术的前沿,关于区块链的这次探索也不例外。关于区块链,众说纷纭,《区块链轻松上手:原理、源码、搭建与应用》从机制、机理的角度看区块链,能够帮助读者拨开迷雾,轻松掌握区块链的技术本质。
——德勤管理咨询副总监刘剑锋
区块链作为一项新兴技术,早出现在以比特币作为数字加密货币的核心技术中,至今不过十年,但是价值不仅限于数字加密货币;更重要的是,它让各个组织、机构建立起天然的互信体系。《区块链轻松上手:原理、源码、搭建与应用》从区块链的基础知识开始讲起,以HyperLedgerFabric为主线,清晰地讲解了基于HyperLedgerFabric联盟链的搭建、开发、应用和解析等,能够帮助大家轻松上手区块链并掌握开发联盟链的基本技能。《区块链轻松上手:原理、源码、搭建与应用》适合对区块链感兴趣的读者阅读和参考。
——《可伸缩服务架构:框架与中间件》《分布式服务架构:原理、设计与实战》作者李艳鹏
HyperledgerFabric是非常优秀的区块链框架,实现了完备的权限控制和安全保障,可代表区块链技术的新高度。《区块链轻松上手:原理、源码、搭建与应用》是目前市面上对Fabric框架剖析更详尽、干货更多的一《区块链轻松上手:原理、源码、搭建与应用》,它摒弃喧嚣,回归技术,深入浅出地讲解区块链的原理,并将理论和实践充分结合。我们在阅读《区块链轻松上手:原理、源码、搭建与应用》时能充分感受到作者编著《区块链轻松上手:原理、源码、搭建与应用》时的认真和严谨,在学习相关知识遇到问题时大多能在《区块链轻松上手:原理、源码、搭建与应用》中找到答案。建议想系统学习区块链的同行都阅读《区块链轻松上手:原理、源码、搭建与应用》。
——拜腾汽车中国区软件研发总监林海
目录
第1章全面理解区块链1
1.1从比特币开始1
1.1.1颠覆性的比特币1
1.1.2从比特币到以太坊9
1.1.3山寨币蜂拥而至10
1.1.4不得不提的瑞波币13
1.1.5数字加密货币的现状与前景15
1.2理解区块链的概念18
1.2.1深入理解Blockchain18
1.2.2数字账本22
1.2.3智能合约24
1.2.4共识机制25
1.3快速体验Fabric28
1.3.1Fabric的概念与术语28
1.3.2Fabric的安装过程32
1.3.3智能合约初体验36
第2章区块链的生态与原理40
2.1区块链的生态40
2.1.1Hyperledger社区40
2.1.2BlockchainasaService42
2.1.3区块链的应用场景44
2.2区块链的底层技术与架构48
2.2.1P2P网络48
2.2.2密码学与安全技术53
2.2.3Gossip协议62
2.3区块链平台架构64
2.3.1区块链平台的常规架构64
2.3.2Fabric的原理与架构68
2.3.3Fabric架构总结73
第3章Fabric安装与调试76
3.1Fabric源码安装76
3.1.1基础环境安装77
3.1.2编译Fabric81
3.1.3部署Fabric网络86
3.2Fabric开发调试97
3.2.1智能合约体验97
3.2.2调试Fabric源码101
3.3更复杂的Fabric网络108
3.3.1网络的结构与定义109
3.3.2Orderer节点的详细配置与定义114
3.3.3Peer节点的详细配置与定义119
3.3.4peer命令131
第4章Fabric应用开发实践137
4.1FabricSDK概述137
4.1.1Client模块138
4.1.2Chains模块140
4.2通道配置145
4.2.1使用Configtxgen工具生成通道配置145
4.2.2创建通道146
4.2.3加入通道148
4.2.4更新通道148
4.3智能合约管理150
4.3.1开发智能合约151
4.3.2安装智能合约154
4.3.3实例化智能合约155
4.3.4调用智能合约157
4.3.5查询智能合约158
4.3.6升级智能合约158
4.4监听事件160
4.4.1事件服务类型161
4.4.2监听交易事件161
4.4.3已提交事件163
4.4.4监听区块事件163
4.4.5智能合约事件164
第5章深入研究Fabric网络166
5.1Fabric的创世区块167
5.1.1Fabric的网络结构定义167
5.1.2创世区块的结构171
5.1.3创世区块的通道定义177
5.1.4创世区块的生成代码解析180
5.1.5组织与策略的定义185
5.2Peer客户端发起交易187
5.2.1提案打包188
5.2.2提案签名189
5.2.3提案背书189
5.3Chaincode的初始化191
5.3.1ChaincodeServer的初始化191
5.3.2通过initSysCCs启动容器192
5.3.3启动Chaincode194
5.4Endorser的背书流程194
5.4.1preProcess交易预处理195
5.4.2checkSignatureFromCreator检查签名197
5.4.3CheckProposalTxID验证198
5.4.4策略评估199
5.4.5simulateProposal模拟交易201
5.4.6Chaincode的调用流程203
5.4.7RWSet与防双花攻击205
5.4.8ESCC背书流程206
第6章深入理解Fabric的安全机制207
6.1Fabric安全概述207
6.1.1成员管理服务207
6.1.2交易安全与隐私保护209
6.1.3智能合约的安全机制210
6.2深入理解FabricMSP212
6.2.1MSP模型212
6.2.2MSP的证书体系215
6.2.3MSP的映射问题218
6.3深入理解FabricCA220
6.3.1FabricCA架构的组成220
6.3.2FabricCA安装及功能223
6.3.3FabricCASDK编程232
前言/序言
在说什么是区块链之前,先说一个小故事。
看过《三国演义》的人都知道,刘备自称刘皇叔,是中山靖王之后,以匡扶汉室之名,拉拢一批人建立了蜀国,形成三国鼎立之势。但回过头来看,大家为什么相信他真的是“刘皇叔”呢?其实在《三国演义》里有这么一段描述:
帝宣上殿,问曰:“卿祖何人?”玄德奏曰:“臣乃中山靖王之后,孝景皇帝阁下玄孙,刘雄之孙,刘弘之子也。”帝教取宗族世谱检看,令宗正卿宣读曰:“孝景皇帝生十四子。第七子乃中山靖王刘胜。胜生陆城亭侯刘贞。贞生沛侯刘昂。昂生漳侯刘禄。禄生沂水侯刘恋。恋生钦阳侯刘英。英生安国侯刘建。建生广陵侯刘哀。哀生胶水侯刘宪。宪生祖邑侯刘舒。舒生祁阳侯刘谊。谊生原泽侯刘必。必生颍川侯刘达。达生丰灵侯刘不疑。不疑生济川侯刘惠。惠生东郡范令刘雄。雄生刘弘。弘不仕。刘备乃刘弘之子也。”帝排世谱,则玄德乃帝之叔也。帝大喜,请入偏殿叙叔侄之礼……
原来就是翻出族谱,追溯整整十八代,才相信刘备为汉室之后。事实上,社会因为“信任”问题需要付出极大的代价,而解决该问题的方法之一就是从可以追溯且不能修改的记录中找到信任的依据。这种信任的实现方式就是讨论区块链的基础。
区块链到底是什么?比特币为什么这么值钱?那些看不见也摸不着的数字货币到底是不是传销?毫无疑问,作为区块链技术的应用之一——比特币已经大获成功,区块链所涉及的账本、分布式与去中心化、共识算法、智能合约、数字密钥、隐私保护、可信计算等技术也变得非常热门,基于这些技术的大量项目涌现。而区块链的发展价值就在于试图通过技术手段降低社会信任成本,并提高社会生产效率。
当然,区块链现在还有不足之处:除了比特币,还没有特别成功的典型应用。究其原因,一方面是区块链在高并发、低延迟的交易场景下还有许多技术问题需要解决;另一方面是只能保证线上数据可信的特性限制了其应用场景。在大规模应用区块链时,社会的接受成本也是我们必须考虑的要素。在商业利益的驱动下,即使区块链能够提供各种各样的好处,选择应用区块链也只是一种纳什均衡而非最优策略。无论如何,区块链并不是“包治百病的灵丹妙药”,它还只是一个崭新的领域,正在蓬勃发展。
《区块链轻松上手:原理、源码、搭建与应用》总计6章:第1章从以比特币为代表的数字货币的历史与现状开始,讲解区块链的概念,并通过一个简单示例让读者与Fabric有一次“亲密接触”;第2章阐述区块链的生态、底层技术与架构;第3章讲解Fabric的开发环境与调试方法,介绍更复杂的Fabric网络,并细致解析配置文件及命令行的用法;第4章以FabricJavaSDK为主介绍如何使用Java开发Fabric应用,包括客户端管理、通道配置、事件监听、智能合约开发等;第5章从创世区块开始,逐步深入解析Fabric源码,解析客户端交易、智能合约初始化及背书流程;第6章深入讲解Fabric的安全机制,以及FabricCA的使用与管理。《区块链轻松上手:原理、源码、搭建与应用》提供了部分示例代码(参见GitHub网站的MyCATApache/SuperLedger项目),希望对读者有所帮助,也希望读者能及时反馈并与我们沟通,指出书中的错漏之处,帮助我们完善内容。
最后,感谢家人的理解与支持,感谢张国霞编辑的耐心指导,感谢Mycat社区的帮助与鼓励!