区块链技术丛书 区块链开发实战:以太坊关键技术与案例分析
作者: 吴寿鹤,冯翔,刘涛,周广益 著
出版时间:2018
丛编项: 区块链技术丛书
内容简介
本书是“区块链开发实战”系列的第2本,旨在让零基础的读者也能迅速掌握以太坊的各种基本概念、关键技术、工作原理、Dapp开发方法。作者是国内区块链领域的早期实践者和布道者,在区块链技术开发领域积累了丰富的项目经验,这本书得到了ChinaLedger技术委员会主任白硕、MATRIX区块链首席AI科学家邓仰东、阿希链CTO钱汉涛、元界CEO陈浩等多位专家的鼎力推荐。 全书主要内容在逻辑上分为三个部分: 第一部分 准备篇(第1~2章)这部分介绍了从事区块链开发需要具备的预备知识,如区块链的各种概念的了解、开发环境的搭建和开发工具的使用等。 第二部分 以太坊篇(第3~11章) 这部分是本书的核心内容,系统、全面地讲解和分析了以太坊的各种基本概念、核心技术、工作原理,以及DApp开发方法。如以太坊的安装、编译、运行、私有链的搭建和运行、编程接口、智能合约语言Solidity的语法及其IDE、Solidity智能合约的编译和部署、Truffle框架的使用、DApp的架构与开发流程等。 第三部分 扩展篇(附录) 详细介绍了比特币的工作原理、运行方式、功能模块、编程接口,以及基于比特币的应用开发方法,对于想研究比特币技术原理和从事比特币应用开发的读者来说,是一份难得的资料。
目录
Contents?目 录
前言
第1章 全面认识区块链 1
1.1 区块链技术的起源和解释 1
1.2 区块链的核心技术及其特性 2
1.2.1 区块链技术的特性 3
1.2.2 区块链的分布式存储技术特性 3
1.2.3 区块链的密码学技术特性 4
1.2.4 区块链中的共识机制 8
1.2.5 区块链中的智能合约 12
1.3 区块链技术演进过程 13
1.4 区块链技术的3个缺点 13
1.5 区块链技术常见的4个错误认识 14
1.6 区块链技术的应用领域 15
1.6.1 区块链在金融行业的应用 15
1.6.2 区块链在供应链中的应用 16
1.6.3 区块链在公证领域的应用 17
1.6.4 区块链在数字版权领域的应用 18
1.6.5 区块链在保险行业的应用 19
1.6.6 区块链在公益慈善领域的应用 21
1.6.7 区块链与智能制造 22
1.6.8 区块链在教育就业中的应用 23
1.7 区块链的其他常见技术框架 24
1.8 本章小结 25
第2章 实战准备 26
2.1 开发环境准备 26
2.1.1 操作系统的配置 26
2.1.2 Docker的使用 27
2.1.3 Git的使用 30
2.2 开发语言 30
2.2.1 GO语言 30
2.2.2 Node.js 32
2.3 常用工具 32
2.3.1 Curl 32
2.3.2 tree 33
2.3.3 Jq 33
2.4 本章小结 34
第3章 以太坊介绍 35
3.1 了解以太坊 35
3.2 以太坊发展路线 36
3.3 以太坊内置货币 37
3.4 以太坊交易吞吐量 38
3.5 以太坊账户 39
3.6 智能合约 40
3.7 Gas与GasPrice 41
3.8 工作量证明算法 41
3.9 以太坊网络类型 42
3.10 以太坊客户端 43
3.11 本章小结 44
第4章 以太坊的编译、安装与运行 45
4.1 在Ubuntu下安装 45
4.2 在MacOS下安装 46
4.3 在Windows下安装 46
4.4 以Docker方式安装 47
4.5 运行以太坊 47
4.6 本章小结 47
第5章 以太坊私有链的搭建与运行 48
5.1 搭建一个私有链 48
5.2 以太坊JavaScript控制台命令 53
5.3 以太坊CLI控制台命令 64
5.3.1 账户管理 64
5.3.2 区块数据管理 65
5.4 以太坊TestRPC测试链搭建 69
5.5 本章小结 78
第6章 以太坊的编程接口 79
6.1 web3.js API 79
6.1.1 安装web3.js并创建实例 79
6.1.2 账户相关API 80
6.1.3 交易相关API 80
6.1.4 区块相关API 87
6.2 JSON-RPC API 87
6.2.1 账户相关API 88
6.2.2 交易相关API 89
6.2.3 区块相关API 94
6.3 本章小结 95
第7章 Solidity IDE和Solidity快速入门 96
7.1 三种Solidity IDE 96
7.1.1 browser-solidity 96
7.1.2 Atom 97
7.1.3 IntelliJ IDEA 97
7.2 Solidity快速入门:编写一个简单的银行合约案例 99
7.3 本章小结 101
第8章 Solidity语法详解 102
8.1 注释 102
8.2 整型和布尔型 103
8.2.1 整型 103
8.2.2 布尔型 104
8.3 地址 104
8.4 字节数组 105
8.4.1 固定长字节数组 105
8.4.2 动态长度字节数组 105
8.5 类型转换和类型推断 106
8.5.1 类型转换 106
8.5.2 类型推断 107
8.6 时间单位和货币单位 107
8.6.1 时间单位 107
8.6.2 货币单位 108
8.7 数组和多维数组 108
8.7.1 数组 108
8.7.2 多维数组 109
8.8 映射/字典 109
8.9 结构体与枚举 111
8.9.1 结构体 111
8.9.2 枚举 112
8.10 全局变量 112
8.11 控制结构 113
8.12 函数 114
8.13 事件 122
8.14 合约 124
8.15 继承 125
8.16 抽象合约 127
8.17 接口 128
8.18 库 128
8.19 Using for 128
8.20 引入其他源文件 129
8.21 状态变量/局部变量 129
8.22 数据位置 130
8.22.1 数据位置概述 130
8.22.2 数据位置之间相互转换 130
8.23 异常处理 132
8.24 编写安全solidity智能合约最佳实践 133
8.24.1 尽早抛出异常 133
8.24.2 结构化函数代码顺序 134
8.24.3 在支付时使用pull模式而不是push模式 134
8.24.4 整数上溢和下溢 136
8.25 本章小结 137
第9章 Solidity 合约编译、部署 138
9.1 编译合约 138
9.1.1 安装solc编译工具 138
9.1.2 开始编译合约 139
9.2 部署合约 141
9.2.1 启动以太坊geth节点 141
9.2.2 部署智能合约 143
9.3 调用合约 145
9.4 本章小结 146
第10章 Truffle详解 147
10.1 什么是Truffle 147
10.2 安装Truffle 148
10.3 创建并初始化项目 149
10.4 创建合约 150
10.5 编译合约 150
10.6 迁移合约 151
10.7 合约交互 156
10.7.1 交易 156
10.7.2 调用 157
10.7.3 合约抽象 157
10.7.4 与合约交互 158
10.7.5 添加一个新合约到网络 159
10.7.6 使用现有合约地址 160
10.7.7 向合约发送以太币 161
10.8 测试合约 163
10.9 JavaScript测试 164
10.10 Solidity测试 165
10.11 Truffle 配置文件 167
10.12 依赖管理 169
10.13 本章小结 171
第11章 以太坊DApps应用开发实战 172
11.1 DApps架构与开发流程 172
11.1.1 DApps架构 VS Web应用架构 172
11.1.