《区块链原理、设计与应用》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:杨保华,陈昌编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2017
  • ISBN:9787111577829
  • 页数:356 页
图书介绍:本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深,系统化介绍区块链系统的设计精华、应用开发等。全书分为理论篇和实践篇两大部分,主要内容包括:第1-3章介绍区块链技术的由来、核心思想及典型的应用场景;第4-5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6-8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9-11章以超级账本 Fabric 项目为例,具体讲解安装部署、配置管理,以及使用 Fabric CA 进行证书管理的实践经验;第12章重点剖析超级账本 Fabric 项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本 Cello 项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的最新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。

理论篇 2

第1章 区块链思想的诞生 2

1.1从实体货币到数字货币 2

1.2站在巨人的肩膀上 5

1.3了不起的社会学实验 5

1.4潜在的商业价值 7

1.5本章小结 8

第2章 核心技术概览 9

2.1定义与原理 9

2.2技术的演化与分类 11

2.3关键问题和挑战 13

2.4趋势与展望 17

2.5认识上的误区 19

2.6本章小结 19

第3章 典型应用场景 20

3.1应用场景概览 20

3.2金融服务 22

3.2.1银行业金融管理 22

3.2.2证券交易 24

3.2.3众筹投资 25

3.3征信和权属管理 26

3.4资源共享 28

3.5贸易管理 29

3.6物联网 30

3.7其他场景 31

3.8本章小结 33

第4章 分布式系统核心问题 34

4.1一致性问题 34

4.1.1定义与重要性 34

4.1.2问题与挑战 35

4.1.3一致性要求 36

4.1.4带约束的一致性 36

4.2共识算法 37

4.2.1问题与挑战 38

4.2.2常见算法 38

4.2.3理论界限 38

4.3 FLP不可能原理 39

4.3.1定义 39

4.3.2正确理解 39

4.4 CAP原理 40

4.4.1定义 40

4.4.2应用场景 41

4.5 ACID原则 41

4.6 Paxos算法与Raft算法 42

4.6.1 Paxos算法 42

4.6.2 Raft算法 45

4.7拜占庭问题与算法 45

4.8可靠性指标 48

4.8.1几个9的指标 48

4.8.2两个核心时间 49

4.8.3提高可靠性 49

4.9本章小结 49

第5章 密码学与安全技术 50

5.1 Hash算法与数字摘要 50

5.1.1 Hash定义 50

5.1.2常见算法 51

5.1.3性能 51

5.1.4数字摘要 52

5.1.5 Hash攻击与防护 52

5.2加解密算法 52

5.2.1加解密系统基本组成 53

5.2.2对称加密算法 53

5.2.3非对称加密算法 54

5.2.4选择明文攻击 55

5.2.5混合加密机制 56

5.2.6离散对数与Diffie-Hellman密钥交换协议 57

5.3消息认证码与数字签名 57

5.3.1消息认证码 58

5.3.2数字签名 58

5.3.3安全性 59

5.4数字证书 59

5.4.1 X.509证书规范 60

5.4.2证书格式 61

5.4.3证书信任链 62

5.5 PKI体系 63

5.5.1 PKI基本组件 63

5.5.2证书的签发 63

5.5.3证书的撤销 66

5.6 Merkle树结构 66

5.7布隆过滤器 67

5.8同态加密 68

5.9其他问题 70

5.10本章小结 71

第6章 比特币——区块链思想诞生的摇篮 72

6.1比特币项目简介 72

6.1.1比特币大事记 73

6.1.2其他数字货币 74

6.2原理和设计 75

6.2.1基本交易过程 75

6.2.2重要概念 76

6.2.3创新设计 78

6.3挖矿 80

6.3.1基本原理 80

6.3.2挖矿过程 81

6.3.3如何看待挖矿 81

6.4共识机制 82

6.4.1工作量证明 82

6.4.2权益证明 83

6.5闪电网络 83

6.6侧链 85

6.6.1 SPV证明 85

6.6.2双向挂钩 86

6.6.3最新进展 87

6.7热点问题 87

6.7.1设计中的权衡 87

6.7.2分叉 87

6.7.3交易延展性 88

