[套装书]区块链原理、设计与应用 第2版+基于区块链的物联网项目开发(2册)

作者
杨保华 陈昌 马克西米利亚诺·桑托斯 埃尼奥·莫拉
丛书名
区块链技术丛书
出版社
机械工业出版社
ISBN
9782007271543
简要
简介
内容简介书籍计算机书籍 ---------------------------区块链原理、设计与应用 第2版--------------------------- 本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深、系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1~3章介绍区块链技术的由来、核心思想及典型的应用场景;第4~5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6~8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9-11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用 Fabric CA 进行证书管理的实践经验;第12章重点剖析超级账本Fabric项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本Cello项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的最新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。 ---------------------------基于区块链的物联网项目开发--------------------------- 本书首先概述了当前业务场景中的物联网概念。然后,它帮助你在IBM Watson物联网平台上开发自己的设备,并使用Watson and Intel Edison创建你的第一个物联网解决方案。一旦你熟悉了物联网,你就学会了区块链技术及其使用案例。你还能够利用Hyperledger framework平台开发你自己的区块链网络。随着学习的深入,你将通过书中对问题解决方案的阐述,学会如何设计你的解决方案架构,以便你能够创建你自己的集成区块链和物联网解决方案。接下来的章节将讲述如何在IBM云平台利用物联网来实现端到端的区块链解决方案。在本书结尾,你将掌握如何将物联网和区块链技术融合,利用最佳实践和驱动程序来开发实用集成解决方案。
目录



---------------------------区块链原理、设计与应用 第2版---------------------------


