区块链2.0实战:以太坊+Solidity编程从入门到精通
出版时间: 2018
内容简介
网络中的各种区块链知识虽然很多但难以构建成体系,本书根据读者的需求,以完整的体系介绍了当前*流行的区块链技术。全书从总体出发,介绍了区块链的发展历程、典型应用、在社会生活各方面的应用前景,并进一步深入到基础技术层面,详细介绍了区块链技术的各个组成部分,最后介绍了区块链2.0——以太坊的发展情况和开发编程,引导本书读者由远及近、由感性到理性、从原理到实践,建立起了全面的区块链知识体系,引导读者逐步深入地掌握区块链技术,并具备应用以太坊编程语言开发分布式应用程序的初步能力。 《区块链2.0实战:以太坊+Solidity编程从入门到精通》以全球化的眼光专注于区块链技术的体系搭建,定位高端,专业性强,内容全面,便于实操,既适合金融行业的投资人员研究和掌握区块链的技术与商业价值,也适合想在区块链领域从事创业发展的创业者,还可以作为编程开发人员的参考资料,也适用于各类想了解区块链技术的大专院校作为学习资料。
目录
第1章 区块链基础 1
1.1 什么是区块链 1
1.1.1 定义区块链 2
1.1.2 区块链运行流程和特点 5
1.1.3 区块链类型 6
1.2 区块链的发展经过和现状 7
1.2.1 区块链产生的背景 7
1.2.2 比特币的诞生 9
1.2.3 比特币的底层技术是区块链 11
1.2.4 区块链全球发展的不均衡特点 12
1.2.5 区块链在全球的发展现状 13
1.3 区块链在中国的发展现状 18
1.3.1 重视底层突破,区块链技术创新加速 18
1.3.2 资本快速进入,区块链融资增长迅猛 19
1.3.3 全产业链布局,区块链应用领域逐步拓展 19
1.3.4 抱团发展,各种区块链行业组织纷纷成立 20
1.4 中国区块链行业发展前景 21
1.4.1 90后创业者人群大量入场 22
1.4.2 大型企业积极参与,区块链技术基础更加深厚 22
1.4.3 各地政府高度支持区块链 23
第2章 区块链的商业价值 24
2.1 区块链在银行业的应用 24
2.1.1 区块链对银行业的改变 25
2.1.2 国内银行业的区块链应用 25
2.2 区块链与电子商务 28
2.3 区块链在法律行业的应用 30
2.3.1 区块链证据 31
2.3.2 智能交易 31
2.3.3 区块链权证 32
2.4 区块链应用于影音娱乐和媒体业 33
2.5 区块链在医疗行业的应用 35
2.6 结语 37
第3章 区块链技术原理 39
3.1 比特币带来了区块链 39
3.2 比特币白皮书 41
3.2.1 简介 41
3.2.2 交易 42
3.2.3 时间戳服务器 43
3.2.4 工作量证明 44
3.2.5 网络 45
3.2.6 激励 46
3.2.7 回收硬盘空间 46
3.2.8 简化的支付确认 47
3.2.9 价值的组合与分割 48
3.2.10 隐私 49
3.2.11 计算 49
3.2.12 结论 52
3.3 比特币系统的参与者 53
3.4 比特币区块 56
3.4.1 比特币交易过程 56
3.4.2 比特币挖矿 57
3.5 长链与短链 59
3.6 比特币的安全性 61
3.7 比特币挖矿设备的发展 62
3.7.1 比特币挖矿设备的发展阶段 63
3.7.2 矿机与矿场 64
3.7.3 矿池 66
3.7.4 云挖矿的应用 68
3.8 比特币交易中的非对称加密 69
3.8.1 非对称加密原理 69
3.8.2 生成钱包地址 72
3.8.3 交易加密过程 73
3.9 从比特币到区块链 75
3.10 区块链的系统框架 77
3.11 分布式网络 79
3.11.1 分布式网络(又称P2P网络) 79
3.11.2 分布式网络的特点 80
3.11.3 分布式网络的两种架构 81
3.12 广播与验证机制 83
3.12.1 广播 84
3.12.2 验证 85
第4章 区块链共识机制 87
4.1 共识机制的意义 87
4.2 工作量证明机制(PoW) 88
4.2.1 哈希函数 89
4.2.2 工作量证明的基本原理 90
4.2.3 比特币的工作量证明过程 91
4.2.4 工作量证明机制PoW的优缺点 94
4.3 权益证明机制(PoS) 94
4.3.1 PoS与PoW的区别 95
4.3.2 PoS区块创建 98
4.3.3 PoS发展过程 99
4.4 授权股权证明机制(DPoS) 100
4.4.1 DPoS概述 100
4.4.2 选举见证人 101
4.4.3 授权代表 102
4.5 区块链的三大类型 103
4.5.1 公有链 103
4.5.2 私有链 105
4.5.3 联盟链 107
第5章 区块链数据结构 110
5.1 区块链的数据结构 110
5.1.1 区块的数据结构 111
5.1.2 区块链数据结构的技术基础 112
5.1.3 哈希值 113
5.1.4 Merkle根 114
5.1.5 时间戳 117
5.1.6 难度目标值Difficulty Target 118
5.1.7 Nonce随机数 120
5.2 区块链技术的算法 121
5.2.1 哈希算法概况 121
5.2.2 SHA256算法 124
5.3 椭圆曲线加密算法 131
5.3.1 椭圆曲线加密算法的特点 131
5.3.2 椭圆曲线加密算法的数学原理 132
5.3.3 椭圆曲线加密算法的加密原理 138
5.4 区块链运行机理 140
5.5 区块链的交易机理 141
5.5.1 交易流程 141
5.5.2 比特币钱包 143
5.5.3 交易身份验证 144
5.6 区块链的造链机理 146
5.6.1 验证接收信息 146
5.6.2 创建区块 149
5.7 区块数据解读 154
第6章 以太坊Ethereum区块链 162
6.1 以太坊概述 162
6.2 以太坊的创立和发展 163
6.3 以太坊技术原理 166
6.3.1 以太坊与比特币的联系 166
6.3.2 以太坊账户 168
6.3.3 交易和消息 169
6.3.4 燃料(Gas) 170
6.3.5 合约 172
6.3.6 智能合约示例 178
6.3.7 以太坊挖矿 180
6.3.8 以太坊区块 184
第7章 以太坊应用开发基础 196
7.1 以太坊开发环境的建立 196
7.2 Geth开发环境 199
7.2.1 初次启动 199
7.2.2 命令行安装模式 200
7.2.3 Geth的使用 201
7.2.4 Geth在私有链上的应用 203
7.3 轻节点模式 208
7.3.1 Ganache图形界面 208
7.3.2 安装Truffle 210
7.3.3 运行Ganache 212
7.4 网页模式 214
7.5 Mist浏览器 218
7.5.1 Mist安装 219
7.5.2 Mist应用 222
7.6 用MetaMask建立开发账户 226
7.7 以太坊开发的编程语言Solidity 230
7.7.1 Solidity简介 231
7.7.2 Solidity语言的常用语句 231
7.7.3 Solidity程序初步解读 237
第8章 Solidity开发基础 240
8.1 Solidity语言的数据类型 241
8.1.1 数值类型 241
8.1.2 地址类型 243
8.1.3 字节数组 245
8.1.4 地址常量 246
8.1.5 有理数和整数常量 246
8.1.6 字符串常量 247
8.1.7 十六进制常量 248
8.1.8 枚举类型 248
8.1.9 函数类型 249
8.1.10 数据位置 252
8.1.11 数组 253
8.1.12 结构structs 256
8.1.13 映射(mapping) 258
8.1.14 包含左值的运算符 259
8.1.15 删除delete 259
8.1.16 基本类型的转换 260
8.1.17 类型推导 261
8.2 Soldity语言的表达式和控制结构 262
8.2.1 函数的输入参数和输出参数 262
8.2.2 控制结构 263
8.2.3 返回多元值 263
8.2.4 函数调用 263
8.2.5 函数参数的显名调用 264
8.2.6 省略函数参数的名称 265
8.2.7 在合约中创建新合约 265
8.2.8 解构赋值和返回多元值 266
8.2.9 范围和声明 267
8.2.10 错误处理:断言、请求、还原与异常 268
8.3 以太坊合约 271
8.3.1 创建合约 271
8.3.2 可见性 273
8.3.3 取值函数 275
8.3.4 函数修饰符 276
8.3.5 常数状态变量 278
8.3.6 视图函数 278
8.3.7 纯函数(Pure Functions) 279
8.3.8 后备函数(Fallback Functions) 279
8.3.9 函数重载 280
8.3.10 事件 281
8.3.11 继承 283
8.3.12 构造器 286
8.3.13 抽象合约 287
8.3.14 接口 288
8.3.15 库 288
8.3.16 用于“using for” 292
8.4 Solidity汇编 293
8.4.1 内联汇编 293
8.4.2 句法 295
8.4.3 操作码 295
8.4.4 访问外部变量和函数 298
8.4.5 本地汇编变量的声明 299
8.4.6 赋值 300
8.4.7 if语句 300
8.4.8 switch语句 300
8.4.9 循环 301
8.4.10 函数 302
8.4.11 独立汇编 302
第9章 Solidity语言开发以太坊游戏 305
9.1 以太坊游戏的特点 305
9.2 以太坊游戏开发准备 307
9.3 以太坊游戏Influence代码框架 309
9.4 以太坊游戏Influence源代码解读 312
9.4.1 游戏界面 313
9.4.2 库文件lib 315
9.4.3 游戏主功能:小行星拍卖 324
9.4.4 游戏主功能:小行星代币 332
9.4.5 小结 342
后记 深入区块链,用技术改变未来 343