《精通区块链开发技术》[92M]百度网盘|pdf下载|亲测有效
《精通区块链开发技术》[92M]百度网盘|pdf下载|亲测有效

精通区块链开发技术 pdf下载

出版社 清华大学出版社京东自营官方旗舰店
出版年 2022-12
页数 390页
装帧 精装
评分 8.8(豆瓣)
8.99¥ 10.99¥

内容简介

本篇主要提供精通区块链开发技术电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com

产品特色

编辑推荐

实施区块链技术可以带来诸多好处,这已引起学术界和行业研究人员的浓厚兴趣,他们正在持续不懈地研究该技术,并且涌现了许多相关的联盟、工作组、项目和专业机构,它们参与了该技术的开发和进一步发展的工作。

内容简介

  《精通区块链开发技术(第2版)》详细阐述了与区块链开发技术相关的基本解决方案,主要包括区块链入门、去中心化、对称密码学、公钥密码学、比特币详解、比特币网络和支付、比特币客户端和API、山寨币、智能合约、以太坊、开发工具和框架、Web3详解、超级账本、替代区块链、区块链—代币之外的应用、可伸缩性和其他挑战、当前发展和未来展望等内容。此外,该书还提供了相应的示例、代码,以帮助读者进一步理解相关方案的实现过程。

作者简介

伊姆兰·巴希尔(Imran Bashir)拥有伦敦大学皇家霍洛威学院信息安全专业的科学 硕士学位,并具有软件开发、解决方案架构、基础设施管理和IT服务管理的背景,他还是电气与电子工程师协会(IEEE)和英国计算机协会(BCS)的成员。

Imran在公共和金融领域拥有16年的工作经验。在进入金融服务行业之前,他曾在公共部门负责大型IT项目。在进入金融服务行业之后,他在欧洲金融之都—伦敦的不同 金融公司担任过各种技术职务。他目前在伦敦的一家投资银行工作,担任技术部副总裁的职务。


内页插图

目录

第1章 区块链入门 1

1.1 区块链技术的发展 1

1.2 分布式系统 5

1.3 区块链和比特币的历史 7

1.3.1 电子现金 7

1.3.2 区块链 9

1.4 区块链定义和相关术语 9

1.4.1 点对点 9

1.4.2 分布式账本 10

1.4.3 加密安全 10

1.4.4 仅可追加 10

1.4.5 可通过共识更新 11

1.5 区块链的通用元素 14

1.5.1 区块链的工作原理 16

1.5.2 区块链累积区块的方式 16

1.5.3 区块链技术的优点和局限性 17

1.5.4 区块链技术的层次 18

1.5.5 区块链的特性 20

1.6 区块链的类型 22

1.6.1 分布式账本 23

1.6.2 分布式账本技术 23

1.6.3 公共区块链 23

1.6.4 私有区块链 24

1.6.5 半私有区块链 24

1.6.6 侧链 24

1.6.7 许可型账本 25

1.6.8 共享账本 25

1.6.9 完全私有和专有区块链 25

1.6.10 代币化区块链 25

1.6.11 无代币区块链 26

1.7 共识 26

1.7.1 共识机制 26

1.7.2 共识机制的类型 27

1.7.3 区块链中的共识 27

1.8 CAP定理和区块链 30

1.9 小结 31

第2章 去中心化 33

2.1 去中心化的意义 33

2.2 去中心化的方法 35

2.2.1 去中介 35

2.2.2 竞争驱动的去中心化 36

2.3 去中心化的途径 38

2.3.1 去中心化的思路 38

2.3.2 去中心化框架示例 39

2.4 生态系统的去中心化 39

2.4.1 存储 39

2.4.2 通信 40

2.4.3 计算能力和去中心化 41

2.5 智能合约 43

2.6 去中心化组织 43

2.6.1 去中心化自治组织 43

2.6.2 去中心化自治公司 44

2.6.3 去中心化自治社团 44

2.6.4 去中心化应用程序 45

2.7 去中心化应用程序 45