前言
第1版序言
第1版前言
理论篇
第1章 区块链的诞生 2
1.1 记账科技的千年演化 2
1.2 分布式记账与区块链 7
1.3 集大成者—比特币 10
1.4 区块链的商业价值 12
1.5 本章小结 14
第2章 核心技术概览 15
2.1 定义与原理 15
2.2 技术的演化与分类 17
2.3 关键问题和挑战 19
2.4 趋势与展望 23
2.5 认识上的误区 26
2.6 本章小结 27
第3章 典型应用场景 28
3.1 应用场景概览 28
3.2 金融服务 29
3.2.1 数字货币 30
3.2.2 支付清结算业务 31
3.2.3 证券交易后处理 34
3.2.4 供应链金融 35
3.2.5 税收服务 36
3.2.6 众筹管理 37
3.3 征信管理 38
3.4 权属管理与溯源 39
3.4.1 存证 39
3.4.2 溯源 41
3.4.3 数据管理 42
3.5 资源共享 42
3.6 物流与供应链 44
3.7 物联网 45
3.8 其他场景 46
3.9 本章小结 48
第4章 分布式系统核心技术 49
4.1 一致性问题 49
4.2 共识算法 52
4.3 FLP不可能原理 54
4.4 CAP原理 56
4.4.1 定义 56
4.4.2 应用场景 56
4.5 ACID原则与多阶段提交 57
4.6 Paxos算法与Raft算法 58
4.6.1 Paxos算法 58
4.6.2 Raft算法 61
4.7 拜占庭问题与算法 61
4.8 可靠性指标 65
4.9 本章小结 66
第5章 密码学与安全技术 67
5.1 密码学简史 67
5.2 Hash算法与数字摘要 68
5.3 加解密算法 70
5.4 消息认证码与数字签名 75
5.4.1 消息认证码 76
5.4.2 数字签名 76
5.4.3 安全性 77
5.5 数字证书 77
5.6 PKI体系 80
5.7 默克尔树结构 83
5.8 布隆过滤器 84
5.9 同态加密 85
5.10 其他技术 86
5.11 本章小结 89
第6章 比特币—初露锋芒的区块链 90
6.1 比特币项目简介 90
6.2 工作原理 94
6.2.1 基本交易过程 94
6.2.2 重要概念 95
6.2.3 创新设计 98
6.3 挖矿过程 99
6.4 共识机制 100
6.5 闪电网络 102
6.6 侧链 103
6.7 热门问题 105
6.8 相关工具 108
6.9 本章小结 109
第7章 以太坊—挣脱加密货币的枷锁 110
7.1 以太坊项目简介 110
7.2 核心概念 112
7.3 主要设计 114
7.4 相关工具 115
7.5 安装客户端 117
7.6 使用智能合约 118
7.6.1 搭建测试用区块链 118
7.6.2 创建和编译智能合约 119
7.6.3 部署智能合约 120
7.6.4 调用智能合约 121
7.7 智能合约案例 121
7.7.1 智能合约代码 121
7.7.2 代码解析 123
7.8 本章小结 125
第8章 超级账本——面向企业的分布式账本 126
8.1 超级账本项目简介 126
8.2 社区组织结构 128
8.3 顶级项目介绍 129
8.4 开发协作工具 134
8.5 贡献代码 136
8.6 本章小结 139
实践篇
第9章 Fabric安装与部署 142
9.1 简介 142
9.2 本地编译组件 143
9.2.1 环境配置 144
9.2.2 获取代码 145
9.2.3 编译安装Peer组件 145
9.2.4 编译安装Orderer组件 145
9.2.5 编译安装Fabric CA组件 146
9.2.6 编译安装配置辅助工具 146
9.2.7 安装Protobuf支持和Go语言相关工具 146
9.2.8 示例配置 147
9.3 容器方式获取 147
9.3.1 安装Docker服务 147
9.3.2 安装docker-compose 147
9.3.3 获取Docker镜像 148
9.3.4 镜像Dockerfile 150
9.4 用本地方式启动Fabric网络 154
9.4.1 规划初始网络拓扑 155
9.4.2 准备启动配置文件 156
9.4.3 启动排序节点 163
9.4.4 启动Peer节点 165
9.4.5 创建通道 166
9.4.6 加入通道 166
9.4.7 更新锚节点配置 167
9.5 用容器方式启动Fabric网络 167
9.6 本章小结 169
第10章 管理Fabric网络 170
10.1 简介 170
10.2 使用通道 170
10.3 管理节点 184
10.4 管理链上代码 186
10.5 监听网络事件 202
10.6 自动发现网络信息 205
10.6.1 主要功能 205
10.6.2 全局参数 205
10.6.3 子命令 205
10.7 使用运维服务 210
10.8 如何升级网络版本 213
10.8.1 能力类型 213
10.8.2 推荐升级步骤 214
10.9 使用SDK 216
10.10 注意事项与最佳实践 217
10.11 本章小结 219
第11章 智能合约的开发 220
11.1 简介 220
11.2 链码的概念与结构 221
11.2.1 Chaincode接口 222
11.2.2 链码结构 222
11.3 链码开发API 223
11.3.1 账本状态交互API 223
11.3.2 交易信息API 225
11.3.3 参数读取API 226
11.3.4 私密数据API 226
11.3.5 其他API 227
11.4 应用开发案例一:转账 228
11.5 应用开发案例二:资产权属管理 231
11.6 应用开发案例三:调用其他链码 240
11.7 应用开发案例四:发送事件 241
11.8 应用开发案例五:基于属性的权限控制 242
11.9 应用开发案例六:私密数据 243
11.10 使用外部链码 248
11.10.1 外部链码构建器结构 248
11.10.2 链码安装包结构 251
11.10.3 配置Peer节点调用外部链码 252
11.10.4 外部链码编写示例 252
11.11 最佳开发实践 253
11.12 本章小结 257
第12章 Fabric配置解析 258
12.1 简介 258
12.2 Peer配置剖析 259
12.2.1 peer部分 259
12.2.2 vm部分 266
12.2.3 chaincode部分 267
12.2.4 ledger部分 267
12.2.5 operations部分 268
12.2.6 metrics部分 268
12.3 Orderer配置剖析 269
12.4 生成组织身份 272
12.5 通道配置文件 277
12.6 管理通道配置 284
12.7 转换网络配置 294
12.8 本章小结 298
第13章 身份证书管理 299
13.1 简介 299
13.2 安装服务端和客户端 300
13.2.1 本地编译 300
13.2.2 获取和使用Docker镜像 301
13.3 启动CA服务 302
13.4 服务端命令剖析 304
13.4.1 全局命令参数 304
13.4.2 init命令 307
13.4.3 start命令 307
13.5 服务端RESTful API 307
13.6 服务端配置文件解析 310
13.7 与服务端进行交互 316
13.8 客户端命令剖析 317
13.8.1 全局命令参数 318
13.8.2 affiliation命令 320
13.8.3 enroll命令 320
13.8.4 gencrl命令 321
13.8.5 gencsr命令 322
13.8.6 getcacert和getcainfo命令 322
13.8.7 identity命令 322
13.8.8 reenroll命令 322
13.8.9 register命令 323
13.8.10 revoke命令 323
13.9 客户端配置文件解析 324
13.10 生产环境部署 325
13.11 本章小结 327
进阶篇
第14章 Fabric架构与设计 330
14.1 整体架构概览 330
14.2 核心概念与组件 333
14.2.1 网络层相关组件 334
14.2.2 共识机制相关组件 337
14.2.3 权限管理相关组件 338
14.2.4 业务层相关组件 339
14.3 消息协议 345
14.3.1 消息结构 345
14.3.2 客户端访问Peer节点 346
14.3.3 客户端、Peer节点访问Orderer 348
14.3.4 链码和Peer节点交互 348
14.3.5 Peer节点之间Gossip交互 349
14.4 权限策略和访问控制 352
14.4.1 应用场景 353
14.4.2 身份证书 354
14.4.3 身份集合 354
14.4.4 权限策略的实现 355
14.4.5 通道策略 359
14.4.6 通道访问控制 360
14.4.7 背书策略 362
14.4.8 基于证书属性的链码访问控制 364
14.4.9 实例化策略 365
14.5 隐私保护 365
14.5.1 通道机制 365
14.5.2 私密数据库 366
14.5.3 加密保护 368
14.6 用户链码 369
14.6.1 基本结构 369
14.6.2 链码与Peer的交互过程 370
14.6.3 Peer侧处理 372
14.6.4 链码侧处理 373
14.7 系统链码 375
14.7.1 配置系统链码 375
14.7.2 查询系统链码 376
14.7.3 背书系统链码 376
14.7.4 验证系统链码 377
14.7.5 传统生命周期系统链码 377
14.7.6 新的生命周期系统链码 378
14.8 排序服务 379
14.8.1 gRPC服务接口 380
14.8.2 账本管理 380
14.8.3 共识插件 383
14.9 本章小结 386
第15章 Fabric Peer实现剖析 387
15.1 节点启动 387
15.2 加入通道 399
15.2.1 解析和校验请求 399
15.2.2 创建本地账本结构 401
15.2.3 创建通道结构 402
15.2.4 启动Gossip服务 404
15.2.5 注册通道结构到全局字典 410
15.3 Gossip过程 411
15.3.1 整体流程 411
15.3.2 初始化配置 412
15.3.3 初始化和启动Gossip服务 413
15.4 链码启动和初始化 419
15.4.1 整体流程 419
15.4.2 编译和启动链码 421
15.4.3 初始化链码 426
15.4.4 处理链码消息 426
15.5 背书处理 430
15.5.1 检查和校验提案 431
15.5.2 模拟执行链码调用 431
15.5.3 对结果背书并返回结果 433
15.6 提交交易结果 434
15.6.1 整体流程 436
15.6.2 提交前准备 437
15.6.3 提交过程 440
15.6.4 提交后处理 449
15.6.5 总结本地账本结构 449
15.7 本章小结 451
第16章 Fabric Orderer实现剖析 452
16.1 核心工作过程 452
16.1.1 工作原理 452
16.1.2 核心共识过程 453
16.1.3 分块决策 455
16.2 排序服务启动 455
16.3 Broadcast调用 466
16.3.1 整体流程 466
16.3.2 解析消息 468
16.3.3 处理普通交易消息 469
16.3.4 处理配置交易消息 472
16.4 构造本地区块 475
16.4.1 整体流程 475
16.4.2 成为Leader后的处理 477
16.4.3 成为Follower后的处理 477
16.4.4 主共识循环 478
16.4.5 请求应答协程逻辑 483
16.5 Deliver调用 484
16.5.1 整体流程 485
16.5.2 解析消息 488
16.5.3 检查访问权限 489
16.5.4 计算区块范围 489
16.5.5 发送区块 490
16.5.6 返回响应 490
16.6 本章小结 490
第17章 区块链服务平台 491
17.1 简介 491
17.2 IBM区块链服务 492
17.3 甲骨文区块链服务 493
17.4 腾讯云区块链服务平台 494
17.5 阿里云区块链服务平台 495
17.6 百度超级链服务平台 497
17.7 纸贵科技Z-BaaS区块链服务平台 499
17.8 超级账本Cello项目 500
17.9 本章小结 502
附录
附录A 术语 504
附录B 常见问题 508
附录C 参考资源链接 511



