以太坊智能合约开发实战

admin 2025-01-18 22次阅读

imToken 是一款全球领先的区块链数字资产管理工具[ZB],帮助你安全管理BTC, ETH, ATOM, EOS, TRX, CKB, BCH, LTC, DOT, KSM, FIL, XTZ 资产,同时支持去中心化币币兑换功能 ...

内容简介播报

区块链比特币以太坊

编辑

比特币钱包和以太坊钱包

本书从区块链的概念、原理、核心技术和应用四个方面,系统地介绍了以太坊区块链开发的相关知识。其中,重点介绍了以太坊的相关概念和原理、以太坊客户端Geth、以太坊常用智能合约开发工具、语言和智能合约开发等内容,并介绍了众筹合约和代币合约两个项目实战案例,可以让读者对智能合约开发的整体流程有一个全面的了解。另外,书中结合示例对web3.js的相关知识也做了详细介绍,以帮助读者更好地理解和利用以太坊的相关数据。

本书共17章,分为4篇,涵盖的主要内容有区块链的概念、原理与底层技术;以太坊的相关概念与原理;以太坊相关协议;以太坊客户端Geth;以太坊智能合约的其他常用工具与客户端;语言的基本概念与数据类型;使用进行以太坊智能合约开发;通过web3.js与以太坊区块链数据进行交互;众筹智能合约与代币智能合约项目实战案例。

本书内容丰富,讲解通俗易懂以太坊和比特币区块链钱包,案例典型,实用性强imToken钱包,特别适合区块链技术爱好者和智能合约开发的相关从业人员阅读,也适合区块链底层研究人员阅读。另外,本书还适合区块链培训机构作为相关课程的培训教材。

图书目录播报

编辑

第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 什么是PoS12

1.3.2 PoS的优势与劣势12

1.4 委托权益证明(DPoS)12

1.5 权威证明(PoA)13

1.6 区块链的应用13

1.7 本章小结13

第2章 去中心化应用——

2.1 DApp简介15

2.1.1 什么是

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网络与WWW19

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 常见的

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 多重签名与

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、与

4.3.2 与交易花费58

4.3.3 什么是以太坊交易与消息58

4.4 以太坊网络59

4.4.1 以太坊网络简介59

4.4.2 以太坊与

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 算法之DAG68

4.7.1 什么是DAG68

4.7.2 DAG生成过程69

4.7.3 为什么要使用DAG69

4.8 算法70

4.8.1 算法简介70

4.8.2 算法流程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.js76

5.2.2 Node.js安装77

5.3 NPM简介78

5.3.1 npm 命令78

5.3.2 NPM与语义化版本80

5.3.3 npm 命令82

5.3.4 NPM镜像83

5.3.5 NPM的其他常用命令84

5.4 简介85

5.4.1 认识

5.4.2 首秀85

5.4.3 与-dev-

5.4.4 常用功能与配置90

5.4.5 总结92

5.5 简介92

5.5.1 认识

5.5.2 的简单用法94

5.5.3 脚本95

5.6 简介96

5.6.1 认识

5.6.2 文件97

5.6.3 SST结构与数据查找99

第6章 以太坊私链神器——

6.1 简介102

6.1.1 什么是

6.1.2 -cli命令安装103

6.1.3 图形界面104

6.2 常见命令参数106

6.2.1 挖矿时间106

6.2.2 主机端口与网络106

6.2.3 gas相关参数106

6.2.4 其他参数106

6.3 账户107

6.3.1 能多给我点钱吗107

6.3.2 能多给我几个账户吗108

6.3.3 助记词相关参数108

6.3.4 指定账户108

6.3.5 锁定账户与解锁109

6.4 与

6.4.1 在工程中引用的

6.4.2 在工程中启动的

6.4.3 配置工程中依赖的

6.5 交易相关RPC方法112

6.5.1 方法113

6.5.2 unt方法115

6.5.3 ceipt方法116

6.5.4 Hash方法116

6.5.5 交易相关的其他方法117

6.6 账户相关RPC方法117

6.6.1 方法118

6.6.2 方法118

6.6.3 方法119

6.7 区块相关RPC方法119

6.7.1 方法119

6.7.2 方法122

6.7.3 其他相关方法122

6.8 日志相关RPC方法123

6.8.1 方法123

6.8.2 方法124

6.8.3 方法125

6.8.4 其他关联方法126

6.9 的其他RPC方法127

6.9.1 方法127

6.9.2 方法127

6.9.3 方法128

6.9.4 方法129

第7章 以太坊官方客户端——

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子命令之

7.2.3 Geth子命令之与

7.2.4 Geth子命令之与

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 算法参数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 模块152

7.5.5 模块153

7.6 文件153

7.6.1 文件简介153

7.6.2 从密钥到密钥文件154

7.6.3 从密钥到密钥文件流程验证155

第8章 以太坊钱包与浏览器158

8.1 插件158

8.1.1 简介158

8.1.2 安装159

8.1.3 第一次使用

8.1.4 的连接配置161

8.1.5 的其他配置162

8.1.6 账户管理163

8.1.7 交易164

8.1.8 小结165

8.2 钱包166

8.2.1 简介166

8.2.2 安装 与

8.2.3 使用

8.3 Mist与

8.3.1 与Mist的区别171

8.3.2 Mist的配置与使用171

8.3.3 小结172

8.4 网页钱包172

8.4.1 简介173

8.4.2 合约交互174

8.4.3 离线交易175

8.4.4 的其他功能177

第3篇 与智能合约开发

第9章 初遇180

9.1 简介180

9.1.1 什么是

9.1.2 智能合约示例181

9.1.3 编译版本182

9.2 编辑器182

9.2.1 编辑器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 常见概念196

9.4.1 状态变量196

9.4.2 局部变量196

9.4.3 函数197

9.4.4 返回多值197

9.4.5 构造函数198

9.4.6 异常200

9.4.7 注释与文档201

9.5 运算符203

9.5.1 运算符简介203

9.5.2 运算符注意事项204

9.6 控制结构205

9.6.1 控制结构简介205

9.6.2 判断语句205

9.6.3 for循环206

9.6.4 while与do…while循环206

9.6.5 与

9.6.6 三目运算符208

9.7 可见性修饰符209

9.7.1 修饰符209

9.7.2 修饰符210

9.7.3 修饰符213

9.7.4 修饰符214

9.8 函数其他修饰符216

9.8.1 修饰符216

9.8.2 view修饰符217

9.8.3 pure修饰符217

第10章 数据类型219

10.1 数据类型简介219

10.1.1 值类型219

10.1.2 引用类型220

10.1.3 小结221

10.2 类型221

10.2.1 类型简介221

10.2.2 类型支持的运算符221

10.3 类型223

10.3.1 类型简介223

10.3.2 类型支持的运算符224

10.3.3 整除问题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 类型232

10.7.1 类型简介232

10.7.2 类型实例232

10.8 类型233

第11章 数据类型进阶235

11.1 固定大小字节数组235

11.1.1 固定大小字节数组类型235

11.1.2 固定大小字节数组支持的运算符236

11.1.3 固定大小字节数组的成员236

11.1.4 固定大小字节数组与字符串237

11.1.5 固定大小字节数组之间的转换240

11.1.6 小结241

11.2 动态大小字节数组242

11.2.1 动态大小字节数组简介242

11.2.2 创建动态大小字节数组242

11.2.3 动态大小字节数组成员243

11.2.4 字节数组间的转换245

11.2.5 小结247

11.3 数组247

11.3.1 固定长度数组248

11.3.2 动态长度数组249

11.3.3 二维数组250

11.3.4 小结251

11.4 以太坊地址类型251

11.4.1 地址简介252

11.4.2 、send与

11.4.3 call、与

11.5 函数类型257

11.5.1 函数类型简介258

11.5.2 函数签名258

11.5.3 函数类型实例260

11.6 数据类型转换262

11.6.1 隐式转换262

11.6.2 显式转换263

11.6.3 var关键字264

11.7 运算符265

11.7.1 与常见类型265

11.7.2 与数组266

11.7.3 与

11.7.4 与

11.8 本章小结268

第12章 开发智能合约270

12.1 智能合约简介270

12.1.1 智能合约的概念270

12.1.2 EVM结构与数据271

12.1.3 智能合约执行271

12.2 事件与日志简介272

12.2.1 事件简介272

12.2.2 事件主题272

12.2.3 事件与日志274

12.3 中的单位后缀276

12.3.1 以太币单位276

12.3.2 时间单位277

12.4 区块与交易属性279

12.4.1 区块的相关属性279

12.4.2 消息的相关属性281

12.4.3 交易的相关属性282

12.5 错误处理函数283

12.5.1 函数283

12.5.2 函数283

12.5.3 函数284

12.6 数学与Hash函数285

12.6.1 数学运算函数285

12.6.2 Hash函数285

12.6.3 函数286

12.7 ABI编码与编码函数287

12.7.1 ABI编码简介287

12.7.2 ABI编码数据类型289

12.7.3 常见数据类型ABI编码规则290

12.7.4 复杂类型ABI编码规则292

12.7.5 ABI编码实例295

12.8 特殊类型函数296

12.8.1 回退函数296

12.8.2 析构函数297

12.8.3 函数重载298

12.8.4 使用new创建合约函数调用299

第13章 开发智能合约进阶303

13.1 数据位置303

13.1.1 什么是数据位置303

13.1.2 简介304

13.1.3 简介304

13.1.4 简介307

13.1.5 小结308

13.2 数据位置与赋值308

13.2.1 状态变量赋值给局部变量308

13.2.2 状态变量赋值给局部变量310

13.2.3 局部变量赋值给状态变量310

13.2.4 状态变量赋值状态变量311

13.2.5 局部变量赋值给局部变量312

13.2.6 局部变量赋值给局部变量313

13.2.7 局部变量赋值给局部变量314

13.2.8 局部变量赋值给状态变量315

13.2.9 小结316

13.3 函数修改器317

13.3.1 函数修改器简单实例317

13.3.2 函数修改器复杂实例319

13.3.3 小结321

13.4 合约继承324

13.4.1 继承简介324

13.4.2 super关键词327

13.4.3 抽象合约328

13.4.4 接口合约328

13.5 库329

13.5.1 库简介329

13.5.2 库应用实例329

13.5.3 导入源文件330

13.5.4 using for语句331

13.6 编译333

13.6.1 solc简介333

13.6.2 solc编译合约336

13.6.3 solc导入与库338

13.6.4 solc.js简介340

13.6.5 使用solc.js在项目中编译单个合约340

13.6.6 使用solc.js在项目中编译多个合约342

13.7 编码风格344

13.7.1 命名风格344

13.7.2 控制结构344

13.7.3 函数相关风格345

13.7.4 其他部分346

第14章 通过web3.js与以太坊客户端进行交互347

14.1 web3.js简介347

14.1.1 web3.js概念347

14.1.2 web3.js原理348

14.1.3 web3.js模块348

14.2 web3.js与以太坊节点348



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。