尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
WTF-Solidity 怎么用?从三行 HelloWeb3 到合约安全的 74 讲完整学习路径
WTF-Solidity 怎么用从三行 HelloWeb3 到合约安全的 74 讲完整学习路径【免费下载链接】WTF-SolidityWTF Solidity 极简入门教程供小白们使用。Now supports English! 官网: https://wtf.academy项目地址: https://gitcode.com/GitHub_Trending/wt/WTF-Solidityclone 下来第一眼是 74 个编号目录01 到 57外加 S01 到 S17每个还带自己的 readme 和截图。不知道先打开哪个的人多半已经关掉了。WTF-Solidity 这套 Solidity 极简教程的解法不是让你读 README 目录而是把 74 讲压成五段递进路线——照着走每段结束都有明确的完成标志。 项目快照项目说明项目名WTF-Solidity一句话定位面向编程新手的 Solidity 极简入门教程每周更新 13 讲技术栈Solidity 0.8.34 FoundryRemix 可在线跑课程总量主线 57 讲 安全篇 S01S17 共 17 讲另有 EVM 操作码等专题多语言支持中 / 英 / 西 / 葡 / 日社区入口Discord、微信群与官网 wtf.academy最值得说的是合约安全没有散落在语法课里而是单独成 S01S17 共 17 讲——重入、溢出、蜜罐、抢跑各占一篇这在整个教程里不多见。另一个工程细节是 src/ 把每个章节目录软链成统一编译根配 foundry.toml 之后全仓库可本地验证学完就能用 forge 自检。️ 学习地图五段递进74 讲怎么读语法地基 · 第 115 讲这一段解决一个合约由什么构成值类型、函数、变量作用域、数组结构体、mapping、修饰器、事件、继承、接口、异常逐块搭起写合约的地基。卡在这里后面每讲都在补洞。两个最值得反复看的点第 1 讲的 HelloWeb3.sol 全文只有三行SPDX、pragma、合约体一行一个是全书的压缩索引第 5 讲 DataStorage.sol 用可运行代码对比 storage/memory/calldata 的 gas 差异这是新手最容易踩、面试最爱问的点。完成标志不查教程独立写出一个带存储变量、事件和自定义 error 的合约。进阶 · 第 1630 讲底层调用与 EVM 交互这一段解决合约怎么和链、和其他合约说话重载、library、import、receive/fallback、三种发 ETH 方式、call/delegatecall、create/create2、ABI 编码、hash、selector、try-catch。看不懂 call 与 delegatecall 的区别后面代理合约会整段跳过。第 23 讲 Delegatecall.sol 用同一个合约、两条路径调出两个不同返回值把在谁的存储里执行讲得极其直观第 30 讲 TryCatch.sol 收尾外部调用异常是进阶段的出口关卡。完成标志能写出一个收 ETH、调外部合约并妥善处理失败分支的合约。应用 · 第 3145 讲写得出业务合约这一段是能不能写出有用合约的分水岭ERC20、水龙头、Merkle 空投、ERC721、荷兰拍卖、签名、NFT 交换、ERC1155、WETH、分账、vesting、代币锁、时间锁。第 34 讲 ERC721.sol 配 IERC165.sol、IERC721Receiver.sol 一整套接口族safeTransferFrom 是逐行读的价值所在第 37 讲 Signature.sol 把数字签名落地直接铺垫安全篇的 S6 重放攻击。完成标志从零写出一个 ERC20 和一份可验证的白名单空投合约。Degen · 第 4651 讲代理与可升级代理、可升级、透明代理、UUPS、多签、ERC4626 金库。第 46 讲 ProxyContract.sol 手写内联汇编 delegatecall是理解后续三讲的钥匙。完成标志解释得清透明代理与 UUPS 在谁能调管理函数上的区别。合约安全 · S01S17 讲重入、选择器碰撞、中心化、权限、溢出、签名重放、坏随机数、绕过合约检查、DoS、蜜罐、抢跑、tx.origin、未检查调用、时间戳、预言机、NFT 重入、跨服重入。每讲都串联前面的知识点重入对应第 19/20 讲的转账与 receive蜜罐对应 fallback 与权限控制。S17 在仓库里只附文章没有独立 .sol以 readme.md 为主。完成标志拿到任意合约能在 10 分钟内指出最明显的一个隐患。动手 5 分钟跑通第一讲克隆仓库git clone https://gitcode.com/GitHub_Trending/wt/WTF-Solidity cd WTF-Solidity打开 01_HelloWeb3/HelloWeb3.sol三行合约SPDX 注释、pragma solidity ^0.8.34、一个 public 字符串。把源码粘进 Remix 的默认 JavaScript 虚拟机环境点 Compile 编译。选一个测试账户点 Deploy部署到本地 EVM。点击合约里的_string看到Hello Web3!即跑通。线上 IDE 免安装、打开就能部署本地跑则需 Foundry 环境仓库根目录 foundry.toml 已配好solc 0.8.34与依赖路径映射无需再动。 仓库目录结构解读WTF-Solidity/ ├── 01_HelloWeb3/ # 课程章节 0157readme.md *.sol img/ ├── S01_ReentrancyAttack/ # 安全章节 S01S17 ├── src/ # 各章节软链统一编译根 ├── lib/ │ ├── forge-std/ │ └── openzeppelin-contracts/ ├── Languages/ # en / es / pt-br / ja ├── Topics/ # ERC721、Tools、翻译等专题 ├── img/ ├── foundry.toml └── scripts/run-forge-tests.shsrc/每个条目是软链如src/01_HelloWeb3 - ../01_HelloWeb3全仓库一次配置即可编译。lib/forge-std 测试库与 OpenZeppelin 源码既是依赖也可当参考读物。Languages/en 覆盖最全正文标注 preliminary需社区继续审校。Topics/含 TOOL01_Remix、TOOL07_Foundry 等开发工具文档。foundry.tomlsrc src、solc 0.8.34remappings 把forge-std/与openzeppelin/contracts/指向 lib 子目录。scripts/run-forge-tests.sh跑根目录 RootTest再逐章节回归第 18 讲与第 39 讲因依赖外部 URL 和 Chainlink 被排除。值得逐行读的 3 个讲次重入攻击先转款后扣余额的代价S1 把外部调用放在状态更新之前的代价演示到极限1 ETH 本金如何清空整家银行以及两种标准修法checks-effects-interactions 与重入锁。// S01_ReentrancyAttack/ReentrancyAttack.sol function withdraw() external { uint256 balance balanceOf[msg.sender]; require(balance 0, Insufficient balance); // 转账先发生触发恶意 receive 重入 (bool success, ) msg.sender.call{value: balance}(); require(success, Failed to send Ether); balanceOf[msg.sender] 0; // 更新在转账之后太晚了 }call发出即可能激活接收方receive()攻击合约借此循环提款。GoodBank把balanceOf[msg.sender] 0;挪到转账之前重入在 require 处失败。ProtectedBank的nonReentrant锁_status置 1 执行、结束归 0第二次进入直接 revert。延伸思考如果转账用的transfer只有 2300 gas这套攻击还成立吗代理合约一段内联汇编看懂 delegatecall第 46 讲不依赖任何库手写代理转发是读懂 4749 讲的前提也是数据与逻辑分离最原始的形态。// 46_ProxyContract/ProxyContract.sol function _delegate() internal { assembly { let _implementation : sload(0) // 读存储槽 0 calldatacopy(0, 0, calldatasize()) let result : delegatecall(gas(), _implementation, 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) if iszero(result) { revert(0, returndataize()) } } }逻辑代码在 Proxy 的存储上下文里执行状态槽位按 Proxy 布局解释。源码注释明确提示Logic与Proxy的状态变量顺序必须一致否则槽位冲突。returndatacopy把逻辑合约返回值原样回传给调用方代理对调用者透明。延伸思考x只写在 Logic 里为什么经 Proxy 调increment()拿到的却是 1 而不是 100ERC721safeTransferFrom 的自保机制ERC721 用 ERC165 做能力自证用 receiver 回调防止 NFT 被永久锁进不会接货的合约是标准接口设计的范本。// 34_ERC721/ERC721.sol function _checkOnERC721Received( address from, address to, uint256 tokenId ) internal { if (to.isContract()) { bytes4 ret IERC721Receiver(to).onERC721Received( msg.sender, from, tokenId, ); require(ret IERC721Receiver.onERC721Received.selector, ERC721: caller is not an NFT receiver); } }接收方是合约就必须返回约定 selector否则整笔转账 revert。supportsInterface用type(IERC721).interfaceId自证支持的接口集合。教程用它免费铸造 WTFApe.sol把标准转成可运行应用。延伸思考receiver 回调本身又是外部调用这里为什么不会重入社区与延伸多语言现状英文最完整但标注 preliminary西语覆盖前 30 讲葡语体量最大139 份源码、115 份教程日语 33 讲。仓库内延伸阅读Topics/Tools/Remix、Foundry 等工具教程Topics/Translation/MetaMask 16 条安全建议、EVM 操作码资料lib/openzeppelin-contracts/工业级合约参考实现Languages/en/README.md英文版课程目录下次再看到那 74 个目录不用从 README 读起——从 01_HelloWeb3 打开三行合约顺着编号走到 S17每段结束都有完成标志给你对答案。【免费下载链接】WTF-SolidityWTF Solidity 极简入门教程供小白们使用。Now supports English! 官网: https://wtf.academy项目地址: https://gitcode.com/GitHub_Trending/wt/WTF-Solidity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