6.7.4扩容之争 89

6.7.5比特币的监管和追踪 90

6.8相关工具 91

6.9本章小结 92

第7章 以太坊——挣脱数字货币的枷锁 93

7.1以太坊项目简介 93

7.1.1以太坊项目简史 94

7.1.2主要特点 95

7.2核心概念 95

7.3主要设计 97

7.3.1智能合约相关设计 97

7.3.2交易模型 97

7.3.3共识 97

7.3.4降低攻击 98

7.3.5提高扩展性 98

7.4相关工具 98

7.4.1客户端和开发库 98

7.4.2以太坊钱包 99

7.4.3 IDE 100

7.4.4网站资源 100

7.5安装客户端 100

7.5.1从PPA直接安装 100

7.5.2从源码编译 101

7.6使用智能合约 102

7.6.1搭建测试用区块链 102

7.6.2创建和编译智能合约 104

7.6.3部署智能合约 105

7.6.4调用智能合约 106

7.7智能合约案例:投票 106

7.7.1智能合约代码 107

7.7.2代码解析 109

7.8本章小结 111

第8章 超级账本——面向企业的分布式账本 112

8.1超级账本项目简介 112

8.2社区组织结构 114

8.2.1基本结构 114

8.2.2大中华区技术工作组 114

8.3顶级项目介绍 115

8.3.1 Fabric项目 116

8.3.2 Sawtooth项目 117

8.3.3 Iroha项目 117

8.3.4 Blockchain Explorer项目 117

8.3.5 Cello项目 118

8.3.6 Indy项目 118

8.3.7 Composer项目 118

8.3.8 Burrow项目 119

8.4开发必备工具 119

8.4.1 Linux Foundation ID 119

8.4.2 Jira——任务和进度管理 119

8.4.3 Gerrit——代码仓库和Review管理 120

8.4.4 RocketChat——在线沟通 121

8.5贡献代码 121

8.6本章小结 126

实践篇 128

第9章 超级账本Fabric部署和使用 128

9.1简介 128

9.2本地编译安装 129

9.2.1操作系统 130

9.2.2环境配置 130

9.2.3获取代码 131

9.2.4编译安装fabric-peer组件 131

9.2.5编译安装fabric-orderer组件 132

9.2.6编译安装fabric-ca组件 133

9.2.7编译安装辅助工具 133

9.2.8获取chaintool 133

9.2.9安装Go语言相关工具 134

9.2.10示例配置 134

9.3使用Docker镜像 134

9.3.1安装Docker服务 134

9.3.2安装docker-compose 135

9.3.3获取Docker镜像 135

9.3.4镜像Dockerfile 138

9.4启动Fabric网络 143

9.4.1网络拓扑 143

9.4.2准备相关配置文件 144

9.4.3启动Orderer节点 150

9.4.4启动Peer节点 151

9.4.5操作网络 152

9.4.6基于容器方式 156

9.5链码的概念与使用 157

9.5.1链码操作命令 158

9.5.2命令参数 158

9.5.3安装链码 159

9.5.4实例化链码 162

9.5.5调用链码 165

9.5.6查询链码 167

9.5.7升级链码 168

9.5.8打包链码和签名 169

9.6使用多通道 170

9.6.1通道操作命令 170

9.6.2命令选项 171

9.6.3创建通道 172

9.6.4加入通道 174

9.6.5列出所加入的通道 175

9.6.6获取某区块 176

9.6.7更新通道配置 177

9.7 SDK支持 178

9.8生产环境注意事项 179

9.9本章小结 181

第10章 超级账本Fabric配置管理 182

10.1简介 182

10.1.1配置文件 182

10.1.2配置管理工具 183

10.2 Peer配置剖析 183

10.2.1 logging部分 184

10.2.2 peer部分 184

10.2.3 vm部分 188

10.2.4 chaincode部分 189

10.2.5 ledger部分 190

10.3 Orderer配置剖析 191

10.4 cryptogen生成组织身份配置 194

10.4.1配置文件 195

10.4.2子命令和参数 196

10.4.3生成密钥和证书文件 196

10.4.4查看配置模板信息 198

