[套装书]区块链应用开发实战+精通区块链编程:加密货币原理、方法和应用开发(原书第2版)(2册)

作者
袁钧涛 安德烈亚斯·M.安东波罗斯
丛书名
区块链技术丛书
出版社
机械工业出版社
ISBN
9782008181411
简要
简介
内容简介书籍计算机书籍 ---------------------------区块链应用开发实战--------------------------- 区块链正在进入一个爆炸式发展的时期,真实应用在多个行业并获得了强劲的动力,加密货币也在整个金融领域获得了更多的认可。对于技术人员来说,无论是技术研究还是商业探索,区块链都是最有吸引力的方向之一。基于当今最先进和最健壮的区块链编程模型和架构模型,本书为构建区块链应用提供了实用指南。 ---------------------------精通区块链编程:加密货币原理、方法和应用开发(原书第2版)--------------------------- 区块链的热度无须赘言。该书从基础技术层面解读开放区块链编程技术在金融领域的应用原理、实践及趋势。本书主要面向程序员,书中详细介绍了加密货币的原理、使用方法,以及如何开发与之相关的软件。对希望理解比特币及加密货币内在工作机制的非程序员读者们,本书前几章还深入介绍了比特币概念及其原理。
目录



---------------------------区块链应用开发实战---------------------------


推荐序一
推荐序二 网络先行,应用为王
译者序 Web3,区块链后花园的姹紫嫣红
致谢
第一部分 区块链入门
第1章 区块链简介 2
1.1 区块链 2
1.2 协作账本 3
1.3 加密数字货币 4
1.4 智能合约 5
1.5 免信任网络 5
1.6 新的协作方式 6
1.7 胖协议 6
1.8 我们相信代码 7
1.9 本章小结 8
第2章 达成共识 9
2.1 什么是区块链共识 9
2.2 PoW 10
2.3 PoS 10
2.4 DPoS 12
2.5 本章小结 12
第3章 第一个区块链应用 13
3.1 智能合约 14
3.2 前端的HTML 17
3.3 JavaScript和web3.js 18
3.4 实战 18
3.5 分享Dapp 19
3.6 本章小结 20
第二部分 走近以太坊
第4章 以太坊入门 22
4.1 BUIDL方式 23
4.2 BUIDL简易开发 25
4.3 本章小结 35
第5章 概念与工具 36
5.1 以太坊钱包和基本概念 36
5.2 Etherscan 38
5.3 TestRPC 39
5.4 通过GETH与以太坊交互 41
5.5 通过Web3与以太坊交互 42
5.6 运行一个以太坊节点 43
5.7 运行一个私有以太坊网络 44
5.8 本章小结 45
第6章 智能合约 46
6.1 重温“Hello,World!” 46
6.2 学习智能合约编程 48
6.3 构建和部署智能合约 50
6.4 调用智能合约函数 55
6.5 一种新语言 59
6.6 更多智能合约语言 61
6.7 本章小结 62
第7章 Dapp 63
7.1 Dapp软件栈 64
7.2 Dapp示例 66
7.3 本章小结 68
第8章 Dapp的替代方案 69
8.1 JavaScript 69
8.2 Python及其他 73
8.3 本章小结 74
第三部分 深入以太坊
第9章 以太坊揭秘 76
9.1 什么是区块链状态 76
9.2 以太坊的状态 78
9.3 前缀树(或树) 80
9.4 以太坊的前缀树结构 83
9.5 分析以太坊数据库 85
9.6 本章小结 88
第10章 区块链数据服务 89
10.1 区块链浏览器 89
10.2 收集数据 93
10.3 查询接口 99
10.4 下一步是什么 103
10.5 本章小结 104
第11章 智能合约搜索引擎 105
11.1 智能合约搜索引擎简介 105
11.2 开始使用智能合约搜索引擎 107
11.3 FairPlay Dapp示例 111
11.4 用例 114
11.5 本章小结 115
第12章 智能合约的安全性和最佳实践 116
12.1 以太坊智能合约的重大非法入侵和漏洞 116
12.2 智能合约安全的最佳实践 123
12.3 本章小结 125
第13章 以太坊的未来 126
13.1 以太坊1.0 127
13.2 超越以太坊1.0 130
13.3 以太坊2.0 133
13.4 以太坊2.0的交付阶段 134
13.5 后以太坊2.0的创新 135
13.6 本章小结 135
第四部分 构建应用协议
第14章 扩展以太坊协议 138
14.1 完全兼容,但更快捷 139
14.2 EVM的智能增强 139
14.3 安全第一 144
14.4 本章小结 144
第15章 扩展以太坊工具 145
15.1 智能合约工具集 146
15.2 Dapp工具集 152
15.3 本章小结 156
第16章 Dapp案例 157
16.1 案例研究1:Valentines 157
16.2 案例研究2:WeBet 161
16.3 本章小结 177
第17章 业务规则与合约 178
17.1 一个示例 179
17.2 规则语言 181
17.3 更多业务示例 185
17.4 本章小结 188
第18章 构建特定于应用的EVM 189
18.1 使用libENI函数 190
18.2 写一个libENI函数 196
18.3 部署libENI函数 198
18.4 本章小结 199
第五部分 构建自己的区块链
第19章 开始使用Tendermint 202
19.1 Tendermint的工作原理 203
19.2 工作流程 203
19.3 搭建Tendermint节点 205
19.4 搭建Tendermint网络 207
19.5 本章小结 208
第20章 业务逻辑 209
20.1 协议 210
20.2 应用示例 212
20.3 Cosmos SDK 222
20.4 本章小结 223
第21章 创建一个区块链客户端 224
21.1 方法概述 225
21.2 应用样例 226
21.3 本章小结 230
第六部分 加密经济学
第22章 通证设计的加密经济学 232
22.1 网络效用通证 232
22.2 应用效用通证 235
22.3 证券通证 235
22.4 通证的估值 236
22.5 高级主题 240
22.6 本章小结 242
第23章 ICO 243
23.1 简短的历史 243
23.2 ICO的效用 244
23.3 ICO与传统股权融资的对比 246
23.4 评估一个ICO项目 248
23.5 ICO的参与风险 249
23.6 本章小结 250
第24章 加密货币交易所 251
24.1 交易所的类型 251
24.2 去中心化交易所 253
24.3 产品和服务 254
24.4 本章小结 255
附录A 开始使用CyberMiles 256



