| 作者 |
| [美] 吉米·宋(Jimmy Song) |
| 丛书名 |
| O’Reilly精品图书系列 |
| 出版社 |
| 机械工业出版社 |
| ISBN |
| 9787111652038 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 本书是一本区块链技术入门指南,内容涵盖密码学数学基础(包括有限域、椭圆曲线、椭圆曲线密码学)、序列化工具、交易数据的结构与传输,以及数字签名的构造与验证等。通过本书,读者将学习如何使用这种流行的加密货币及其区块链支付系统背后的基础知识,包括数学、密码学、区块、网络等。 |
| 目录 |
| 前言 1 第1章 有限域 11 学习更高等的数学 11 有限域的定义 12 定义有限集合 12 使用Python构建有限域 13 练习1 14 模运算 14 Python的模运算 16 有限域的加法和减法 16 练习2 18 使用Python编写有限域的加法和减法 18 练习3 19 有限域的乘法和指数运算 19 练习4 20 练习5 20 使用Python编写乘法 20 练习6 20 使用Python编写指数运算 21 练习7 21 有限域的除法 21 练习8 23 练习9 23 重新定义指数运算 24 总结 25 第2章 椭圆曲线 26 定义 26 使用Python编写椭圆曲线 31 练习1 32 练习2 32 点的加法 32 点加法的性质 35 实现点加法 37 练习3 38 x1≠x2时的点加法 38 练习4 40 实现x1≠x2时的点加法 40 练习5 40 P1 = P2时的点加法 40 练习6 42 实现P1 = P2时的点加法 42 练习7 42 实现另一个特例 42 总结 43 第3章 椭圆曲线密码学 44 实数域上的椭圆曲线 44 有限域上的椭圆曲线 45 练习1 46 实现有限域上的椭圆曲线 46 有限域上的点加法 48 实现有限域上的点加法 49 练习2 49 练习3 49 椭圆曲线的标量乘法 49 练习4 51 再议标量乘法 51 数学上的群 52 恒等元 53 封闭性 53 可逆性 54 交换律 54 结合律 55 练习5 56 实现标量乘法 56 定义比特币的曲线 58 使用secp256k1 59 公钥密码学 61 签名和验证 61 雕刻靶坐标 62 验证的细节 64 验证签名 65 练习6 66 编程实现签名验证 66 签名的细节 67 创造签名 67 练习7 68 编程实现消息签名 68 总结 70 第4章 序列化 72 未压缩的SEC格式 72 练习1 73 压缩的SEC格式 73 练习2 77 DER签名 77 练习3 79 Base58 79 转录你的公钥 79 练习4 81 地址格式 81 练习5 82 WIF格式 82 练习6 83 再议大端序和小端序 83 练习7 83 练习8 83 练习9 84 总结 84 第5章 交易 85 交易的组成 85 版本号 87 练习1 88 输入 88 解析脚本 92 练习2 92 输出 93 练习3 94 时间锁 94 练习4 95 练习5 95 实现交易的序列化 96 交易手续费 96 计算交易手续费 98 练习6 98 总结 98 第6章 Script 99 Script机制 99 Script如何运作 100 几个操作符的例子 101 实现操作符 101 练习1 102 解析脚本字段 102 实现一个Script解析工具和序列化工具 103 合并脚本字段 105 实现合并命令集 106 标准脚本 106 p2pk 107 实现脚本计算 110 栈元素的本质 112 练习2 113 p2pk的缺陷 113 使用p2pkh修复问题 114 p2pkh 114 脚本可以被任意构建 118 练习3 120 脚本的使用 121 练习4 121 SHA-1 Pin躠ta 122 总结 122 第7章 交易的创建与验证 123 验证交易 123 校验交易输入是否可用 123 校验交易输入的总和与交易输出的总和 124 校验签名 125 练习1 129 练习2 129 校验交易的全部内容 129 创建交易 129 构建交易 130 制作交易 132 签名交易 133 练习3 134 在测试链上创建你自己的交易 134 练习4 135 练习5 135 总结 135 第8章 支付到脚本哈希交易 136 裸多签 136 实现OP_CHECKMULTISIG 140 练习1 140 裸多签的问题 141 支付到脚本哈希 141 实现p2sh 147 更复杂的脚本 148 地址 148 练习2 149 练习3 149 p2sh签名验证 149 练习4 152 练习5 152 总结 152 第9章 区块 153 创块交易 153 练习1 154 签名脚本 154 BIP0034 155 练习2 156 区块头 156 练习3 157 练习4 157 练习5 157 版本号 157 练习6 158 练习7 159 练习8 159 父区块 159 默克尔根 159 时间戳 159 工作量 160 序号 160 工作量证明 160 矿工如何生成新的哈希 161 计算目标 161 练习9 162 计算难度 162 练习10 163 校验工作量证明 163 练习11 163 计算难度调整 163 练习12 165 练习13 165 总结 165 第10章 比特币网络通信 166 网络消息 166 练习1 168 练习2 168 练习3 168 解析payload 168 练习4 169 网络握手 170 连接到比特币网络 170 练习5 172 获取区块头信息 173 练习6 174 区块头响应 174 总结 176 第11章 简单支付验证 177 动机 177 默克尔树 178 默克尔树的父哈希 179 练习1 180 默克尔父节点层数 180 练习2 181 默克尔根 181 练习3 182 区块中的默克尔根 182 练习4 183 默克尔树的使用 183 默克尔块 184 默克尔树结构 186 练习5 187 实现默克尔树 187 默克尔块命令 192 练习6 193 标记位和哈希的使用 193 练习7 197 总结 197 第12章 布隆过滤器 198 什么是布隆过滤器 198 练习1 200 布隆过滤器进阶 200 BIP0037布隆过滤器 201 练习2 203 练习3 203 载入一个布隆过滤器 203 练习4 204 获取默克尔块 204 练习5 205 获取相关交易 205 练习6 206 总结 206 第13章 隔离见证 207 支付到见证公钥哈希 207 交易的延展性 207 修复延展性问题 208 p2wpkh交易 209 p2sh-p2wpkh 212 实现p2wpkh和p2sh-p2wpkh交易 216 支付到见证脚本哈希 220 p2sh-p2wsh 223 实现p2wsh和p2sh-p2wsh交易 228 其他方面的改善 230 总结 230 第14章 高级主题和进阶 231 推荐的学习主题 231 钱包 231 支付通道和闪电网络 232 贡献代码 232 推荐的项目 233 测试链钱包 233 区块链浏览器 233 网上商店 233 工具库 234 寻找工作 234 总结 234 附录 练习答案 235 |