首页>参考读物>计算机科学与技术>计算机网络

区块链开发实战:基于JavaScript的公链与DApp开发
作者 : 梁培利 曹帅 吴延毅 编著
丛书名 : 区块链技术丛书
出版日期 : 2019-07-31
ISBN : 978-7-111-63304-4
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 247
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

随着区块链技术的火热以及区块链应用开发平台的出现,越来越多的普通开发者都需要掌握区块链应用的开发,本书可带领读者快速入门区块链开发。
本书由ASCH 核心开发工程师撰写,深入浅出地介绍了区块链应用的开发方法与技巧,任何有JavaScript基础的开发人员都可以掌握,分为三大部分,第一部分“区块链”介绍区块链技术简史、商业价值、核心概念、账户模型、主流区块链项目、区块链领域的新技术,并带领读者用300行代码实现一个区块链系统。第二部分“ASCH 源码解读”详细介绍ASCH的技术架构、ASCH启动过程、加密和验证方式、P2P技术、交易流程、区块链实现、DPOS+PBFT、侧链技术实现等。第三部分“去中心化应用(DApp)开发”介绍一个综合DApp案例开发,包括准备工作、DApp 开发工具、搭建开发环境、设计数据结构、实现业务逻辑、引入主链资产、如何对 DApp 进行测试、发布方式等。

图书特色

零基础学习区块链的应用开发。
从极简区块链系统构建,到区块链平台源码分析,再到完整DApp开发,涵盖DApp的设计思路、开发流程与测试方法等。

图书前言