---------------------------精通区块链编程:加密货币原理、方法和应用开发(原书第2版)---------------------------


前言1
第1章 比特币介绍9
1.1 比特币是什么9
1.2 比特币历史11
1.3 比特币的使用、用户及用户场景12
1.4 入门13
1.4.1 选择比特币钱包13
1.4.2 快速入门15
1.4.3 获取比特币17
1.4.4 查询比特币当前价格18
1.4.5 发送和接收比特币18
第2章 比特币的工作原理21
2.1 交易、区块、挖矿和区块链21
2.1.1 比特币概述21
2.1.2 购买一杯咖啡22
2.2 比特币交易24
2.2.1 交易输入和输出24
2.2.2 交易链25
2.2.3 找零25
2.2.4 常见的交易形式26
2.3 交易的构建27
2.3.1 获取正确的输入27
2.3.2 创建交易输出29
2.3.3 将交易加入账簿30
2.4 比特币挖矿31
2.5 在区块中挖掘交易32
2.6 消费交易33
第3章 比特币核心客户端:参考实现35
3.1 比特币开发环境36
3.2 从源码编译比特币核心36
3.2.1 选择比特币核心版本37
3.2.2 配置比特币核心生成38
3.2.3 生成比特币核心可执行文件40
3.3 运行比特币核心节点41
3.3.1 首次运行比特币核心42
3.3.2 配置比特币核心节点43
3.4 比特币核心客户端应用程序编程接口(API)46
3.4.1 获得比特币核心客户端状态信息47
3.4.2 探究和解码交易48
3.4.3 探究区块50
3.4.4 使用比特币核心的编程接口51
3.5 其他替代客户端、库和工具包54
3.5.1 C/C++类54
3.5.2 JavaScript类54
3.5.3 Java类54
3.5.4 Python类54
3.5.5 Ruby类55
3.5.6 Go类55
3.5.7 Rust类55
3.5.8 C#类55
3.5.9 Objective-C类55
第4章 密钥和地址56
4.1 简介56
4.1.1 公钥密码学和加密货币57
4.1.2 私钥和公钥58
4.1.3 私钥58
4.1.4 公钥60
4.1.5 椭圆曲线密码学60
4.1.6 创建公钥63
4.2 比特币地址64
4.2.1 Base58和Base58Check编码66
4.2.2 密钥的格式69
4.3 用Python实现密钥和比特币地址74
4.4 高级密钥和地址78
4.4.1 加密私钥(BIP-38)78
4.4.2 P2SH和多重签名地址79
4.4.3 靓号地址80
4.4.4 纸钱包85
第5章 钱包88
5.1 钱包技术概述88
5.1.1 非确定性(随机)钱包89
5.1.2 确定性(种子)钱包90
5.1.3 分层确定性钱包(BIP-32/BIP-44)90
5.1.4 种子和助记词(BIP-39)91
5.1.5 钱包最佳实践91
5.1.6 使用比特币钱包92
5.2 钱包技术细节93
5.2.1 助记词编码标准(BIP-39)93
5.2.2 从种子中创造HD钱包99
5.2.3在网店中使用扩展公钥103
第6章 交易108
6.1 简介108
6.2 交易细节108
6.3 交易的输出和输入110
6.3.1 交易输出111
6.3.2 交易输入113
6.3.3 交易费117
6.3.4 把交易费加到交易中118
6.4 交易脚本和脚本语言120
6.4.1 非图灵完备性121
6.4.2 无状态验证121
6.4.3 脚本构建(锁定与解锁)121
6.4.4 P2PKH124
6.5 数字签名(ECDSA)126
6.5.1 数字签名如何工作127
6.5.2 验证签名128
6.5.3 签名散列类型(SIGHASH)129
6.5.4 ECDSA数学131
6.5.5 随机性在签名中的重要性132
6.6 比特币地址、余额和其他摘要133
第7章 高级交易及脚本136
7.1 简介136
7.2多重签名136
7.3 P2SH138
7.3.1 P2SH地址140
7.3.2 P2SH的优点140
7.3.3赎回脚本和标准确认141
7.4 数据记录输出(RETURN操作符)141
7.5时间锁143
7.5.1交易锁定时间143
7.5.2检查锁定时间验证144
7.5.3相对时间锁146
7.5.4 带nSequence的相对时间锁146
7.5.5 带CSV的相对时间锁147
7.5.6 过去中位时间148
7.5.7针对费用狙击的时间锁149
7.6 具有条件控制的脚本(条件语句)149
7.6.1带有VERIFY操作码的条件语句150
7.6.2 在脚本中使用流控制151
7.7复杂的脚本示例153
第8章 比特币网络155
8.1 点对点网络架构155
8.2 节点类型和角色156
8.3 扩展比特币网络158
8.4 比特币中继网络158
8.5 网络发现160
8.6 全节点163
8.7 交换“库存清单”164
8.8 简易支付验证(SPV)节点165
8.9 Bloom过滤器168
8.10 SPV节点如何使用Bloom过滤器171
8.11 SPV节点和隐私172
8.12 加密与认证连接173
8.12.1 Tor传输173
8.12.2 P2P认证和加密174
8.13 交易池174
第9章 区块链176
9.1 简介176
9.2 区块结构177
9.3 区块头177
9.4 区块标识符:区块头散列值和区块高度178
9.5创世区块179
9.6 链接区块链中的区块180
9.7 默克尔树182
9.8 默克尔树和简单支付验证186
9.9 比特币的测试链187
9.9.1 testnet—比特币的试验场187
9.9.2 segnet—隔离见证测试网189
9.9.3 regtest—本地区块链189
9.10 使用测试区块链进行开发190
第10章 挖矿和共识191
10.1 简介191
10.2 去中心化共识194
10.3 交易的独立校验195
10.4 挖矿节点196
10.5 打包交易至区块197
10.5.1 创币交易198
10.5.2 创币奖励与矿工费199
10.5.3 创币交易的结构201
10.5.4 创币交易数据202
10.6 构造区块头203
10.7 挖掘区块205
10.7.1 工作量证明算法205
10.7.2 难度目标值表示210
10.7.3 重定目标实现调整难度211
10.8 成功挖出区块213
10.9 验证新区块214
10.10 区块链的组装与选择214
10.11 挖矿和算力竞争221
10.11.1 随机数升位方案223
10.11.2 矿池223
10.12 共识攻击226
10.13 改变共识规则229
10.13.1 硬分叉229
10.13.2 硬分叉:软件、网络、挖矿和链230
10.13.3 分离矿工和难度231
10.13.4 有争议的硬分叉232
10.13.5 软分叉232
10.13.6 对软分叉的批评234
10.14 使用区块版本发出软分叉信令234
10.14.1 BIP-34信令和激活234
10.14.2 BIP-9信令和激活235
10.15 共识软件开发237
第11章 比特币的安全239
11.1 安全原则239
11.1.2 安全地开发比特币系统240
11.1.3 信任根241
11.2 用户安全最佳实践241
11.2.1 比特币物理存储242
11.2.2 硬件钱包242
11.2.3 平衡风险243
11.2.4 分散风险243
11.2.5 多重签名和治理243
11.2.6 生存能力243
11.3 结论244
第12章 比特币应用245
12.1 简介245
12.2 基础模块(要素)245
12.3 源于基础模块的应用247
12.4 染色币248
12.4.1 使用染色币249
12.4.2 发行染色币249
12.4.3 染色币交易249
12.5 合约币252
12.6 支付通道和状态通道253
12.6.1 状态通道基本概念和术语254
12.6.2 简单支付通道示例254
12.6.3 制造无须信任的通道257
12.6.4 非对称可撤销承诺260
12.6.5 散列时间锁合约263
12.7 路由支付通道(闪电网络)264
12.7.1 闪电网络示例264
12.7.2 闪电网络传输和路由267
12.7.3 闪电网络优势269
12.8 结论270
附录A 比特币白皮书271
附录B 交易脚本语言操作符、常量和符号282
附录C 比特币改进建议287
附录D 隔离见证296
附录E Bitcore308
附录F pycoin库、实用秘钥及交易程序311
附录G 比特币浏览器命令320



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4