header image
avatar

0xAA

0xAA

WTF Academy: wtf.academy
Subscribe to 0xAA
Receive new entries directly to your inbox.
Card Header

WTF Solidity极简入门:2. 数值类型

1/100
April 2nd, 2022
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门:3. 函数类型

1/100
April 3rd, 2022
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 5. 变量数据存储和作用域 storage/memory/calldata

1/100
April 7th, 2022
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 6. 数组和结构体, array, struct

1/100
April 8th, 2022
我最近在重新学solidity,巩固一下细节,也写一个“Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 7. 映射类型 mapping

1/100
April 10th, 2022
我最近在重新学solidity,巩固一下细节,也写一个“Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 15.异常

1/100
April 21st, 2022
这一讲,我们介绍solidity三种抛出异常的方法:error,require和assert,并比较了三种方法的gas消耗。结论:error既可以告知用户抛出异常的原因,又能省gas。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 16. 函数重载

1/100
April 29th, 2022
solidity中允许函数进行重载(overloading),即名字相同但输入参数类型不同的函数可以同时存在,他们被视为不同的函数。注意,solidity不允许修饰器(modifier)重载。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 9. 常量 constant和immutable

1/100
April 28th, 2022
这一讲,我们介绍solidity中两个关键字,constant(常量)和immutable(不变量)。状态变量声明这个两个关键字之后,不能在合约后更改数值;并且还可以节省gas。另外,只有数值变量可以声明constant和immutable;String和bytes可以声明为constant,但不能为immutable。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 17. 库合约 站在巨人的肩膀上

1/100
April 20th, 2022
这一讲,我们用ERC721的引用的库函数String为例介绍solidity中的库合约(library),并介绍了常用的库函数。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 14. 抽象合约和接口

1/100
April 19th, 2022
这一讲,我们用ERC721的接口合约为例介绍solidity中的抽象合约(abstact)和接口(interface),帮助大家更好的理解ERC721标准。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 13. 继承 父与子

1/100
April 18th, 2022
这一讲,我们用介绍solidity中的继承(inheritance),包括简单继承,多重继承,以及修饰器(modifier)和构造函数(constructor)的继承。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 12. 事件

1/100
April 17th, 2022
这一讲,我们用转账ERC20代币为例来介绍solidity中的事件(event)。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 0. 写在前面

1/100
April 14th, 2022
第0讲,我总结一些学solidity需要的背景知识,包括代码风格、特殊变量等等,不断更新。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 11. 构造函数和修饰器

1/100
April 12th, 2022
这一讲,我们将用合约权限控制(Ownable)的例子介绍solidity语言中构造函数(constructor)和独有的修饰器(modifier)
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 10. 控制流,用solidity实现插入排序

1/100
April 11th, 2022
这一讲,我们将介绍solidity中的控制流,然后讲如何用solidity实现插入排序(InsertionSort),一个看起来简单,但实际上很容易写出bug的程序。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 19. 接收ETH receive和fallback

1/100
May 1st, 2022
Solidity支持两种特殊的回调函数,receive()和fallback(),他们主要在两种情况下被使用: 接收ETH 处理合约中不存在的函数调用(代理合约proxy contract) 我们这一讲主要介绍接收ETH的情况。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 21. 调用其他合约

1/100
May 5th, 2022
solidity强大的一点是可以写合约去调用其他已部署的合约,让以太坊网络上的程序可以复用。很多web3项目依赖于调用其他合约,比如收益农场(yield farming)。这一讲,我们介绍如何在已知合约代码(或接口)和地址情况下调用目标合约的函数。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 20. 发送ETH transfer,send和call

1/100
May 3rd, 2022
这一讲,我们介绍solidity三种发送ETH的方法:transfer,send和call。call没有gas限制,最为灵活,是最提倡的方法;transfer有2300 gas限制,但是发送失败会自动revert交易,是次优选择;transfer有2300 gas限制,而且发送失败不会自动revert交易,几乎没有人用它。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 4. 函数输出 return

1/100
May 4th, 2022
这一讲,我们将介绍Solidity函数输出,包括:返回多种变量,命名式返回,以及利用解构式赋值读取全部和部分返回值。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 8. 变量初始值

1/100
May 9th, 2022
这一讲,我们介绍了solidity中变量的初始值。变量被声明但没有赋值的时候,它的值默认为初始值。不同的变量初始值不同,delete操作符可以删除一个变量的值并代替为初始值。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 22. Call