2.7.1 去中心化应用程序的要求 45

2.7.2 去中心化应用程序和移动App的区别 46

2.7.3 KYC链 46

2.7.4 OpenBazaar 46

2.7.5 Lazooz 47

2.8 去中心化的平台 47

2.8.1 以太坊 47

2.8.2 MaidSafe 48

2.8.3 Lisk 48

2.9 小结 48

第3章 对称密码学 49

3.1 使用OpenSSL命令行 49

3.2 密码学简介 50

3.3 密码学的数学基础 51

3.3.1 集合 51

3.3.2 群 51

3.3.3 域 51

3.3.4 有限域 52

3.3.5 阶 52

3.3.6 阿贝尔群 52

3.3.7 质数域 52

3.3.8 环 52

3.3.9 循环群 52

3.3.10 模运算 53

3.4 密码学模型 53

3.5 现代信息安全的基本要求 54

3.5.1 保密性 54

3.5.2 完整性 54

3.5.3 可认证性 54

3.5.4 不可否认性 56

3.5.5 可追责性 56

3.6 密码学原语 57

3.7 对称密码学介绍 58

3.7.1 流密码 58

3.7.2 分组密码 59

3.8 分组密码的加密模式 61

3.8.1 电子密码本 61

3.8.2 密码块链接 62

3.8.3 计数器模式 62

3.9 密钥流生成模式 63

3.9.1 消息认证模式 63

3.9.2 加密哈希模式 64

3.10 数据加密标准 64

3.10.1 高级加密标准 64

3.10.2 AES工作原理 65

3.11 小结 68

第4章 公钥密码学 69

4.1 非对称密码学 70

4.1.1 整数分解 72

4.1.2 离散对数 72

4.1.3 椭圆曲线 73

4.2 公钥和私钥 73

4.3 RSA算法原理 74

4.3.1 RSA算法步骤 74

4.3.2 使用RSA进行加密和解密 75

4.4 椭圆曲线密码学 75

4.4.1 ECC背后的数学 75

4.4.2 点加法 76

4.4.3 点加倍 78

4.5 ECC中的离散对数问题 80

4.6 在OpenSSL中使用RSA算法 82

4.6.1 RSA公钥和私钥对 82

4.6.2 加密与解密 85

4.7 在OpenSSL中使用ECC算法 86

4.7.1 查看ECC标准 86

4.7.2 生成私钥 87

4.8 哈希函数的属性 89

4.8.1 将任意消息压缩为固定长度的摘要 89

4.8.2 易于计算 89

4.8.3 原像抗性 90

4.8.4 次原像抗性 90

4.8.5 抗碰撞性 90

4.9 消息摘要算法 91

4.10 安全哈希算法 91

4.11 安全哈希算法的设计 92

4.11.1 SHA-256的设计 93

4.11.2 SHA-3(Keccak)的设计 94

4.12 哈希函数的OpenSSL示例 95

4.13 消息认证码 95

4.13.1 使用分组密码的MAC 95

4.13.2 基于哈希的MAC 96

4.14 默克尔树 97

4.15 帕特里夏树 97

4.16 分布式哈希表 98

4.17 数字签名 99

4.17.1 RSA数字签名算法 99

4.17.2 先签名后加密 100

4.17.3 先加密后签名 100

4.17.4 椭圆曲线数字签名算法 101

4.17.5 使用OpenSSL生成数字签名 102

4.17.6 使用OpenSSL的ECDSA 103

4.18 同态加密 105

4.19 签密 106

4.20 零知识证明 106

4.21 盲签名 107

4.22 编码方案 107

4.23 金融市场和交易基础知识 107

4.23.1 金融市场 108

4.23.2 交易 108

4.23.3 交易所 109

4.23.4 订单和订单属性 109

4.23.5 订单管理和路由系统 109

4.23.6 交易票证 110

4.23.7 基础工具 110

4.23.8 金融工具的一般属性 110

4.23.9 经济特征 111

4.23.10 销售 111

4.23.11 交易对手 111

4.23.12 交易生命周期 111

