本书是一本区块链底层开发的入门图书,全书围绕作者开发的区块链模拟器,从原理和程序实现两个方面介绍了区块链开发技术。本书共7章,书中首先通过一个数字货币发行的故事,介绍了区块链的专业术语和工作原理;然后结合区块链模拟器的程序实现过程,介绍了区块链的关键技术细节。毫不夸张地讲,本书是一本手把手带领读者学习区块链开发的图书。
本书内容通俗易懂,讲解犹如庖丁解牛,非常适合区块链开发人员作为自己的第一本区块链技术读物,也适合其他区块链爱好者作为兴趣读物。另外,本书还适合作为区块链培训班的教材,以及需要了解区块链知识的相关领导干部的学习指导书。
封面图
目录
- 前言
- 第1章 区块链原理简介1
- 1.1 区块链简要发展史2
- 1.1.1 什么是比特币2
- 1.1.2 比特币与区块链的关系2
- 1.2 什么是中心化3
- 1.2.1 交易3
- 1.2.2 数字货币3
- 1.2.3 复式记账法4
- 1.2.4 未消费交易输出6
- 1.2.5 中心化7
- 1.2.6 区块与区块链8
- 1.2.7 创世区块9
- 1.3 去中心化原理11
- 1.3.1 分布式存储12
- 1.3.2 对等网络12
- 1.3.3 交易池14
- 1.3.4 “挖矿”16
- 1.3.5 创币交易17
- 1.3.6 工作量证明18
- 1.3.7 共识与共识算法19
- 1.3.8 确认20
- 1.3.9 诚实节点和恶意节点20
- 1.3.10 区块链分叉21
- 1.3.11 双重支付24
- 1.3.12 虚拟机25
- 1.3.13 矿机和矿池26
- 1.4 遗留的问题26
- 第2章 区块链模拟器及Python入门29
- 2.1 区块链模拟器GUI简介30
- 2.1.1 为什么写区块链模拟器30
- 2.1.2 区块链模拟器GUI简介30
- 2.2 Python入门36
- 2.2.1 为什么是Python37
- 2.2.2 Python基础知识37
- 2.3 Simchain简介59
- 2.3.1 什么是Simchain59
- 2.3.2 Simchain设计61
- 2.3.3 Simchain使用67
- 2.4 区块链四要素72
- 第3章 区块链中的加密73
- 3.1 为什么需要加密74
- 3.2 如何实现加密74
- 3.2.1 哈希算法74
- 3.2.2 私钥、公钥和地址82
- 3.2.3 实数域上的椭圆曲线88
- 3.2.4 有限域上的椭圆曲线90
- 3.2.5 椭圆曲线加密97
- 3.2.6 钱包105
- 3.3 可能的破解算法111
- 3.3.1 枚举法111
- 3.3.2 BSGS算法112
- 3.3.3 Pollard's rho算法114
- 3.3.4 随机数攻击115
- 3.3.5 如何保护私钥安全117
- 3.4 格密码初探118
- 3.4.1 抗量子计算密码118
- 3.4.2 格基础知识119
- 3.4.3 格问题126
- 3.4.4 最短向量问题128
- 3.4.5 最近向量问题130
- 3.4.6 GGH数字签名133
- 3.4.7 Lyubashevshy数字签名135
- 第4章 交易141
- 4.1 创建交易142
- 4.1.1 交易的格式142
- 4.1.2 交易的数据结构143
- 4.1.3 UTXO与UTXO集151
- 4.1.4 一般交易的创建157
- 4.1.5 创币交易的创建164
- 4.2 广播交易165
- 4.3 验证交易166
- 4.3.1 一般交易的验证166
- 4.3.2 创币交易的验证174
- 4.4 交易传播中的安全174
- 4.4.1 签名明文攻击174
- 4.4.2 创币交易的安全176
- 4.5 可编程的交易177
- 4.5.1 比特币脚本177
- 4.5.2 脚本引擎的工作原理177
- 4.5.3 堆栈机LittleMachine183
- 4.5.4 多重签名191
- 4.6 交易的“一生”193
- 第5章 区块与区块链195
- 5.1 区块196
- 5.1.1 什么是区块196
- 5.1.2 区块的数据结构196
- 5.1.3 区块头200
- 5.1.4 梅克尔树的构建201
- 5.1.5 简易支付验证与SPV节点205
- 5.2 区块链211
- 5.2.1 区块链的构成211
- 5.2.2 创世区块213
- 5.2.3 区块链分类217
- 第6章 去中心化共识219
- 6.1 常见的共识算法220
- 6.1.1 区块链中的共识220
- 6.1.2 工作量证明POW221
- 6.1.3 Raft协议228
- 6.2 创建候选区块233
- 6.2.1 交易选择策略234
- 6.2.2 消失的交易234
- 6.2.3 创建创币交易234
- 6.2.4 创建候选区块237
- 6.3 挖矿、打包、广播区块239
- 6.3.1 “挖矿”239
- 6.3.2 打包候选区块239
- 6.3.3 广播区块240
- 6.4 验证区块241
- 6.5 区块链分叉244
- 6.5.1 偶然分叉244
- 6.5.2 硬分叉和软分叉247
- 6.6 添加到区块链248
- 6.6.1 比特币中的区块添加原则248
- 6.6.2 51%攻击252
- 6.6.3 Simchain中的区块添加原则253
- 6.7 区块的“一生”262
- 6.8 知识总结263
- 第7章 杂谈265
- 7.1 关于区块链常见问题的讨论266
- 7.2 关于真假区块链项目的辨别268
- 7.3 关于区块链技术的发展趋势269
- 7.3.1 抗量子密码学269
- 7.3.2 零知识证明269
- 7.3.3 代码漏洞检测271
- 7.4 关于以太坊与智能合约271
- 7.5 关于区块链应用的愿想272