第1章 去中心化应用 1
1.1什么是DApp 1
1.1.1去中心化应用的优点 2
1.1.2去中心化应用的缺点 3
1.2去中心化自治组织 3
1.3 DApp中的用户身份 4
1.4 DApp中的用户账户 5
1.5访问中心化应用 6
1.6 DApp中的内部货币 6
1.7什么是授权的DApp 7
1.8热门的DApp 7
1.8.1比特币 7
1.8.2以太坊 9
1.8.3超级账本项目 9
1.8.4 IPFS 10
1.8.5 Namecoin 11
1.8.6达世币 12
1.8.7 BigChainDB 14
1.8.8 OpenBazaar 14
1.8.9 Ripple 14
1.9总结 16
第2章 以太坊的工作原理 17
2.1以太坊概览 17
2.2以太坊账户 18
2.3交易 18
2.4共识 19
2.5时间戳 20
2.6随机数 21
2.7区块时间 21
2.8分叉 24
2.9创世区块 24
2.10以太币面值 24
2.11以太坊虚拟机 25
2.12 gas 25
2.13发现对等节点 26
2.14 Whisper和Swarm 27
2.15 geth 27
2.15.1安装geth 28
2.15.2 JSON-RPC和JavaScript操作台 28
2.15.3子命令和选项 29
2.15.4创建账户 29
2.16以太坊钱包 31
2.17浏览器钱包 31
2.18以太坊的缺点 32
2.19 serenity 33
2.20总结 35
第3章 编写智能合约 36
3.1 Solidity源文件 36
3.2智能合约的结构 37
3.3数据位置 38
3.4什么是不同的数据类型 39
3.4.1数组类型 39
3.4.2字符串类型 40
3.4.3结构类型 41
3.4.4枚举类型 42
3.4.5 mapping类型 42
3.4.6 delete操作符 43
3.4.7基本类型之间的转换 44
3.4.8使用var 44
3.5控制结构 45
3.6用new操作符创建合约 46
3.7异常 46
3.8外部函数调用 46
3.9合约功能 48
3.9.1可见性 48
3.9.2函数修改器 50
3.9.3回退函数 51
3.9.4继承 52
3.10库 54
3.11返回多值 56
3.12导入其他Solidity源文件 57
3.13全局可用变量 57
3.13.1区块和交易属性 57
3.13.2地址类型相关 58
3.13.3合约相关 58
3.14以太币单位 58
3.15 存在、真实性和所有权合约的证明 59
3.16编译和部署合约 60
3.17总结 62
第4章 开始使用web3.js 63
4.1 web3.js概述 63
4.1.1导入web3.js 64
4.1.2连接至节点 64
4.1.3 API结构 65
4.1.4 BigNumberjs 66
4.1.5单位转换 66
4.1.6检索gas价格、余额和交易细节 67
4.1.7发送以太币 68
4.1.8处理合约 69
4.1.9检索和监听合约事件 71
4.2为所有权合约创建客户端 73
4.2.1项目结构 74
4.2.2创建后端 74
4.2.3创建前端 76
4.2.4测试客户端 80
4.3总结 82
第5章 创建钱包服务 83
5.1在线钱包和离线钱包的区别 83
5.2 Hooked-Web3-Provider和EthereumJS-tx库 84
5.3分层确定性钱包 87
5.4密钥衍生函数 87
5.5 LightWallet 88
5.6创建钱包服务 89
5.6.1必要条件 89
5.6.2项目结构 90
5.6.3创建后端 90
5.6.4创建前端 91
5.6.5测试 97
5.7总结 101
第6章 创建智能合约部署平台 102
6.1计算一个地址的交易nonce 102
6.2 solcjs概述 104
6.2.1安装solcjs 104
6.2.2 solcjs A PI 104
6.3创建合约部署平台 107
6.3.1项目结构 108
6.3.2创建后端 108
6.3.3创建前端 113
6.3.4测试 117
6.4总结 118
第7章 创建投注APP 119
7.1 Oraclize概述 119
7.1.1 Oraclize的工作原理 120
7.1.2数据源 120
7.1.3真实性证明 121
7.1.4定价 122
7.1.5开始使用Oraclize API 123
7.1.6加密查询 127
7.1.7 Oraclize Web IDE 128
7.2处理字符串 128
7.3创建投注合约 130
7.4为投注合约创建客户端 133
7.4.1项目结构 133
7.4.2创建后端 134
7.4.3创建前端 135
7.4.4测试客户端 143
7.5总结 147
第8章 创建企业级智能合约 148
8.1探索ethereumjs-testrpc 148
8.1.1安装和使用 149
8.1.2可用RPC方法 151
8.2什么是事件主题 153
8.3开始使用truffle-contract 154
8.3.1安装和导入truffle-contract 155
8.3.2建立测试环境 156
8.3.3 truffle-contract API 156
8.4 truffle概述 163
8.4.1安装truffle 163
8.4.2初始化truffle 163
8.4.3编译合约 165
8.4.4配置文件 165
8.4.5部署合约 166
8.4.6单元测试合约 169
8.4.7包管理 175
8.4.8使用truffle的操作台 178
8.4.9在truffle环境中运行外部脚本 179
8.4.10 truffle的创建管线 179
8.4.11 truffle的服务器端 186
8.5总结 187
第9章 创建联盟区块链 188
9.1什么是联盟区块链 189
9.2什么是权威证明共识 189
9.3 parity概述 189
9.3.1 Aura的工作原理 190
9.3.2运行parity 191
9.3.3创建私有网络 192
9.3.4许可和隐私 197
9.4总结 198