我至今清晰地记得,在2016年5月的一个傍晚,吴延毅、单青峰还有我在北航大运村一起吃烧烤的场景。单青峰满眼放光地谈起他最近在做的项目Asch(阿希),向我们解释了比特币和区块链的很多技术原理。我和吴延毅当时听得也很兴奋,预感这项技术未来肯定有很大的前景。
在那次聚餐之后,我开始在网上寻找相关的技术资料认真钻研,终于理解了什么是加密算法、工作量证明、UTXO等区块链的技术概念,内心对这项技术的热爱也与日俱增。后来慢慢开始以社区成员身份参与到Asch的相关工作中来,并且最终入职Asch,成为一名全职的区块链开发工程师。
Asch 始于2016年年初,当时单青峰在思考如何把区块链技术应用到更广泛的场景中,确定好了一些现在看来依然比较前沿的解决方案。比如,考虑到开发成本,选择了JavaScript语言,数据库方面选择了关系数据库;出于链的安全性和性能等方面的考虑,采用了侧链技术,每个应用都是一条独立的链。应用既可以保持自己的独立性和灵活性,又能够享受Asch这个生态带来的便利。后来,Asch 又率先在跨链方面进行了探索,并且在国内非常早地提出了跨链的解决方案并实现了跨链。
目前,区块链技术依然在快速地迭代。Asch 作为国内为数不多并且起步较早的专注于技术创新的项目,这一路上的实践经验是值得总结的,因此有了本书。希望本书能够被更多的同行看到,一起交流和促进区块链技术在国内的发展与应用。
本书用三个部分讲解了区块链技术以及Asch的相关实践,第一部分讲解了区块链技术的基本概念,并用300行代码实现了一个最小的、可运行的区块链;第二部分分析Asch的源码,讲解Asch的实现原理;第三部分介绍了基于Asch的侧链技术的DApp开发实战。全书共有12章,其中梁培利完成了第1、2、3、4、5、9章的创作,吴延毅完成了第6、7、8章的创作,曹帅完成了第10、11、12章的创作。下面是各章的内容介绍。
第一部分“区块链开发概述”
第1章“自己动手实现一个区块链系统” 这一章讲解了如何使用300行代码实现一个简单的区块链系统,内容包括区块和区块链的构造、工作量证明算法的实现以及通过 HTTP API 的方式提供与区块链的交互等。通过这章的实践,读者将会对区块链有一个基本的了解。
第2章“DApp开发简介” 这一章介绍了智能合约的基本概念以及案例,然后解释了DApp的概念及特点。通过这章,读者可以对智能合约和DApp有一个初步的认识。
第二部分“Asch源码解读”
第3章“Asch—区块链应用开发平台” Asch 是一个在2016年就发布主网的区块链应用开发平台,目的在于降低区块链技术应用的门槛,帮助企业和开发者快速地构建基于区块链的分布式应用(DApp),只要开发者会使用JavaScript以及有一定的开发经验。该章将会从Asch的发展讲起,一直到 Asch 的架构解析。希望读者在读完这章以后可以对 Asch 有一个清晰的了解。
第4章“Asch源码概览” 对于区块链项目来说,核心代码开源是基本的要求,这种情况也为我们提供了大量的学习资源。阅读项目源码是深入了解一个项目的最好方式。从这章开始,我们将会一起从源码级别探索 Asch 的实现与运行机制。这章的主要内容为源码概览以及启动流程简介。
第5章“账户与安全” 区块链的正常运转离不开密码学的支持。正是因为利用了安全的加密算法,区块链上的每一笔交易和区块的生产才有了安全的保证。这章首先探索区块链用到的基本算法,然后基于Asch的源码来解释Asch 里账户的生成与运用。
第6章“共识机制” 共识机制是一个区块链系统的灵魂。但是为什么区块链系统需要共识机制呢?这一章将从拜占庭将军问题谈起,一直谈到目前比较流行的 DPoS+PBFT算法,来看看共识机制解决了哪些问题,是如何解决的,最后简单介绍了 Asch 的共识机制实现。
第7章“区块” 区块是组成区块链的基本单位。一个区块的产生、打包交易、验证以及如何添加到区块链上往往和这个区块链系统采用的共识机制有关。这章主要介绍阿希链上区块的锻造、验证以及添加区块到链上等流程。
第8章“交易” 交易的核心流程和区块如出一辙,只不过交易是更泛化的概念,含义比较广,可以代表转账、投票等类型,这章将详细介绍Asch交易相关的流程。
第9章“跨链实现” 如今在区块链所面临的诸多问题中,区块链之间的彼此隔离成为了区块链技术应用和资产流通的阻碍。无论是公有链还是私有链,跨链技术都是实现价值互联网的关键。跨链技术是把区块链技术从目前一个个分散的孤岛中分离出来的良药,也是区块链相互通信的桥梁。跨链技术的必要性早已在链圈达成了共识。我们将在这章探索 Asch 的跨链实现原理。
第三部分“DApp开发实战”
第10章 “DApp设计与开发环境搭建” 这一章介绍DApp开发,从DApp设计者的角度,阐述如何从零到一设计一个 DApp,从业务模型、经济模型到数据模型三个层面逐层介绍,帮助我们更深入地理解区块链应用。
第11章“DApp合约开发与接口实现” 这章通过CCTime项目案例介绍合约开发与接口实现。通过这章的学习,读者可以知晓一个 DApp 开发的详细过程。
第12章“DApp测试” 前面的章节从环境搭建、应用设计、代码实现三个部分介绍了 DApp 开发的整体流程,不过我们还缺少了很重要的一环:单元测试。这一章将基于抽奖合约的整个测试流程代码讲解如何对合约与接口进行测试。
本书所有涉及的代码都是用JavaScript语言编写的,因此在阅读本书之前,希望读者能够对JavaScript语言有基本的了解。
本书偏重于实战,因此建议读者在阅读本书的同时自己动手实践。本书有三个部分,读者可以根据自己的需求选择阅读,三个部分之间并没有太大的依赖关系。读者如果只想了解区块链的基本原理,那么建议阅读第一部分。读者如果想了解Asch是如何实现的,可以阅读第二部分。如果读者已经有一定的区块链基础,想要开发DApp,那么可以直接阅读第三部分并动手实践。
本书的所有代码可以在 https://github.com/AschPlatform/dappbook-code 上找到。
致谢
首先要感谢机械工业出版社华章分社的吴怡编辑,在本书的写作过程中,吴怡编辑花费了很多的时间和精力来阅读书稿,指出了很多文字和格式上的错误,在吴怡编辑的帮助和指导下,本书才得以出版。感谢曹帅和吴延毅在百忙之中抽出时间参与本书的创作,没有他们的努力,本书就难以完整地呈现在读者面前。感谢单青峰率先把侧链技术引入国内并开创了Asch这个优秀的项目,Asch 是本书写作的基础。
谨以此书,献给我的父母、妻子以及女儿,我爱你们。
由于本书作者的水平有限,书里难免会出现错误或者表述不准确的地方,在此恳请读者批评指正。关于本书的任何问题,读者可以到https://github.com/AschPlatform/dappbook-code 提交Issue。届时关于本书的任何勘误也都会发布在这个仓库。也欢迎读者发送邮件到我的邮箱 liangpeili@foxmail.com,真诚地欢迎各种意见和反馈。

