书籍详情

以太坊智能合约开发实战

以太坊智能合约开发实战

作者:唐盛彬 著

出版社:机械工业出版社

出版时间:2019-04-01

ISBN:9787111623717

定价:¥119.00

购买这本书可以去
内容简介
  本书从区块链的概念、原理、核心技术和应用四个方面,系统地介绍了以太坊区块链开发的相关知识。其中,重点介绍了以太坊的相关概念和原理、以太坊客户端Geth、以太坊常用智能合约开发工具、Solidity语言和智能合约开发等内容,并实现了众筹合约和代币合约两个项目实战案例,可以让读者对智能合约开发的整体流程有一个全面的了解。另外,书中结合示例对Web3.js的相关知识也做了详细介绍,以帮助读者更好地理解和利用以太坊的相关数据。 本书内容丰富,讲解通俗易懂,案例典型,实用性强,特别适合区块链技术爱好者和智能合约开发的相关从业人员阅读,也适合区块链底层研究人员阅读。另外,本书还适合作为区块链培训机构作为相关课程的培训教材使用。
作者简介
暂缺《以太坊智能合约开发实战》作者简介
目录
前言
第1篇 基础理论与原理
第1章 与区块链的第一次亲密接触 2
1.1 什么是区块链 2
1.1.1 区块链简介 2
1.1.2 区块链的链式结构 3
1.1.3 区块链上的区块常见数据 4
1.2 工作量证明机制(PoW) 6
1.2.1 区块链遭遇的问题 6
1.2.2 PoW模型 8
1.2.3 PoW为什么能防止篡改 9
1.3 权益证明机制(PoS) 11
1.3.1 什么是PoS 12
1.3.2 PoS的优势与劣势 12
1.4 委托权益证明(DPoS) 12
1.5 权威证明(PoA) 13
1.6 区块链的应用 13
1.7 本章小结 13
第2章 去中心化应用——DApp 15
2.1 DApp简介 15
2.1.1 什么是DApp 15
2.1.2 DApp网络组建过程 16
2.1.3 DApp的优点 16
2.1.4 DApp存在的问题 16
2.2 中心化与去中心化 17
2.2.1 身份验证 17
2.2.2 通信 17
2.2.3 数据交互 17
2.2.4 系统维护 18
2.3 DApp网络与通信 18
2.3.1 P2P网络与WWW 19
2.3.2 P2P网络拓扑结构类型 20
2.3.3 小结 21
2.4 DApp货币与中心化数据交互 22
2.4.1 DApp货币 22
2.4.2 中心化应用获取去中心化数据 22
2.4.3 去中心化应用获取中心化数据 22
2.5 常见的DApp 23
2.5.1 比特币 23
2.5.2 以太坊 23
2.5.3 IPFS存储系统 23
第3章 比特币那些事 25
3.1 比特币简介 25
3.1.1 比特币公钥与私钥 25
3.1.2 数字签名 26
3.2 椭圆曲线算法 26
3.2.1 群 26
3.2.2 椭圆曲线算法定义 28
3.2.3 椭圆曲线几何运算 29
3.2.4 椭圆曲线算法的代码实现 30
3.2.5 椭圆曲线加密与签名原理 37
3.3 比特币私钥、公钥与地址 39
3.3.1 从私钥到地址 39
3.3.2 公钥压缩 40
3.3.3 私钥格式 41
3.3.4 私钥与安全 41
3.4 比特币交易 44
3.4.1 交易简介 44
3.4.2 交易输出 44
3.4.3 交易输入 44
3.4.4 交易费 45
3.4.5 付款至公钥哈希(P2PKH) 45
3.4.6 多重签名与P2SH 46
3.5 比特币钱包 46
3.5.1 钱包简介 46
3.5.2 生成助记词 47
3.5.3 从助记词生成种子 48
3.5.4 从种子生成HD钱包 48
3.5.5 HD钱包密钥路径 50
3.6 比特币相关资源 51
第4章 以太坊 52
4.1 以太坊简介 52
4.1.1 什么是以太坊 52
4.1.2 以太坊虚拟机(EVM) 53
4.1.3 以太坊智能合约与高级语言 53
4.1.4 以太币单位 54
4.1.5 以太坊发行版本与提案 54
4.2 以太坊账户 55
4.2.1 外部账户 55
4.2.2 合约账户 56
4.2.3 外部账户与合约账户的异同 56
4.3 以太坊交易 57
4.3.1 gas、gasPrice与gasLimit 57
4.3.2 gasUsed与交易花费 58
4.3.3 什么是以太坊交易与消息 58
4.4 以太坊网络 59
4.4.1 以太坊网络简介 59
4.4.2 以太坊与Kademlia 59
4.4.3 以太坊客户端 61
4.5 挖矿 62
4.5.1 什么是挖矿 62
4.5.2 挖矿奖励 62
4.5.3 以太坊区块 63
4.6 GHOST协议 64
4.6.1 区块时间 64
4.6.2 区块分叉 65
4.6.3 普通分叉带来的问题 66
4.6.4 GHOST协议的具体内容 67
4.7 Ethash算法之DAG 68
4.7.1 什么是DAG 68
4.7.2 DAG生成过程 69
4.7.3 为什么要使用DAG 69
4.8 Ethash算法 70
4.8.1 Ethash算法简介 70
4.8.2 Ethash算法流程 70
4.9 本章小结 71
第2篇 开发工具
第5章 智能合约开发常用工具 74
5.1 Git简介 74
5.1.1 Git安装 74
5.1.2 Git常用命令 75
5.1.3 Git资源推荐 76
5.2 Node.js简介 76
5.2.1 什么是Node.js 76
5.2.2 Node.js安装 77
5.3 NPM简介 78
5.3.1 npm config命令 78
5.3.2 NPM与语义化版本 80
5.3.3 npm install命令 82
5.3.4 NPM镜像 83
5.3.5 NPM的其他常用命令 84
5.4 webpack简介 85
5.4.1 认识webpack 85
5.4.2 webpack首秀 85
5.4.3 webpack 与webpack-dev-server 87
5.4.4 webpack常用功能与配置 90
5.4.5 webpack总结 92
5.5 Postman简介 92
5.5.1 认识Postman 93
5.5.2 Postman的简单用法 94
5.5.3 Postman脚本 95
5.6 LevelDB简介 96
5.6.1 认识LevelDB 96
5.6.2 LevelDB文件 97
5.6.3 SST结构与数据查找 99
第6章 以太坊私链神器——Ganache 102
6.1 Ganache简介 102
6.1.1 什么是Ganache 102
6.1.2 ganache-cli命令安装 103
6.1.3 Ganache图形界面 104
6.2 Ganache常见命令参数 106
6.2.1 挖矿时间 106
6.2.2 主机端口与网络 106
6.2.3 gas相关参数 106
6.2.4 其他参数 106
6.3 Ganache账户 107
6.3.1 能多给我点钱吗 107
6.3.2 能多给我几个账户吗 108
6.3.3 助记词相关参数 108
6.3.4 指定账户 108
6.3.5 锁定账户与解锁 109
6.4 Ganache与JavaScript 109
6.4.1 在工程中引用Ganache的Provider 109
6.4.2 在工程中启动Ganache的Server 110
6.4.3 配置工程中依赖的Ganache 111
6.5 Ganache交易相关RPC方法 112
6.5.1 eth_sendTransaction方法 113
6.5.2 eth_getTransactionCount方法 115
6.5.3 eth_getTransactionReceipt方法 116
6.5.4 eth_getTransactionByHash方法 116
6.5.5 交易相关的其他方法 117
6.6 Ganache账户相关RPC方法 117
6.6.1 eth_accounts方法 118
6.6.2 eth_getBalance方法 118
6.6.3 eth_coinbase方法 119
6.7 Ganache区块相关RPC方法 119
6.7.1 eth_getBlockByHash方法 119
6.7.2 eth_getBlockByNumber方法 122
6.7.3 其他相关方法 122
6.8 Ganache日志相关RPC方法 123
6.8.1 eth_newFilter方法 123
6.8.2 eth_getFilterLogs方法 124
6.8.3 eth_getLogs方法 125
6.8.4 其他关联方法 126
6.9 Ganache的其他RPC方法 127
6.9.1 web3_clientVersion方法 127
6.9.2 net_version方法 127
6.9.3 eth_getCode方法 128
6.9.4 eth_sign方法 129
第7章 以太坊官方客户端——Geth 130
7.1 Geth简介 130
7.1.1 Geth是什么 130
7.1.2 Geth安装 130
7.1.3 Geth相关目录 132
7.1.4 Geth相关工具 134
7.2 Geth子命令 134
7.2.1 Geth子命令概述 135
7.2.2 Geth子命令之account 136
7.2.3 Geth子命令之console与attach 137
7.2.4 Geth子命令之copydb与removedb 137
7.3 Geth启动参数 138
7.3.1 Geth数据同步模式 138
7.3.2 Geth网络相关参数 138
7.3.3 Geth以太坊相关参数 139
7.3.4 Geth RPC相关参数 140
7.3.5 Geth挖矿相关参数 141
7.3.6 Geth ethash算法参数 142
7.3.7 Geth交易池配置 142
7.3.8 Geth日志参数 145
7.3.9 Geth的其他参数 146
7.4 Geth启动实例 146
7.4.1 Geth启动单个节点 146
7.4.2 Geth启动多节点组网 148
7.5 Geth控制台与管理接口 149
7.5.1 admin模块 149
7.5.2 debug模块 150
7.5.3 miner模块 151
7.5.4 personal模块 152
7.5.5 txpool模块 153
7.6 keystore文件 153
7.6.1 keystore文件简介 153
7.6.2 从密钥到密钥文件 154
7.6.3 从密钥到密钥文件流程验证 155
第8章 以太坊钱包与浏览器 158
8.1 MetaMask插件 158
8.1.1 MetaMask简介 158
8.1.2 MetaMask安装 159
8.1.3 第一次使用MetaMask 160
8.1.4 MetaMask的连接配置 161
8.1.5 MetaMask的其他配置 162
8.1.6 MetaMask账户管理 163
8.1.7 MetaMask交易 164
8.1.8 小结 165
8.2 Ethereum Wallet钱包 166
8.2.1 Ethereum Wallet简介 166
8.2.2 安装Ethereum Wallet与Mist 166
8.2.3 使用Ethereum Wallet 169
8.3 Mist与Ethereum Wallet 170
8.3.1 Ethereum Wallet与Mist的区别 171
8.3.2 Mist的配置与使用 171
8.3.3 小结 172
8.4 MyEtherWallet网页钱包 172
8.4.1 MyEtherWallet简介 173
8.4.2 MyEtherWallet合约交互 174
8.4.3 MyEtherWallet离线交易 175
8.4.4 MyEtherWallet的其他功能 177
第3篇 Solidity与智能合约开发
第9章 Solidity初遇 180
9.1 Solidity简介 180
9.1.1 什么是Solidity 180
9.1.2 智能合约示例 181
9.1.3 Solidity编译版本 182
9.2 Solidity编辑器 182
9.2.1 Sublime编辑器 182
9.2.2 Atom编辑器 185
9.2.3 IDEA编辑器 187
9.3 Remix编辑器 188
9.3.1 Remix简介 188
9.3.2 Remix文件管理 189
9.3.3 Remix编辑面板与控制台 190
9.3.4 Remix编译与运行面板 191
9.3.5 Remix基本配置面板 193
9.3.6 Remix分析配置面板 194
9.4 Solidity常见概念 196
9.4.1 状态变量 196
9.4.2 局部变量 196
9.4.3 Solidity函数 197
9.4.4 返回多值 197
9.4.5 构造函数 198
9.4.6 异常 200
9.4.7 Solidity注释与文档 201
9.5 Solidity运算符 203
9.5.1 Solidity运算符简介 203
9.5.2 Solidity运算符注意事项 204
9.6 Solidity控制结构 205
9.6.1 控制结构简介 205
9.6.2 判断语句 205
9.6.3 for循环 206
9.6.4 while与do…while循环 206
9.6.5 continue与break 207
9.6.6 三目运算符 208
9.7 可见性修饰符 209
9.7.1 public修饰符 209
9.7.2 internal修饰符 210
9.7.3 private修饰符 213
9.7.4 external修饰符 214
9.8 函数其他修饰符 216
9.8.1 constant修饰符 216
9.8.2 view修饰符 217
9.8.3 pure修饰符 217
第10章 Solidity数据类型 219
10.1 数据类型简介 219
10.1.1 值类型 219
10.1.2 引用类型 220
10.1.3 小结 221
10.2 Booleans类型 221
10.2.1 Booleans类型简介 221
10.2.2 Booleans类型支持的运算符 221
10.3 Integers类型 223
10.3.1 Integers类型简介 223
10.3.2 Integers类型支持的运算符 224
10.3.3 Integers整除问题 225
10.4 定点数类型 226
10.4.1 定点数类型简介 226
10.4.2 定点数类型支持的运算符 227
10.5 字面量 227
10.5.1 字符串字面量 227
10.5.2 十六进制字面量 229
10.5.3 有理数字面量 230
10.6 Enum类型 231
10.6.1 枚举类型简介 231
10.6.2 枚举类型实例 231
10.7 mapping类型 232
10.7.1 mapping类型简介 232
10.7.2 mapping类型实例 232
10.8 struct类型 233
第11章 Solidity数据类型进阶 235
11.1 Solidity固定大小字节数组 235
11.1.1 固定大小字节数组类型 235
11.1.2 固定大小字节数组支持
猜您喜欢

读书导航