新書推薦:
《
汗青堂丛书146·布鲁克王朝:一个英国家族在东南亚的百年统治
》
售價:HK$
91.8
《
人生是旷野啊
》
售價:HK$
72.8
《
甲骨文丛书· “安国之道”:英国的殖民情报系统及其在亚洲的扩张
》
售價:HK$
88.5
《
台北人(2024版)
》
售價:HK$
87.4
《
让孩子更有力量:赋权型家庭教育指南
》
售價:HK$
67.0
《
白夜追凶(上下)
》
售價:HK$
109.8
《
财富、战争与智慧——二战股市风云录
》
售價:HK$
132.2
《
低空经济:中国经济发展新引擎
》
售價:HK$
88.5
|
編輯推薦: |
本书全面详尽地剖析了公链整个技术栈,涵盖公链设计原理、系统架构、底层模型、数据结构与算法、编程环境、上层应用开发等主题,内容深入浅出。在揭示这些技术原理的过程中,作者不满足于浅尝辄止,而是深入到参数解析,使本书除了作为知识学习之外,更成为一本实操的参考书籍。
|
內容簡介: |
本书系统地介绍区块链设计原理和开发技术,包含公链的整体架构和开发细节,主要内容包括:第1章介绍公链设计架构;第2~4章介绍比原链的交互工具、核心进程bytomd,以及API Server实现原理和接口设计。第5章和第6章详细介绍区块链核心部分,包括区块、区块链、交易的核心数据结构,以及UTXO模型、隔离见证、交易脚本、验证等技术概念的实现。第7章和第8章讲解比原链智能合约以及智能合约在BVM虚拟机上运行的过程。第9章和第10章介绍区块链钱包的设计与交易流程,包括密钥、账户、资产管理、交易管理等,还详解了区块链P2P分布式网络实现原理。第11~13章介绍数据存储、共识算法,以及挖矿相关的概念和流程。第14章展望了区块链技术未来的发展趋势。
|
目錄:
|
推荐序一
推荐序二
前言
第1章 公链设计架构1
1.1 概述1
1.2 公链总体架构2
1.3 比原链各模块功能2
1.3.1 用户交互层2
1.3.2 接口层4
1.3.3 内核层4
1.3.4 钱包层6
1.3.5 共识层6
1.3.6 数据存储层7
1.3.7 P2P分布式网络8
1.4 编译部署及应用9
1.5 本章小结12
第2章 交互工具13
2.1 概述13
2.2 bytomcli交互工具13
2.2.1 bytomcli命令flag参数13
2.2.2 使用bytomcli查看节点状态信息15
2.2.3 bytomcli运行案例16
2.3 dashboard交互工具21
2.3.1 使用dashboard发送一笔交易22
2.3.2 使用dashboard开启挖矿模式22
2.4 本章小结24
第3章 守护进程的初始化与运行25
3.1 概述25
3.2 bytomd守护进程初始化流程及命令参数25
3.3 bytomd守护进程的初始化实现27
3.3.1 Node对象28
3.3.2 配置初始化29
3.3.3 创建文件锁32
3.3.4 初始化网络类型33
3.3.5 初始化数据库(持久化存储)35
3.3.6 初始化交易池35
3.5.7 创建一条本地区块链36
3.3.8 初始化本地钱包37
3.3.9 初始化网络同步管理37
3.3.10 初始化Pprof性能分析工具38
3.3.11 初始化CPU挖矿功能38
3.4 bytomd守护进程的启动方式和停止方式39
3.5 本章小结40
第4章 接口层41
4.1 概述41
4.2 实现一个简易HTTP Server41
4.3 API Server创建HTTP服务42
4.3.1 创建API对象42
4.3.2 创建路由项43
4.3.3 实例化http.Server44
4.3.4 启动API Server45
4.3.5 接收并响应请求45
4.4 HTTP请求的完整生命周期47
4.5 比原链API接口描述48
4.6 API接口调用工具50
4.6.1 使用curl命令行调用API接口50
4.6.2 使用Postman调用API接口50
4.7 比原链HTTP错误码一览51
4.8 本章小结52
第5章 内核层:区块与区块链53
5.1 概述53
5.2 区块53
5.2.1 区块的数据结构53
5.2.2 区块头的数据结构54
5.2.3 区块标识符55
5.2.4 创世区块56
5.2.5 生成创世区块57
5.2.6 区块验证58
5.2.7 计算下一个区块的难度目标60
5.2.8 孤块管理60
5.3 区块链63
5.3.1 区块链的数据结构63
5.3.2 区块上链64
5.3.3 区块连接65
5.3.4 链重组66
5.3.5 主链的状态69
5.4 本章小结70
第6章 内核层:交易71
6.1 概述71
6.2 交易的概念71
6.2.1 现实生活中的交易71
6.2.2 虚拟世界中的交易72
6.3 核心数据结构72
6.3.1 普通交易核心数据结构73
6.3.2 Coinbase交易核心数据结构78
6.3.3 交易Action数据结构81
6.3.4 MUX交易类型85
6.4 BUTXO模型86
6.4.1 BUTXO模型原理87
6.4.2 MUX结构88
6.5 交易的流程89
6.5.1 构建交易89
6.5.2 签名交易93
6.5.3 提交交易95
6.6 隔离见证97
6.7 交易脚本97
6.7.1 支付到公钥98
6.7.2 支付到脚本99
6.7.3 资产上链100
6.7.4 资产销毁102
6.7.5 见证脚本102
6.7.6 栈语言103
6.8 交易验证105
6.8.1 标准交易105
6.8.2 交易验证流程106
6.9 交易费108
6.9.1 估算交易手续费108
6.9.2 计算交易手续费110
6.10 交易池111
6.11 默克尔树112
6.12 本章小结115
第7章 内核层:智能合约116
7.1 概述116
7.2 基础知识116
7.2.1 智能合约116
7.2.2 图灵完备的智能合约117
7.2.3 UTXO模型和Account模型117
7.3 合约层设计118
7.4 智能合约语言119
7.4.1 Equity语言119
7.4.2 Equity合约组成119
7.5 基于UTXO模型合约开发实战122
7.5.1 编写合约123
7.5.2 编译合约123
7.5.3 部署合约125
7.5.4 解锁合约129
7.6 本章小结132
第8章 内核层:虚拟机133
8.1 概述133
8.2 BVM介绍134
8.2.1 虚拟机的栈134
8.2.2 具有图灵完备性的BVM135
8.2.3 equity & vm代码结构135
8.3 virtualMachine对象136
8.4 栈实现137
8.5 BVM操作指令集139
8.6 智能合约在BVM上的运行过程141
8.6.1 智能合约数据结构141
8.6.2 合约编译流程与原理142
8.6.3 合约程序字节码示例156
8.6.4 合约程序字节码的执行157
8.6.5 合约程序字节码的执行示例159
8.7 BVM指令集160
8.8 本章小结165
第9章 钱包层166
9.1 概述166
9.2 钱包对象167
9.3 密钥管理167
9.3.1 密钥对生成169
9.3.2 密钥对生成算法170
9.3.3 密钥加密存储172
9.4 账户管理174
9.4.1 账户创建175
9.4.2 账户地址176
9.4.3 账户余额178
9.5 资产管理179
9.5.1 初始默认资产179
9.5.2 发行资产180
9.6 交易管理182
9.6.1 筛选交易182
9.6.2 筛选UTXO183
9.6.3 UTXO花费选择算法184
9.7 钱包管理186
9.7.1 数据更新186
9.7.2 备份187
9.7.3 恢复188
9.8 本章小结188
第10章 P2P分布式网络189
10.1 概述189
10.2 P2P的四种网络模型189
10.3 网络节点初始化191
10.3.1 SyncManager初始化191
10.3.2 P2P Switch初始化194
10.4 节点发现机制196
10.4.1 种子节点196
10.4.2 Kademlia算法197
10.4.3 UPnP协议203
10.4.4 RLPX网络协议205
10.5 节点发现代码实现206
10.5.1 节点发现初始化206
10.5.2 路由表实现207
10.5.3 Kademlia通信协议212
10.5.4 邻居节点发现实现212
10.6 节点状态机219
10.7 区块同步223
10.7.1 区块同步流程223
10.7.2 快速同步算法225
10.7.3 普通同步算法230
10.7.4 区块数据请求与发送231
10.8 交易同步233
10.9 快速广播235
10.9.1 新交易快速广播236
10.9.2 新区块快速广播238
10.10 节点管理239
10.10.1 TCP连接数管理240
10.10.2 Outbound连接数管理240
10.10.3 动态节点评分机制DynamicBanScore241
10.11 本章小结245
第11章 数据存储246
11.1 概述246
11.2 为什么使用键值数据库246
11.3 LevelDB常用操作247
11.3.1 增删改查操作247
11.3.2 迭代查询248
11.3.3 按前缀查询249
11.3.4 批量操作249
11.4 存储层缓存250
11.4.1 缓存淘汰算法250
11.4.2 比原链缓存实现252
11.5 存储层持久化254
11.5.1 比原链数据库254
11.5.2 持久化存储接口255
11.5.3 持久化key数据前缀255
11.5.4 持久化存储区块过程256
11.6 Varint变长编码257
11.7 本章小结258
第12章 共识算法259
12.1 概述259
12.2 PoW和PoS259
12.3 实现一个简易PoW共识算法261
12.4 比原链PoW共识算法266
12.4.1 PoW hash值266
12.4.2 难度动态调整267
12.4.3 Tensority算法268
12.5 本章小结278
第13章 矿池及挖矿流程279
13.1 概述279
13.2 与矿池相关的基本概念279
13.3 矿池总架构280
13.4 挖矿流程解析(矿池视角)282
13.5 挖矿流程解析(矿机视角)283
13.6 拒绝数与拒绝率286
13.7 矿池的收益分配模式286
13.8 交易打包至区块287
13.8.1 Coinbase交易奖励288
13.8.2 交易手续费Gas289
13.9 矿池优化建议290
13.10 本章小结291
第14章 展望292
14.1 概述292
14.2 跨链293
14.2.1 打通链与链的连接293
14.2.2 BTC、ETH与BTM的跨链资产交换293
14.3 闪电网络294
14.4 子链295
14.5 本章小结296
|
內容試閱:
|
2008年由中本聪第一次提出了区块链的概念,在随后的几年中,区块链成为了电子货币比特币的核心组成部分:作为所有交易的公共账簿。2017年笔者的很多朋友已经在关注区块链技术领域,笔者也在各种技术峰会上分享过多次区块链技术实现细节,在线上也组织了几个区块链技术群。笔者发现有相当多的朋友询问如何深入学习区块链实现技术,但目前市面上很多的资料都仅介绍区块链上的某部分技术,比如加密货币交易、智能合约开发等,并没有完整介绍公链的技术实现。在一次技术峰会演讲后与北京邮电大学区块链实验室的老师交流,受到陈萍老师的鼓励,想到编写一本系统性介绍公链开发的书籍,对学习区块链的初学者会有帮助,于是便开始组织本书的写作。
本书的目标是引导读者全面了解区块链技术实现原理,笔者也一直坚信,了解某一系统最直接的方式就是研读它的源码,所以本书并不是只介绍区块链技术,而是深入分析其背后的实现原理。通过阅读本书,读者可以全面地了解一条公链的技术实现。本书基于比原链的源代码进行分析,比原链是一个开源的有智能合约功能的公共区块链平台,是国内优秀的公链,目前比原链的代码量不多,而且源码结构清晰,特别适合初学者学习。
本书主要内容包括:
第1章介绍公链设计架构,使读者能够宏观地了解区块链技术架构。
第2章介绍比原链相关的交互工具,包括交互工具的操作及代码实现。
第3章介绍比原链的核心进程bytomd,包括启动过程中的初始化等操作。
第4章介绍API Server实现及原理。详解HTTP请求的完整生命周期,并介绍区块链相关的API接口设计。
第5章和第6章详细介绍区块链核心部分,包括区块、区块链、交易的核心数据结构,以及UTXO模型、隔离见证、交易脚本、验证等概念的实现。
第7章和第8章详细讲解比原链智能合约以及智能合约在BVM虚拟机上运行的过程。
第9章介绍区块链钱包的基本概念,包括密钥、账户、资产管理、交易管理等,以及钱包的备份和恢复方式。
第10章详解区块链P2P分布式网络实现原理,以及Kademlia结构化网络算法的实现。
第11章介绍数据持久化存储,以及区块与交易的缓存和存储过程。
第12章和第13章详解PoW与PoS共识机制以及挖矿相关的概念和流程。
第14章介绍区块链技术未来的发展趋势,我们相信区块链能够为人类做出重大贡献。
本书适合区块链开发者、Go语言开发者阅读。由于时间与水平比较有限,我们在编写本书时也难免会出现一些纰漏和错误。读者可以随时通过邮箱weilandeshanhuhai@126.com与我们联系,希望和大家一起学习与讨论区块链技术。
本书在写作过程中得到很多人的帮助,特别是郜策宇、陆志亚、王庆华、朱益祺、阳胜、林浩宇,在此深表感谢。尤其感谢比原链技术团队设计了这样一个优秀的公链,给区块链社区做出了贡献。
郑东旭
2019年3月14日
|
|