区块链开发实战:基于JavaScript的公链与DApp开发
书籍作者:梁培利 |
ISBN:9787111633044 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:2874 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
随着区块链技术的火热以及区块链应用开发平台的出现,越来越多的普通开发者都需要掌握区块链应用的开发,本书可带领读者快速入门区块链开发。
本书由ASCH 核心开发工程师撰写,深入浅出地介绍了区块链应用的开发方法与技巧,任何有JavaScript基础的开发人员都可以掌握,分为三大部分,第壹部分“区块链”介绍区块链技术简史、商业价值、核心概念、账户模型、主流区块链项目、区块链领域的新技术,并带领读者用300行代码实现一个区块链系统。第二部分“ASCH 源码解读”详细介绍ASCH的技术架构、ASCH启动过程、加密和验证方式、P2P技术、交易流程、区块链实现、DPOS+PBFT、侧链技术实现等。第三部分“去中心化应用(DApp)开发”介绍一个综合DApp案例开发,包括准备工作、DApp 开发工具、搭建开发环境、设计数据结构、实现业务逻辑、引入主链资产、如何对 DApp 进行测试、发布方式等。
编辑推荐
适读人群 :1.区块链开发人员2.网络应用开发人员
本书从一个300行代码的小型区块链系统实现入手,带领读者快速入门区块链开发。然后由浅入深地讲解区块链的基本原理,以及DApp开发的技术与案例,只要懂得JavaScript 就可以开发自己的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测试” 前面的章节从环境搭建、应用设计、代码实现三个部分介绍
目录
序言
前言
第一部分 区块链开发概述
第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