Go语言Hyperledger区块链开发实战

“十四五”时期国家重点出版物,Go语言Hyperledger区块链开发教程,实战案例丰富,配套资源齐全,提供微课视频。
分享 推荐 1 收藏 39 阅读 2.7K
李晓黎 (作者) 978-7-115-60041-7

关于本书的内容有任何问题,请联系 人邮社 王宣

1.注重区块链技术科普,巧妙激发读者的学习兴趣。
区块链平台作为去中心化分布式系统,它的工作原理和运作方式与传统的中心化系统有很大不同。为了使读者充分理解基础的技术框架和工作原理,本书第 1 章结合比特币、以太坊等经典区块链平台介绍区块链技术的工作原理和底层技术。
2.依托经典开发案例,形象解读区块链技术的抽象概念。
作为区块链应用开发的入门级教材,本书通过各种流程图、结构图、架构图来描述区块链技术的数据结构和工作原理。全书介绍了多个基于 Fabric 区块链的开发案例,以及开发智能合约与区块链应用的完整过程,为读者理解抽象的概念提供捷径。
3.合理搭建内容架构,助力读者扎实培养综合能力。
本书在内容编排上,区块链技术科普、Hyperledger Fabric 各组件的管理与配置方法讲解及 Go 语言智能合约与区块链应用开发技术介绍并重。为了节省篇幅,编者将开发实例做成电子资源提供给读者下载使用。对于 Hyperledger Fabric 这种架构复杂的企业级区块链平台,理论与实例相结合可以达到更好的教学目的和学习效果。通过系统学习,读者很容易做到知其然、更知其所以然。
4.配套丰富教辅资源,立体化服务高校人才培养。
编者为使用本书的高校教师制作了配套的电子教案,并提供各章习题的参考答案、上机实验的电子文档、重难知识点的微课视频以及书中涉及的所有实例程序的源代码。高校教师可以通过人邮教育社区(www.ryjiaoyu.com)下载上述资源。

特别说明

“十四五”时期国家重点出版物出版专项规划项目

1. 本书注重区块链技术科普,巧妙激发读者的学习兴趣。
2. 依托经典开发案例,形象解读区块链技术的抽象概念。
3. 合理搭建内容架构,助力读者扎实培养综合能力。

内容摘要

Go语言是近年来非常流行的新兴编程语言,它不仅是以太坊客户端和Hyperledger Fabric区块链平台的开发语言,而且广泛应用于区块链应用的开发。
本书介绍使用Go语言开发的经典联盟链项目Hyperledger Fabric,它由Linux基金会管理。国外的微软、摩根大通、世界银行和国内的华为、阿里巴巴、百度、腾讯等企业都参与了Hyperledger社区的建设。本书涵盖Hyperledger Fabric区块链平台的体系结构、各组件的工作原理和管理方法、Go语言的基本编程方法,以及使用Go语言开发Hyperledger Fabric智能合约和应用程序的方法。读者在阅读本书时可以充分了解和体验Hyperledger Fabric区块链的强大功能,以及使用Go语言开发区块链应用的便利。
本书既可作为高等院校“区块链开发”“Web应用程序设计”等课程的教材,也可作为区块链应用开发人员的参考用书。

目录

【章名目录】
第1章 区块链技术基础
第2章 Fabric区块链的体系结构
第3章 搭建Fabric区块链环境
第4章 Fabric区块链的安全机制
第5章 节点与通道管理
第6章 数据存储与数据分发
第7章 部署Fabric生产网络
第8章 Go 语言编程基础
第9章 智能合约开发
第10章 客户端应用开发

【详细目录】
第1章 区块链技术基础
1.1 区块链的工作原理及底层技术 1
1.1.1 分布式系统的概念 1
1.1.2 区块链技术的总体架构 1
1.1.3 加密算法 4
1.1.4 区块链的分类 7
1.2 经典的区块链平台 8
1.2.1 区块链技术的发展阶段 8
1.2.2 比特币 9
1.2.3 以太坊 11
1.2.4 Hyperledger 项目 12
1.2.5 区块链编程语言 14
1.3 本章小结 15
习 题 15

