描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121366871
内容简介
本书通过精选十分重要和极其巧妙的代码片段,剖析了超级账本Hyperledger Fabric的技术细节、底层原理和整体架构。本书涵盖开发环境的部署、源码如何编译、*个示例网络的运行,以及orderer、peer、Chaincode、MSP、Ledger、Consensus和Gossip几个重要的组成部分。 读者阅读本书,可以更加清晰地理解超级账本的核心技术和设计思想,了解分布式账本一致性的具体实现;同时,可以识别在区块链应用过程中遇到的问题,实现区块链功能和性能的*化。
目 录
目 录<br/>第1章 搭建Hyperledger Fabric开发环境 1<br/>1.1 下载Go语言安装包 1<br/>1.2 Windows MSI安装 2<br/>1.3 Linux、mac OS和FreeBSD 安装 4<br/>1.4 Linux下安装Docker和docker-compose 5<br/>1.5 Windows下安装Git 7<br/>1.6 Windows下安装tdm-gcc 9<br/>1.7 Windows下安装 Visual Studio Code 10<br/>第2章 编译Hyperledger Fabric源码 14<br/>2.1 Fabric源码下载 14<br/>2.2 Fabric Makefile 15<br/>2.3 构建peer 17<br/>2.4 构建peer-docker 19<br/>2.5 构建orderer 22<br/>2.6 构建orderer-docker 22<br/>2.7 构建tools-docker 23<br/>2.8 查看构建的镜像 24<br/>第3章 第一个网络 26<br/>3.1 克隆fabric-samples 26<br/>3.2 运行第一个网络 27<br/>3.2.1 生成证书 28<br/>3.2.2 启动网络 29<br/>3.2.3 关闭网络 32<br/>3.3 基本步骤 33<br/>3.3.1 生成证书 33<br/>3.3.2 生成配置交易 35<br/>3.3.3 启动网络 38<br/>3.3.4 CLI容器命令 39<br/>3.4 数据持久性 44<br/>3.5 出错处理 45<br/>第4章 Chaincode 46<br/>4.1 Chaincode接口 47<br/>4.2 Chaincode实现 58<br/>4.3 Chaincode安装 62<br/>4.4 Chaincode实例化 62<br/>4.5 Chaincode交易 62<br/>4.6 Chaincode查询 62<br/>第5章 区块链加密算法 63<br/>5.1 RSA加密算法 63<br/>5.1.1 相关的数论知识 63<br/>5.1.2 RSA原理 64<br/>5.1.3 加密过程 65<br/>5.1.4 解密过程 65<br/>5.1.5 RSA正确性证明 65<br/>5.1.6 具体实例 66<br/>5.1.7 数字签名 67<br/>5.2 椭圆曲线加密算法 67<br/>5.2.1 椭圆曲线 68<br/>5.2.2 群 68<br/>5.2.3 椭圆曲线上的群公理 69<br/>5.2.4 椭圆曲线上的加法 69<br/>5.2.5 有限域上的椭圆曲线 70<br/>5.2.6 具体实例 71<br/>5.2.7 ECC加密原理 72<br/>5.2.8 ECC签名原理 72<br/>第6章 MSP 74<br/>6.1 整体架构 75<br/>6.2 MSP概述 77<br/>6.3 BCCSP 80<br/>6.4 Setup(证书关联) 87<br/>6.4.1 setupCAs(建立根证书和中间证书列表) 88<br/>6.4.2 setupAdmins(建立管理员证书列表) 94<br/>6.4.3 setupCRLs(建立撤销证书) 95<br/>6.4.4 finalizeSetupCAs(建立证书树内部节点映射列表) 95<br/>6.4.5 newSigningIdentity(建立签名身份列表) 96<br/>6.4.6 Sign(签名) 99<br/>6.4.7 Verify(验证) 99<br/>6.4.8 Serialize(序列化) 100<br/>6.4.9 DeserializeIdentity(反序列化) 101<br/>6.4.10 Validate(校验身份) 102<br/>6.4.11 SatisfiesPrincipal(检查规则) 106<br/>6.4.12 setupTLSCAs(建立TLS根证书和中间证书列表) 110<br/>6.4.13 setupOUs(建立组织单元列表) 111<br/>6.5 签名策略 112<br/>6.5.1 签名策略定义 112<br/>6.5.2 签名策略封装 114<br/>6.5.3 策略编译 115<br/>第7章 账本管理 121<br/>7.1 账本关系 121<br/>7.2 账本管理概述 126<br/>7.2.1 Initialize初始化账本提供者 126<br/>7.2.2 CreateLedger创建账本 137<br/>7.2.3 OpenLedger打开账本 140<br/>7.2.4 GetLedgerIDs获取账本ID 141<br/>7.2.5 Close关闭账本 141<br/>7.3 账本ID存储idStore 142<br/>7.4 账本存储提供者ledgerStoreProvider 144<br/>7.4.1 区块数据存储提供者blkStoreProvider 146<br/>7.4.2 私有数据储存提供者pvtStoreProvider 155<br/>7.5 记账提供者bookkeepingProvider 161<br/>7.6 版本数据库提供者vdbProvider 162<br/>7.7 历史数据库提供者historydbProvider 165<br/>7.8 建立账本newKVLedger 168<br/>7.8.1 初始化交易管理器 170<br/>7.8.2 实例化私有数据清除管理器 173<br/>7.8.3 新建有效期记账管理器 176<br/>7.8.4 创建验证管理器 179<br/>第8章 orderer 182<br/>8.1 入口函数 183<br/>8.2 总体描述 185<br/>8.3 账本工厂 186<br/>8.4 共识接口 190<br/>8.4.1 solo模式 196<br/>8.4.2 kafka模式 198<br/>第9章 Gossip 210<br/>9.1 Gossip协议 211<br/>9.2 映射器idMapper 215<br/>9.3 发现层disc 218<br/>9.4 通信层Comm 228<br/>9.5 分批发射器emitter 232<br/>9.6 安全顾问secAdvisor 233<br/>9.7 消息加密服务mcs 234<br/>9.8 调停器Mediator 236<br/>9.9 拉取引擎PullEngine 242<br/>9.10 状态模块state 245<br/>9.10.1 go s.listen() 246<br/>9.10.2 go s.deliverPayloads() 246<br/>9.10.3 go s.antiEntropy() 251<br/>9.10.4 go s.processStateRequests() 251<br/>第10章 gRPC 254<br/>10.1 发现Discovery 255<br/>10.1.1 注册服务端实例 255<br/>10.1.2 新建客户端实例 256<br/>10.2 流言蜚语Gossip 258<br/>10.2.1 注册服务端实例 258<br/>10.2.2 新建客户端实例 260<br/>10.3 原子广播AtomicBroadcast 261<br/>10.3.1 注册服务端实例 262<br/>10.3.2 新建客户端实例 269<br/>10.4 管理Admin 269<br/>10.4.1 注册服务端实例 270<br/>10.4.2 新建客户端实例 271<br/>10.5 链码支持ChaincodeSupport 272<br/>10.5.1 注册服务端实例 272<br/>10.5.2 新建客户端实例 279<br/>10.6 投递Deliver 284<br/>10.6.1 注册服务端实例 284<br/>10.6.2 新建客户端实例 285<br/>10.7 背书Endorser 285<br/>10.7.1 注册服务端实例 286<br/>10.7.2 新建客户端实例 288<br/>第11章 peer 294<br/>11.1 peer command 294<br/>11.2 main 295<br/>11.3 node start 299<br/>11.4 新建访问控制列表提供者 301<br/>11.5 新建操作系统 307<br/>11.6 账本管理器初始化 308<br/>11.7 链码开发模式 309<br/>11.8 新建投递事件服务 310<br/>11.9 启动链码服务 310<br/>11.10 启动管理服务 312<br/>11.11 新建背书服务 312<br/>11.12 初始化Gossip服务 313<br/>11.13 peer初始化 314<br/>11.14 注册发现服务 315<br/>11.15 启动peer服务 319<br/>11.16 启动性能分析服务 319<br/>11.17 node end 320 <br/><br/>
前 言
推荐序<br/><br/><br/>众所周知,区块链技术的核心是一种去中心化的对等网络协议。基于此核心思想,位于世界上任何地方的两个陌生人,可以在不依赖第三方中介机构背书的情况下进行点对点的交易,所有的对等节点共同维护一套账本以保障数据的完整性和正确性,理论上可以抵御不高于51%的作恶节点的篡改行为。比特币就是经典的区块链应用案例,其市值高峰达到了420亿美元。<br/>通常来说,通过挖矿获得奖励的类比特币区块链技术为第一代区块链技术。第二代区块链技术以以太坊为代表,任何人和机构都可以基于以太坊智能合约发布自己的代币,因此第二代技术也称为可编程的区块链技术。这也造成了从2016年开始,很多ICO项目应运而生,出现了一系列金融乱象。<br/>随着R3、IBM、微软、亚马逊、BATJ等科技巨头的加入,区块链技术才逐渐脱虚向实,服务于实体经济,实现产业化改造和升级。其中,具有代表性的框架为Linux基金会和IBM推出的Hyperledger,也称为超级账本。截至目前,Hyperledger已经拥有十几个子项目,涉及代码约360万行,200多家企业成员入驻。<br/>Hyperledger著名的项目为Fabric,目前Fabric框架参与开发人员达150人之多。Fabric提供了一个无币的联盟链开源基础设施。基于Fabric CA身份认证技术,我们可以很方便地实现联盟成员准入控制;基于Fabric多通道技术,我们可以很方便地实现业务数据隔离和访问控制;基于Fabric交易背书机制,我们可以实现在保证交易安全的前提下高效验证和打包;基于Fabric智能合约技术,我们可以很方便地将现实世界的人、物、行为、权益等信息资产数字化,实现可信身份认证、数据确权、数据流转、数据审计,从而实现信息时代到数字时代的重大转变。<br/>区块链是一种通过技术手段改变信任关系的纽带,是一种身份互认、行为互信、信任共建的思想,是一种实现数据共享、业务共生、生态共建的思想。通过区块链技术,我们可以很方便地将现实世界中不可信或不易协调的场景逻辑迁移到链内,由智能合约自动执行,这样就可以真正地实现点对点信任,从而真正消除中间商。<br/>区块链典型的应用场景就是供应链金融场景,供应链金融是指将供应链上的核心企业及其相关的上下游企业看作一个整体,以核心企业为依托,以真实贸易为前提,运用自偿性贸易融资方式,对供应链上下游企业提供综合性金融产品和服务。我们可以通过区块链技术,将银行等金融机构、核心企业、上下游企业组建一个联盟链,参与方通过区块链节点签名、共享数据,并得到多方共识,保障数据不可篡改。通过以上方法可以很方便地对供应链企业进行信用评估和风险控制,减少欺诈行为,从而降低整个供应链的融资成本,使大部分中小企业能够享受到融资便利,提高企业的生产效率。<br/>北京链圈科技致力区块链核心技术和原理的研究,目前已经搭建了自主可控的产业化BaaS平台,后续将会深耕溯源、供应链金融场景,实现全过程溯源、全链金融的产业化发展战略。<br/><br/><br/>李锴<br/>北京链圈科技CEO<br/><br/>前 言<br/><br/><br/>近几年,随着区块链技术的兴起和蓬勃发展,以及其广阔的应用前景,从企业到学校,越来越多的人对其产生浓厚的兴趣并投入区块链技术的学习和研究中。从比特币到以太坊,再到现在应用广泛的超级账本(Hyperledger Fabric),区块链技术也在飞速更新中。<br/>在这些开源的区块链项目(比特币、以太坊、超级账本等)中,比特币是笔者最早开始研究的。当时就想撰写比特币方面的书籍,但在这些零乱的工作中,很难有足够的时间去完成,后来想撰写时市面上已经出现了很多成熟的作品,当然也包括以太坊。但超级账本几乎没有,而且Hyperledger Fabric 1.0版本在部署时很容易遇到问题,熟读源码理解整个构架是一个比较困难的过程,因此本书自1.0版本开始着手撰写,现在已经更新到2.0版本。整个过程经历了无数次的修改、整理、重构,尽量做到逻辑严谨、结构清晰,力求为读者提供更好的读书体验和更有价值的参考。Fabric项目的源码仍然是比较巨大的,除了需要从宏观上整体把控外,还需要在细节上深入概述,以便读者多角度研读。<br/>对区块链的初学者来说,在无人指导的情况下直接进入代码学习确实有一定的难度,很难快速地掌握整体架构及其主要实现原理,本书的作者都是区块链一线研发及应用人员,本书也是作者长时间学习和研究过程中的经验总结,希望为那些想学习超级账本的读者提供一些提示和引导,使读者能够快速掌握其精髓。<br/>作为Fabric项目开发过程的见证者,笔者时刻关注Fabric项目的变化,查看每一位贡献者的代码,查看源码守护者的评论,这已经成为一种常态。很多人上网是浏览新闻、听歌、看电影,但笔者喜欢看Commit的Subject。看得多了,自然而然也就会了解更多。<br/>在撰写本书时笔者也遇到了很多困难,要写哪些内容,如何进行布局,如何将专业知识讲解得更加通俗易懂,因此进行了多种尝试和修改,同时在比较难理解的地方增加了备注和实例,以帮助读者理解和接受。不断修改的过程对笔者来说也是一个知识不断重塑的过程。本书几乎涵盖了底层技术中的所有相关内容,所以整体框架变得更加清晰。<br/>本书不仅讲解了Fabric中的核心技术,包括Chaincode、MSP、加密算法、账本管理、orderer、peer、Gossip、gRPC,还详细讲述了Hyperledger Fabric开发环境的搭建、源码的编译过程,以及如何运行一个网络,并且在引言部分演示了环境部署运行的整个过程。本书不是停留在理论层面上,而是深入Fabric的底层代码详细讲述各功能模块的具体实现过程,做到了由点到面的深入讲解。不管是区块链的开发人员、测试人员、运维人员,或是区块链技术的爱好者,都可以在本书中找到所需要的内容。因此,如果想更进一步学习和研究区块链技术,本书绝对是一个不错的选择。<br/>当然,笔者相信这本书仍然不是最好的,还有很多不足之处,欢迎广大读者提出宝贵的建议或意见,共同交流,共同推动区块链技术的发展。<br/>
评论
还没有评论。