由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
[正版新书] 区块链智能合约开发实战 江海、于洪伟、吴书博、孙劼、尹钧 清华大学出版社 区块链技术-程序设计
¥ ×1
书名: | 区块链智能合约开发实战 |
出版社: | 清华大学出版社 |
出版日期 | 2024 |
ISBN号: | 9787302652953 |
智能合约是区块链技术的重要组成部分,同时也是去中心化应用(DApp)开发过程中的核心。智能合约可以使用户实现与区块链的交互,执行用户操作。本书分为8章,讲解了以太坊和智能合约、搭建以太坊智能合约环境、Solidity基础、Solidity高级用法、智能合约应用、智能合约安全、智能合约交互、智能合约开发框架等内容。本书致力于让读者在学会Solidity语法的同时,也能通过案例编码练习提升编程能力。 本书适合作为高等院校区块链、软件工程相关专业的教材,也可作为有编程基础或经验的读者、去中心化应用开发工程师的自学用书。 |
江海,现任江西软件职业技术大学区块链学院副院长,江西省区块链技术专委会委员、江西省区块链学会副秘书长、江西省计算机用户协会专家。 于洪伟,北京千锋互联科技有限公司教学主管,8年互联网开发经验,曾任光大银行技术研发,负责产品研发、技术牵引等工作。完成数十个大中型项目,多年的项目开发和项目管理经验。出版发行《以太坊源码分析》、《Fabric网络学习》、《区块链去中心化钱包》等系列视频和教程。 吴书博,河北工程技术学副教授,主要研究领域经济管理、教育管理。 |
|
本书详尽讲解了区块链与以太坊的核心知识,深入Solidity编程精髓,并通过丰富的实例助您掌握智能合约的开发与交互。适合作为高等院校区块链、软件工程相关专业的教材,也适合有一定编程基础的读者自学。 |
|
第1章 以太坊和智能合约……………………………………………………………………1 1.1 区块链简介及分类………………………………………………………………… 1 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_肨麭�9�0_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 |
|
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格