---------------------------基于区块链的物联网项目开发---------------------------


译者序
前言
作者简介
审稿者简介
第1章 了解物联网并在IBM Watson物联网平台上开发 1
1.1 什么是物联网 2
1.2 物联网通用案例 3
1.2.1 车互联 3
1.2.2 人互联 3
1.3 物联网技术要素 4
1.3.1 设备 4
1.3.2 边缘计算 5
1.3.3 网络 6
1.3.4 应用程序协议 11
1.3.5 分析与人工智能 12
1.4 IBM Watson物联网平台特性 12
1.4.1 仪表盘 13
1.4.2 设备、网关和应用 14
1.4.3 安全性 14
1.5 创建你的第一个物联网解决方案 14
1.5.1 创建网关 16
1.5.2 创建应用 17
1.5.3 创建设备 20
1.6 小结 24
1.7 补充阅读 24
第2章 创建物联网解决方案 25
2.1 技术要求 26
2.2 园艺解决方案 26
2.2.1 需求概述 26
2.2.2 解决方案概览 27
2.2.3 设备选择 27
2.2.4 设备布线 32
2.3 对设备固件进行编码 33
2.3.1 测量土壤湿度 34
2.3.2 检测环境温度 36
2.3.3 打开继电器 37
2.3.4 发布事件 38
2.3.5 监测事件 39
2.3.6 订阅行动 43
2.4 创建后端应用 45
2.4.1 在IBM Cloud平台上创建Cloud Foundry应用程序 45
2.4.2 上传代码 47
2.5 小结 50
2.6 补充阅读 51
第3章 区块链技术概述及使用超级账本 53
3.1 区块链是什么 54
3.2 区块链和超级账本 56
3.2.1 Hyperledger项目 57
3.2.2 Hyperledger Fabric 59
3.3 选择一个经典应用案例 64
3.4 小结 66
3.5 问答 67
3.6 补充阅读 67
第4章 创建自己的区块链网络 69
4.1 先决条件 70
4.2 使用Hyperledger Composer创建自己的区块链网络 70
4.2.1 获取Hyperledger Composer 70
4.2.2 探讨一个区块链网络案例的结构 72
4.3 使用Hyperledger Fabric和Composer安装区块链网络 83
4.3.1 设置Docker 83
4.3.2 安装Hyperledger Composer 84
4.3.3 使用Docker安装HyperledgerFabric 1.3 87
4.3.4 在Kubernetes环境中部署Hyperledger Fabric 1.3 88
4.4 小结 88
4.5 补充阅读 89
第5章 运用区块链解决食品安全问题 91
5.1 现代食品链中的规则、挑战和问题 91
5.1.1 来自食品安全的挑战 92
5.1.2 食品安全管理体系:ISO 22000 92
5.2 区块链和物联网如何在食品链中发挥作用 93
5.2.1 食品生态系统 94
5.2.2 食品生态系统中的机遇与挑战 95
5.2.3 食品链是物联网和区块链技术应用的经典案例吗 102
5.3 小结 103
5.4 补充阅读 104
第6章 设计解决方案架构 105
6.1 食品产业 105
6.1.1 食品生态系统的挑战 106
6.1.2 食品加工环节 107
6.1.3 食品配送环节 108
6.1.4 食品零售环节 110
6.2 技术方案 111
6.2.1 前端应用 112
6.2.2 基于物联网的资产跟踪技术 113
6.2.3 API/SDK 115
6.2.4 Hyperledger Composer—高级概述 116
6.3 软件组件 117
6.3.1 Composer REST服务器 117
6.3.2 Hyperledger Composer模型 121
6.3.3 Hyperledger Composer访问控制语言 123
6.3.4 Hyperledger Composer交易处理函数 124
6.4 小结 125
6.5 问答 126
6.6 补充阅读 127
第7章 创建自己的区块链和物联网解决方案 129
7.1 技术要求 130
7.2 解决方案概览 130
7.3 创建区块链网络 131
7.3.1 概念和枚举 132
7.3.2 资产定义 133
7.3.3 参与者 134
7.3.4 为Hyperledger部署和测试业务网络 134
7.3.5 通过区块链中的交易操控资产 137
7.3.6 创建并导出参与者业务卡片 139
7.3.7 定义访问控制列表 141
7.3.8 升级业务网络 144
7.3.9 为每个参与者设置Composer REST服务器 146
7.4 创建解决方案的物联网部分 147
7.4.1 硬件设置 147
7.4.2 固件开发 149
7.4.3 应用开发 150
7.5 端到端测试 153
7.5.1 创建食品盒 154
7.5.2 将资产移交给运输者 155
7.5.3 运输时测量温度 156
7.5.4 将资产转移到仓库 156
7.5.5 创建一个搬运托盘并添加食品盒 157
7.5.6 运输搬运托盘时测量温度 158
7.5.7 跟踪食品盒 158
7.6 小结 160
第8章 物联网、区块链和工业4.0 161
8.1 工业4.0 162
8.2 作为创新平台的云计算 162
8.2.1 云计算模型 162
8.2.2 云计算对于工业4.0的重要性 164
8.3 物联网 165
8.4 区块链—简化业务链 165
8.5 小结 167
第9章 开发区块链和物联网解决方案的最佳实践 169
9.1 开发云应用 170
9.1.1 参考架构 171
9.1.2 使用12因子应用模型进行开发 172
9.1.3  无服务器计算 173
9.2 使用Hyperledger Composer进行区块链开发 174
9.2.1 Hyperledger Composer工具包 174
9.2.2 Hyperledger ComposerREST服务器 174
9.3 小结 176
9.4 补充阅读 176



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4