Skip to content

Latest commit

 

History

History
332 lines (175 loc) · 33.3 KB

README.md

File metadata and controls

332 lines (175 loc) · 33.3 KB

🌐 English / Español / Português Brasileiro 🌐

WTF Solidity

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

路线图根据本仓库star数量来定:

入门

第1讲:三行代码HelloWeb3代码 | 文章 | Mirror

第2讲:值类型代码 | 文章 | Mirror

第3讲:函数 (external/internal/public/private, pure/view, payable)代码 | 文章 | Mirror

第4讲:函数输出(returns/return)代码 | 文章 | Mirror

第5讲:变量作用域和数据存储 (storage/memory/calldata)代码 | 文章 | Mirror

第6讲:数组(array)和结构体(struct)代码 | 文章 | Mirror

第7讲:映射(mapping)代码 | 文章 | Mirror

第8讲:变量初始值代码 | 文章 | Mirror

第9讲:常量(constant/immutable)代码 | 文章 | Mirror

第10讲:控制流和插入排序代码 | 文章 | Mirror

第11讲:构造函数(constructor)和修饰器(modifier)代码 | 文章 | Mirror

第12讲:事件(events)代码 | 文章 | Mirror

第13讲:继承代码 | 文章 | Mirror

第14讲:抽象合约(abstract)和接口(interface)代码 | 文章 | Mirror

第15讲:异常(errors)代码 | 文章 | Mirror

进阶

第16讲:函数重载代码 | 文章 | Mirror

第17讲:库合约(library)代码 | 文章 | Mirror

第18讲:Import代码 | 文章 | Mirror

第19讲:接收ETH(fallback/receive)代码 | 文章 | Mirror

第20讲:发送ETH(transfer/send/call)代码 | 文章 | Mirror

第21讲:调用其他合约代码 | 文章 | Mirror

第22讲:Call代码 | 文章 | Mirror

第23讲:Delegatecall代码 | 文章 | Mirror

第24讲:在合约中创建新合约代码 | 文章 | Mirror

第25讲:Create2代码 | 文章 | Mirror

第26讲:删除合约代码 | 文章 | Mirror

第27讲:ABI编码解码代码 | 文章 | Mirror

第28讲:Hash代码 | 文章 | Mirror

第29讲:函数选择器(selector)代码 | 文章 | Mirror

第30讲:Try-Catch代码 | 文章 | Mirror

应用

第31讲:ERC20代码 | 文章 | Mirror

第32讲:代币水龙头代码 | 文章 | Mirror

第33讲:空投合约代码 | 文章 | Mirror

第34讲:ERC721代码 | 文章 | Mirror

第35讲:荷兰拍卖代码 | 文章 | Mirror

第36讲:Merkle Tree代码 | 文章 | Mirror

第37讲:数字签名代码 | 文章 | Mirror

第38讲:NFT交易所代码 | 文章 | Mirror

第39讲:随机数代码 | 文章 | Mirror

第40讲:ERC1155代码 | 文章 | Mirror

第41讲:WETH代码 | 文章 | Mirror

第42讲:分账代码 | 文章 | Mirror

第43讲:线性释放代码 | 文章 | Mirror

第44讲:代币锁代码 | 文章 | Mirror

第45讲:时间锁代码 | 文章 | Mirror

Degen

第46讲:代理合约代码 | 文章 | Mirror

第47讲:可升级合约代码 | 文章 | Mirror

第48讲:透明代理代码 | 文章 | Mirror

第49讲:通用可升级代理UUPS代码 | 文章 | Mirror

第50讲:多签钱包代码 | 文章 | Mirror

第51讲:ERC4626 代币化金库代码 | 文章

第52讲:EIP712 类型化数据签名代码 | 文章

第53讲:ERC2612 ERC20Permit代码 | 文章

第54讲:跨链桥代码 | 文章

第55讲:多重调用代码 | 文章

第56讲:去中心化交易所代码 | 文章

第57讲:闪电贷代码 | 文章