4.23.13 庄家 112

4.23.14 操纵市场 112

4.24 小结 113

第5章 比特币详解 115

5.1 比特币的由来 115

5.1.1 比特币背后的理论基础 116

5.1.2 比特币的出现和监管争议 118

5.1.3 比特币的定义 120

5.1.4 从用户角度观察比特币 121

5.1.5 向某人付款 121

5.2 数字密钥和地址 127

5.2.1 比特币中的私钥 127

5.2.2 比特币中的公钥 128

5.2.3 比特币中的地址 129

5.2.4 Base58Check编码 130

5.2.5 虚荣地址 131

5.2.6 多签名地址 132

5.3 比特币交易 132

5.3.1 交易生命周期 132

5.3.2 交易费 133

5.3.3 交易池 133

5.3.4 交易数据结构 133

5.3.5 交易类型 137

5.3.6 币基交易 140

5.3.7 合约 140

5.3.8 交易验证 141

5.3.9 交易延展性 141

5.4 区块链的结构 142

5.4.1 区块的结构 142

5.4.2 区块标头的结构 143

5.4.3 创世区块 145

5.5 挖矿 147

5.5.1 矿工的任务 148

5.5.2 挖矿奖励 149

5.5.3 工作量证明 149

5.5.4 挖矿算法 149

5.5.5 哈希率 152

5.5.6 挖矿系统 153

5.5.7 矿池 155

5.6 小结 158

第6章 比特币网络和支付 159

6.1 比特币网络 159

6.1.1 比特币网络的节点 159

6.1.2 比特币网络常用协议消息 160

6.1.3 Wireshark 164

6.1.4 BIP 37和布隆过滤器 166

6.2 比特币钱包 167

6.2.1 非确定性钱包 168

6.2.2 确定性钱包 168

6.2.3 分层确定性钱包 168

6.2.4 脑钱包 169

6.2.5 纸钱包 169

6.2.6 硬件钱包 170

6.2.7 在线钱包 170

6.2.8 移动钱包 170

6.3 比特币支付 171

6.4 比特币的创新 173

6.4.1 比特币改进提案 174

6.4.2 高级协议 174

6.4.3 隔离见证 175

6.4.4 Bitcoin Cash 175

6.4.5 Bitcoin Unlimited 176

6.4.6 Bitcoin Gold 176

6.4.7 比特币投资和买卖比特币 177

6.5 小结 178

第7章 比特币客户端和API 179

7.1 比特币客户端的安装 179

7.2 Bitcoin Core客户端的类型 180

7.2.1 Bitcoind 180

7.2.2 Bitcoin-cli 180

7.2.3 Bitcoin-qt 181

7.3 设置比特币网络节点 181

7.4 设置源代码 182

7.5 设置bitcoin.conf 183

7.6 在测试网中启动节点 183

7.7 以regtest模式启动节点 184

7.8 使用Bitcoin-cli进行实验 184

7.9 比特币编程和命令行接口 186

7.10 小结 187

第8章 山寨币 189

8.1 山寨币现状 190

8.1.1 山寨币的由来 190

8.1.2 吸引用户的方法 190

8.1.3 山寨币的交易 191

8.2 工作量证明方案的替代方法 193

8.2.1 存储证明 195

8.2.2 权益证明 196

8.3 各种权益类型 197

8.3.1 币龄证明 197

8.3.2 存款证明 197

8.3.3 燃烧证明 197

8.3.4 活动证明 197

8.4 不可外包的难题 198

8.5 难度目标重新调整算法 198

8.5.1 Kimoto重力井 199

8.5.2 黑暗重力波 200

8.5.3 DigiShield 200

8.5.4 多间隔难度调整系统 201

8.6 比特币的局限性 201

8.6.1 隐私和匿名性 202

8.6.2 比特币之上的扩展协议 203

8.7 开发山寨币 206

8.7.1 共识算法 207

8.7.2 哈希算法 207

8.7.3 难度目标重新调整算法 207

8.7.4 块间时间 207