1/100
May 12th, 2022
我们曾在第17讲:发送ETH那一讲介绍过利用call来发送ETH,这一讲我们将介绍如何利用它调用合约。 solidity教程
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 23. Delegatecall

1/100
May 13th, 2022
这一讲我们介绍了solidity中的另一个低级函数delegatecall。与call类似,它可以用来调用其他合约;不同点在于运行的语境,B call C,语境为C;而B delegatecall C,语境为B。目前delegatecall最大的应用是代理合约和EIP-2535 Diamonds(钻石)。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 24. 在合约中创建新合约

1/100
May 14th, 2022
在以太坊链上,用户(外部账户,`EOA`)可以创建智能合约,智能合约同样也可以创建新的智能合约。去中心化交易所`uniswap`就是利用工厂合约(`Factory`)创建了无数个币对合约(`Pair`)。这一讲,我会用简化版的`uniswap`讲如何通过合约创建合约。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 25. Create2

1/100
May 15th, 2022
CREATE2 操作码使我们在智能合约部署在以太坊网络之前就能预测合约的地址。Uniswap创建Pair合约用的就是CREATE2而不是CREATE2。这一讲,我将介绍CREATE2的用法
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 27. ABI编码解码

1/100
May 20th, 2022
ABI (Application Binary Interface,应用二进制接口)是与以太坊智能合约交互的标准。数据基于他们的类型编码;并且由于编码后不包含类型信息,解码时需要注明它们的类型。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 26. 删除合约

1/100
May 16th, 2022
selfdestruct(自毁)命令可以用来删除智能合约,并将该合约剩余ETH转到指定地址。selfdestruct是为了应对合约出错的极端情况而设计的。它最早被命名为suicide(自杀),但是这个词太敏感。为了保护抑郁的程序员,改名为selfdestruct。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 28. Hash

1/100
May 22nd, 2022
哈希函数(hash function)是一个密码学概念,它可以将任意长度的消息转换为一个固定长度的值,这个值也称作哈希(hash)。这一讲,我们简单介绍一下哈希函数及在solidity的应用
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 29. 函数选择器Selector

1/100
May 23rd, 2022
当我们调用智能合约的函数时,发送的字节码的前4个字节是selector(函数选择器)。这一讲,我们介绍什么是函数选择器(selector),它和msg.data、函数签名的关系,以及如何使用它调用目标函数。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 30. Try Catch

1/100
May 25th, 2022
try-catch是现代编程语言几乎都有的处理异常的一种标准方式,solidity0.6版本也添加了它。这一讲,我们将介绍如何利用try-catch处理智能合约运行中的异常。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 18. Import

1/100
May 27th, 2022
这一讲,我们介绍了利用import关键字导入外部源代码的方法。import可以让我们直接导入别人写好的代码,非常方便。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 31. ERC20

1/100
June 27th, 2022
在这一讲,我们学习了以太坊上的ERC20标准及其实现,并且发行了我们的测试代币。 ERC20是以太坊上的代币标准,是2015年11月V神参与的EIP20的实现。它主要实现了代币转账的基本逻辑。ERC20代币标准极大的降低了以太坊上发行代币的门槛,并开启了ICO大时代。在投资时,仔细阅读项目的代币合约,可以有效避开貔貅,增加投资成功率。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 40. ERC1155

1/100
July 22nd, 2022
这一讲我们学习了以太坊EIP1155提出的ERC1155多代币标准,它允许一个合约中包含多个同质化或非同质化代币。并且,我们创建了魔改版无聊猿 - BAYC1155:一个包含10,000种代币且元数据与BAYC相同的ERC1155代币。目前,ERC1155主要应用于抽象游戏中的装备和金币。相信随着元宇宙技术不断发展,ERC1155会越来越流行。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 39. 链上随机数

1/100
July 19th, 2022
很多以太坊上的应用都需要用到随机数,例如NFT随机抽取tokenId、抽盲盒、gamefi战斗中随机分胜负等等。但是由于以太坊上所有数据都是公开透明(public)且确定性(deterministic)的,它没法像其他编程语言一样给开发者提供生成随机数的方法。这一讲我们将介绍链上(哈希函数)和链下(chainlink预言机)随机数生成的两种方法,并利用它们做一款tokenId随机铸造的NFT。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 38. NFT交易所

1/100
July 14th, 2022
Opensea是以太坊上最大的NFT交易平台,总交易总量达到了$300亿。Opensea在交易中抽成2.5%,因此它通过用户交易至少获利了$7.5亿。另外,它的运作并不去中心化,且不准备发币补偿用户。NFT玩家苦Opensea久已,今天我们就利用智能合约搭建一个零手续费的去中心化NFT交易所:NFTSwap。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 37. 数字签名 Signature

