Go语言编程书籍:GO语言公链开发实战

时间:2019-10-23 作者:golang

Go语言编程书籍:GO语言公链开发实战

  GO语言公链开发实战书籍介绍

本书系统地介绍了区块链的设计原理和开发技术,包括公共链的总体结构和开发细节。主要内容包括:第一章介绍了公共链的设计架构;第2-4章介绍了原链的交互工具和核心流程bytomd,以及api服务器的实现原理和接口设计。第五章和第六章详细介绍了区块链的核心部分,包括区块链、区块链和交易的核心数据结构,以及utxo模型、隔离见证、交易脚本和验证等技术概念的实现。第七章和第八章分别介绍了智能合约和智能合约在bvm虚拟机上的运行过程。第9章和第10章介绍了区块链钱包的设计和交易流程,包括密钥、账户、资产管理、交易管理等,并详细阐述了区块链p2p分布式网络的实现原理。第11-13章介绍了数据存储、一致性算法以及与挖掘相关的概念和过程。第十四章展望了区块链技术的未来发展趋势。

  GO语言公链开发实战书籍目录

推荐序一

推荐序二 –

前言

第壹章公链设计架构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.7P2P分布式网络8

1.4编译部署及应用9

1.5本章小结12

第2章交互工具13

2.1概述13

2.2bytomcli交互工具13

2.2.1bytomcli命令flag参数13

2.2.2使用bytomcli查看节点状态信息15

2.2.3bytomcli运行案例16

2.3dashboard交互工具21

2.3.1使用dashboard发送一笔交易22

2.3.2使用dashboard开启挖矿模式22

2.4本章小结24

第3章守护进程的初始化与运行25

3.1概述25

3.2bytomd守护进程初始化流程及命令参数25

3.3bytomd守护进程的初始化实现27

3.3.1Node对象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.4bytomd守护进程的启动方式和停止方式39

3.5本章小结40

第4章接口层41

4.1概述41

4.2实现一个简易HTTPServer41

4.3APIServer创建HTTP服务42

4.3.1创建API对象42

4.3.2创建路由项43

4.3.3实例化http.Server44

4.3.4启动APIServer45

4.3.5接收并响应请求45

4.4HTTP请求的完整生命周期47

4.5比原链API接口描述48

4.6API接口调用工具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.2Coinbase交易核心数据结构78

6.3.3交易Action数据结构81

6.3.4MUX交易类型85

6.4BUTXO模型86

6.4.1BUTXO模型原理87

6.4.2MUX结构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.3UTXO模型和Account模型117

7.3合约层设计118

7.4智能合约语言119

7.4.1Equity语言119

7.4.2Equity合约组成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.2BVM介绍134

8.2.1虚拟机的栈134

8.2.2具有图灵完备性的BVM135

8.2.3equity&vm代码结构135

8.3virtualMachine对象136

8.4栈实现137

8.5BVM操作指令集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.7BVM指令集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.3UTXO花费选择算法184

9.7钱包管理186

9.7.1数据更新186

9.7.2备份187

9.7.3恢复188

9.8本章小结188

第壹0章P2P分布式网络189

10.1概述189

10.2P2P的四种网络模型189

10.3网络节点初始化191

10.3.1SyncManager初始化191

10.3.2P2PSwitch初始化194

10.4节点发现机制196

10.4.1种子节点196

10.4.2Kademlia算法197

10.4.3UPnP协议203

10.4.4RLPX网络协议205

10.5节点发现代码实现206

10.5.1节点发现初始化206

10.5.2路由表实现207

10.5.3Kademlia通信协议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.1TCP连接数管理240

10.10.2Outbound连接数管理240

10.10.3动态节点评分机制DynamicBanScore241

10.11本章小结245

第壹1章数据存储246

11.1概述246

11.2为什么使用键值数据库246

11.3LevelDB常用操作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.6Varint变长编码257

11.7本章小结258

第壹2章共识算法259

12.1概述259

12.2PoW和PoS259

12.3实现一个简易PoW共识算法261

12.4比原链PoW共识算法266

12.4.1PoWhash值266

12.4.2难度动态调整267

12.4.3Tensority算法268

12.5本章小结278

第壹3章矿池及挖矿流程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.1Coinbase交易奖励288

13.8.2交易手续费Gas289

13.9矿池优化建议290

13.10本章小结291

第壹4章展望292

14.1概述292

14.2跨链293

14.2.1打通链与链的连接293

14.2.2BTC、ETH与BTM的跨链资产交换293

14.3闪电网络294

14.4子链295

14.5本章小结296

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:2100506673@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。