8.7.5 区块奖励 208

8.7.6 奖励减半率 208

8.7.7 区块大小和交易大小 208

8.7.8 利率 208

8.7.9 币龄 208

8.7.10 硬币总供应 208

8.8 域名币 209

8.8.1 Zooko三角形 209

8.8.2 合并挖矿 210

8.8.3 域名币交易 211

8.8.4 获取域名币 211

8.8.5 生成域名币记录 214

8.9 莱特币 216

8.9.1 Scrypt函数 216

8.9.2 莱特币交易 218

8.9.3 莱特币挖矿 219

8.9.4 软件源代码和钱包 219

8.10 质数币 220

8.10.1 质数币交易 220

8.10.2 质数币挖矿指南 221

8.11 Zcash 223

8.11.1 Zcash交易 225

8.11.2 采矿指南 226

8.11.3 地址生成 228

8.11.4 GPU挖矿 229

8.11.5 下载并编译nheqminer 230

8.11.6 首次代币发行 231

8.11.7 ERC20代币接口 232

8.12 小结 233

第9章 智能合约 235

9.1 智能合约的历史 235

9.2 智能合约的定义 236

9.3 李嘉图合约 238

9.4 智能合约模板 241

9.5 Oracle 243

9.6 智能Oracle 245

9.7 在区块链上部署智能合约 245

9.8 DAO黑客入侵事件 247

9.9 小结 247

第10章 以太坊入门 249

10.1 以太坊简介 249

10.1.1 黄皮书 250

10.1.2 有用的数学符号 251

10.1.3 以太坊区块链 251

10.2 从用户角度观察以太坊 252

10.3 以太坊网络 256

10.3.1 主网 256

10.3.2 测试网络 256

10.3.3 私有网络 256

10.4 以太坊生态系统的组成部分 257

10.4.1 密钥和地址 258

10.4.2 账户 259

10.4.3 账户类型 259

10.5 交易和消息 260

10.5.1 合约创建交易 263

10.5.2 消息调用交易 264

10.5.3 消息 264

10.5.4 调用 266

10.5.5 交易验证和执行 266

10.5.6 交易子状态 266

10.6 以太坊区块链中的状态存储 267

10.6.1 世界状态 267

10.6.2 账户状态 267

10.6.3 交易收据 269

10.7 以太币 270

10.8 以太坊虚拟机 271

10.8.1 执行环境 273

10.8.2 机器状态 275

10.8.3 迭代器函数 275

10.9 智能合约 276

10.10 本地合约 276

10.11 小结 278


前言/序言

本书的目标是介绍区块链技术的理论和实践两方面的内容。自本书第1版出版以来,区块链技术又出现了很多改变和进步,因此也就有了更新本书的需要。

实施区块链技术可以带来诸多好处,这已引起学术界和行业研究人员的浓厚兴趣,他们正在持续不懈地研究该技术,并且涌现了许多相关的联盟、工作组、项目和专业机构,它们参与了该技术的开发和进一步发展的工作。

本书第2版将对去中心化、智能合约以及以太坊、比特币和Hyperledger Fabric等各种区块链平台进行深入介绍。阅读完本书之后,读者将能够对区块链技术的内部运作有深入的了解,并能够开发区块链应用程序。

本书涵盖与区块链技术相关的所有主题,包括密码学、加密货币、比特币、以太坊以及用于区块链开发的各种其他平台和工具。如果读者对计算机科学有基本的了解,并具有基本的编程经验,那么将从本书中充分受益。

如果读者没有任何编程经验,也不妨碍轻松阅读本书,因为本书在必要时会提供相关的背景资料。

本书读者

本书适用于希望深入了解区块链的任何人,区块链应用程序的开发人员可以将其用作参考书。本书既可以用作与区块链技术和加密货币相关课程的教科书,也可以用作与加密货币和区块链技术相关的各种考试和认证的学习资料。

内容介绍

本书共包含19章,具体内容如下。

