猜你喜欢
区块链DAPP开发入门、代码实现、场景应用

区块链DAPP开发入门、代码实现、场景应用

书籍作者:李万胜 ISBN:9787121373756
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:9692
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以DAPP的原理和具体实现为主线索,通过对这些知识的讲解,使读者对DAPP系统开发有更全面的认识,同时把区块链公链的相关知识融合进来,使得读者不仅能够设计和实现DAPP系统,还能大体理解DAPP的相关知识。

本书分为7章。第1章简单介绍了区块链的基础知识,通过一个简单的智能合约的代码,让读者对区块链有更直观的认识;第2章讲解了各类集成开发环境的搭建,尤其是MetaMask插件,用户需要通过此插件连接以太坊主网后才能使用DAPP系统;第3章讲解了Solidity编译及部署到公链之后的数据表达和函数调用方式;第4章介绍了ABI接口的技术细节;第5章和第6章以案例的方式介绍了DAPP开发的细节;第7章讲解了DAPP潜在的风险。

希望本书能为广大系统开发者和投资者提供一些帮助。


作者简介

李万胜

NBS Chain创始人,专注于数字资产的存储和价值转移的底层技术实现,是中国早期的区块链实践者,数字货币钱包开发者,GitHub等多个开源社区重要贡献者,区块链自媒体达人,写过“以太坊黄皮书分析”“区块链投资逻辑”“Filecoin技术文档学习笔记”“IPFS深度分析”等文章。先后服务于浪潮、华为、开心网等企业,并在美国与他人联合创立电子商务公司,后回国创立互金公司,现为北京非对称区块链有限公司创始人。

编辑推荐
适读人群 :区块链学习人员 智能合约设计人员 ERP设计人员 电子商务全流程设计人员

完备的系统架构讲解,从公链到DAPP全流程讲解

深入讲解Solidity语言从编译到部署的机制和原理

深入剖析智能合约编程语言的语法细节及注意事项

以真实可落地的案例,全面展示智能合约所涉及的技术


前言

前 言



最早接触区块链是在2009年,当时我正在华为的一个网络安全部门从事研发工作,我在诺基亚工作的同学徐明亮,让我为他的美国同事开发一款比特币钱包应用,我也有幸接触比特币的源代码,并尝试编写区块链的相关应用。

当时我对区块链的理解尚处在代码层面,作为一个没有太多社会经验的程序员,我认为比特币、区块链仅仅作为点对点网络,通过密码学的方式保证数据传输和访问的安全,从性能提高和技术创新的角度看,它并没有先进性可言。当时我的工作内容就涉及网络与安全(密码学属于安全范畴),这个知识背景使得我对比特币的技术没有产生特别浓厚的兴趣。况且其代码完全开源,对我来讲,这样的项目一点竞争优势都没有。

到2017年,一种新型区块链公链项目爆发,它就是以太坊。当时国内外的区块链项目如火如荼,基于以太坊发行自己项目的token一时风头无二,很多投资机构也积极地参与其中。此时我已经参与过多个创业项目,对商业基本逻辑有了初步的认识,对于创业初期面临的问题也有了较深刻的理解。此时有投资人推荐我从事区块链方向的创业,我也因此重新对比特币和以太坊的设计进行了认真学习。当我研读完以太坊的白皮书之后,深深地被其技术特点及可以解决的问题范畴所震撼,我会在本书第5章对其涉及的ICO、token和DAO做详细的讲解。不同于比特币仅仅通过加密对一个数值进行去中心化的安全处理,以太坊已经可以与现实世界的商业逻辑进行紧密的融合。

从应用场景来说,比特币仅限于金融领域的应用,而以太坊已经超出了这个范畴,其第一个爆款DAPP——ICO在近几年全球的创业圈中掀起了巨大的变革浪潮,虽然它还伴随着信息不对称、技术不对称等问题,有很多欺诈项目也打着区块链的旗号作恶,但是如果用这样的技术解决真正有价值的问题,那么其影响也是巨大的。本书第6章以彩票为例,从代码到业务模式进行了详细的讲解,通过区块链DAPP解决彩票问题有很大的经济价值和社会价值。

从技术角度来说,比特币是一个很难编程的架构,如果需要利用区块链加密安全、公开透明、去中心化的特点,在一般情况下,项目方都需要升级整套比特币源代码,以满足自己项目的技术需求和业务需求。很多分叉币都是以这样的思路升级比特币的某些特性,然后重新建设自己的生态的。而对于以太坊来讲,智能合约虚拟机的引入使得以太坊成为一个可编程的区块链网络,为了达到同样的目的,项目方只需编写DAPP即可,无须重新搭建网络和建设生态。从这个角度来讲,比特币网络类似于诺基亚的功能手机,而以太坊类似于iPhone的智能手机。前者不可编程,新特性需要新型号的手机;后者有App Store,用户可以通过下载App满足自定义的手机需求。

本书的另一个目的是希望通过代码及架构设计的讲解,把区块链真正的价值和正确的使用方式传递给更多的读者,使得各类诈骗项目不再能轻易地欺骗更多的群众。在认真研究了以太坊之后,我欣然接受了投资人的建议,成功融资并开始了区块链公链方面的研发。目前我从事的项目主要是对以太坊进行进一步升级。虽然以太坊使得区块链可以编程,但是其操作对象仍然是抽象的数字货币,无法与现实世界中有价值的资产进行关联。我希望通过区块链对带宽流量、分布式存储、CPU算力共享等IT资源进行token激励和记账管理,这些资源在现实世界中是有价值的,且其价值是可衡量的。

