timezone |
---|
Asia/Shanghai |
-
自我介绍
WTF Academy 成员,参与过WTF Academy相关开发、校对、翻译,担任本次学习的助教
-
你认为你会完成本次残酷学习吗?
可以完成
学习代币对的创建方式和流程,create代币后,通过PairFactory创建代币对,然后通过pair进行管理。
学习委托函数,了解委托函数的运行状态依赖之前的调用函数状态。
学习call 调用方式及call安全性问题。
学习调用其他合约,完成组合功能。
学习 接收和发送eth,可以正确处理资产
学习 库合约的使用方法。
学习 函数重载,了解函数重载的定义和匹配机制。
修复force push main导致的异常
学习 继承,了解到特殊的继承规则,钻石继承指一个派生类同时有两个或两个以上的基类,需要使用特殊关键字super完成。
学习 抽象合约和接口,抽象合约是需要重写或者未完成,都是抽象合约。
接口理解下来就是正常调库中的接口。
学习 异常,了解到三种抛出异常的方法,最省gas的是error。
学习 控制流,控制流即逻辑处理,都是正常开发常见的。
学习到一种插入算法常见错误,uint处理到负数后会报错,大家需要仔细处理。
学习 构造函数和修饰器,构造函数是一种特殊函数,每个合约只能部署一个,用于初始化变量。
修饰器用于处理函数的调用权限,只有某个地址可调用。
学习事件,包括事件的结构和如何触发事件。
evm中的log可以存储事件,分为主题和数据两部分。
学习变量初始化,看到奇怪的名词,空白函数,发现只是起占位的作用,可以在继承函数中实现具体功能,但是具体用途和模板函数有什么区别呢?
AI解释也比较笼统,没理解,后续结合项目了解。
变量初始化完成后可以进行恢复初始化,和C++中的理解不同的是,delete实现的操作是恢复变量的初始值,而不是直接删除这个变量,那看来是只能
进行修改,而不能删除?还是有些奇怪。
学习常数,常数有在声明时候必须初始化的常数,并且不能修改。
也有可以分开处理的常数。
学习函数输出,正常的函数调用中,我们会与协作人员规定函数返回格式,但是代码并没有强力检查。
从而很多情况下,会出现函数结果与预期不符,导致程序崩溃的问题,在web3中规定,一个函数有两个返回值。
returns返回规定的数据格式,return返回具体的返回值。
基于此进行的扩展,可以直接在returns中返回的指定的变量,这样就相当于是初始化,然后直接在函数中调用,就不需要return主动返回。
返回的值也可以留空,不处理。
学习数据位置,正常的数据对象分为两种,变量和常量,在web3中,因为不同的数据的存储是有成本的,
链上成本高,storage数据存储在链上,消耗gas高。
不在链上,就分为两种,一种是常量 calldata ,一种是变量 memory。
变量又分为三种,有一种又是特殊的,可以上链的,是状态变量。
其他的就是常见的局部变量和全局变量。
全局变量又分为两个类型,web3是处理时间与金钱问题,所以以太单位全是整数,没有小数点概念。
时间也是需要精确处理,提高合约的可读性和可维护性。
学习 引用类型,有数组和结构体。
学习映射的规则,比较重要的是映射也是链上的变量数据。
学习 数值类型,除传统的类型外,web3中多了几种类型,分别是地址类,定长字节数组。
此外可以把enum显式转化为int。
学习 函数,我们在常见的函数分类中,分为类内函数和类外函数。
在web3中,有更多的分类,将内外有了更明确的分类。
又分为了
- 内外可同时使用的
- 只能从外调用的
- 只能从合约内调用的,继承的合约可用
- 只能从本合约内调用的,继承的合约也不可用
因为web3中更多都是基于账户操作,权限也更为专业。 分为三种类型,在这节中学习了常见的payable类型函数,用于交易操作。
辅导大家使用git