《区块链开发从入门到精通》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:陈人通编著
  • 出 版 社:北京:中国水利水电出版社
  • 出版年份:2019
  • ISBN:9787517077442
  • 页数:314 页
图书介绍:第一章主要介绍的是区块链的概念和去中心化应用,让读者对区块链及使用区块链技术开发的应用的特性有一个大体的了解。第二章主要介绍的是首次应用了区块链技术的去中心化数字货币应用。第三章主要介绍的是区块链技术的扩展及热议话题。第四章主要介绍的是除了去中心化数字货币之外,区块链还能被易用在哪些场景下。第五章主要介绍的是加解/密算法和编/解码算法,重点突出的是区块链技术中用到的加解/密算法和编/解码算法。第六章主要介绍的是共识算法。第七章主要介绍的是以太坊。第八章主要介绍的是以太坊智能合约的开发。第九章主要介绍的是超级账本。第十章主要介绍的是超级账本Fabric的使用和案例应用开发。

第1章 区块链思想以及去中心化应用 1

1.1 从记账角度理解区块链 1

1.2 区块链技术的典型成分 3

1.2.1 网络通信 4

1.2.2 区块链账本 5

1.2.3 密码算法 7

1.2.4 共识机制 9

1.3 区块链技术架构的更替 10

1.3.1 区块链1.0架构 10

1.3.2 区块链2.0架构 12

1.3.3 区块链3.0架构 13

1.4 去中心化应用及其优缺点 14

1.4.1 去中心化应用 15

1.4.2 去中心化应用的优点 16

1.4.3 去中心化应用的缺点 16

1.5 DApp中的用户 17

1.6 著名的DApp应用 18

1.6.1 比特币 18

1.6.2 达世币 20

1.6.3 零币 21

1.6.4 莱特币 21

1.6.5 以太坊 22

1.6.6 超级账本 23

1.6.7 Ripple 24

1.6.8 OpenBazaar 25

1.6.9 IPFS 26

第2章 区块链的最初应用——去中心化数字货币 28

2.1 数字货币的去中心化历程 28

2.1.1 加密数字货币的过去 29

2.1.2 中本聪与比特币 32

2.2 去中心化数字货币系统的基本设计 34

2.2.1 密钥、私钥与公钥 35

2.2.2 货币地址 40

2.2.3 发起交易 43

2.2.4 交易的UTXO模型 46

2.2.5 交易在比特币网络中的传播 48

2.3 去中心化数字货币中的区块链技术 49

2.3.1 区块结构 50

2.3.2 用区块头哈希值和区块高度标识区块 52

2.3.3 区块间的链接 53

2.3.4 Merkle树与Merkle根 54

2.3.5 创世区块 58

2.4 挖矿行为 59

2.4.1 挖矿与去中心化共识 59

2.4.2 交易校验及整合至区块 62

2.4.3 填充区块头 65

2.4.4 工作量证明算法与开始挖矿 66

2.4.5 难度目标的调整 70

2.4.6 成功构建区块与新区块校验 72

2.4.7 日渐减小的货币供应量 73

2.4.8 理智从事挖矿活动 74

第3章 区块链热议话题 82

3.1 区块链分叉 82

3.1.1 区块同时被挖出导致的分叉 82

3.1.2 软件升级导致的分叉 85

3.2 区块扩容 86

3.3 侧链 89

3.3.1 极具创造力的侧链技术 89

3.3.2 双向挂钩与SPV证明机制 90

3.4 闪电网络 92

3.5 共识攻击 94

第4章 区块链技术的典型应用场景 97

4.1 区块链技术具有潜在的商业价值 97

4.2 广告传媒的去中心化 98

4.3 区块链技术实现版权登记 100

4.4 银行业的去中心化结算 102

第5章 密码算法——区块链应用安全的保障 104

5.1 Hash算法 104

5.1.1 什么是Hash算法 105

5.1.2 用于加密的常见Hash算法 108

5.1.3 SHA-256的加密过程 110

5.1.4 Hash算法的数字摘要 114

5.2 Bloom过滤器 114

5.3 加/解密算法 116

5.3.1 加/解密的过程 116

5.3.2 对称加密算法 118

5.3.3 非对称加密算法 119

5.3.4 RSA密码学算法 121

5.3.5 椭圆曲线密码学算法 123

5.4 Diffie-Hellman密钥交换协议 125

5.5 编码与解码 126

5.5.1 编码/解码的细节 126

5.5.2 Base64编码 128

5.5.3 Base58编码 129

5.5.4 Base58Check编码 130

第6章 共识算法构建出区块链的灵魂 132

6.1 分布式系统的一致性问题 132

6.1.1 解决一致性问题非常重要 133

6.1.2 分布式系统对一致性的要求 134

6.1.3 达成一致性面临着诸多的挑战 135

6.1.4 施加约束的一致性 136

6.2 用共识算法解决一致性问题 137

6.2.1 关于共识算法的讨论 137

6.2.2 常见共识算法 140

6.3 拜占庭将军问题与PBFT算法 142

