本书首先介绍基础密码学、算法、P2P协议、脚本等区块链基础原理与技术,然后以比特币和以太坊两大区块链平台为例,指导读者搭建测试环境,对区块链进行编译,建立私链与测试链等,帮助开发者创建自己的私链,实现智能合约、挖矿等区块链特定编程实例。
目录
- 推荐序一 区块链的价值实现
- 推荐序二 区块链,推动金融代际跃升的新力量
- 推荐序三 区块链技术的现实和未来
- 前言
- 第1章 区块链基础 1
- 1.1 交易和交易链 2
- 1.1.1 比特币地址 3
- 1.1.2 交易的本质 3
- 1.1.3 输入和输出 5
- 1.1.4 交易类型 5
- 1.1.5 找零地址 6
- 1.2 区块和区块链 8
- 1.2.1 区块结构 8
- 1.2.2 创世块 10
- 1.2.3 区块链原理 13
- 1.3 挖矿、矿池 14
- 1.3.1 挖矿原理与区块的产生 14
- 1.3.2 挖矿难度 16
- 1.3.3 矿池原理与商业模式 18
- 1.4 脚本系统 19
- 1.4.1 脚本特点 20
- 1.4.2 脚本运行过程 24
- 1.4.3 脚本操作码解读 25
- 1.4.4 脚本执行过程 26
- 1.5 合约应用案例 27
- 1.5.1 合约应用原理 28
- 1.5.2 示例1:提供押金证明 29
- 1.5.3 示例2:担保和争端调解 30
- 1.5.4 示例3:保证合约 30
- 1.5.5 示例4:使用外部状态 32
- 1.5.6 示例5:跨链交易 34
- 1.5.7 示例6:支付证明合约 35
- 1.5.8示例7:特定对象的快速调整(微)支付 36
- 1.5.9示例8:多方去中心化彩票 37
- 参考资料 37
- 第2章 区块链进阶 39
- 2.1 外带数据 39
- 2.1.1 OP_RETURN外带数据 39
- 2.1.2 Multi-Signatures外带数据 40
- 2.2 Counterparty 40
- 2.2.1Counterparty附生链的实现机制详解 41
- 2.2.2 发送 41
- 2.2.3 订单 42
- 2.2.4 发行 42
- 2.2.5 广播 43
- 2.2.6 赌约 43
- 2.3 挖矿算法解析 43
- 2.3.1 PoW挖矿算法及分析 43
- 2.3.2 PoS股权证明算法及分析 44
- 2.3.3DPoS股份授权证明算法及分析 45
- 2.4 Sidechains 45
- 2.4.1 侧链背景 45
- 2.4.2 技术原理 46
- 2.5 最新比特币技术 49
- 2.5.1 IBLT 49
- 2.5.2 隔离见证 50
- 2.5.3 闪电网络 51
- 2.5.4 RSMC 51
- 2.5.5 HTLC 52
- 参考资料 53
- 第3章 密码学基础 54
- 3.1 Hash函数 54
- 3.1.1 技术原理 54
- 3.1.2 SHA-1算法 55
- 3.1.3 SHA-2算法 57
- 3.1.4 SHA-3算法 64
- 3.1.5 RIPEMD160算法 65
- 3.2 椭圆曲线密码 66
- 3.2.1 椭圆曲线方程 67
- 3.2.2 公钥和私钥的产生算法 68
- 3.3 ECDSA数字签名 69
- 3.4 Schnorr数字签名 70
- 3.4.1 技术思想 70
- 3.4.2Schnorr与ECDSA的异同 70
- 3.5 Bloom f?ilter 71
- 3.5.1 技术原理 71
- 3.5.2 应用案例 72
- 第4章 比特币区块链开发 74
- 4.1 Bitcoin的编译过程 74
- 4.1.1 Ubuntu下的编译 74
- 4.1.2 Mac下的编译 75
- 4.1.3 Windows下的编译 76
- 4.2 代码剖析 77
- 4.2.1 主要模块 77
- 4.2.2 初始化和启动 79
- 4.2.3 P2P网络 80
- 4.2.4 交易和区块 89
- 4.2.5 脚本系统 89
- 4.2.6 挖矿 91
- 4.2.7 私钥 92
- 4.3 性能实战 93
- 4.3.1 建立私链 93
- 4.3.2 优化改进 96
- 4.4 API开发 97
- 4.4.1 命令行调用 97
- 4.4.2 RPC API调用接口 100
- 4.4.3 如何调用API进行开发 103
- 4.4.4通过命令实现区块链的查询实例 103
- 第5章 以太坊智能合约开发 109
- 5.1 以太坊 109
- 5.1.1 以太坊的定义 109
- 5.1.2 下一代区块链 109
- 5.1.3 以太坊虚拟机 110
- 5.1.4 以太坊的工作原理 110
- 5.2 以太坊账户管理 111
- 5.2.1 账户 111
- 5.2.2 钥匙文件 112
- 5.2.3 创建账号 112
- 5.3 更新、备份、恢复账号 115
- 5.3.1 更新账号 115
- 5.3.2 账号备份和恢复 116
- 5.4公有链、联盟链、私有链及网络配置 117
- 5.4.1 以太坊网络 117
- 5.4.2 公有链、私有链和联盟链 117
- 5.4.3 如何连接 118
- 5.4.4 更快地下载区块链 119
- 5.4.5静态节点、信任节点和启动节点 120
- 5.5 搭建测试网络和私有链 121
- 5.5.1 Modern测试网 121
- 5.5.2 设置本地私有测试网 121
- 5.6账户、交易核心概念及投注合约解析 125
- 5.6.1 外有账户与合约账户 125
- 5.6.2 什么是交易 126
- 5.6.3 什么是消息 126
- 5.6.4 什么是gas 126
- 5.6.5 估算交易成本 127
- 5.6.6 账户交互示例:投注合约 128
- 5.7 深入浅出智能合约 131
- 5.7.1 合约的定义 131
- 5.7.2 以太坊高级语言 131
- 5.7.3 写合约 131
- 5.7.4 编译合约 132
- 5.7.5 创建和部署合约 134
- 5.7.6 与合约互动 135
- 5.7.7 合约元数据 136
- 5.7.8 测试合约和交易 137
- 5.8 如何部署、调用智能合约 138
- 5.8.1 RPC 138
- 5.8.2 惯例 138
- 5.8.3 部署合约 139
- 5.8.4 和智能合约互动 141
- 5.8.5 Web3.js 142
- 5.8.6 控制台 143
- 5.8.7 查看合约与交易 143
- 5.9 智能合约案例实战 143
- 参考资料 146
- 第6章 Fabric原理和实操 147
- 6.1 超级账本项目背景 147
- 6.2 Fabric简介 149
- 6.3 系统架构 150
- 6.3.1 交易 150
- 6.3.2 区块链数据结构 150
- 6.3.3 节点 151
- 6.4 交易背书的基本流程 155
- 6.4.1客户端创建交易后发送到它所选择的背书节点 156
- 6.4.2背书节点模拟交易,然后生成背书签名 157
- 6.4.3提交客户端获取交易的背书,通过排序服务广播 158
- 6.4.4排序服务向所有节点投递交易消息 158
- 6.5 背书策略 159
- 6.5.1 背