第2章 Fabric区块链的体系结构
2.1 Fabric网络模型 17
2.1.1 Fabric网络的主要组件 17
2.1.2 Fabric区块链平台的体系结构 19
2.1.3 排序服务与交易的流程 23
2.2 搭建示例网络的过程 30
2.2.1 示例网络的拓扑 30
2.2.2 创建示例网络 31
2.2.3 证书颁发机构 32
2.2.4 添加网络管理员 32
2.2.5 创建一个联盟 33
2.2.6 为联盟创建通道 33
2.2.7 Peer节点与账本 34
2.2.8 客户端应用与智能合约 35
2.2.9 Fabric网络的扩充 36
2.3 本章小结 36
习 题 37

第3章 搭建Fabric区块链环境
3.1 搭建基础环境 38
3.1.1 安装VirtualBox虚拟机 38
3.1.2 安装CentOS 38
3.1.3 安装和使用Docker 46
3.2 安装Fabric区块链 52
3.2.1 配置Fabric区块链所需要的基础环境 52
3.2.2 安装Go语言环境 53
3.2.3 安装Git 54
3.2.4 安装Docker Compose 54
3.2.5 安装Fabric区块链 55
3.3 管理工具和配置文件 58
3.3.1 Fabric区块链的管理工具 59
3.3.2 Fabric区块链的常用配置文件 60
3.4 Fabric测试网络 61
3.4.1 测试网络的特点 61
3.4.2 启动和关闭测试网络 61
3.4.3 创建通道 65
3.5 本章小结 67
习 题 67

第4章 Fabric区块链的安全机制
4.1 背景知识 68
4.1.1 许可链的概念 68
4.1.2 安全机制的重要意义 70
4.1.3 身份标识 71
4.1.4 Idemix 73
4.2 Fabric CA 74
4.2.1 Fabric CA的工作原理 75
4.2.2 安装Fabric CA 76
4.2.3 初始化和启动Fabric CA Server 77
4.2.4 设置Fabric CA Server的配置信息 79
4.2.5 建立Fabric CA Server集群 87
4.2.6 Fabric CA Client 90
4.3 安全策略 94
4.3.1 策略简介 94
4.3.2 定义策略规则 95
4.4 成员服务提供者 98
4.4.1 MSP的作用 98
4.4.2 MSP域 99
4.4.3 MSP的目录结构 100
4.4.4 配置MSP 102
4.5 组织管理 104
4.5.1 组织在MSP中扮演的角色 104
4.5.2 为组织生成证书 105
4.6 本章小结 109
习 题 109

第5章 节点与通道管理
5.1 Peer节点管理 111
5.1.1 配置文件core.yaml 111
5.1.2 peer命令 112
5.2 通道管理 113
5.2.1 通道的分类 113
5.2.2 通道配置 114
5.2.3 通道配置交易 118
5.2.4 在Peer节点上执行通道操作命令 123
5.2.5 configtxgen工具 124
5.3 排序节点管理 125
5.3.1 Fabric区块链的共识算法 125
5.3.2 排序节点上的通道管理 127
5.3.3 配置排序节点 128
5.4 客户端命令行工具CLI 133
5.4.1 配置客户端 133
5.4.2 通过CLI工具访问Fabric网络 135
5.5 Fabric测试网络脚本解析 135
5.5.1 启动测试网络 136
5.5.2 创建通道 138
5.5.3 向通道中添加组织 142
5.5.4 更新通道配置 150
5.5.5 将组织Org3的Peer节点加入网络 155
5.6 本章小结 157
习 题 158

第6章 数据存储与数据分发
6.1 数据存储 159
6.1.1 数据存储结构 159
6.1.2 区块数据的存储 160
6.1.3 交易数据的存储和查询 164
6.1.4 状态数据库 165
6.1.5 启用CouchDB作为状态数据库 166
6.1.6 私有数据管理 170
6.2 数据分发 173
6.2.1 Gossip协议 173
6.2.2 领导节点和锚节点在数据分发过程中的作用 174
6.2.3 内部端点和外部端点 175
6.3 本章小结 176
习 题 176

第7章 部署Fabric生产网络
7.1 从学习到实践的第一步 178
7.1.1 从测试网络过渡到生产网络 178
7.1.2 部署Fabric生产网络的步骤 180
7.1.3 设计生产网络的结构和配置 180
7.2 在生产网络中部署Fabric区块链的各组件 182
7.2.1 创建资源集群 182
7.2.2 搭建CA 183
7.2.3 使用CA创建身份和MSP 183
7.2.4 部署Peer节点 184
7.2.5 部署排序节点 186
7.3 在单机上搭建Fabric区块链集群 187
7.3.1 实例的网络拓扑 187
7.3.2 准备基础环境 188
7.3.3 搭建Fabric区块链节点集群 189
7.3.4 编写Docker Compose配置文件 196
7.3.5 启动Docker容器 201
7.3.6 配置Fabric生产网络 202
7.4 本章小结 204
习 题 204

