Skip to content

Latest commit

 

History

History
212 lines (121 loc) · 9.42 KB

button.md

File metadata and controls

212 lines (121 loc) · 9.42 KB
timezone
Asia/Shanghai

button

  1. 自我介绍

    WTF Academy 成员,参与过WTF Academy相关开发、校对、翻译,担任本次学习的助教

  2. 你认为你会完成本次残酷学习吗?

    可以完成

Notes

2024.10.16

学习ERC4626 ,你把ETH存了后,可以在金库得到stETH作为质押凭证,同时有一些项目是可以用stETH作为资产抵押去获得收益,提供了非常大的灵活性。

学习EIP712数据签名,在之前的简易签名中,会隐藏原始的签名信息,在712签名中可以看到签名的原始数据,更透明,更安全。

学习ERC 2612,可以做到A账号没ETH,但是由B账号完成委托任务,在抢跑中见到过。

学习了三种完成跨链桥的方法。

学习多重调用,可以在一次call中完成多个函数,并且要么都成功,要么都失败,完成很多功能。

学习去中心化交易所,或者说组LP的功能,后期有能力构建完成一部分。

学习闪电贷,可以在没有抵押的场景下借到款,但是整个动作完成后需要马上偿还代币。

2024.10.15

学习分账,重点是 Code is Law ,要是银行也可以自动替人执行分账,那就太牛了。

学习线性释放,重点是约束股权人或者大户,让他们没法一次性全部解售,跟股票限制股东是一回事。

学习代币锁,防止组LP的庄直接跑路,组LP的时候如何检测呢?后面研究下。

学习时间锁,为了防止黑客或者某些安全事件,增加锁定期,在锁定期无法操作。

学习代理合约,正常合约能让人们知道它的工作原理,但是如果出现安全问题,也没办法修复,采用代理合约方式,可以升级合约修补漏洞。

学习可升级合约,可升级合约和代理合约的区别在于它的实现方式的变更,代理合约是一个合约,直接更换代理合约即可,可升级合约链接的合约直接可以更新。

学习透明代理,因为升级合约时容易遇到函数选择器相同的情况,简单来说就是两个函数的特征码是一样的,就不知道调用哪个了,透明代理指定管理者直接可以选择调用哪个函数,避免升级时出现无法解决的问题。

学习通用可升级代理,简单来说,没看懂,与透明代表比较起来,省gas。

学习多签钱包,可以让自己的钱包更安全,多个人一起才能控制账号。但是又出现了安全问题,如果你的账号被多签,钱包所有权就转移了,简单来说,成了别人的钱包了,见过一次。

2024.10.14

学习数字签名内容,了解到数字签名实际上为了防止误签了恶意交易,所以“倡导”在消息中添加特殊字符,但是最近看到好多大佬也遇到了误签而被盗的问题,大家还是得仔细检查签名信息。

学习NFT的交易逻辑,可以自己搞交易所。

学习链上随机数,随机数的作用在网络中还是非常重要的,任何涉及到概率的问题都是随机数问题,所以之前也有很多因为随机数导致的安全问题,开发中都需要注意。

学习ERC1155,我们正常接触代币,都是一种一种,但是在游戏这个具体场景下,出现了物品的概念,在一个游戏中有非常多的物品,不可能每一个物品都发行一种代币,这样太麻烦,所以引出了ERC1155的功能,一个合约实现一堆的代币,完成物品的功能。

学习WETH,ETH的原始版本实际上并不支持智能合约,需要经过WETH的包装才能支持相应的功能。

2024.10.13

学习代币水龙头,可以在上一节发行自己代币的基础上开发水龙头,方便其他人测试与交互。

学习空头合约,通过批量转账方式完成空投的发放。

学习ERC721,可用于发行NFT。同时为了检测功能性,又可以检测ERC165,作为能力的检测。

学习荷兰拍卖,可以防止gas war。

学习默克尔树,只需要完成证明,即可省下数量惊人的手续费,这里就有一点点工作量和证明关系的理解。

2024.10.12

学习完前面的语言基础后已经可以进行完整的项目开发了,今天学习如何发行erc20代币,还是比较简单的。直接套用函数就行了。

2024.10.11

学习try-catch的异常处理方法,正确处理函数的异常对于我们日常开发非常有必要。

2024.10.10

学习到函数选择器,解决了我之前的困惑,为什么abi或者说硬编码也可以用来调用函数,实际上每个函数有自己的methodie,从而确认调用函数对象。

