Solidity智能合约开发技术与实战

Solidity智能合约开发技术与实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2022-12
版次: 1
ISBN: 9787115589439
定价: 86.00
装帧: 其他
开本: 其他
纸张: 胶版纸
页数: 288页
字数: 452千字
5人买过
  • 在区块链发展历程中,以太坊的诞生具有里程碑式的意义。本书介绍使用Solidity开发以太坊智能合约DApp的方法,内容涵盖Solidity的基本语法,使用开发框架Truffle开发、部署、测试以太坊DApp的方法,通过以太坊测试网络进行交易的方法,开发安全智能合约所应遵守的规范和对智能合约进行安全审计的方法等。读者在阅读本书时可以充分了解和体验以太坊智能合约的强大功能,以及使用Solidity开发以太坊智能合约DApp的便利。
      本书可作为高等院校计算机、软件工程、大数据、人工智能等专业相关课程的教材,也可供区块链应用程序开发人员参考使用。 李晓黎:

    软件开发工程师,毕业于吉林大学计算机系;自2006年以来,带领团队一直从事网络管理软件、企业ERP系统和电商平台等的开发与建设工作,具有中国投资银行、国家开发银行、中信银行等多家银行从业经历,参与银行信息化建设、网银平台开发、智能合约设计与开发工作多年,在系统软件开发、团队组织管理和系统架构设计等领域积累了丰富的实战经验。 【章名目录】

    第 1章 区块链技术基础

    第 2章 以太坊区块链

    第3章 Solidity编程基础

    第4章 常用语句

    第5章 智能合约与函数

    第6章 以太坊JavaScript API——Web3.js

    第7章 事件与日志

    第8章 以太坊DApp开发框架Truffle

    第9章 以太坊测试网络

    第 10章 编写安全的智能合约

    【详细目录】

    第 1章 区块链技术基础

    1.1 从比特币说起 1

    1.1.1 比特币的发展历程 1

    1.1.2 什么是比特币系统 2

    1.1.3 共识算法和比特币的挖矿 7

    1.1.4 双花问题 10

    1.1.5 区块链技术赋予比特币“价值” 13

    1.2 区块链的工作原理及底层技术 15

    1.2.1 分布式系统的概念 15

    1.2.2 区块链的架构设计 15

    1.2.3 加密算法 17

    1.2.4 区块链的分类 19

    1.2.5 区块链为什么会成为国家战略 19

    1.2.6 区块链技术的发展历程 21

    1.2.7 智能合约 22

    1.2.8 区块链的编程语言 23

    1.3 本章小结 24

    习题 24

    第2章 以太坊区块链

    2.1 以太坊的发展历程与特色 25

    2.1.1 以太坊的诞生与发展 25

    2.1.2 以太坊与比特币系统的对比 27

    2.2 以太坊的工作原理 28

    2.2.1 以太坊节点 28

    2.2.2 以太坊的状态机 28

    2.2.3 以太坊网络的总体架构 29

    2.2.4 DApp 31

    2.2.5 DApp浏览器 32

    2.2.6 以太坊的数据结构与存储方式 33

    2.2.7 以太坊的分叉 36

    2.2.8 Gas和以太币 36

    2.2.9 以太坊账户、钱包和交易 38

    2.2.10 以太坊的PoS共识算法 38

    2.3 搭建以太坊私有链 39

    2.3.1 搭建测试环境 39

    2.3.2 安装以太坊客户端Geth 46

    2.3.3 初始化创世区块 49

    2.3.4 创建开发者账户 50

    2.3.5 以开发者模式启动私有链 51

    2.3.6 私有链账户管理 51

    2.3.7 在私有链中挖矿 53

    2.3.8 转账操作 54

    2.4 本章小结 55

    习题 55

    第3章 Solidity编程基础

    3.1 Solidity的第 一个示例程序 57

    3.1.1 实时在线Solidity编辑器Remix 57

    3.1.2 Solidity Hello World程序 58

    3.1.3 使用Visual Studio Code开发Solidity程序 61

    3.2 常量和变量 63

    3.2.1 常量 63

    3.2.2 变量 64

    3.3 基本数据类型 66

    3.3.1 字符串型 66

    3.3.2 整型 68

    3.3.3 定长浮点型 69

    3.3.4 布尔类型 69

    3.3.5 地址类型 70

    3.3.6 合约类型 72

    3.4 复合数据类型 72

    3.4.1 枚举类型 72

    3.4.2 结构体 73

    3.4.3 映射 74

    3.4.4 数组 75

    3.5 本章小结 77

    习题 77

    第4章 常用语句

    4.1 赋值语句 79

    4.2 分支语句 80

    4.2.1 if语句 80

    4.2.2 if…else if…else…语句 81

    4.3 循环语句 82

    4.3.1 for语句 82

    4.3.2 while语句 83

    4.3.3 do…while…语句 84

    4.4 本章小结 85

    习题 86

    第5章 智能合约与函数

    5.1 智能合约编程基础 87

    5.1.1 状态变量的可见性 87

    5.1.2 智能合约的构造函数 90

    5.1.3 智能合约之间的继承 91

    5.2 函数编程基础 92

    5.2.1 定义函数 92

    5.2.2 函数修饰符 93

    5.2.3 函数的参数 97

    5.3 函数的高级应用 98

    5.3.1 自毁函数 98

    5.3.2 内置函数 99

    5.3.3 函数重载 100

    5.4 外部函数 101

    5.4.1 导入外部函数 101

    5.4.2 函数库 102

    5.4.3 Fallback函数 103

    5.5 抽象合约、接口和继承 106

    5.5.1 抽象合约 106

    5.5.2 接口 107

    5.5.3 继承 107

    5.6 异常处理函数 108

    5.6.1 assert() 函数 108

    5.6.2 require() 函数 109

    5.6.3 revert() 函数 109

    5.7 本章小结 110

    习题 110

    第6章 以太坊JavaScript API——Web3.js

    6.1 Web3.js概述 111

    6.1.1 什么是Web3.js 111

    6.1.2 安装Web3.js 111

    6.1.3 第 一个Web3.js的小实例 113

    6.1.4 在网页中使用Web3.js 114

    6.1.5 本章实例的执行环境 115

    6.1.6 JavaScript Promise对象 115

    6.2 区块编程 117

    6.2.1 标识区块 117

    6.2.2 获取当前区块编号 118

    6.2.3 获取默认区块编号 119

    6.2.4 获取指定区块详情 119

    6.2.5 获取指定叔区块 120

    6.3 以太坊账户与交易编程 120

    6.3.1 获取账户列表 120

    6.3.2 默认账户和币基账户 121

    6.3.3 获取账户余额 122

    6.3.4 获取指定区块中的交易数量 123

    6.3.5 获取指定区块中的交易详情 125

    6.3.6 根据交易哈希获取交易对象 126

    6.3.7 获取交易的收据对象 127

    6.3.8 向以太坊网络提交交易 129

    6.3.9 估算交易的Gas用量 131

    6.4 智能合约编程基础 132

    6.4.1 以太坊智能合约的ABI 132

    6.4.2 以太坊智能合约的字节码 135

    6.4.3 在Visual Studio Code中生成智能合约的 ABI和字节码 140

    6.4.4 JSON-RPC 141

    6.5 在Web3.js中与智能合约进行交互 148

    6.5.1 创建合约对象 148

    6.5.2 调用合约函数 151

    6.6 Web3.js开发实例:“明日之星”在线投票 155

    6.6.1 编写投票智能合约 155

    6.6.2 部署和测试投票智能合约 157

    6.7 本章小结 167

    习题 167

    第7章 事件与日志

    7.1 事件 169

    7.1.1 事件模型 169

    7.1.2 定义和触发事件 170

    7.1.3 在Web3.js中监听事件 170

    7.2 日志 176

    7.2.1 在Remix中查看日志数据 176

    7.2.2 底层日志接口 177

    7.2.3 检索日志 179

    7.3 本章小结 180

    习题 181

    第8章 以太坊DApp开发框架Truffle

    8.1 Truffle开发框架概述 182

    8.1.1 Truffle开发框架的基本特性 182

    8.1.2 安装Truffle开发框架 182

    8.1.3 选择以太坊客户端 183

    8.1.4 个人区块链Ganache 183

    8.2 Truffle项目管理 185

    8.2.1 创建项目 185

    8.2.2 配置Truffle项目 188

    8.2.3 编译合约 189

    8.2.4 部署合约 190

    8.3 智能合约编程 193

    8.3.1 与合约进行交互 193

    8.3.2 Truffle Develop 198

    8.3.3 Truffle框架与智能合约MetaCoin交互的前端应用示例 200

    8.3.4 在Truffle框架中使用MetaMask 205

    8.3.5 使用Truffle react项目模板开发基于以太坊智能合约的DApp 211

    8.4 测试合约 221

    8.4.1 Mocha测试框架简介 221

    8.4.2 使用JavaScript编写测试脚本 223

    8.4.3 使用Solidity编写测试脚本 224

    8.5 Truffle示例项目宠物商店pet-shop 226

    8.5.1 创建pet-shop项目 226

    8.5.2 编写智能合约 226

    8.5.3 编译和部署智能合约 227

    8.5.4 开发前端应用 227

    8.5.5 安装并配置MetaMask钱包 231

    8.5.6 运行应用程序 232

    8.6 本章小结 234

    习题 234

    第9章 以太坊测试网络

    9.1 主网络和测试网络 236

    9.1.1 以太坊测试网络概述 236

    9.1.2 获取测试币 237

    9.2 通过Infura节点集群连接以太坊网络 238

    9.2.1 注册Infura账户 238

    9.2.2 通过Infura连接以太坊网络 238

    9.2.3 项目ID和项目密钥 241

    9.2.4 白名单 243

    9.2.5 部署智能合约到Ropsten网络 243

    9.3 在测试网络中基于Web3.js完成以太坊交易 245

    9.3.1 以太坊交易的过程 245

    9.3.2 使用ethereumjs-tx实现与以太坊的交易 246

    9.3.3 完整的交易实例 249

    9.4 本章小结 252

    习题 252

    第 10章 编写安全的智能合约

    10.1 以太坊智能合约安全设计的基本原则 253

    10.1.1 需要遵循的安全理念 253

    10.1.2 从软件工程技术角度规避风险 256

    10.1.3 开发文档 263

    10.1.4 关于报错赏金 264

    10.2 常见的针对智能合约的攻击 265

    10.2.1 重入问题 265

    10.2.2 抢先交易 268

    10.2.3 强制发送以太币到智能合约 269

    10.3 智能合约开发过程中的安全建议 269

    10.3.1 关于以太坊智能合约系统开发的建议 270

    10.3.2 Solidity的安全问题 271

    10.4 智能合约的安全审计 274

    10.4.1 如何对智能合约进行审计 274

    10.4.2 一个审计报告的例子 275

    10.4.3 使用Mythril分析Solidity智能合约的安全漏洞 282

    10.5 本章小结 287

    习题 287
  • 内容简介:
    在区块链发展历程中,以太坊的诞生具有里程碑式的意义。本书介绍使用Solidity开发以太坊智能合约DApp的方法,内容涵盖Solidity的基本语法,使用开发框架Truffle开发、部署、测试以太坊DApp的方法,通过以太坊测试网络进行交易的方法,开发安全智能合约所应遵守的规范和对智能合约进行安全审计的方法等。读者在阅读本书时可以充分了解和体验以太坊智能合约的强大功能,以及使用Solidity开发以太坊智能合约DApp的便利。
      本书可作为高等院校计算机、软件工程、大数据、人工智能等专业相关课程的教材,也可供区块链应用程序开发人员参考使用。
  • 作者简介:
    李晓黎:

    软件开发工程师,毕业于吉林大学计算机系;自2006年以来,带领团队一直从事网络管理软件、企业ERP系统和电商平台等的开发与建设工作,具有中国投资银行、国家开发银行、中信银行等多家银行从业经历,参与银行信息化建设、网银平台开发、智能合约设计与开发工作多年,在系统软件开发、团队组织管理和系统架构设计等领域积累了丰富的实战经验。
  • 目录:
    【章名目录】

    第 1章 区块链技术基础

    第 2章 以太坊区块链

    第3章 Solidity编程基础

    第4章 常用语句

    第5章 智能合约与函数

    第6章 以太坊JavaScript API——Web3.js

    第7章 事件与日志

    第8章 以太坊DApp开发框架Truffle

    第9章 以太坊测试网络

    第 10章 编写安全的智能合约

    【详细目录】

    第 1章 区块链技术基础

    1.1 从比特币说起 1

    1.1.1 比特币的发展历程 1

    1.1.2 什么是比特币系统 2

    1.1.3 共识算法和比特币的挖矿 7

    1.1.4 双花问题 10

    1.1.5 区块链技术赋予比特币“价值” 13

    1.2 区块链的工作原理及底层技术 15

    1.2.1 分布式系统的概念 15

    1.2.2 区块链的架构设计 15

    1.2.3 加密算法 17

    1.2.4 区块链的分类 19

    1.2.5 区块链为什么会成为国家战略 19

    1.2.6 区块链技术的发展历程 21

    1.2.7 智能合约 22

    1.2.8 区块链的编程语言 23

    1.3 本章小结 24

    习题 24

    第2章 以太坊区块链

    2.1 以太坊的发展历程与特色 25

    2.1.1 以太坊的诞生与发展 25

    2.1.2 以太坊与比特币系统的对比 27

    2.2 以太坊的工作原理 28

    2.2.1 以太坊节点 28

    2.2.2 以太坊的状态机 28

    2.2.3 以太坊网络的总体架构 29

    2.2.4 DApp 31

    2.2.5 DApp浏览器 32

    2.2.6 以太坊的数据结构与存储方式 33

    2.2.7 以太坊的分叉 36

    2.2.8 Gas和以太币 36

    2.2.9 以太坊账户、钱包和交易 38

    2.2.10 以太坊的PoS共识算法 38

    2.3 搭建以太坊私有链 39

    2.3.1 搭建测试环境 39

    2.3.2 安装以太坊客户端Geth 46

    2.3.3 初始化创世区块 49

    2.3.4 创建开发者账户 50

    2.3.5 以开发者模式启动私有链 51

    2.3.6 私有链账户管理 51

    2.3.7 在私有链中挖矿 53

    2.3.8 转账操作 54

    2.4 本章小结 55

    习题 55

    第3章 Solidity编程基础

    3.1 Solidity的第 一个示例程序 57

    3.1.1 实时在线Solidity编辑器Remix 57

    3.1.2 Solidity Hello World程序 58

    3.1.3 使用Visual Studio Code开发Solidity程序 61

    3.2 常量和变量 63

    3.2.1 常量 63

    3.2.2 变量 64

    3.3 基本数据类型 66

    3.3.1 字符串型 66

    3.3.2 整型 68

    3.3.3 定长浮点型 69

    3.3.4 布尔类型 69

    3.3.5 地址类型 70

    3.3.6 合约类型 72

    3.4 复合数据类型 72

    3.4.1 枚举类型 72

    3.4.2 结构体 73

    3.4.3 映射 74

    3.4.4 数组 75

    3.5 本章小结 77

    习题 77

    第4章 常用语句

    4.1 赋值语句 79

    4.2 分支语句 80

    4.2.1 if语句 80

    4.2.2 if…else if…else…语句 81

    4.3 循环语句 82

    4.3.1 for语句 82

    4.3.2 while语句 83

    4.3.3 do…while…语句 84

    4.4 本章小结 85

    习题 86

    第5章 智能合约与函数

    5.1 智能合约编程基础 87

    5.1.1 状态变量的可见性 87

    5.1.2 智能合约的构造函数 90

    5.1.3 智能合约之间的继承 91

    5.2 函数编程基础 92

    5.2.1 定义函数 92

    5.2.2 函数修饰符 93

    5.2.3 函数的参数 97

    5.3 函数的高级应用 98

    5.3.1 自毁函数 98

    5.3.2 内置函数 99

    5.3.3 函数重载 100

    5.4 外部函数 101

    5.4.1 导入外部函数 101

    5.4.2 函数库 102

    5.4.3 Fallback函数 103

    5.5 抽象合约、接口和继承 106

    5.5.1 抽象合约 106

    5.5.2 接口 107

    5.5.3 继承 107

    5.6 异常处理函数 108

    5.6.1 assert() 函数 108

    5.6.2 require() 函数 109

    5.6.3 revert() 函数 109

    5.7 本章小结 110

    习题 110

    第6章 以太坊JavaScript API——Web3.js

    6.1 Web3.js概述 111

    6.1.1 什么是Web3.js 111

    6.1.2 安装Web3.js 111

    6.1.3 第 一个Web3.js的小实例 113

    6.1.4 在网页中使用Web3.js 114

    6.1.5 本章实例的执行环境 115

    6.1.6 JavaScript Promise对象 115

    6.2 区块编程 117

    6.2.1 标识区块 117

    6.2.2 获取当前区块编号 118

    6.2.3 获取默认区块编号 119

    6.2.4 获取指定区块详情 119

    6.2.5 获取指定叔区块 120

    6.3 以太坊账户与交易编程 120

    6.3.1 获取账户列表 120

    6.3.2 默认账户和币基账户 121

    6.3.3 获取账户余额 122

    6.3.4 获取指定区块中的交易数量 123

    6.3.5 获取指定区块中的交易详情 125

    6.3.6 根据交易哈希获取交易对象 126

    6.3.7 获取交易的收据对象 127

    6.3.8 向以太坊网络提交交易 129

    6.3.9 估算交易的Gas用量 131

    6.4 智能合约编程基础 132

    6.4.1 以太坊智能合约的ABI 132

    6.4.2 以太坊智能合约的字节码 135

    6.4.3 在Visual Studio Code中生成智能合约的 ABI和字节码 140

    6.4.4 JSON-RPC 141

    6.5 在Web3.js中与智能合约进行交互 148

    6.5.1 创建合约对象 148

    6.5.2 调用合约函数 151

    6.6 Web3.js开发实例:“明日之星”在线投票 155

    6.6.1 编写投票智能合约 155

    6.6.2 部署和测试投票智能合约 157

    6.7 本章小结 167

    习题 167

    第7章 事件与日志

    7.1 事件 169

    7.1.1 事件模型 169

    7.1.2 定义和触发事件 170

    7.1.3 在Web3.js中监听事件 170

    7.2 日志 176

    7.2.1 在Remix中查看日志数据 176

    7.2.2 底层日志接口 177

    7.2.3 检索日志 179

    7.3 本章小结 180

    习题 181

    第8章 以太坊DApp开发框架Truffle

    8.1 Truffle开发框架概述 182

    8.1.1 Truffle开发框架的基本特性 182

    8.1.2 安装Truffle开发框架 182

    8.1.3 选择以太坊客户端 183

    8.1.4 个人区块链Ganache 183

    8.2 Truffle项目管理 185

    8.2.1 创建项目 185

    8.2.2 配置Truffle项目 188

    8.2.3 编译合约 189

    8.2.4 部署合约 190

    8.3 智能合约编程 193

    8.3.1 与合约进行交互 193

    8.3.2 Truffle Develop 198

    8.3.3 Truffle框架与智能合约MetaCoin交互的前端应用示例 200

    8.3.4 在Truffle框架中使用MetaMask 205

    8.3.5 使用Truffle react项目模板开发基于以太坊智能合约的DApp 211

    8.4 测试合约 221

    8.4.1 Mocha测试框架简介 221

    8.4.2 使用JavaScript编写测试脚本 223

    8.4.3 使用Solidity编写测试脚本 224

    8.5 Truffle示例项目宠物商店pet-shop 226

    8.5.1 创建pet-shop项目 226

    8.5.2 编写智能合约 226

    8.5.3 编译和部署智能合约 227

    8.5.4 开发前端应用 227

    8.5.5 安装并配置MetaMask钱包 231

    8.5.6 运行应用程序 232

    8.6 本章小结 234

    习题 234

    第9章 以太坊测试网络

    9.1 主网络和测试网络 236

    9.1.1 以太坊测试网络概述 236

    9.1.2 获取测试币 237

    9.2 通过Infura节点集群连接以太坊网络 238

    9.2.1 注册Infura账户 238

    9.2.2 通过Infura连接以太坊网络 238

    9.2.3 项目ID和项目密钥 241

    9.2.4 白名单 243

    9.2.5 部署智能合约到Ropsten网络 243

    9.3 在测试网络中基于Web3.js完成以太坊交易 245

    9.3.1 以太坊交易的过程 245

    9.3.2 使用ethereumjs-tx实现与以太坊的交易 246

    9.3.3 完整的交易实例 249

    9.4 本章小结 252

    习题 252

    第 10章 编写安全的智能合约

    10.1 以太坊智能合约安全设计的基本原则 253

    10.1.1 需要遵循的安全理念 253

    10.1.2 从软件工程技术角度规避风险 256

    10.1.3 开发文档 263

    10.1.4 关于报错赏金 264

    10.2 常见的针对智能合约的攻击 265

    10.2.1 重入问题 265

    10.2.2 抢先交易 268

    10.2.3 强制发送以太币到智能合约 269

    10.3 智能合约开发过程中的安全建议 269

    10.3.1 关于以太坊智能合约系统开发的建议 270

    10.3.2 Solidity的安全问题 271

    10.4 智能合约的安全审计 274

    10.4.1 如何对智能合约进行审计 274

    10.4.2 一个审计报告的例子 275

    10.4.3 使用Mythril分析Solidity智能合约的安全漏洞 282

    10.5 本章小结 287

    习题 287