第1章“区块链入门”。详细阐释了区块链技术所基于的分布式计算的基本概念,讨论了区块链的历史、定义、相关术语、通用元素和类型等,并介绍了作为区块链技术核心的各种共识机制。

第2章“去中心化”。阐述了去中心化的概念及其与区块链技术的关系,介绍了可用于去中心化过程或系统去中心化的各种方法或平台。

第3章“对称密码学”。介绍了对称密码学的理论基础,这对于理解如何提供各种安全服务(如机密性和完整性)是必不可少的。

第4章“公钥密码学”。通过实际示例介绍了诸如RSA算法和ECC算法、公钥和私钥、数字签名和哈希函数之类的概念,介绍了金融市场和交易基础知识,因为在金融领域存在许多有趣的区块链技术用例。

第5章“比特币详解”。从定义、交易执行、区块链结构和挖矿等多方面介绍了比特币,这是第一个区块链,也是目前市值最大和交易最活跃的区块链。此外,还详细介绍了与比特币加密货币有关的技术概念。

第6章“比特币网络和支付”。详细介绍了比特币网络、相关协议和各种比特币钱包。此外,还介绍了比特币改进提案、比特币交易和支付等。

第7章“比特币客户端和API”。介绍了可用于构建比特币应用程序的各种比特币客户端和编程API。

第8章“山寨币”。详细解释了山寨币的由来、工作量证明方案的替代方法、各种权益类型和难度目标重新调整算法等,并介绍了山寨币的开发和不同山寨币的示例。

第9章“智能合约”。对智能合约进行了深入的讨论,介绍了诸如智能合约的历史、智能合约的定义、李嘉图合约、Oracle,以及在区块链上部署智能合约等主题。

第10章“以太坊入门”。详细介绍了以太坊区块链的设计和架构,讨论了与以太坊区块链相关的各种技术概念,深入解释了该平台的基本原理、功能和组件。

第11章“深入了解以太坊”。阐述了更多与以太坊相关的内容,包括编程语言和操作码、区块和区块链、节点和矿工、钱包和客户端软件、API和工具、支持协议等。

第12章“以太坊开发环境”。讨论了与以太坊智能合约开发和编程有关的主题,包括建立一个私有网络和启动网络等。

第13章“开发工具和框架”。详细介绍了Solidity编程语言以及用于以太坊开发的各种相关工具和框架。

第14章“Web3详解”。介绍了使用以太坊区块链开发去中心化应用程序和智能合约,并对Web3 API进行了详细介绍,同时列举了多个实际示例。

第15章“超级账本”。讨论了来自Linux基金会的Hyperledger项目,包括Fabric、Sawtooth Lake和Corda等。

第16章“替代区块链”。介绍了各种替代区块链的解决方案和平台,提供了替代区块链和相关平台的技术细节和功能。

第17章“区块链—代币之外的应用”。对区块链技术在除加密货币以外的领域(包括物联网、政府治理、媒体和金融等)的应用进行了实用而详细的介绍。

第18章“可伸缩性和其他挑战”。讨论了区块链技术面临的挑战(主要包括可伸缩性、隐私保护和安全性),以及如何应对这些挑战。

第19章“当前发展和未来展望”。介绍了区块链技术的新兴趋势和挑战、区块链研究和项目、区块链开发工具等。此外,还介绍了对区块链技术未来发展的一些预测。

充分利用本书

? 本书中的所有示例均在Ubuntu 16.04.1 LTS(Xenial)和macOS 10.13.2版本上开发。因此,建议使用Ubuntu或任何其他类似UNIX的系统。当然,也可以使用任何其他操作系统(如Windows或Linux),只不过书中的示例(尤其是与安装相关的示例)就可能需要进行相应的更改。

? 本书使用OpenSSL 1.0.2g命令行工具开发了与加密相关的示例。

? 以太坊Solidity示例是使用Remix IDE开发的,其下载地址如下:


https://remix.ethereum.org


? 本书以太坊示例是使用以太坊拜占庭版本开发的,其下载地址如下:


https://www.ethereum.org/