6.3.1 拜占庭将军问题 142

6.3.2 PBFT算法 146

6.4 Paxos算法和Raft算法 149

6.4.1 Paxos算法 150

6.4.2 Raft算法 152

6.5 工作量证明算法PoW 154

6.6 股权权益证明算法PoS 156

6.7 委托的股权权益证明算法DPoS 157

第7章 区块链应用开发平台——以太坊 159

7.1 以太坊项目的发起与发展 159

7.2 以太坊的设计细节及重要概念 163

7.2.1 智能合约和以太坊虚拟机 163

7.2.2 以太坊账户 164

7.2.3 状态 166

7.2.4 交易 167

7.2.5 以太币面值 169

7.2.6 收据 170

7.2.7 燃料(Gas) 172

7.2.8 梅克尔-帕特里夏树 173

7.3 以太坊的结构与整体运行框架 176

7.4 安装以太坊客户端 178

7.4.1 以太坊的源码 178

7.4.2 通过PPA直接安装Geth 181

7.4.3 从Geth源码编译安装 183

7.4.4 Windows和Mac OS安装Geth 185

7.4.5 以太坊官方钱包的安装和使用 186

7.4.6 浏览器钱包 190

7.5 概述核心客户端Geth的使用 192

7.5.1 JSON-RPC和JavaScript操作台 192

7.5.2 子命令和选项 193

第8章 编写以太坊智能合约 196

8.1 Solidity源文件及源文件导入 196

8.2 Solidity支持的数据类型 198

8.2.1 基本数据类型 198

8.2.2 字符串类型 200

8.2.3 枚举类型 202

8.2.4 数组类型 202

8.2.5 结构体类型 204

8.2.6 mapping类型 205

8.3 用Solidity执行变量操作 205

8.3.1 var关键字 206

8.3.2 基本数据类型变量的类型间转换 206

8.3.3 delete关键字 207

8.4 条件转移和循环控制结构 209

8.4.1 执行条件转移的if...else...结构和“?:” 209

8.4.2 执行循环控制的while和for结构 210

8.5 函数及函数调用 212

8.5.1 用function关键字创建函数 212

8.5.2 函数调用 213

8.5.3 函数修改器 215

8.5.4 回退函数 216

8.6 异常 217

8.7 使用智能合约 217

8.7.1 智能合约的结构模板 218

8.7.2 智能合约的继承 220

8.7.3 搭建测试用私有链网络 223

8.7.4 创建和编译智能合约 225

8.7.5 部署智能合约 227

8.7.6 运行智能合约 229

8.8 智能合约案例:投票 229

8.8.1 智能合约代码 230

8.8.2 解读合约代码 233

8.9 使用官方钱包部署智能合约 236

8.10 智能合约的代码漏洞:TheDAO事件 238

第9章 区块链应用开发平台——超级账本 240

9.1 关于超级账本 240

9.1.1 项目发起的背景 240

9.1.2 项目的组成 243

9.2 优秀的超级账本项目 244

9.2.1 Fabric项目 244

9.2.2 Sawtooth项目 245

9.2.3 Iroha项目 245

9.2.4 BlockChain Explorer项目 246

9.2.5 Cello项目 246

9.2.6 Composer项目 247

9.2.7 Indy项目 247

9.2.8 Burrow项目 248

9.3 Fabric的系统结构与运行模型 249

9.3.1 系统结构 249

9.3.2 Fabric的典型运行模型 251

9.4 Fabric中的关键概念 253

9.4.1 Fabric的节点 253

9.4.2 链码 257

9.4.3 数字身份证书 258

9.4.4 组织与联盟 262

9.4.5 通道 263

9.4.6 策略 265

9.4.7 系统组件间的通信 267

9.4.8 区块链账本结构 268

9.5 用户应用链码 271

9.5.1 链码的结构模板 271

9.5.2 链码与节点的交互 273

9.6 系统链码 275

9.6.1 配置系统链码 276

9.6.2 生命周期系统链码 277

9.6.3 查询系统链码 279

9.6.4 背书管理系统链码 280

9.6.5 验证系统链码 280

第10章 超级账本Fabric的基本使用 281

10.1 搭建并启动Fabric网络 281

10.1.1 网络的配置文件 281

10.1.2 启动节点 289

10.1.3 运行网络 290

10.1.4 总结 294

10.2 操作用户应用链码 295

10.2.1 安装链码 296

10.2.2 实例化链码 296

10.2.3 调用链码 298

10.2.4 查询链码 298

10.2.5 升级链码 299

10.2.6 打包并签名链码 301

10.3 链码开发相关的API 302

10.4 操作通道 306

10.4.1 通道的创建 306

10.4.2 加入通道 307

10.4.3 列举出节点所加入的通道 308

10.4.4 获取通道内的指定区块 308

10.4.5 更新通道的配置区块 308

10.5 链码开发案例——转账 309

10.5.1 Init()方法 310

10.5.2 Invoke()方法 311

10.5.3 主函数方法 314