2024.10.09

学习hash概念,用于消息的唯一性确认,但是是用来干嘛呢?谁对这个行为敏感呢?再考虑下。

2024.10.08

学习ABI编码解码,之前对这个也有简单的了解,为什么呢?有些合约不开源,你想要交互,只能走网页。 你想批量操作,就会研究ABI相关的东西。

2024.10.07

学习如何指定合约地址的合约创建方法,听着好像可以干黑客的操作。 学习如何删除合约,还看到了改名原因:) , 可以在销毁合约后进行指定转账的操作。

2024.10.06

学习代币对的创建方式和流程,create代币后,通过PairFactory创建代币对,然后通过pair进行管理。

2024.10.05

学习委托函数,了解委托函数的运行状态依赖之前的调用函数状态。

2024.10.04

学习call 调用方式及call安全性问题。

2024.10.03

学习调用其他合约,完成组合功能。

2024.10.02

学习 接收和发送eth,可以正确处理资产

2024.10.01

学习 库合约的使用方法。

2024.09.30

学习 函数重载,了解函数重载的定义和匹配机制。

2024.09.29

修复force push main导致的异常

2024.09.28

学习 继承,了解到特殊的继承规则,钻石继承指一个派生类同时有两个或两个以上的基类,需要使用特殊关键字super完成。

学习 抽象合约和接口,抽象合约是需要重写或者未完成,都是抽象合约。

接口理解下来就是正常调库中的接口。

学习 异常,了解到三种抛出异常的方法,最省gas的是error。

2024.09.27

学习 控制流,控制流即逻辑处理,都是正常开发常见的。

学习到一种插入算法常见错误,uint处理到负数后会报错,大家需要仔细处理。

学习 构造函数和修饰器,构造函数是一种特殊函数,每个合约只能部署一个,用于初始化变量。

修饰器用于处理函数的调用权限,只有某个地址可调用。

学习事件,包括事件的结构和如何触发事件。

evm中的log可以存储事件,分为主题和数据两部分。

2024.09.26

学习变量初始化,看到奇怪的名词,空白函数,发现只是起占位的作用,可以在继承函数中实现具体功能,但是具体用途和模板函数有什么区别呢?

AI解释也比较笼统,没理解,后续结合项目了解。

变量初始化完成后可以进行恢复初始化,和C++中的理解不同的是,delete实现的操作是恢复变量的初始值,而不是直接删除这个变量,那看来是只能

进行修改,而不能删除?还是有些奇怪。

学习常数,常数有在声明时候必须初始化的常数,并且不能修改。

也有可以分开处理的常数。

2024.09.25

学习函数输出,正常的函数调用中,我们会与协作人员规定函数返回格式,但是代码并没有强力检查。

从而很多情况下,会出现函数结果与预期不符,导致程序崩溃的问题,在web3中规定,一个函数有两个返回值。

returns返回规定的数据格式,return返回具体的返回值。

基于此进行的扩展,可以直接在returns中返回的指定的变量,这样就相当于是初始化,然后直接在函数中调用,就不需要return主动返回。

返回的值也可以留空,不处理。

学习数据位置,正常的数据对象分为两种,变量和常量,在web3中,因为不同的数据的存储是有成本的,

链上成本高,storage数据存储在链上,消耗gas高。

不在链上,就分为两种,一种是常量 calldata ,一种是变量 memory。

变量又分为三种,有一种又是特殊的,可以上链的,是状态变量。

其他的就是常见的局部变量和全局变量。

全局变量又分为两个类型,web3是处理时间与金钱问题,所以以太单位全是整数,没有小数点概念。

时间也是需要精确处理,提高合约的可读性和可维护性。

学习 引用类型,有数组和结构体。

学习映射的规则,比较重要的是映射也是链上的变量数据。

2024.09.24

学习 数值类型,除传统的类型外,web3中多了几种类型,分别是地址类,定长字节数组。

此外可以把enum显式转化为int。

学习 函数,我们在常见的函数分类中,分为类内函数和类外函数。

在web3中,有更多的分类,将内外有了更明确的分类。

又分为了

  1. 内外可同时使用的
  2. 只能从外调用的
  3. 只能从合约内调用的,继承的合约可用
  4. 只能从本合约内调用的,继承的合约也不可用

因为web3中更多都是基于账户操作,权限也更为专业。 分为三种类型,在这节中学习了常见的payable类型函数,用于交易操作。

2024.09.23

辅导大家使用git