梁培利
2019年5月于北京龙泽苑

上架指导

计算机\网络

封底文字

阿希链从创立之初就秉持着降低区块链应用开发门槛的理念,在侧链和跨链方面都有很多的探索,本书就是对阿希链进行探索的一个阶段性总结。通过本书,你不仅可以学习区块链的原理,也可以掌握基于阿希链的DApp开发。希望本书能够对你在实际业务中应用区块链带来帮助。 
—— 单青峰,阿希链创始人 

本书从一个只有300行代码的小型区块链系统实现入手,带领读者快速入门区块链开发。然后由浅入深地讲解区块链的基本原理,以及DApp开发的技术与案例,只要懂得JavaScript 就可以开发自己的DApp。
主要内容包括:
自己动手实现一个区块链系统。
智能合约的概念及案例。
区块链使用的加密算法,以及共识机制原理。
一个区块的产生、打包交易、验证,以及如何添加到链上等流程。
区块链中交易的核心流程。
跨链实现原理,以及Asch的跨链实现方法。
DApp的开发思路,以及合约、接口、前端的实现等。

图书序言

2018年春节期间的“三点钟无眠区块链”微信群,让“区块链”这个非常生硬的技术名词走进了大众的视野。区块链技术以密码学、P2P技术、共识机制为技术基础,结合激励模型(指公有链)构建了一个开放可信的运行环境,被誉为“下一代互联网”和“价值互联网”。
区块链技术脱胎于比特币,起初应用于加密数字货币。以太坊项目采用区块链技术构建了一个智能合约平台,大家看到了区块链技术在广泛领域中应用的可能。自2017年以来,区块链技术热度持续升温。新的区块链项目呈现暴发式的增长。几乎每天都会有各种新的区块链项目出现,传统互联网巨头们也纷纷参与这一领域。尤其是最近Facebook发布的Libra项目更是引发了全球金融界和技术界的瞩目。可以预见,区块链将在金融、保险等重要的商业场景中发挥巨大的作用。
Asch(阿希链)是国内早期的区块链项目之一,也是多链架构和跨链技术的早期探索者和布道者。Asch以推动区块链技术的应用落地与DApp普及为愿景,据有安全、高效和灵活低成本的特点。Asch采用JavaScript为开发语言,以Node.js为运行环境。JavaScript是近些年来发展最快、拥有最大社区的开发语言。尤其是Node.js的出现让JavaScript从前端专属,变成了一个的全栈语言,使得JavaScript开发后端服务成为可能。Node.js是一个基于V8引擎的JavaScript运行时的平台,可轻松构建快速、可扩展的网络应用程序。 Node.js使用事件驱动的非阻塞I / O模型,使其轻量级和高效,非常适合在分布式设备上运行的数据密集型实时应用程序。Node.js平台的特点和区块链系统的匹配度很高。而JavaScript拥有易学易用的特点。拥有非常大的开发群体,这也是Asch相对与使用其他语言的DApp开发平台非常重要的先天优势。
本书的作者团队包含了Asch跨链技术的核心开发者、Asch DApp开发者和Asch技术社区的爱好者。本书从最基础的比特币的原理开始,详细分析了Asch的技术架构和实现细节。最后用完整的案例介绍了Asch侧链DApp的开发方式。内容完整翔实,描述深入浅出。尤其适合热爱JavaScript技术的区块链技术爱好者和开发者。

钱汉涛,阿希链CTO
2019年7月于北京

图书目录

