• 【假一罚四】WTF Solidity智能合约教程(入门篇)0xAA编著
21年品牌 40万+商家 超1.5亿件商品

【假一罚四】WTF Solidity智能合约教程(入门篇)0xAA编著

集团直发,全新正版书籍,假一罚四,放心选购。可开发票

43.7 6.4折 68 全新

库存60件

浙江嘉兴
认证卖家担保交易快速发货售后保障

作者0xAA编著

出版社科学出版社

ISBN9787030758880

出版时间2023-08

装帧平装

开本16开

定价68元

货号13237487

上书时间2024-07-15

朗朗图书书店

已实名 已认证 进店 收藏店铺
  • 店主推荐
  • 最新上架

   商品详情   

品相描述:全新
商品描述
目录
第1讲从Hello Web3开始

 1.1Solidity简述1

 1.2开发工具:remix1

 1.3第一个Solidity程序2

 1.4编译并部署代码3

 1.5总结4

 第2讲值类型

 2.1布尔型5

 2.2整型7

 2.3地址8

 2.4字节数组9

 2.5枚举9

 2.6总结10

 第3讲函数

 3.1Solidity中的函数11

 3.2到底什么是pure和view?12

 3.3代码实现13

 3.4测试payable关键字声明的函数15

 3.5总结17

 第4讲函数输出

 4.1返回值关键字return和returns18

 4.2命名式返回19

 4.3解构式赋值19

 4.4总结20

 第5讲变量的数据存储和作用域

 5.1Solidity中的引用类型21

 5.2数据位置21

 5.3变量的作用域24

 5.4变量的单位和换算26

 5.5总结30

 第6讲数组和结构体

 6.1数组31

 6.2结构体34

 6.3总结37

 第7讲映射类型

 7.1映射的声明38

 7.2映射的规则38

 7.3映射的底层机制40

 7.4总结40

 第8讲变量的初始值

 8.1值类型的初始值41

 8.2引用类型的初始值43

 8.3delete操作符43

 8.4总结44

 第9讲常量和不变量

 9.1constant关键字45

 9.2immutable关键字46

 9.3总结47

 第10讲控制流及其实践

 10.1控制流48

 10.2实例:用Solidity实现插入排序50

 10.3总结53

 第11讲构造函数和修饰器

 11.1构造函数54

 11.2修饰器55

 11.3onlyOwner修饰器的演示56

 11.4总结57

 第12讲事件

 12.1事件58

 12.2EVM日志59

 12.3在remix上演示Solidity事件和日志60

 12.4总结62

 第13讲继承

 13.1继承的基本概念63

 13.2简单继承63

 13.3多重继承65

 13.4修饰器的继承66

 13.5构造函数的继承68

 13.6调用父合约的函数69

 13.7钻石继承71

 13.8总结73

 第14讲抽象合约和接口

 14.1抽象合约74

 14.2接口75

 14.3应用:ERC721标准接口的实现75

 14.4总结79

 第15讲异常

 15.1异常80

 15.2在remix上演示异常82

 15.3三种方法的gas消耗比较83

 15.4总结84

 第16讲函数重载

 16.1函数重载的例子85

 16.2实参匹配(argument matching)86

 16.3总结87

 第17讲库合约

 17.1库合约88

 17.2示例:Strings库合约88

 17.3使用库合约的方法91

 17.4总结92

 第18讲导入其他合约

 18.1import关键字94

 18.2测试导入结果95

 18.3总结96

 第19讲接收ETH

 19.1接收ETH的回调函数receive()97

 19.2回退函数fallback()98

 19.3两种回调函数的区别99

 19.4在remix上演示回调函数99

 19.5总结101

 第20讲发送ETH

 20.1接收ETH的合约102

 20.2发送ETH的合约103

 20.3总结108

 第21讲调用其他合约

 21.1调用已部署合约109

 21.2编写目标合约109

 21.3调用目标合约110

 21.4总结115

 第22讲call函数

 22.1call函数及其使用场景116

 22.2准备目标合约117

 22.3用call函数调用目标合约118

 22.4总结122

 第23讲delegatecall函数

 23.1delegatecall函数123

 23.2delegatecall的应用场景124

 23.3delegatecall的用法示例125

 23.4在remix上展示delegatecall的用法126

 23.5总结129

 第24讲在合约中创建新合约

 24.1基于CREATE操作码生成合约130

 24.2示例:一个简化版的Uniswap130

 24.3在remix上演示合约的创建133

 24.4总结134

 第25讲CREATE2操作码

 25.1CREATE操作码如何计算新合约地址135

 25.2CREATE2操作码如何计算新合约地址135

 25.3示例:一个简化版的Uniswap2136

 25.4在remix上演示基于CREATE2创建合约140

 25.5CREATE2操作码的实际应用场景141

 25.6总结141

 第26讲删除合约

 26.1selfdestruct命令142

 26.2示例:DeleteContract合约142

 26.3在remix上演示删除合约143

 26.4注意事项145

 26.5总结145

 第27讲ABI的编码和解码

 27.1ABI编码146

 27.2ABI解码149

 27.3在remix上展示ABI编码和解码150

 27.4ABI的使用场景150

 27.5总结152

 第28讲哈希函数

 28.1哈希函数的性质和应用153

 28.2keccak256函数154

 28.3总结156

 第29讲函数选择器

 29.1函数选择器157

 29.2总结160

 第30讲捕获异常

 30.1try-catch实战162

 30.2总结167

 附录AERC20代币标准和实现

 A.1ERC20代币标准168

 A.2IERC20接口合约168

 A.3ERC20代币的实现171

 A.4发行ERC20代币174

 A.5总结175

 附录B贡献者名单176

