基本信息
编辑推荐
√ 从技术层面详解区块链平台使用方案
√ 系统讲解HyperLedger Fabric开源架构的核心概念、架构、实现原理和应用开发
√ 作者结合实践经验,深度解析常见开发陷阱,并给出具体解决方案,让初学者少走弯路
√ 手把手引导开发成功落地,以案例为引,从单机单节点到Solo多机组网再到Kafka集群部署,层层深入,教你顺利搭建一个完整的区块链项目
√ 通过典型案例进行实战演练,每一步均基于真实情况和场景中的操作,真实还原生产场景
内容简介
计算机书籍
《HyperLedger Fabric开发实战--快速掌握区块链技术》系统地介绍了超级账本HyperLedger Fabric v1.1 架构的设计和应用方法,包括环境及源码部署、Solo 多机部署、Kafka 集群部署、智能合约编写等。同时,针对第三方可插拔式插件CouchDB 实战应用,Java-SDK 的应用、编写方案和具体接口执行策略进行了详细讲解。另外,本书以搭建一个反欺诈区块链平台项目为例进行了实战演练,读者可以快速掌握区块链技术。
《HyperLedger Fabric开发实战--快速掌握区块链技术》适合区块链系统开发人员阅读,需要有一定的面向对象语言的基础,也可供对开发区块链系统感兴趣的高校师生参考。
目录
1.1 环境整理 1
1.2 Docker安装 2
1.2.1 卸载旧版本 3
1.2.2 在线安装Docker CE 3
1.2.3 离线安装Docker CE 5
1.2.4 Docker启动及常用命令 5
1.3 Docker-Compose安装 6
1.3.1 在线安装Docker-Compose 6
1.3.2 离线安装Docker-Compose 7
1.4 Go语言环境安装 8
1.4.1 下载Go语言包 8
1.4.2 配置Go语言环境变量 9
1.5 本章小结 9
第2章 Fabric及环境部署 10
2.1 Fabric介绍 10
2.1.1 什么是区块链 10
2.1.2 区块链的作用 12
2.1.3 超级账本是什么 14
2.2 Fabric功能汇总 16
前言
为什么写作本书
区块链由于去中心化、开放性、自治性、信息不可篡改及匿名性等特征而受到广泛关注,且目前正处在上升势态。抛开炒作的代币项目,应用于行业联盟链或直接搭建私链的项目,采用HyperLedger Fabric作为底层平台无疑是最好的选择之一。
本人从接触HyperLedger Fabric项目以来,经历了其0.6版本到1.1版本的数次迭代。因为早期中文资料稀缺,并且0.6版本到1.0版本是一个跨度非常大的迭代,导致早期的大部分部署和应用经验失去作用,不得已再次从1.0版本开始从头学习。当时中文资料极为有限,且大多数都是单篇翻译或纯粹的概念讲解,导致我一直没有找到入门的头绪,只能不断地从官方文档中汲取知识,并成功搭建了基于Kafka类型的集群网络。
有了集群的经验,加深了自己对HyperLedger Fabric整个网络事务流程的理解,并以此为基础顺利搭建了基于Fabric-SDK-Java的客户端项目。也就在这个时候,开始有了写相关博客的想法,并在博客园上发布了第一篇博客,也是从零开始系列文章的第一篇,开始介绍自己的开发历程和部署经验,希望能通过这样的方式帮助更多的开发伙伴加入HyperLedger Fabric大家庭。再后来又建立了"区块链学习分享"的微信订阅号,也通过微信号建立了一个纯技术讨论分享的HyperLedger Fabric等区块链相关交流群,并在这样的机缘下结识了电子工业出版社宋亚东老师,并正式开始编写本书。
在写书之前我一直在梳理博客的内容,为了真实地还原生产场景,还自费租赁了15台服务器用于测试。在已有博文的基础上,外加后来编写的新文档,我比较顺利地完成了本书的编写工作,且书中的项目都依托于所租赁服务器来完成演练,每一步都基于真实情况和场景中的操作。在此过程中,自己对HyperLedger Fabric也有了新的认识和理解。
本书主要以HyperLedger Fabric案例为引,层层深入,从单机单节点到Solo多机组网再到Kafka集群部署,其中穿插文档讲解加深读者的理解。与一些偏概念性质的区块链教程类书籍不同,我希望能通过本书帮助读者实现基于HyperLedger Fabric的区块链实践落地。
本书主要内容
本书以干货为主,文档为辅,基于HyperLedger Fabric v1.1版本进行讲解。总计10章,每章主要内容介绍如下:
第1章是基本环境部署,包括内网和外网的不同方案,以及内核处理等。
第2章是HyperLedger Fabric及环境部署,先是用文档讲述了Fabric相关的介绍和主要功能点,接着分析了源码部署和镜像处理方面的问题。
第3章带着读者一步步跑通官方的e2e_cli案例,并在随后对该案例进行了分析。
第4章开始,手动部署一次单机多节点网络。
第5章跟随前章的脚步,手动部署一次Solo多机网络环境。
第6章继续深入,搭建基于Kafka的集群网络。
第7章以文档为主,着重讲解如何编写智能合约及有关智能合约的用法。
第8章详细介绍CouchDB的使用,并推荐使用CouchDB。
第9章讲解在Fabric发布1.0版本之后的对外客户端调用方式、客户端对SDK的使用和相关源码。
第10章以一个简单的案例做演练,在数据链上用到了智能合约,对数据提取则提供了另一种思路。
读者对象
书摘
同样,在采用Kafka作为启动类型的Fabric网络中,configtx.yaml及crypto-config.yaml配置文件依然有着重要地位,且其中的配置样本与先前的内容都会有些不同。
本章是以Kafka集群部署为案例开始讲述,在此之前,请先阅读前面的章节。
在阅读本章的时候会涉及一些概念性问题,这些概念性问题从第3章开始就屡次提及,但第3、4、5章中的目的主要是跑通一个最小单元的Fabric网络,需要读者首先对HyperLedger Fabric的网络进行一次基本的理解,要知晓HyperLedger Fabric网络在实际生产过程中可能应用到哪些场景中。
而本章将开启基于Kafka集群的部署,其中重要的概念是对前三章的总结,也是对本章及后续章节关于智能合约及CouchDB的铺垫。
6.1 Fabric账本
1.账本(Ledger)
即所有的状态变更(state transitions)是有序且不可篡改的。状态变更是由参与方提交的chaincode(智能合约)调用事务(transactions)的结果。每个事务都将产生一组资产键-值对,这些键-值对用于创建、更新或删除而提交给账本。
账本由BlockChain(区块链)("chain")组成,区块则用来存储有序且不可篡改的记录,以及保存当前状态的状态数据库(state database)。在每一个Channel中都会存在一个账本。每一个Peer都会维护它作为其中成员的每一个Channel中的本地复制的账本。
2.链(chain)
链是一个事务日志,是一个由Hash链接各个区块的结构,其中每个区块都包含了N个事务的序列。
区块header包含了该区块的事务的Hash,以及上一个区块头的Hash。这样,所有在账本上的交易都是按顺序排列的,并以密码方式链接在一起。换句话说,在不破坏Hash链接的情况下篡改账本数据是不可能的。最近的区块Hash代表了以前的每个事务,从而确保所有的Peers都处于一致和可信的状态。
链存储在Peer文件系统(本地或附加存储)上,有效地支持BlockChain工作负载的应用程序的特性。
3.状态数据库
该账本的当前状态数据表示链事务日志中包含的所有键的最新值。
由于当前状态表示Channel所知道的全部最新键值,因此有时也称为"World State(世界状态)"。
在Chaincode调用对当前状态数据执行操作的事务时,为了使这些Chaincode交互非常有效,所有键的最新值都存储在一个状态数据库中。状态数据库只是一个索引视图到链的事务日志,因此可以在任何时候从链中重新生成它。在事务被接受之前,状态数据库将自动恢复(或在需要时生成)。
状态数据库包括LevelDB和CouchDB。LevelDB是嵌入在Peer进程中的默认状态数据库,并将Chaincode数据存储为键-值对。CouchDB是一个可选的外部状态数据库,当所写的Chaincode数据被建模为JSON时,它提供了额外的查询支持,允许对JSON内容进行丰富的查询。
4.事务流(transaction flow)
在高层业务逻辑处理上,事务流是由应用程序客户端发送的事务协议,该协议最终发送到指定的背书节点。
作者其它作品
跨媒体信息技术导论
- ¥39.00
- ¥33.15