合约安全

S01:重入攻击代码 | 文章 | Mirror

S02:选择器碰撞代码 | 文章 | Mirror

S03:中心化代码 | 文章 | Mirror

S04:权限管理代码 | 文章 | Mirror

S05:整型溢出代码 | 文章 | Mirror

S06:签名重放代码 | 文章 | Mirror

S07:坏随机数代码 | 文章 | Mirror

S08:绕过合约检查代码 | 文章 | Mirror

S09:拒绝服务漏洞代码 | 文章 | Mirror

S10:貔貅 Honeypot代码 | 文章 | Mirror

S11:抢先交易代码 | 文章

S12:tx.origin钓鱼代码 | 文章

S13:未检查的低级调用代码 | 文章

S14:操纵区块时间代码 | 文章

S15:操纵预言机代码 | 文章

S16:NFT重入攻击代码 | 文章

S17:“跨服”重入攻击文章

EVM 操作码

OP01:Hello Opcodes代码 | 文章

OP02:Opcodes分类代码 | 文章

OP03:堆栈指令代码 | 文章

OP04:算数指令代码 | 文章

OP05:比较指令代码 | 文章

OP06:位级指令代码 | 文章

OP07:内存指令代码 | 文章

OP08:存储指令代码 | 文章

OP09:控制流指令代码 | 文章

OP10:区块信息指令代码 | 文章

OP11:堆栈指令2代码 | 文章

OP12:SHA3指令代码 | 文章

OP13:账户指令代码 | 文章

OP14:交易指令代码 | 文章

OP15:Log指令代码 | 文章

OP16:Return指令代码 | 文章

OP17:Revert指令代码 | 文章

OP18:Call指令代码 | 文章

OP19:Delegatecall指令代码 | 文章

OP20:Staticcall指令代码 | 文章

OP21:Create指令代码 | 文章

OP22:Create2指令代码 | 文章

OP23:Selfdestruct指令代码 | 文章

OP24:Gas指令代码 | 文章

OP25:优化最小代理合约 EIP-7511代码 | 文章

Solidity 内部规则

SI01:基础存储布局Code | 文章

SI02:映射和动态数组的存储布局Code | 文章

SI03:字节数组和字符串的存储布局Code | 文章

SI04:内存布局Code | 文章

SI05:ABI编码基础Code | 文章

SI06:动态类型的ABI编码Code | 文章

SI07:ABI编码公式Code | 文章

SI08:calldata/returndata的ABI编码Code | 文章

SI09:事件的ABI编码Code | 文章

SI10:Error的ABI编码Code | 文章

主题

开发工具

第1讲:Remix, 最易用的Solidity IDE代码】 【文章

第2讲:Infura, 连接链下与链上的桥梁文章

第3讲:Ganache,搭建本地测试网络文章

第4讲:Alchemy, 区块链API和节点基础设施文章

第5讲:Dune,使用Dune可视化区块链数据文章

第6讲:Hardhat,以太坊开发环境文章

第7讲:Foundry,以Solidity为中心的开发工具包代码】【文章

链上威胁分析

第1讲:工具篇文章】 | 【English

第2讲:热身篇文章】 | 【English

第3讲:漏洞概念验证-上篇文章】| 【English

第4讲:漏洞概念验证-中篇文章】| 【English

第5讲:漏洞概念验证-下篇文章】| 【English

第6讲:Rugpull 分析文章】| 【English

第7讲:Nomad 跨链桥事件分析文章】| 【English

NFT

第1讲:ERC721库:Address, Strings, Context代码】 【文章

第2讲:ERC721相关接口代码】 【文章

第3讲:ERC721主合约代码】 【文章

第4讲:BAYC主合约和严重漏洞代码】 【文章

第5讲:Loot代码】 【文章

翻译

第1讲:Metamask项目方给Solidity程序员的16个安全建议文章】 【Mirror

第2讲:深入EVM文章

WTF贡献者

贡献者是WTF学院的基石

捐赠

参考