内容摘要

第1讲 从Hello Web3开始

 1.1 Solidity简述

 Solidity是以太坊虚拟机(EVM) 智能合约的语言。同时,笔者认为Solidity是熟练操作区块链相关项目必备的技能:区块链项目大部分是开源的,用户如果能读懂代码,就可以规避很多质量较差的项目。

 Solidity具有如下两个特点:

 (1)面向智能合约:Solidity提供了丰富的智能合约功能,包括状态变量(用于存储合约状态)、函数(用于定义合约的行为),事件(用于与外部应用程序通信)和修饰器(用于修改函数的行为)等,这些功能使得开发人员能够编写强大的智能合约。

 (2)静态类型:Solidity是静态类型语言,每个变量的类型都需要在编译器确定,这有助于在编程阶段发现错误。

 1.2 开发工具:remix

 本教程中,笔者使用remix来运行Solidity合约。remix是以太坊官方推荐的智能合约开发IDE(集成开发环境),适合新手,可以在浏览器中快速开发和部署合约,而不需要在本地安装任何程序。remix的网址如下:

 https://remix.ethereum.org

 图1.1显示了remix开发环境的一部分面板。进入remix,我们可以看到最左边的菜单有一系列按钮,其中主要有“文件”(文件浏览器界面,在此添加和编写Solidity合约程序)、“编译”(将合约编译成可运行的格式)、“部署”(部署到区块链上)等按钮。

 图1.1 remix面板

 在文件浏览器界面点击“新建文件”(Create New File)按钮,就可以创建一个空白的Solidity合约文件。

 1.3 第一个Solidity程序

 很简单,只有1行注释+ 4行代码:

 1 // SPDX-License-Identifier: MIT

 2 pragma solidity ^0.8.4?

 3 contract HelloWeb3{

 4 string public _string = "Hello Web3!"?

 5 }

 我们拆开分析,学习Solidity代码源文件的结构:

 (1)第1行是注释,其中标明这个代码所用的软件许可证(license),这里用的是MIT许可证,也是Solidity合约默认使用的开源许可证。如果不写许可,编译时会警告(warning),但程序可以运行。Solidity的注释由“//”开头,后面跟注释的内容(不会被程序运行)。

 1 // SPDX-License-Identifier: MIT

 第1讲从Hello Web3开始3

 (2)第2行声明源文件所用的Solidity版本,因为不同版本语法有差别。这行代码的意思是源文件将不允许小于0.8.4版本或大于等于0.9.0的编译器编译(第二个条件由“^”提供)。Solidity语句以分号“?”结尾。

 2 pragma solidity ^0.8.4?

 (3)第3~5行是合约部分,第3行创建合约(contract),并声明合约的名字为HelloWeb3。第4 行是合约的内容,我们声明了一个string(字符串)类型的变量“_string”,并给它赋值“Hello Web3!”。

 3 contract HelloWeb3{

 4 string public _string = "Hello Web3!"?

 5 }

 在后面的内容中,我们将会详细介绍Solidity中的变量。

 1.4 编译并部署代码

 在remix 开发环境下,点击图1.1所示界面左侧的“编译”按钮,或者按Ctrl+S 就可以编译代码,非常方便。

 编译好之后,点击“部署”按钮进入部署界面,如图1.2所示。

 图1.2 Solidity合约的部署设置界面

 在默认情况下,remix会用JavaScript虚拟机来模拟以太坊区块链,运行智能合约,相当于在浏览器里直接运行一条测试链。另外,remix会分配若干个测试账户用于测试合约的运行,每个账户里面有额度为100 ETH的测试代币,供用户自由使用以测试合约代码(不会进入实际的交易流程)。点击图1.2所示界面中的“Deploy”(黄色按钮),就可以部署刚才写好的合约了。

 部署成功后,在部署界面的下方会看到名为HelloWeb3 的合约,如图1.3所示。点击“_string”,就能看到我们代码中写的“Hello Web3!”了。

 图1.3 部署成功后查看Solidity合约的运行结果

 1.5 总结

 作为全书的开篇,这一讲中我们简单介绍了Solidity和remix工具,并完成了第一个Solidity 程序——Hello Web3。下面我们将继续Solidity旅程!

 第2讲 值类型

 Solidity语言中的变量类型主要包括以下三种:

 (1)值类型(value type):包括布尔型和整型等。这类变量在赋值的时候直接传递数值。

 (2)引用类型(reference type):包括数组和结构体。这类变量占用的存储空间较大,在赋值的时候直接传递变量的地址(类似C语言中的指针)。

 (3)映射类型(mapping type):Solidity 中存储键值对的数据结构,可以理解为哈希表。

 这一讲我们将介绍值类型。

 2.1 布尔型

 布尔型是二元变量,取值为true 或false。

 1 //布尔值

 2 bool public _bool = true?

 布尔值的运算符包括如下几种:

 (1)!(逻辑非)。

 (2)&&(逻辑与,“and”)。

 (3)||(逻辑或,“or”)。

 (4)==(等于)。

 (5)!=(不等于)。

 例如,接着上一段代码,借助_bool变量定义一个新的布尔型变量_bool1,并进行运算:

 1 //布尔运算

 2 bool public _bool1 = !_bool? //取非

 3 bool public _bool2 = _bool && _bool1? //与

 4 bool public _bool3 = _bool || _bool1? //或

 5 bool public _bool4 = _bool == _bool1? //相等

 6 bool public _bool5 = _bool != _bool1? //不相等

 以上代码中,变量_bool的取值是true。_bool1是_bool进行逻辑非运算的结果,为false。_bool && _bool1的运算结果为false。_bool || _bool1的运算结果为true。_bool == _bool1的运算结果为false。_bool != _bool1的运算结果为false。

 读者可在部署合约后检验这些变量的结果,如图2.1所示。

 图2.1 Solidity中的布尔变量及其运算

 注意:&&和||两个运算符的机制和其他许多语言中的类似,遵循所谓“短路规则”。

……



精彩内容
区块链技术和智能合约已深深改变数字生活的格局,正引领我们走向一个更加去中心化、公开透明的世界。Solidity作为最重要的智能合约编程语言,在这次技术变革中的重要性不言而喻。本书旨在帮助读者快速掌握这门语言,开启Web开发之旅。

 本书内容源自GitHub上发布的“WTF Solidity教程”,丰富且实用,用通俗易懂的语言描述Solidity的基础知识,通过实例和代码示例,深入浅出地介绍Solidity编程的关键概念,以及智能合约的优化、安全等高级主题,让读者能够编写出更安全、更高效的智能合约。

 本书可作为高等院校计算机、软件工程、大数据、人工智能等专业师生的参考用书,也可供区块链应用程序开发人员参考使用。

媒体评论

本书以通俗易懂的方式介绍了Solidity语言的核心语法和使用技巧,并探讨了智能合约的安全性和性能优化,无论对于Solidity语言的初学者还是有经验的开发者,本书都提供了宝贵的知识和见解。



—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP