- ISBN:9787302652953
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:229
- 出版时间:2024-03-01
- 条形码:9787302652953 ; 978-7-302-65295-3
本书特色
本书详尽讲解了区块链与以太坊的核心知识,深入Solidity编程精髓,并通过丰富的实例助您掌握智能合约的开发与交互。适合作为高等院校区块链、软件工程相关专业的教材,也适合有一定编程基础的读者自学。
内容简介
智能合约是区块链技术的重要组成部分,同时也是去中心化应用(DApp)开发过程中的核心。智能合约可以使用户实现与区块链的交互,执行用户操作。本书分为8章,讲解了以太坊和智能合约、搭建以太坊智能合约环境、Solidity基础、Solidity高级用法、智能合约应用、智能合约安全、智能合约交互、智能合约开发框架等内容。本书致力于让读者在学会Solidity语法的同时,也能通过案例编码练习提升编程能力。 本书适合作为高等院校区块链、软件工程相关专业的教材,也可作为有编程基础或经验的读者、去中心化应用开发工程师的自学用书。
目录
1.1.1 区块链发展起源 1
1.1.2 从0到1的比特币系统 1
1.1.3 从比特币到区块链 3
1.1.4 区块链简介 3
1.1.5 区块链分类 4
1.2 以太坊基础 5
1.2.1 以太坊简介 5
1.2.2 以太坊发展历史 5
1.3 以太坊核心概念 6
1.3.1 以太坊 6
1.3.2 以太币 6
1.3.3 Gas、Gas Price、Gas Fees 7
1.3.4 以太坊虚拟机 7
1.3.5 账户 8
1.3.6 交易 9
1.3.7 区块 10
1.3.8 节点和客户端 10
1.3.9 共识机制 12
1.4 智能合约与去中心化应用 14
1.4.1 智能合约 14
1.4.2 去中心化应用 14
1.4.3 去中心化应用的特点 14
1.5 比特币与以太坊系统架构 15
1.5.1 比特币系统架构 15
1.5.2 以太坊系统架构 16
本章小结 17
能力自测 17
第2章 搭建以太坊智能合约环境 18
2.1 以太坊公共网络 18
2.1.1 以太坊主网络 18
2.1.2 以太坊测试网络 18
2.1.3 Layer 2测试网络 20
2.2 以太坊专用网络 21
2.2.1 开发网络 21
2.2.2 联盟链 22
2.3 以太坊客户端 22
2.3.1 为什么要有客户端 22
2.3.2 安装Geth客户端 22
2.3.3 同步区块 24
2.3.4 数据存放目录 24
2.3.5 启动节点 24
2.4 启动客户端 24
2.4.1 启动主网客户端 24
2.4.2 启动测试网络客户端 25
2.4.3 启动客户端的可选项配置 25
2.5 搭建私有链 25
2.5.1 准备工作 26
2.5.2 创建创世区块配置文件 26
2.5.3 初始化:将创世区块信息写入区块链 27
2.5.4 启动私有节点 28
2.5.5 Geth的JavaScript控制台操作 29
2.6 搭建多节点私有链 31
2.6.1 创建节点目录 32
2.6.2 分别初始化节点 32
2.6.3 启动节点 32
2.6.4 查看节点信息 32
2.6.5 手动添加节点 33
2.7 以太坊钱包 33
2.7.1 以太坊钱包的概念 33
2.7.2 钱包的分类 34
2.7.3 钱包中的重要概念 35
2.8 MetaMask钱包 36
2.8.1 MetaMask简介 36
2.8.2 MetaMask的安装 36
2.8.3 创建新钱包 36
2.8.4 连接不同的网络 38
2.9 Solidity编程语言和开发工具 40
2.9.1 Solidity简介 40
2.9.2 Solidity程序结构和编程规范 41
2.9.3 智能合约开发工具Remix 42
2.9.4 智能合约部署和调用 43
本章小结 43
能力自测 44
第3章 Solidity基础 45
3.1 值类型 45
3.1.1 布尔型 45
3.1.2 整型 46
3.1.3 地址类型 47
3.1.4 字节数组 48
3.1.5 枚举 49
3.2 函数 50
3.2.1 函数的概念和定义 50
3.2.2 函数的可见性 50
3.2.3 pure和view关键字 51
3.2.4 payable关键字 53
3.2.5 函数的返回值 53
3.3 引用类型 54
3.3.1 数据存储位置 55
3.3.2 数据位置与赋值规则 56
3.3.3 数组 58
3.3.4 结构体 62
3.3.5 映射类型 63
3.4 变量初始值和常量 64
3.4.1 变量初始值 65
3.4.2 delete操作符 65
3.4.3 常量 66
3.5 流程控制 67
3.5.1 条件语句 67
3.5.2 循环语句 69
3.5.3 中断语句 71
3.6 特殊函数 73
3.6.1 构造函数 QE_肨麭?_73
3.6.2 析构函数 74
3.6.3 函数修改器 74
3.6.4 常见内置函数 75
3.7 事件 76
3.7.1 事件的定义 76
3.7.2 触发事件 76
3.8 继承 77
3.8.1 继承 77
3.8.2 函数重写 78
3.8.3 多继承 79
3.9 抽象合约 79
3.10 接口 80
3.10.1 接口的定义 80
3.10.2 实现接口 80
3.10.3 接口与抽象合约的区别 81
3.11 错误处理 81
3.11.1 错误处理机制 81
3.11.2 require和assert 82
3.11.3 revert函数 83
3.11.4 自定义error 84
本章小结 85
能力自测 85
第4章 Solidity高级用法 86
4.1 函数重载 86
4.1.1 函数重载的定义 86
4.1.2 实参匹配 86
4.2 库的使用 87
4.2.1 库的概念和定义 87
4.2.2 使用库合约 88
4.2.3 库示例和OpenZeppelin 88
4.3 导入并使用其他合约 92
4.3.1 文件路径导入 92
4.3.2 URL导入 93
4.3.3 安装库文件导入 94
4.4 接收以太币 94
4.4.1 msg全局变量 94
4.4.2 payable修饰符 95
4.4.3 receive和fallback函数 95
4.5 转账交易 98
4.5.1 transfer函数 98
4.5.2 send函数 98
4.5.3 call函数 98
4.6 合约间的交互 99
4.6.1 库的缺点 99
4.6.2 通过合约(接口)和地址创建合约引用 100
4.6.3 使用call调用其他合约 103
4.6.4 使用delegatecall调用其他合约 103
4.7 创建合约 105
4.7.1 CREATE操作码 105
4.7.2 CREATE2操作码 106
4.8 ABI 110
4.8.1 ABI简介 110
4.8.2 ABI的结构 110
4.8.3 ABI编解码 113
4.9 字节码 114
4.10 哈希函数 114
4.10.1 哈希函数 114
4.10.2 哈希函数的分类 115
4.10.3 Keccak算法的使用 116
4.11 异常捕获与处理 117
本章小结 119
能力自测 119
第5章 智能合约应用 120
5.1 钱包应用 120
5.1.1 钱包合约程序 120
5.1.2 多签钱包合约 122
5.2 ERC系列代币 126
5.2.1 ERC简介 126
5.2.2 ERC20代币 127
5.2.3 ERC721代币 131
5.2.4 ERC1155代币 141
5.3 默克尔树及其应用 152
5.3.1 默克尔树简介 152
5.3.2 默克尔树和默克尔证明 153
5.3.3 默克尔树的应用 155
本章小结 160
能力自测 160
第6章 智能合约安全 161
6.1 重放攻击 161
6.1.1 重放攻击原理 161
6.1.2 事件回顾及分析 161
6.1.3 简单重放攻击保护提案 162
6.1.4 防止重放攻击 162
6.2 重入攻击 163
6.2.1 重入攻击原理 163
6.2.2 事件回顾及分析 163
6.2.3 解决思路 165
6.3 整数溢出 165
6.3.1 整型溢出问题 165
6.3.2 溢出漏洞事件分析 166
6.4 访问控制 166
6.4.1 访问控制 166
6.4.2 漏洞分析 167
6.4.3 访问控制总结 168
6.5 条件竞争 170
6.5.1 条件竞争概念 170
6.5.2 分析和修复 171
6.6 选择器冲突 172
6.6.1 选择器冲突概念 172
6.6.2 事件回顾分析 173
6.7 短地址攻击 175
6.7.1 短地址攻击简介 175
6.7.2 短地址攻击防御 176
本章小结 176
能力自测 177
第7章 智能合约交互 178
7.1 以太坊JavaScript库及环境准备 178
7.1.1 Node.js简介 179
7.1.2 Node.js环境安装 179
7.1.3 Node.js程序示例 180
7.1.4 剖析package.json 181
7.1.5 npm使用介绍 183
7.2 Web3.js使用方法 184
7.2.1 Web3.js简介 184
7.2.2 Web3.js安装 185
7.2.3 连接到以太坊节点 186
7.2.4 查看以太坊链上信息 188
7.2.5 Web3库的API介绍 191
7.2.6 使用Web3编译部署合约 195
7.3 Ethers.js使用方法 200
7.3.1 Ethers.js简介 200
7.3.2 Ethers.js模块及API介绍 200
7.3.3 安装Ethers.js库 203
7.3.4 使用Ethers.js连接到本地节点 204
7.3.5 Ethers.js的基本使用方法 205
本章小结 208
能力自测 208
第8章 智能合约开发框架 209
8.1 框架的功能和举例 209
8.2 Truffle框架基础 210
8.2.1 Truffle简介 210
8.2.2 Truffle的构成及作用 210
8.2.3 Truffle安装 210
8.2.4 Truffle命令 211
8.2.5 使用Truffle创建项目 211
8.2.6 truffle-config.js文件解析 213
8.2.7 编译部署合约 215
8.3 Truffle框架进阶 217
8.3.1 控制台交互 217
8.3.2 与合约交互 217
8.4 Hardhat框架 220
8.4.1 Hardhat简介 220
8.4.2 安装Hardhat 221
8.4.3 创建智能合约应用 221
8.4.4 编写智能合约程序 222
8.4.5 编写测试合约 224
8.4.6 编译和部署合约 225
8.4.7 部署到指定网络环境 227
本章小结 228
能力自测 229
附录 本书教学资源 230
参考文献 231
作者简介
江海,现任江西软件职业技术大学区块链学院副院长,江西省区块链技术专委会委员、江西省区块链学会副秘书长、江西省计算机用户协会专家。
于洪伟,北京千锋互联科技有限公司教学主管,8年互联网开发经验,曾任光大银行技术研发,负责产品研发、技术牵引等工作。完成数十个大中型项目,多年的项目开发和项目管理经验。出版发行《以太坊源码分析》、《Fabric网络学习》、《区块链去中心化钱包》等系列视频和教程。
吴书博,河北工程技术学副教授,主要研究领域经济管理、教育管理。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥19.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
基于3D打印技术的产品创新设计方法
¥45.8¥88.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0