区块链编程

区块链编程
作 者: 吉米·宋
出版社: 机械工业出版社
丛编项:
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: 暂缺
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Jimmy Song 是一位拥有20多年经验的开发人员,其中有5年的时间从事比特币的相关工作。 他是 bitcointechtalk.com 的编辑,也为杂志 Bitcoin Magazine撰稿,同时也是 Blockchain Capital 的合伙人以及得克萨斯州大学比特币编程课程的授课教师。 Jimmy 是Bitcoin Core(比特币核心)以及其他比特币相关项目的开发贡献者。 他也曾是比特币钱包Armory的技术副总裁。

内容简介

本书是一本区块链技术入门指南,内容涵盖密码学数学基础(包括有限域、椭圆曲线、椭圆曲线密码学)、序列化工具、交易数据的结构与传输,以及数字签名的构造与验证等。通过本书,读者将学习如何使用这种流行的加密货币及其区块链支付系统背后的基础知识,包括数学、密码学、区块、网络等。

图书目录

前言1

第1章 有限域11

学习更高等的数学11

有限域的定义12

定义有限集合12

使用Python构建有限域13

练习114

模运算14

Python的模运算16

有限域的加法和减法16

练习218

使用Python编写有限域的加法和减法18

练习319

有限域的乘法和指数运算19

练习420

练习520

使用Python编写乘法20

练习620

使用Python编写指数运算21

练习721

有限域的除法21

练习823

练习923

重新定义指数运算24

总结25

第2章 椭圆曲线26

定义26

使用Python编写椭圆曲线31

练习132

练习232

点的加法32

点加法的性质35

实现点加法37

练习338

x1≠x2时的点加法38

练习440

实现x1≠x2时的点加法40

练习540

P1 = P2时的点加法40

练习642

实现P1 = P2时的点加法42

练习742

实现另一个特例42

总结43

第3章 椭圆曲线密码学44

实数域上的椭圆曲线44

有限域上的椭圆曲线45

练习146

实现有限域上的椭圆曲线46

有限域上的点加法48

实现有限域上的点加法49

练习249

练习349

椭圆曲线的标量乘法49

练习451

再议标量乘法51

数学上的群52

恒等元53

封闭性53

可逆性54

交换律54

结合律55

练习556

实现标量乘法56

定义比特币的曲线58

使用secp256k159

公钥密码学61

签名和验证61

雕刻靶坐标62

验证的细节64

验证签名65

练习666

编程实现签名验证66

签名的细节67

创造签名67

练习768

编程实现消息签名68

总结70

第4章 序列化72

未压缩的SEC格式72

练习173

压缩的SEC格式73

练习277

DER签名77

练习379

Base5879

转录你的公钥79

练习481

地址格式81

练习582

WIF格式82

练习683

再议大端序和小端序83

练习783

练习883

练习984

总结84

第5章 交易85

交易的组成85

版本号87

练习188

输入88

解析脚本92

练习292

输出93

练习394

时间锁94

练习495

练习595

实现交易的序列化96

交易手续费96

计算交易手续费98

练习698

总结98

第6章 Script99

Script机制99

Script如何运作100

几个操作符的例子101

实现操作符101

练习1102

解析脚本字段102

实现一个Script解析工具和序列化工具103

合并脚本字段105

实现合并命令集106

标准脚本106

p2pk107

实现脚本计算110

栈元素的本质112

练习2113

p2pk的缺陷113

使用p2pkh修复问题114

p2pkh114

脚本可以被任意构建118

练习3120

脚本的使用121

练习4121

SHA-1 Pin躠ta122

总结122

第7章 交易的创建与验证123

验证交易123

校验交易输入是否可用123

校验交易输入的总和与交易输出的总和124

校验签名125

练习1129

练习2129

校验交易的全部内容129

创建交易129

构建交易130

制作交易132

签名交易133

练习3134

在测试链上创建你自己的交易134

练习4135

练习5135

总结135

第8章 支付到脚本哈希交易136

裸多签136

实现OP_CHECKMULTISIG140

练习1140

裸多签的问题141

支付到脚本哈希141

实现p2sh147

更复杂的脚本148

地址148

练习2149

练习3149

p2sh签名验证149

练习4152

练习5152

总结152

第9章 区块153

创块交易153

练习1154

签名脚本154

BIP0034155

练习2156

区块头156

练习3157

练习4157

练习5157

版本号157

练习6158

练习7159

练习8159

父区块159

默克尔根159

时间戳159

工作量160

序号160

工作量证明160

矿工如何生成新的哈希161

计算目标161

练习9162

计算难度162

练习10163

校验工作量证明163

练习11163

计算难度调整163

练习12165

练习13165

总结165

第10章 比特币网络通信166

网络消息166

练习1168

练习2168

练习3168

解析payload168

练习4169

网络握手170

连接到比特币网络170

练习5172

获取区块头信息173

练习6174

区块头响应174

总结176

第11章 简单支付验证177

动机177

默克尔树178

默克尔树的父哈希179

练习1180

默克尔父节点层数180

练习2181

默克尔根181

练习3182

区块中的默克尔根182

练习4183

默克尔树的使用183

默克尔块184

默克尔树结构186

练习5187

实现默克尔树187

默克尔块命令192

练习6193

标记位和哈希的使用193

练习7197

总结197

第12章 布隆过滤器198

什么是布隆过滤器198

练习1200

布隆过滤器进阶200

BIP0037布隆过滤器201

练习2203

练习3203

载入一个布隆过滤器203

练习4204

获取默克尔块204

练习5205

获取相关交易205

练习6206

总结206

第13章 隔离见证207

支付到见证公钥哈希207

交易的延展性207

修复延展性问题208

p2wpkh交易209

p2sh-p2wpkh212

实现p2wpkh和p2sh-p2wpkh交易216

支付到见证脚本哈希220

p2sh-p2wsh223

实现p2wsh和p2sh-p2wsh交易228

其他方面的改善230

总结230

第14章 高级主题和进阶231

推荐的学习主题231

钱包231

支付通道和闪电网络232

贡献代码232

推荐的项目233

测试链钱包233

区块链浏览器233

网上商店233

工具库234

寻找工作234

总结234

附录 练习答案235