10.5 configtxgen生成通道配置 199

10.5.1 configtx.yaml配置文件 199

10.5.2命令选项 203

10.5.3生成Orderer初始区块并进行查看 203

10.5.4生成新建通道交易文件并进行查看 211

10.5.5生成锚节点更新交易文件 215

10.6 configtxlator转换配置 215

10.6.1 RESTful接口 215

10.6.2解码为Json格式 216

10.6.3编码为二进制格式 217

10.6.4计算配置更新量 217

10.6.5更新通道配置 218

10.7本章小结 219

第11章 超级账本Fabric CA应用与配置 220

11.1简介 220

11.2安装服务端和客户端 221

11.2.1本地编译 221

11.2.2获取和使用Docker镜像 223

11.2.3示例Dockerfile 223

11.3启动CA服务 225

11.4服务端命令剖析 228

11.4.1全局命令参数 228

11.4.2 init命令 230

11.4.3 start命令 230

11.5服务端配置文件解析 231

11.6与服务端进行交互 235

11.7客户端命令剖析 237

11.7.1全局命令参数 237

11.7.2 enroll命令 239

11.7.3 getcacert命令 240

11.7.4 reenroll命令 241

11.7.5 register命令 241

11.7.6 revoke命令 242

11.8客户端配置文件解析 243

11.9生产环境部署 245

11.10本章小结 247

第12章 超级账本Fabric架构与设计 248

12.1整体架构概览 248

12.1.1核心特性 248

12.1.2整体架构 249

12.1.3典型工作流程 249

12.2核心概念与组件 251

12.2.1网络层相关组件 252

12.2.2共识相关组件 254

12.2.3权限管理相关组件 255

12.2.4业务层相关组件 257

12.3 gRPC消息协议 262

12.3.1 Envelope消息结构 262

12.3.2客户端访问Peer节点 263

12.3.3客户端、Peer节点访问Orderer 265

12.3.4链码容器和Peer节点之间的操作 265

12.3.5多个节点之间的操作 266

12.4权限管理和策略 267

12.4.1策略应用场景 267

12.4.2身份证书 268

12.4.3权限策略的实现 268

12.4.4通道策略 272

12.4.5背书策略 273

12.4.6实例化策略 273

12.5用户链码 274

12.5.1基本结构 274

12.5.2链码与Peer的交互过程 275

12.5.3链码处理状态机 277

12.6系统链码 279

12.7排序服务 281

12.7.1 gRPC服务接口 282

12.7.2链和账本管理 283

12.7.3通道配置更新 284

12.7.4共识插件 286

12.8本章小结 288

第13章 区块链应用开发 290

13.1简介 290

13.2链码的原理、接口与结构 292

13.2.1 Chaincode接口 292

13.2.2链码结构 293

13.2.3链码基本工作原理 294

13.3链码开发API 295

13.3.1账本状态交互API 296

13.3.2交易信息相关API 296

13.3.3参数读取API 297

13.3.4其他API 297

13.4应用开发案例一:转账 298

13.4.1链码结构 298

13.4.2 Init方法 299

13.4.3 Invoke方法 300

13.5应用开发案例二:资产权属管理 301

13.5.1链码结构 301

13.5.2 Invoke方法 303

13.6应用开发案例三:调用其他链码 312

13.7应用开发案例四:发送事件 313

13.8开发最佳实践小结 314

13.9本章小结 316

第14章 区块链服务平台设计 317

14.1简介 317

14.1.1参考架构 318

14.1.2考量指标 318

14.2 IBM Bluemix云区块链服务 319

14.3微软Azure云区块链服务 321

14.4使用超级账本Cello搭建区块链服务 324

14.4.1基本架构和特性 324

14.4.2环境准备 325

14.4.3下载Cello源码 325

14.4.4配置Worker节点 325

14.4.5配置Master节点 326

14.4.6使用Cello管理区块链 327

14.4.7基于Cello进行功能扩展 330

14.5本章小结 330

附录 334

附录A术语表 334

附录B常见问题解答 338

附录C Golang开发相关 342

附录D ProtoBuf与gRPC 349

附录E参考资源 353