新書推薦:
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:HK$
107.8
《
我的心理医生是只猫
》
售價:HK$
49.5
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:HK$
98.8
《
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
》
售價:HK$
61.6
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:HK$
76.8
《
人生解忧:佛学入门四十讲
》
售價:HK$
107.8
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:HK$
57.2
《
自然信息图:一目了然的万物奇观
》
售價:HK$
140.8
|
內容簡介: |
本书力求用少的篇幅来向读者阐释Node.js区块链开发的相关内容。本书共五部分:*部分详细讲述了区块链产品——加密货币的相关概念;第二部分详细介绍了Node.js入门知识,并通过一个具体项目,完成对Node.js在区块链技术领域的调查和描述;第三部分从架构设计的角度层层剖析区块链的设计原理,深刻解读相关概念和技术;第四部分仍然以亿书项目中涉及的实际项目为主,包含多个完整独立的小项目;第五部分是附录,这部分给出了区块链相关名词的中英文对照列表以及相关专业术语的解释以及区块链俱乐部的相关信息。
|
目錄:
|
目录Contents
推荐序一
推荐序二
推荐序三
前言
第一部分 了解区块链
第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.2PoW:工作量证明机制14
3.3PoS:股权证明机制15
3.4DPoS:授权股权证明机制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.1Node.js在开源社区很流行30
5.2Node.js在币圈也同样流行32
5.2.1Github自带搜索32
5.2.2自制查询工具32
5.3Github上前10个应用的简介34
5.4结论36
5.5总结36
5.6参考36
第6章Node.js让前端开发像子弹飞一样37
6.1项目需求37
6.2技术选型37
6.3Node.js简介38
6.4开发步骤39
6.4.1搭建环境39
6.4.2新建工程40
6.4.3前端组件40
6.4.4前端流程42
6.4.5学习API43
6.4.6数据整理44
6.4.7D3.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安装Express54
7.2.2创建简单应用54
7.2.3使用模板引擎55
7.2.4使用静态文件服务55
7.2.5后台请求Github API56
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公共API107
13.2.2Hash地址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.1commander205
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-cli219
22.4.3在浏览器上安装使用Ember-inspector插件219
22.4.4Ember.js提倡的MVC模型里没有了VC220
22.4.5有了组件,自然就没了全局模板layout和局部模板partial220
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.4Ember.js的钩子方法介绍235
23.4.1contentFor钩子方法235
23.4.2写入命令行235
23.4.3其他钩子方法236
23.5总结236
23.6参考236
第24章三张图让你全面掌握加密解密技术237
24.1密码学纵览237
24.2场景与算法237
24.3Node.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.5JavaScript语言的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
|
內容試閱:
|
Preface 前言本书原名《Nodejs开发加密货币》,大部分已经通过网络免费分享(网络上仍有原文),正式出版的时候改成了现在的名字,部分章节也做了调整。写作本书的时候,“区块链”这个称呼并不流行,但讨论的内容实际上就是区块链技术。就在本书整理出版的时候,国家发布了《中国区块链技术和应用发展白皮书》,整个社区也接纳了“区块链”这个称谓,因此改为现在的名字。
“每一件与众不同的绝世好东西,其实都是以无比寂寞的勤奋为前提的,要么是血,要么是汗,要么是大把大把的曼妙青春好时光”。这是一位文笔非常好的朋友大学毕业后给我的留言。每每读到这句话,总能被感动。后来,与那位朋友聊天,我说你真有才,能把一句话说到人的内心深处,我若不是因为是男人,一定美美地哭一场。他一听,十分感慨,告诉我他也是摘抄来的,还说只有经历过,才能被感动。
工匠精神人人推崇,但不是人人都能做到,环境往往起到了很大的作用。还是我的那位朋友,刚毕业的时候,他去了某机关报社,最初当记者,待遇优厚,后来做编辑,自在逍遥。这中间,他还经常写写书,一年下来,仅仅版税收入也非常可观。但是,最近几年好像不太好了,有一次聊天明显感觉到他的消极,问他怎么了,他说互联网抢了他们的饭碗。我说,那你就抢回来吧,化敌为友,借助互联网挣更多钱。他说试过了,没那么简单,几大文学网站,那么多作者,真正挣到钱的没有几个。偶尔火起来了,大部分都被平台分去了,有的甚至连版权都得不到。加之盗版猖獗,基本入不敷出。
听着他的话,我始终沉默,当初我也想不到出路,时代变迁,谁都无法阻拦。但是,这两年我有了方向,找到了可以彻底解决的办法,这也是我坚持分享这本书的内在动力。软件是给人用的,开发者首先想到的自然是身边人,这是再正常不过的道理。这位朋友的问题就是亿书诞生的初衷,没有任何离奇的故事,都是满满的生活小节,这多少也有点工匠精神的情结吧。
当主动往版权保护和写作分享发力的时候,资源就源源不断地聚集到了我的面前。亿书,这个去中心化的版权保护和知识直销系统(自出版平台)的操作过程大致是这样的:在经过一段时间的技术探索之后,2015年,我把关于打造电子书版权保护项目的想法在网上和盘托出,吸引了很多小伙伴的关注,同时也证明了想法的可行性。接着,我用行动实践电子书写作和分享的全过程,并把亿书这个项目的真实源码作为分享的主要内容,边分享边开发,边打造团队,这中间提交了多个开源代码(本书多个实例便是其中一部分)。读者越来越多,团队日益壮大,仍有很多小伙伴在了解、考察和熟悉中。接下来,待亿书正式发布,就可以用亿书(软件)来继续分享亿书(源码)了。这就像CC++这样的编程语言可以用来开发自己,开发者也是使用者,自身不断循环完善。
亿书,以价值传播为目标,定位在协同创作和版权保护,从底层区块链版权协议到顶层客户端应用,完全自主开发,是国内少有的不依赖于比特币、以太坊等国外第三方平台的产品。新版产品提供了强大的扩展开发能力,基于亿书可轻松开发很多类型的去中心化应用,比如数字资产管理、财务结算与审计、交易存证与监控、电子商务、视频直播等。这仍然是从基础需求起步,步步搭建积木的思路和过程,与我通过写作本书体验产品需求,然后发展亿书的思路一样。这是工程学的基础,再厉害的天才也无法逾越。
亿书注定要成为价值传播领导者,开启数字出版新时代。
这是本什么样的书?亿书是完全开放开源的项目,是一个完整的类比特币的区块链产品。本书基于该项目,完全以实用为目的,将开发实践贯穿始终,内容涉及开发区块链产品前端、后台和桌面应用的全过程。本书用开发的思维进行反复迭代,由浅入深,详细介绍了区块链技术相关理论知识、Node.js前后台开发基础知识、加密签名技术、P2P网络实现、共识算法等,能帮助初学者快速学习入门区块链技术,深入掌握Node.js编程开发技术,帮助区块链技术从业者、Web开发者更深刻地理解相关概念和技术实现。
想找到关于如何开发一款真正的区块链产品(不只是调用某款加密货币API)的图书吗?这可能是目前世界上第一本,也可能是唯一的一本。
想找到关于Node.js大型实践项目的图书吗?这可能是世界上少有的一本,也可能找不到第二本。
想找到亿书、Lisk等基于Crypti的分支项目的详细开发文档吗?这一定是世界上唯一的一本。
想深刻了解区块链的技术实现吗?看看本书,对于区块链、共识机制等各种概念的理解将会更加透彻。
想从事区块链无论是比特币还是其他各类竞争币的开发吗?Node.js一定是无法回避的,这本书也必然无法错过。
想了解比特币的原理吗?这本书不仅告诉你其原理是什么,还会从技术的角度告诉你为什么,无论你是做技术还是做管理,本书都值得参考。
本书面向的读者开发人员。本书涉及前端、后台的方方面面,无论是前端开发人员,还是后台开发者都可以学习参考。
架构师。区块链本身是分布式、云计算的典范,本书详细描述了一款区块链产品的架构设计,他们可以通过本书学习掌握区块链是如何基于P2P网络构建复杂的自适应系统的。
高校学生、教师、科研人员等。本书内容在网络上分享的过程中,已经有大学老师作为教参用在实际教学之中,本书从概念到代码实现,理论与实践结合紧密,深入浅出,适合系统研究学习区块链技术。
学习Node.js的读者。本书介绍了Node.js入门知识,包含了Node.js的技术原理和使用技巧,是一个完整的Node.js使用案例,有一定JavaScript基础的初中级读者,通过本书可以更深入的学习提高使用Node.js编码技能。
投资人,以及对比特币等区块链产品感兴趣的普通用户。本书力求语言朴实,书写过程中尽量避免晦涩的技术术语,在具体的编码之前,都要详细介绍相关概念,因此投资人和普通读者也可作为科普读物,从技术层面对加密货币等区块链相关产品有更进一步的认识。
本书内容本书力图用最少的篇幅表述更丰富的内容,共分为五个部分,具体结构如下。
第一部分:了解区块链,共4章。详细讲述了区块链产品——加密货币的相关概念,用独特的技术视角,把加密货币的基本技术要素串联起来,同时在文中自然引导读者跳转阅读下面各个部分,实现理论到实践的过渡。
第二部分:Node.js入门指南,共4章。详细介绍了Node.js入门知识,并通过一个具体项目完成对Node.js在区块链技术领域的调查和描述,整个部分也是项目架构设计必备的调研和技术选型阶段,是本书第一个完整的实践范例。
第三部分:源码解读,共9章。从架构设计的角度,层层剖析区块链的设计原理,深刻解读相关概念和技术。从项目设计的角度谋篇,第9章详细介绍了亿书白皮书的核心内容,明确了项目的需求,教读者如何着手研究区块链产品;第10章从项目入口程序出发,介绍了亿书项目的整体结构;第11~17章分别介绍了P2P网络、加密解密、签名和多重签名、区块链、共识机制等区块链核心内容,并给出了代码实现。
第四部分:开发实践,共9章。主要是对第二和第三部分的有益补充,把在这两个部分出现的技术难点抽取出来,集中介绍。仍然以亿书项目中涉及的实际项目为主,包含多个完整独立的小项目。第18~19章主要介绍了函数式编程等编程方法论;第20章,介绍了命令行工具的开发(含开源实例);第21章总结了aysnc的用法,解决了Node.js回调流程控制问题;第22~23章介绍了亿书官方网站的开发,对市面上的静态网站进行了总结,通过两个实例详细介绍了客户端的开发设计;第24章详细介绍了密码学技术;第25章介绍了时间戳、数据计算等更加细致的优化内容;第26章介绍了测试技术。
第五部分:附录。汇总了区块链的相关概念、常见词汇的中英文对照等内容。
本书的相关资源本书分享的开源项目——亿书,仍在持续开发中,因此,当您在阅读本书源码的时候,核心代码库已经做了比较大的修改。所以,我将本书分享的源码锁定在了一个固定的版本里。有关亿书的相关资源如下:
亿书官网: http:ebookchain.org亿书源码:https:github.comEbookcoinebookcointreev0.1.3亿书白皮书: http:ebookchain.orgebookchain.pdf亿书官方QQ群:185046161因水平所限,书中难免会有不足之处,为了方便大家交流,也为了弥补可能出现的不足,我在区块链俱乐部论坛上与本书配套设置了一个勘误版块,也会定期回答读者的问题,欢迎大家访问,地址如下:
http:chainclub.org实际上,亿书和本书都是开源的产物。非常欢迎有志于区块链研发的小伙伴参与进来,共同进步。
致谢我是个极度不愿意重复的人,所以才会始终保持足够的热情来编写软件为自己服务。而写文章恰恰需要反复推敲和修改,甚至推倒重来。自从2016年年初决定要撰写和分享本书中的系列文章,并从中汲取区块链的技术营养,我就做好了各种思想准备。为了防止退缩,我还在网络上公开许下承诺。但让我万万没有想到的是,战胜自己是如此艰巨。这段时间,我几度放弃,又重新开始。
很庆幸的是,在这个过程中,有一帮小伙伴们始终陪伴、支持和鼓励着我。
感谢科学技术文献出版社李沛副社长,他对知识传播领域的独到见解以及他推崇的“知识服务商”理念,让我很受启发。他受邀为本书作序,并给了我很多极为宝贵的意见和建议。“知识服务商”将会成为亿书未来发展的重要理念。亿书的新版本,从每一个细节都会体现这一思想,让每一个使用亿书的人从中受益,令知识的创造充满动力。
感谢出版社的编辑杨绣国老师,给了我极大的宽容和鼓励,她极为认真地帮我梳理和策划书的内容,协调各类资源。
感谢火币网徐宝龙,我们在亿书组织的区块链茶座上相识,一见如故,成了好朋友。他专注区块链行业,给我、给亿书提供了很多宝贵的意见和帮助。他不仅聪明,还非常勤奋,居然在大年初一的晚上给我发来了他为本书撰写的序言,让我感动不已。
感谢CSDN技术社区的编辑们,这是一群充满激情的活跃分子,在 @猫白 @红月两位编辑的带领下,很快构建起多个开发技术知识库,在社区引起了强烈反响。她们支持本书,还邀请我与她们一起构建了区块链知识库。
感谢巴比特论坛的几个小伙伴。这些文章最先发布到巴比特论坛,巴比特的@长铗、@miner、@等一轮残月、@萌大大等,几乎将这些文章篇篇都设为精华帖,跟踪进展,给予极大的关注和支持。
感谢cnodejs.org社区。这些文章后来陆续在cnodejs.org上同步发布。因为共同的爱好,我与社区很多Node.js技术大咖(@i5ting @lc @Graper等)成了好友。他们对这些文章给予了充分的肯定和极大的支持,还主动帮我推荐和宣传,让我深受鼓舞。
感谢亿书社区的小伙伴们,比如 @Tailor @火鼎 @珍惜 @一 @Mojie @cyio @zbinlin 等,他们不仅支持我,有的还给我提供了内容。当然,还有很多其他小伙伴,这里就不一一列举了。
最后,感谢我的爱人和我可爱的儿子,谢谢你们的陪伴。
|
|