查看详情
12
相关图书 / 更多
Solidity智能合约开发技术与实战
SoC单片机原理与应用(第3版·微课视频版)
鲍可进;赵念强;申屠浩;陈向益
Solidity智能合约开发技术与实战
SoC设计指南:基于Arm Cortex-M [英]姚文祥
[英]姚文祥
Solidity智能合约开发技术与实战
SolidWorks运动仿真教程
闫思江
Solidity智能合约开发技术与实战
Sora掘金一本通:AI短视频原理、提示词到商业盈利
明机 编著
Solidity智能合约开发技术与实战
SolidWorks三维设计与应用(张东明)
季阳萍 主编;李冰 主审;张东明;陆毅华
Solidity智能合约开发技术与实战
SoC底层软件低功耗系统设计与实现
李晓杰 著
Solidity智能合约开发技术与实战
Sophie McKenzie:Three's a Crowd
Sophie McKenzie
Solidity智能合约开发技术与实战
SolidWorks快速入门教程(微课视频版)
赵勇成 邵为龙 主编;冯元超 副主编
Solidity智能合约开发技术与实战
SolidWorks 2023 实用教程
杨正
Solidity智能合约开发技术与实战
SolidWorks三维造型案例教程
刘海;薛俊芳
Solidity智能合约开发技术与实战
Solidworks 2022机械与钣金设计从新手到高手
罗万鑫 于继东 薛瑞臻
Solidity智能合约开发技术与实战
SolidWorks快速入门教程(2022中文版)
北京兆迪科技有限公司
您可能感兴趣 / 更多