序言
前言
第一部分 区块链开发概述
第1章 自己动手实现一个区块链系统3
1.1 从比特币到区块链3
1.1.1 比特币的诞生和发展3
1.1.2 区块链5
1.2 用300 行代码开发一个区块链系统13
1.2.1 区块和区块链的创建13
1.2.2 工作量证明19
1.2.3 提供和区块链进行交互的API22
1.3 本章总结30
第2章 DApp开发简介32
2.1 智能合约32
2.2 DApp简介34
2.3 区块链应用开发平台简介37
2.3.1 以太坊38
2.3.2 Asch40
2.3.3 Hyperledger41
2.4 本章总结42
第二部分 Asch源码解读
第3章 Asch—区块链应用开发平台47
3.1 Asch的诞生和架构47
3.2 开发工具50
3.3 客户端的基本使用50
3.4 如何基于 Asch 注册自己的资产55
3.5 DApp案例简介57
3.6 本章总结58
第4章 Asch源码概览59
4.1 Asch生态架构59
4.2 asch库简要解读60
4.2.1 数据结构61
4.2.2 合约62
4.2.3 接口63
4.2.4 配置文件64
4.3 asch-core库简要解读64
4.4 Asch主链的启动流程66
4.4.1 app.js66
4.4.2 index.js68
4.4.3 runtime.js69
4.4.4 init.js70
4.5 本章总结72
第5章 账户与安全73
5.1 区块链里的密码学73
5.1.1 非对称加密73
5.1.2 ECDSA算法75
5.2 Asch的账户生成流程80
5.2.1 BIP 3980
5.2.2 ED2551982
5.3 Asch的账户类型82
5.4 本章总结84
第6章 共识机制86
6.1 拜占庭将军问题86
6.2 区块链的共识算法88
6.3 从 DPoS 到 PBFT89
6.3.1 DPoS算法89
6.3.2 PBFT算法91
6.4 共识算法源码解读93
6.4.1 base/consensus.js94
6.4.2 core/delegates.js96
6.5 本章总结102
第7章 区块104
7.1 区块链的数据结构104
7.2 区块的源码解读105
7.2.1 base/block.js106
7.2.2 core/blocks.js110
7.3 本章总结122
第8章 交易123
8.1 Asch上的交易类型123
8.2 交易的生命周期及其实现124
8.2.1 创建交易124
8.2.2 广播交易127
8.2.3 验证交易127
8.2.4 写入区块链129
8.3 本章总结130
第9章 跨链实现132
9.1 跨链技术的提出与探索132
9.2 比特币多签名交易的实现135
9.2.1 m-of-n 多签名交易的脚本135
9.2.2 多签名脚本的执行136
9.2.3 比特币里实现多签名交易137
9.2.4 兑现多签名交易142
9.3 Asch的跨链实现149
9.3.1 网关提案的发起与投票150
9.3.2 跨链账户的开通156
9.3.3 对跨链网关的充值与提现159
9.3.4 对跨链网关的提现160
9.4 本章总结166
第三部分 DApp开发实战
第10章 DApp设计与开发环境搭建169
10.1 DApp整体设计169
10.1.1 前期准备169
10.1.2 业务需求描述170
10.1.3 角色171
10.1.4 经济模型172
10.1.5 代码设计174
10.1.6 DApp 的目录结构176
10.2 开发环境搭建184
10.2.1 Asch 的网络类型184
10.2.2 配置 localnet185
10.2.3 DApp Demo187
10.3 本章总结193
第11章 DApp合约开发与接口实现194
11.1 DApp合约的开发194
11.1.1 创建频道(createChannel)195
11.1.2 更新频道(updateChannel)198
11.1.3 发布文章(postArticle)199
11.1.4 打赏文章(voteArticle)202
11.1.5 抽奖设计207
11.1.6 发布评论(postComment)208
11.1.7 点赞评论(likeComment)209
11.1.8 举报(report)210
11.1.9 结算抽奖(calculatePrize)211
11.1.10 领取奖励(getReward)214
11.2 DApp 接口的实现215
11.2.1 频道接口217
11.2.2 文章接口219
11.2.3 投票接口222
11.3 DApp的前端实现224
11.3.1 登录224
11.3.2 调用合约225
11.3.3 调用接口226
11.4 本章总结226
第12章 DApp测试227
12.1 测试准备227
12.1.1 初始化函数227
12.1.2 区块等待229
12.1.3 账户生成与转账229
12.2 合约流程测试233
12.3 本章总结238

教学资源推荐
作者: 蔡开裕 范金鹏
作者: [美]W. 理查德·史蒂文斯(W. Richard Stevens) 著
作者: [印]纳拉辛哈·卡鲁曼希(Narasimha Karumanchi),A.达莫达拉姆(A.Damodaram),M.斯里尼瓦萨·拉奥(M.Sreenivasa Rao) 著
作者: [美]安德烈·普拉泽(André Platzer) 著
参考读物推荐
作者: 吴功宜 吴英 编著
作者: (美)David Josephsen 著
作者: (美)Priscilla Oppenheimer,Joseph Bardwell
作者: John Ray