? Vilros使用Raspberry Pi套件开发了与物联网相关的示例,但它也可以使用任何其他模型或工具套件。具体来说,Raspberry Pi 3 Model B 1.2版本可用于构建物联网的硬件示例。Node.js 8.9.3版本和npm 5.5.1版本已用于下载相关软件包并运行物联网示例的Node.js服务器。

? Truffle框架已用于智能合约部署的一些示例中,其下载地址如下:


http://truffleframework.com/


通过npm提供的任何最新版本都应该是合适的。

下载示例代码文件

读者可以从www.packtpub.com下载本书的示例代码文件。具体步骤如下:

(1)登录或注册www.packtpub.com。

(2)在Search(搜索)框中输入本书名称Mastering Blockchain的一部分(不区分大小写,并且不必输入完全),即可看到本书出现在推荐下拉菜单中,如图P-1所示。

图P-1

(3)单击选择Mastering Blockchain-Second Edition(本书英译名称),在其详细信息页面中单击Download code files(下载代码文件)按钮,如图P-2所示。需要说明的是,读者需要登录此网站才能看到该下载按钮(注册账号是免费的)。

下载文件后,请确保使用下列软件的最新版本解压或析取文件夹中的内容:

? WinRAR/7-Zip(Windows系统)。

? Zipeg/iZip/UnRarX(Mac系统)。

图P-2

? 7-Zip/PeaZip(Linux系统)。

本书的代码包也已经在GitHub上托管,对应网址如下:


https://github.com/PacktPublishing/Mastering-Blockchain-Second-Edition


在该页面上,单击Code(代码)按钮,然后选择Download ZIP即可下载本书代码包,如图P-3所示。

如果代码有更新,则会在现有GitHub存储库上更新。

图P-3

下载彩色图像

我们还提供了一个PDF文件,其中包含本书中使用的屏幕截图/图表的彩色图像,可以通过以下地址下载:


http://www.packtpub.com/sites/default/files/downloads/MasteringBlockchainSecondEdition_ ColorImages.pdf

本书约定

本书中使用了许多文本约定。

(1)CodeInText:表示文本中的代码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟URL和用户输入等。以下段落就是一个示例。


POST是HTTP支持的请求方法。有关POST的更多信息,请访问以下网址。


https://en.wikipedia.org/wiki/POST_(HTTP)


(2)有关代码块的设置如下所示:


pragma solidity ^0.4.0;

contract TestStruct {

struct Trade

{

uint tradeid;

uint quantity;

uint price;

string trader;

}


// 该结构可以按以下方式初始化和使用


Trade tStruct=Trade({tradeid:123,quantity:1,price:1,trader:"equinox"});


}


(3)当要强调代码块的特定部分时,相关行或项目以粗体显示:


pragma solidity ^0.4.0;

contract TestStruct {

struct Trade

{

uint tradeid;

uint quantity;

uint price;

string trader;

}


// 该结构可以按以下方式初始化和使用


Trade tStruct=Trade({tradeid:123,quantity:1,price:1,trader:"equinox"});


}


(4)任何命令行输入或输出都采用如下所示的粗体代码形式:


$ sudo apt-get install solc


(5)术语或重要单词采用中英文对照形式,在括号内保留其英文原文。示例如下:


该文件包含各种元素,最重要的是应用程序二进制接口(Application Binary Interface,ABI),可以使用geth来查询它。通过Solidity编译器可生成该文件,也可以直接从Remix IDE合约详细信息中复制它。


(6)对于界面词汇则保留其英文原文,在后面使用括号添加其中文翻译。示例如下:


请注意,在上面的屏幕截图中,有许多字段,例如From(付款人的地址)、To(收款人的地址)、BTC(比特币)、GBP(英镑)和Fee(费用)。这些字段的意思不言而喻,但值得一提的是,Fee是根据交易规模的大小来计算的,而Fee Rate(费率)则是一个取决于网络中交易的数量的值。


(7)本书还使用了以下两个图标。

表示警告或重要的注意事项。

表示提示或小技巧。