新書推薦:
《
海洋、岛屿和革命:当南方遭遇帝国(文明的另一种声音)
》
售價:NT$
485.0
《
铝合金先进成型技术
》
售價:NT$
1214.0
《
英雄之旅:把人生活成一个好故事
》
售價:NT$
398.0
《
分析性一体的涌现:进入精神分析的核心
》
售價:NT$
556.0
《
火枪与账簿:早期经济全球化时代的中国与东亚世界
》
售價:NT$
352.0
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
|
編輯推薦: |
实施区块链技术可以带来诸多好处,这已引起学术界和行业研究人员的浓厚兴趣,他们正在持续不懈地研究该技术,并且涌现了许多相关的联盟、工作组、项目和专业机构,它们参与了该技术的开发和进一步发展的工作。
|
內容簡介: |
《精通区块链开发技术(第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
第11章 深入了解以太坊 279
11.1 以太坊编程语言和操作码 279
11.1.1 运行时字节码 280
11.1.2 操作码及其含义 281
11.1.3 算术运算 281
11.1.4 逻辑运算 282
11.1.5 加密运算 282
11.1.6 环境信息 282
11.1.7 区块信息 283
11.1.8 堆栈、内存、存储和流操作 284
11.1.9 入栈操作 284
11.1.10 复制操作 285
11.1.11 交换操作 285
11.1.12 日志操作 285
11.1.13 系统操作 286
11.2 区块和区块链 287
11.2.1 区块标头 287
11.2.2 创世区块 289
11.2.3 区块验证机制 290
11.2.4 区块的最终确定 290
11.2.5 区块难度 291
11.2.6 燃料 292
11.2.7 费用计划 293
11.2.8 区块链中的分叉 293
11.3 节点和矿工 294
11.3.1 共识机制 295
11.3.2 Ethash算法 296
11.3.3 CPU挖矿 297
11.3.4 GPU挖矿 298
11.3.5 基准测试 299
11.3.6 挖矿设备 299
11.3.7 矿池 301
11.4 钱包和客户端软件 301
11.4.1 Geth 302
11.4.2 Eth 302
11.4.3 Pyethapp 302
11.4.4 Parity 302
11.4.5 轻客户端 302
11.4.6 安装 303
11.4.7 Eth安装 303
11.4.8 Mist浏览器 303
11.4.9 Geth客户端应用 306
11.4.10 Geth控制台 306
11.4.11 用比特币为账户注资 307
11.4.12 Parity安装 308
11.4.13 使用Parity命令行创建账户 311
11.5 API、工具和DApp 311
11.5.1 在以太坊上开发的应用程序 311
11.5.2 工具 311
11.6 支持协议 312
11.6.1 Whisper 312
11.6.2 Swarm 312
11.7 可伸缩性、安全性和其他挑战 314
11.8 交易和投资 314
11.9 小结 315
第12章 以太坊开发环境 317
12.1 测试网络 318
12.2 建立以太坊私有网络 319
12.2.1 网络ID 319
12.2.2 创世文件 319
12.2.3 数据目录 321
12.2.4 标志及其含义 321
12.2.5 静态节点 322
12.3 启动私有网络 322
12.3.1 在私有网络上运行Mist 327
12.3.2 使用Mist部署合约 329
12.3.3 私有网络/本地以太坊的区块浏览器 333
12.4 小结 335
第13章 开发工具和框架 337
13.1 以太坊开发生态系统分类 337
13.1.1 语言 339
13.1.2 编译器 339
13.2 Solidity编译器 339
13.2.1 在Linux上安装 339
13.2.2 在macOS上安装 340
13.3 集成开发环境 342
13.4 工具和库 344
13.4.1 Node 344
13.4.2 EthereumJS 344
13.4.3 Ganache 346
13.4.4 MetaMask 346
13.4.5 Truffle 348
13.5 合约开发与部署 349
13.5.1 编写 350
13.5.2 测试 351
13.6 Solidity语言 351
13.6.1 类型 351
13.6.2 值类型 351
13.6.3 布尔类型 352
13.6.4 整型 352
13.6.5 地址 353
13.6.6 常量 354
13.6.7 枚举 354
13.6.8 函数类型 354
13.6.9 引用类型 355
13.6.10 全局变量 356
13.6.11 控制结构 356
13.6.12 事件 358
13.6.13 继承 358
13.6.14 库 359
13.6.15 函数 360
13.6.16 Solidity源代码文件的组件 363
13.7 小结 364
第14章 Web3详解 365
14.1 使用Web3库 365
14.1.1 合约部署 366
14.1.2 POST请求 372
14.1.3 HTML和JavaScript前端 373
14.2 安装和使用Web3.js 374
14.2.1 示例 375
14.2.2 创建一个Web3对象 377
14.2.3 通过调用任何Web3方法检查可用性 377
14.2.4 合约函数 378
14.3 开发框架 380
14.4 Truffle应用示例 381
14.4.1 初始化Truffle 381
14.4.2 与合约的交互 387
14.4.3 另一个示例 389
14.4.4 示例项目—思想证明 393
14.5 关于Oracle 404
14.6 去中心化存储 405
14.6.1 安装和使用IPFS 406
14.6.2 关于Swarm协议 408
14.6.3 分布式账本 409
14.7 小结 409
第15章 超级账本 411
15.1 Hyperledger项目 411
15.1.1 Fabric 412
15.1.2 Sawtooth Lake 412
15.1.3 Iroha 413
15.1.4 Burrow 413
15.1.5 Indy 413
15.1.6 Explorer 414
15.1.7 Cello 414
15.1.8 Composer 414
15.1.9 Quilt 415
15.2 Hyperledger即协议 415
15.3 参考架构 415
15.4 Hyperledger Fabric的要求和设计目标 418
15.4.1 模块化方法 418
15.4.2 隐私性和机密性 418
15.4.3 可伸缩性 419
15.4.4 确定性交易 419
15.4.5 身份识别 419
15.4.6 可审核性 419
15.4.7 互通性 419
15.4.8 可移植性 420
15.4.9 丰富的数据查询 420
15.5 关于Fabric 420
15.5.1 Hyperledger Fabric 421
15.5.2 成员资格服务 421
15.5.3 区块链服务 422
15.5.4 共识服务 422
15.6 分布式账本 423
15.6.1 点对点协议 424
15.6.2 账本存储 425
15.6.3 链码服务 425
15.6.4 事件 426
15.6.5 API和CLI 426
15.7 Fabric组件 426
15.7.1 对等者 426
15.7.2 排序者节点 427
15.7.3 客户端 427
15.7.4 通道 427
15.7.5 世界状态数据库 427
15.7.6 交易 427
15.7.7 成员资格服务提供商 427
15.7.8 智能合约 428
15.7.9 加密服务提供商 428
15.8 区块链上的应用 428
15.8.1 链码实现 428
15.8.2 应用模式 430
15.8.3 Hyperledger Fabric中的共识 431
15.8.4 Hyperledger Fabric中的交易生命周期 431
15.9 Sawtooth Lake 434
15.9.1 消逝时间量证明 434
15.9.2 交易族 435
15.9.3 Sawtooth Lake中的共识 437
15.9.4 设置Sawtooth Lake开发环境 437
15.10 Corda 440
15.10.1 状态对象 441
15.10.2 交易 442
15.10.3 共识 442
15.10.4 流 443
15.11 Corda组件 443
15.11.1 节点 443
15.11.2 许可服务 444
15.11.3 网络映射服务 444
15.11.4 公证人服务 444
15.11.5 Oracle服务 445
15.11.6 交易 445
15.11.7 保管库 446
15.11.8 CorDapp 446
15.11.9 设置Corda开发环境 446
15.12 小结 448
第16章 替代区块链 449
16.1 Kadena 450
16.1.1 可伸缩性和机密性 450
16.1.2 Kadena的共识机制 450
16.1.3 Pact语言 451
16.1.4 Kadena区块链 454
16.2 Ripple 454
16.2.1 节点 455
16.2.2 共识 456
16.2.3 组件 457
16.2.4 交易 457
16.2.5 Interledger 459
16.3 Stellar 460
16.4 Rootstock 461
16.4.1 侧链 462
16.4.2 驱动链 462
16.5 Quorum 463
16.5.1 Transaction Manager 463
16.5.2 Crypto Enclave 463
16.5.3 QuorumChain 463
16.5.4 Network Manager 463
16.6 Tezos 464
16.7 Storj 465
16.8 MaidSafe 466
16.9 BigchainDB 467
16.10 MultiChain 467
16.11 Tendermint 467
16.11.1 Tendermint Core 468
16.11.2 Tendermint套接字协议 468
16.12 平台和框架 469
16.12.1 Eris平台 469
16.12.2 eris:db许可区块链客户端 470
16.13 小结 471
第17章 区块链—代币之外的应用 473
17.1 物联网 473
17.1.1 物理对象层 475
17.1.2 设备层 475
17.1.3 网络层 476
17.1.4 管理层 476
17.1.5 应用层 476
17.2 物联网区块链实验 480
17.2.1 下载和安装Raspbian操作系统 481
17.2.2 下载和安装Geth客户端 481
17.2.3 创建创世区块 482
17.2.4 第一个节点的设置 484
17.2.5 Raspberry Pi节点设置 484
17.2.6 安装库和依赖项 486
17.2.7 硬件组件介绍 488
17.2.8 电路 489
17.2.9 开发智能合约 489
17.2.10 部署智能合约 493
17.2.11 使用JavaScript代码交互 494
17.3 政府治理 496
17.3.1 边境管制 496
17.3.2 投票 498
17.3.3 公民身份证明(身份证) 499
17.3.4 其他事项 500
17.4 医疗卫生 500
17.5 金融 501
17.5.1 保险 501
17.5.2 交易后结算 502
17.5.3 预防金融犯罪 503
17.6 数字媒体 503
17.7 小结 504
第18章 可伸缩性和其他挑战 505
18.1 可伸缩性 505
18.1.1 网络平面 506
18.1.2 共识平面 506
18.1.3 存储平面 506
18.1.4 视图平面 507
18.1.5 区块大小增加 507
18.1.6 减少区块间隔 508
18.1.7 可逆布隆查找表 508
18.1.8 分片 508
18.1.9 状态通道 509
18.1.10 私有区块链 510
18.1.11 权益证明 510
18.2 侧链 510
18.2.1 子链 511
18.2.2 树链 511
18.2.3 加快传播时间 511
18.2.4 Bitcoin-NG 512
18.2.5 Plasma 513
18.3 隐私保护 513
18.3.1 不可区分混淆 514
18.3.2 同态加密 514
18.3.3 零知识证明 515
18.3.4 状态频道 515
18.3.5 安全多方计算 516
18.3.6 使用硬件提供机密性 516
18.3.7 CoinJoin 516
18.3.8 保密交易 517
18.3.9 MimbleWimble 517
18.4 安全性 518
18.4.1 智能合约安全性 518
18.4.2 形式验证和分析 520
18.4.3 Oyente工具 522
18.5 小结 524
第19章 当前发展和未来展望 527
19.1 区块链技术发展的新兴趋势 527
19.1.1 专用区块链 527
19.1.2 企业级区块链 528
19.1.3 私有区块链 528
19.1.4 初创企业 528
19.1.5 浓厚的研究兴趣 529
19.1.6 标准化 530
19.1.7 增强功能 530
19.1.8 现实世界中的实现 531
19.1.9 联盟 532
19.1.10 应对技术挑战 532
19.1.11 融合发展 532
19.1.12 区块链技术教育 533
19.1.13 就业机会 533
19.1.14 加密经济学 533
19.1.15 密码学研究 534
19.1.16 新的编程语言 534
19.1.17 硬件研发 534
19.1.18 形式验证方法和安全性研究 535
19.1.19 区块链的替代品 535
19.1.20 互操作性的实现 535
19.1.21 区块链即服务 536
19.1.22 减少耗电的努力 536
19.2 区块链技术发展面临的其他挑战 536
19.2.1 法规监管 536
19.2.2 负面影响 537
19.3 区块链研究主题 539
19.3.1 智能合约 539
19.3.2 集中化问题 539
19.3.3 加密功能的局限性 539
19.3.4 共识算法 540
19.3.5 可伸缩性 540
19.3.6 代码混淆 540
19.4 区块链项目简介 540
19.4.1 以太坊上的Zcash 540
19.4.2 CollCo 541
19.4.3 Cello 541
19.4.4 Qtum 541
19.4.5 Bitcoin-NG 541
19.4.6 Solidus 542
19.4.7 Hawk 542
19.4.8 Town-Crier 542
19.4.9 SETLCoin 542
19.4.10 TEEChan 542
19.4.11 Falcon 543
19.4.12 Bletchley 543
19.4.13 Casper 544
19.5 区块链开发工具简介 544
19.5.1 Microsoft Visual Studio的Solidity扩展 544
19.5.2 MetaMask 544
19.5.3 Stratis 545
19.5.4 Embark 545
19.5.5 DAPPLE 545
19.5.6 Meteor 546
19.5.7 uPort 546
19.5.8 INFURA 546
19.6 与其他行业的融合发展 546
19.7 对区块链技术未来发展的预测 547
19.8 小结 549
|
內容試閱:
|
本书的目标是介绍区块链技术的理论和实践两方面的内容。自本书第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)本书还使用了以下两个图标。
表示警告或重要的注意事项。
表示提示或小技巧。
|
|