1/100
July 12th, 2022
这一讲,我们介绍了以太坊中的数字签名`ECDSA`,如何利用`ECDSA`创建和验证签名,`ECDSA`合约,以及如何利用它发放`NFT`白名单。代码中的`ECDSA`库由`openzepplin`的同名库简化而成。由于签名是链下的,不需要`gas`,因此这种白名单发放模式比`Merkle Tree`模式还要经济。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 36. 默克尔树 Merkle Tree

1/100
July 7th, 2022
这一讲,我们介绍了Merkle Tree的概念,如何生成简单的Merkle Tree,如何利用智能合约验证Merkle Tree,以及用它来发放NFT白名单。在实际使用中,复杂的Merkle Tree可以利用javascript库merkletreejs来生成和管理,链上只需要存储一个根值,非常节省gas。很多项目方都选择利用Merkle Tree来发放白名单。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 35. 荷兰拍卖

1/100
July 5th, 2022
这一讲,我将介绍荷兰拍卖,并通过简化版Azuki荷兰拍卖代码,讲解如何通过荷兰拍卖发售ERC721标准的NFT。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 34. ERC721

1/100
July 3rd, 2022
这一讲,我介绍了ERC721标准、接口及其实现,并在合约代码进行了中文注释。并且我们利用ERC721做了一个免费铸造的WTF APE NFT,元数据直接调用于BAYC。ERC721标准仍在不断发展中,目前比较流行的版本为ERC721Enumerable(提高NFT可访问性)和ERC721A(节约铸造gas)。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 33. 空投合约

1/100
June 29th, 2022
空投是币圈中一种营销策略,项目方将代币免费发放给特定用户群体。为了拿到空投资格,用户通常需要完成一些简单的任务,如测试产品、分享新闻、介绍朋友等。项目方通过空投可以获得种子用户,而用户可以获得一笔财富,两全其美。 因为每次接收空头的用户很多,项目方不可能一笔一笔的转账。利用智能合约批量发放ERC20代币,可以显著提高空投效率。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

Solidity极简入门: 32. 代币水龙头

1/100
June 28th, 2022
我们在第31讲学习了ERC20代币标准。这一讲,我将写ERC20水龙头的智能合约。在这个合约中,用户可以领到免费的ERC20代币。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 41. WETH

1/500
August 3rd, 2022
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 42. 分账

1/500
August 4th, 2022
分账就是按照一定比例分钱财。在现实中,经常会有“分赃不均”的事情发生;而在区块链的世界里,Code is Law,我们可以事先把每个人应分的比例写在智能合约中,获得收入后,再由智能合约来进行分账。代码部分由oppenzepplin库的PaymentSplitter合约简化而来。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 43. 线性释放

1/500
August 8th, 2022
代币短期大量解锁会对币价造成巨大压力,而约定代币归属条款可以缓解抛压,并防止团队和资本方过早躺平。这一讲,我们介绍了代币归属条款,并写了线性释放ERC20代币的合约。代码由OpenZepplin的VestingWallet合约简化而来。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 44. 代币锁

1/500
August 11th, 2022
这一讲,我们介绍了代币锁合约。项目方一般在DEX上提供流动性,供投资者交易。项目方突然撤出LP会造成rug-pull,而将LP锁在在代币锁合约中可以避免这种情况。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门:1. HelloWeb3 (三行代码)

3/100
March 31st, 2022
我最近在重新学solidity,巩固一下细节,也写一个“WTF Solidity极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 45. 时间锁

1/500
August 13th, 2022
在区块链,时间锁被DeFi和DAO大量采用。它是一段代码,他可以将智能合约的某些功能锁定一段时间。它可以大大改善智能合约的安全性,举个例子,假如一个黑客黑了Uniswap的多签,准备提走金库的钱,但金库合约加了2天锁定期的时间锁,那么黑客从创建提钱的交易,到实际把钱提走,需要2天的等待期。
Publisher Avatar 0xAA
0xAA
0x25df
Card Header

WTF Solidity极简入门: 46. 代理合约

1/500
August 19th, 2022
这一讲,我们介绍了代理模式和简单的代理合约。代理合约利用delegatecall将函数调用委托给了另一个逻辑合约,使得数据和逻辑分别由不同合约负责。并且,它利用内联汇编黑魔法,让没有返回值的回调函数也可以返回数据。下一讲,我们会介绍可升级代理合约。
Publisher Avatar 0xAA
0xAA
0x25df