目录
推荐序一
推荐序二
推荐序三
前言
第一部分 了解区块链
第1章 加密货币就是货币 2
1.1 加密货币简史 2
1.2 什么是加密货币 3
1.3 加密货币就是货币 4
1.4 加密货币可靠吗 4
1.5 总结 6
1.6 参考 6
第2章 区块链,承载人类信用的基石 7
2.1 利益,现实世界的内在驱动力 7
2.2 信用,决定着利益转移的方向 7
2.3 未来趋势 9
2.4 应用场景 9
2.5 风险提示 11
2.6 总结 12
2.7 参考 12
第3章 共识机制,可编程的利益转移规则 13
3.1 机制,左右产品走向的根源 13
3.2 PoW:工作量证明机制 14
3.3 PoS:股权证明机制 15
3.4 DPoS:授权股权证明机制 16
3.5 亿书对DPoS机制的改进 17
3.6 总结 17
3.7 参考 18
第4章 区块链架构设计 19
4.1 基本概念 19
4.2 架构图 20
4.3 协议层 20
4.4 扩展层 22
4.5 应用层 22
4.6 编程实现 23
4.7 知识图谱 25
4.8 总结 26
4.9 参考 27
第二部分 Node.js入门指南
第5章 Node.js在币圈流行么 30
5.1 Node.js在开源社区很流行 30
5.2 Node.js在币圈也同样流行 32
5.2.1 Github自带搜索 32
5.2.2 自制查询工具 32
5.3 Github上前10个应用的简介 34
5.4 结论 36
5.5 总结 36
5.6 参考 36
第6章 Node.js让前端开发像子弹飞一样 37
6.1 项目需求 37
6.2 技术选型 37
6.3 Node.js简介 38
6.4 开发步骤 39
6.4.1 搭建环境 39
6.4.2 新建工程 40
6.4.3 前端组件 40
6.4.4 前端流程 42
6.4.5 学习API 43
6.4.6 数据整理 44
6.4.7 D3.js渲染 46
6.4.8 代码调试 48
6.4.9 部署发布 48
6.5 总结 51
6.6 参考 51
第7章 Node.js让后台开发像前端一样简单 53
7.1 需求 53
7.2 开发 54
7.2.1 安装Express 54
7.2.2 创建简单应用 54
7.2.3 使用模板引擎 55
7.2.4 使用静态文件服务 55
7.2.5 后台请求Github API 56
7.2.6 模块化重构 57
7.2.7 测试和部署 61
7.3 总结 61
7.4 参考 62
第8章 你必须知道的几个Node.js编码习惯 63
8.1 一切都是数据流 63
8.2 事事皆回调 65
8.3 异常要捕捉 67
8.4 总结 72
8.5 参考 73
第三部分 源码解读
第9章 亿书,一个面向未来的自出版平台 76
9.1 亿书是什么 76
9.2 使用场景 76
9.3 主要特点 77
9.4 核心功能 77
9.5 技术架构 78
9.6 总结 79
9.7 参考 79
第10章 入口程序app.js解读 80
10.1 源码与类图 80
10.2 解读 80
10.2.1 配置处理 80
10.2.2 异常捕捉 82
10.2.3 模块加载 83
10.3 总结 86
第11章 一个精巧的P2P网络实现 88
11.1 源码、类图与流程图 88
11.2 解读 89
11.2.1 路由扩展 89
11.2.2 节点路由 92
11.2.3 节点保存 94
11.3 总结 98
11.4 参考 98
第12章 加密和验证 99
12.1 源码、类图与流程图 99
12.2 概念 101
12.2.1 私钥和公钥 101
12.2.2 加密货币地址 101
12.2.3 加密过程 101
12.2.4 验证过程 102
12.3 实践 102
12.4 总结 104
12.5 参考 104
第13章 地址 105
13.1 源码、类图与流程图 105
13.2 解读 105
13.2.1 公共API 107
13.2.2 Hash地址 109
13.2.3 别名地址 110
13.2.4 注册用户名 111
13.2.5 联系人列表 113
13.3 总结 115
13.4 参考 115
第14章 签名和多重签名 116
14.1 源码 116
14.2 解读 116
14.2.1 签名 116
14.2.2 多重签名 120
14.3 总结 125
第15章 交易 126
15.1 源码与类图 126
15.2 解读 128
15.2.1 交易的本质 128
15.2.2 交易的生命周期 129
15.2.3 亿书的交易类型 129
15.2.4 交易的基本流程 130
15.2.5 转账交易分析 136
15.3 总结 141
15.4 参考 141
第16章 区块链 142
16.1 源码、类图与流程图 142
16.2 解读 143
16.2.1 区块链是什么 143
16.2.2 区块链的特点 147
16.2.3 区块链开发应该解决的问题 148
16.2.4 亿书区块链数据库设计 148
16.2.5 亿书区块链的实现 149
16.3 总结 162
16.4 参考 163
第17章 DPoS机制 164
17.1 源码与类图 164
17.2 受托人数据库表 165
17.3 解读 167
17.3.1 拜占庭将军问题 167
17.3.2 亿书DPoS机制概述 169
17.3.3 注册受托人 170
17.3.4 投票 170
17.3.5 块(时段)周期 170
17.3.6 受托人(循环)周期 172
17.3.7 奖励周期 174
17.4 总结 176
17.5 参考 176
第四部分 开发实践
第18章 函数式编程入门经典 178
18.1 什么是函数式编程 178
18.1.1 面向对象的编码方式 179
18.1.2 函数式编程的方式 179
18.1.3 函数式编程的延伸 180
18.2 函数式编程的优势 181
18.3 函数式编程的基本原则 181
18.3.1 直接把函数赋值给变量 182
18.3.2 使用最普适的方式命名 182
18.3.3 避免依赖外部变量 183
18.3.4 面对this值时,小心加小心 184
18.4 怎样进行函数式编程 184
18.4.1 柯里化:动态产生新函数 184
18.4.2 组合:自由组合新函数 186
18.4.3 注释:签名函数的行为和目的 187
18.4.4 容器:处理控制流、异常、异步和状态的独立模块 189
18.4.5 数据验证仿函数 191
18.4.6 错误处理仿函数 191
18.4.7 异步处理仿函数 194
18.4.8 嵌套处理仿函数 195
18.5 总结 197
18.6 参考 198
第19章 轻松从JavaScript文件生成UML类图 199
19.1 工具简要介绍 199
19.2 能从中学点什么 201
19.3 关于抽象语法树 201
19.4 工具实现过程 202
19.4.1 基本需求 202
19.4.2 架构流程和代码结构 203
19.5 总结 204
19.6 参考 204
第20章 命令行开发介绍 205
20.1 commander 205
20.2 概念定义 205
20.3 用法介绍 206
20.4 案例分析 208
20.5 总结 209
20.6 参考 209
第21章 一张图学会使用async组件进行异步流程控制 210
21.1 概念定义 211
21.2 流程类别 211
21.3 用法分类 212
21.4 脑图 213
21.5 总结 215
21.6 参考 215
第22章 静态网站开发全景扫描 216
22.1 亿书官网介绍 216
22.1.1 资源信息 216
22.1.2 功能特点 217
22.2 静态网站开发方案 218
22.3 与Ember.js的“前仇旧恨” 218
22.4 理解Ember.js几个让人迷乱的深“坑” 219
22.4.1 什么是前端框架 219
22.4.2 一定要使用它的命令行工具Ember-cli 219
22.4.3 在浏览器上安装使用Ember-inspector插件 219
22.4.4 Ember.js提倡的MVC模型里没有了VC 220
22.4.5 有了组件,自然就没了全局模板layout和局部模板partial 220
22.4.6 玩转Ember.js的必经之路 220
22.4.7 学会插件开发,把一切现成的插件装进Ember.js里 221
22.5 总结 222
22.6 参考 222
第23章 开发通用的HTML组件 223
23.1 插件简介 224
23.2 概念解读 225
23.3 开发过程 226
23.3.1 插件的基本情况 226
23.3.2 插件的工程结构 227
23.3.3 插件的开发设计 229
23.3.4 加载第三方库 231
23.3.5 测试插件 232
23.3.6 蓝图模板 233
23.3.7 辅助工具 234
23.4 Ember.js的钩子方法介绍 235
23.4.1 contentFor钩子方法 235
23.4.2 写入命令行 235
23.4.3 其他钩子方法 236
23.5 总结 236
23.6 参考 236
第24章 三张图让你全面掌握加密解密技术 237
24.1 密码学纵览 237
24.2 场景与算法 237
24.3 Node.js中的加密和解密、签名和认证 237
24.4 趣味实践 241
24.4.1 场景 241
24.4.2 需求 241
24.4.3 方案 241
24.4.4 编码 241
24.5 参考 243
第25章 在时间和数据计算方面应该注意的问题 244
25.1 时间戳处理问题 244
25.1.1 问题再现 244
25.1.2 时间戳的重要性 245
25.1.3 不同产品对时间处理的需求 245
25.1.4 时间处理的基本原理 245
25.1.5 JavaScript语言的Date对象 246
25.1.6 实践 247
25.2 数据计算处理问题 248
25.2.1 问题再现 248
25.2.2 终极答案 249
25.3 参考 249
第26章 测试 251
26.1 概念解释 251
26.2 框架流程 252
26.3 测试框架与库介绍 252
26.4 实践 253
26.5 总结 257
26.6 参考 257
第五部分 附录
附录A 区块链相关术语 260
附录B 区块链相关名词 273
附录C 关于区块链俱乐部 280
后记 282
↑折 叠
· · · · · · (
收起)