第8章 Go 语言编程基础
8.1 Go语言概述 206
8.1.1 Go语言的特色 206
8.1.2 安装Go语言环境 207
8.1.3 Go语言的项目目录 208
8.1.4 Go语言IDE 211
8.2 Go语言的常量、变量和数据类型 215
8.2.1 常量 215
8.2.2 变量 215
8.2.3 数据类型 215
8.3 常用语句 218
8.3.1 赋值语句 218
8.3.2 条件分支语句 219
8.3.3 循环语句 221
8.4 集合、数组和切片 223
8.4.1 集合 223
8.4.2 数组 225
8.4.3 切片 226
8.5 指针和接口 227
8.5.1 指针 227
8.5.2 接口 228
8.6 通道编程 230
8.6.1 Go语言的并发编程 231
8.6.2 Go语言的通道编程 232
8.7 JSON处理 234
8.7.1 JSON简介 234
8.7.2 Go语言JSON处理编程 234
8.8 函数编程 237
8.8.1 定义和使用函数 237
8.8.2 在函数中传递参数 238
8.8.3 在函数中返回多个值 239
8.8.4 结构体类型和枚举类型的函数 239
8.9 本章小结 240
习 题 240

第9章 智能合约开发
9.1 Fabric智能合约概述 242
9.1.1 智能合约的基本概念 242
9.1.2 链码的工作流程 243
9.1.3 学习Go语言开发Fabric智能合约的前提条件 244
9.1.4 智能合约编程基础 245
9.2 编写智能合约程序 246
9.2.1 导入contractapi包 246
9.2.2 定义与账本交换数据的结构体 246
9.2.3 智能合约函数编程 247
9.3 链码编程与智能合约的测试 253
9.3.1 在链码中使用智能合约 253
9.3.2 在测试网络中部署链码 254
9.3.3 在测试网络中调用链码 256
9.4 交易编程 261
9.4.1 交易处理函数的类型 261
9.4.2 定义交易处理函数 261
9.4.3 利用交易处理函数优化智能合约的代码 262
9.4.4 未知处理函数调用 267
9.5 在开发模式下运行链码 268
9.5.1 搭建环境 268
9.5.2 启动排序节点 270
9.5.3 在开发模式下启动Peer节点 271
9.5.4 创建通道 271
9.5.5 在开发模式下构建链码 272
9.5.6 启动链码 272
9.5.7 批准和写入链码定义 273
9.5.8 调用链码 275
9.6 私有数据编程 275
9.6.1 私有数据集的定义 275
9.6.2 在链码中读/写私有数据 278
9.6.3 私有数据编程示例程序 280
9.7 本章小结 289
习 题 289

第10章 客户端应用开发
10.1 Fabric区块链客户端应用开发概述 291
10.1.1 Fabric SDK Go概述 291
10.1.2 安装Fabric SDK Go 291
10.2 Fabric SDK Go的配置和依赖 294
10.2.1 配置Fabric SDK Go 295
10.2.2 管理Fabric SDK Go项目的依赖包 298
10.3 使用Fabric SDK Go开发客户端应用 299
10.3.1 Fabric SDK Go的开发包 299
10.3.2 创建fabsdk实例 299
10.3.3 通道客户端编程 300
10.3.4 账本客户端编程 303
10.3.5 资源客户端编程 305
10.3.6 MSP客户端编程 307
10.4 gateway开发模型 309
10.4.1 概述 309
10.4.2 连接配置文件 311
10.4.3 通过网关调用链码 315
10.5 本章小结 323
习 题 323

读者评论

赶紧抢沙发哦!

我要评论

作者介绍

李晓黎:
软件开发工程师,毕业于吉林大学计算机系;自2006年以来,带领团队一直从事网络管理软件、企业ERP系统和电商平台等的开发与建设工作,具有中国投资银行、国家开发银行、中信银行等多家银行从业经历,参与银行信息化建设、网银平台开发、区块链与智能合约开发工作多年,在系统软件开发、团队组织管理和系统架构设计等领域积累了丰富的实战经验。

推荐用户

相关图书

人邮微信
本地服务
人邮微信
教师服务
二维码
读者服务
读者服务
返回顶部
返回顶部