在项目开发过程中,我整理了很多底层的区块链架构的技术文档,包括一些智能合约相关的技术文挡,因为这些资料相对较少,并且区块链热潮使得很多人对此类知识相对渴望,因此这些技术文档的读者逐渐多了起来。2018年,出版社的朋友希望我整理一些资料,编写成书,让更多的人可以读到这些技术文档。我觉得这对于区块链开发者和投资人来说都是一件非常有意义的事情,因此我欣然答应,这是本书的写作背景。

因为当前区块链尚处在发展初期,包括以太坊的编程语言Solidity,其版本仍然未达到release版本,因此很多知识可能会发生变化,希望读者及时跟进官方的资料。欢迎读者对本书表述不合理的地方提出建议或意见,我一定虚心接受。本书的代码会放在GitHub上:https://github.com/9992800/ Dapp-on-Ethereum。我仅以本书抛砖引玉,希望更多的科技人才加入区块链行业中来,一起促进区块链的良性发展。同时希望本书对投资人有所帮助,提高其分辨骗局项目的能力。

再次感谢出版社对我的信任,以及朋友和亲人对我事业的支持。


李万胜


目录

第1章 智能合约概述 1
1.1 区块链基础知识 1
1.1.1 交易 1
1.1.2 区块 4
1.1.3 链 4
1.1.4 挖矿 5
1.1.5 共识算法 6
1.1.6 分叉 7
1.1.7 攻击 8
1.2 以太坊智能合约 9
1.2.1 以太坊 9
1.2.2 EVM 12
1.2.3 智能合约 13
1.2.4 DAPP 14
1.3 简单的智能合约 15
1.3.1 示例1 16
1.3.2 示例2 17
1.4 小结 18
第2章 开发环境搭建 20
2.1 Remix的使用 20
2.1.1 编程界面 20
2.1.2 运行环境 22
2.1.3 其他设置 24
2.2 Ethereum Wallet的安装与使用 26
2.2.1 安装 26
2.2.2 部署合约 28
2.2.3 调试 32
2.2.4 Ethereum Wallet小结 38
2.3 Ganache + Truffle的安装与使用 38
2.3.1 Ganache 38
2.3.2 Truffle 40
2.3.3 安装总结 45
2.4 MetaMask的配置与使用 45
2.5 小结 47
2.6 课后练习 47
第3章 Solidity编程语法 48
3.1 Solidity前导知识 48
3.2 智能合约的基本构成 50
3.2.1 状态变量 50
3.2.2 函数 50
3.2.3 函数修饰器 50
3.2.4 事件 51
3.2.5 结构体 51
3.2.6 枚举类型 52
3.3 Solidity数据类型 52
3.3.1 值类型 53
3.3.2 引用类型 58
3.3.3 左值操作类型 65
3.3.4 类型转换原则 66
3.4 全局变量和单位 68
3.4.1 单位 68
3.4.2 全局变量和函数 69
3.5 控制逻辑与表达式 71
3.5.1 控制语句 71
3.5.2 函数调用 71
3.5.3 通过new关键字创建合约 73
3.5.4 赋值 74
3.5.5 作用范围与声明 75
3.5.6 异常处理 76
3.6 智能合约 78
3.6.1 创建合约 78
3.6.2 可见范围和getter 80
3.6.3 函数修饰符 83
3.6.4 状态常量 85
3.6.5 函数 86
3.6.6 events 91
3.6.7 继承 93
3.6.8 抽象合约 97
3.6.9 接口 98
3.6.10 库 99
3.6.11 using for 102
3.7 Solidity汇编语言 103
3.7.1 内嵌式汇编 103
3.7.2 独立汇编 109
3.8 小结 110
3.9 课后练习 110
第4章 ABI(应用程序二进制接口) 111
4.1 接口调用的基本原理 111
4.2 函数调用与参数封装 115
4.2.1 数据封装的基础知识 115
4.2.2 函数选择 116
4.2.3 参数封装 117
4.2.4 封装示例 118
4.3 ABI接口JSON描述 129
4.4 小结 132
4.5 课后练习 133
第5章 ICO、token和DAO 134
5.1 ICO是第一个爆款DAPP 134
5.1.1 被扭曲了的ICO 135
5.1.2 传统众筹与以太坊众筹 135
5.1.3 众筹的变种ICO 143
5.2 token 144
5.2.1 token的基本元素 144
5.2.2 改进token 150
5.3 ICO 158
5.4 DAO 162
5.4.1 创建DAO合约 162
5.4.2 使用DAO的方式 170
5.4.3 模拟股票监管的DAO合约 174
5.5 ICO认知误区与防骗指南 175
5.6 小结 176
5.7 课后练习 177
第6章 DAPP完整实战 178
6.1 投票 178
6.1.1 Truffle默认案例讲解 178
6.1.2 修改为投票系统 187
6.1.3 实战小结 193
6.2 誓言上链 193
6.3 区块链彩票 199
6.3.1 业务架构 199
6.3.2 业务代码实现 201
6.4 小结 219
6.5 课后练习 219
第7章 智能合约安全与公链技术简介 220
7.1 合约溢出攻击实例 220
7.2 智能合约安全漏洞与建议 224
7.2.1 合约漏洞 224
7.2.2 安全建议 226
7.3 常见的公链安全问题 227
7.3.1 双花攻击 227
7.3.2 女巫攻击 228
7.3.3 日食攻击 229
7.3.4 DDoS攻击 230
7.4 小结 230

产品特色