如何把微信聊天记录导出永久保存:WeChatMsg 的导出与年度报告完整指南

如何把微信聊天记录导出永久保存:WeChatMsg 的导出与年度报告完整指南

如何把微信聊天记录导出永久保存:WeChatMsg 的导出与年度报告完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Tr…

📅 2026/9/29 2:54:21
marshalsea 反序列化 Gadget 实验室挑战指南:从新增 Sink 标签到突破严格白名单检测器

marshalsea 反序列化 Gadget 实验室挑战指南:从新增 Sink 标签到突破严格白名单检测器

【免费下载链接】Cybersecurity-Projects Building 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 👇 项目地址: https://git…

📅 2026/9/29 2:49:21
C++编译错误C2653全解析:从符号查找到实战排查

C++编译错误C2653全解析:从符号查找到实战排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/29 2:49:21
MORE NEWS

更多资讯

📰

微信聊天记录导出到电脑:免费简单,十分钟用留痕WeChatMsg存档

微信聊天记录导出到电脑:免费简单,十分钟用留痕WeChatMsg存档 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub…

📰

VSCode 多行代码编辑效率翻倍:TaoToken 统一 Key 配置与 settings.json 骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Java 8 Stream API实战指南:排序、分组、并行流与性能调优

Java 8 发布那会儿,很多人在讨论 Lambda 表达式,但真正让我觉得“这个版本值得升”的,其实是藏在java.util.stream包里的这套 Stream API。刚开始用的时候,我最大的感受是“代码确实短了”,但写了几次之后又觉得“好像…

📰

Zephyr BSP: 39-SoC家族架构代理娱乐

SoC Family Architecture:一个 Zephyr BSP 如何支撑一整个 SoC 家族 现在必须解决一个更现实的问题: 如果公司不是只有一个 SoC,而是有 SoC-A、SoC-B、SoC-C……怎么办? 真正成熟的 BSP 不应该: SoC-A → 一套代码 SoC-B → 复制一份 SoC-C → 再复制一份而应该形成:…

📰

工件部署报错排查手册:从服务器日志定位根因

你有没有遇到过这种情况:辛辛苦苦把构建好的工件推到服务器,执行部署命令,结果屏幕直接甩给你一行——"部署错误,详细信息请参见服务器日志"。有时候甚至连这句提示都没有,就是启动失败、容器退出、端口没监…

📰

光模块核心组成与关键技术全解析:从TOSA/ROSA到选型排障

光模块这东西,做网络的人几乎天天见,SFP、SFP、QSFP插拔过无数次,但真被问到“光模块主要组成部分是什么,核心技术在哪里”时,能说清楚的人其实不多。这不算丢人,因为光模块是个典型的交叉学科产物&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