web3 练习 包含合约开发: EVM 、GAS 优化 ,去中心化金融(DEFI), 去中心化金融(DEFI),协议数据分析,Layer2 开发等等
特别说明: 本目录中所有合约均要求solidity版本 ≥ 0.8.10, 且合约都在本地 Anvil 节点部署测试过,但安全性未经过检验不建议在主网部署,仅用于学习交流和实验。
-
POW 与 RSA 实验详情请查看 powLabs/README.md
-
位置:powLabs/README.md
-
包含两个 go 程序的实现与运行方式
- POW 实验:powLabs/pow.go
- RSA 实验:powLabs/rsa.go
-
用solidity 编写 Bank 智能合约 详情请查看bankContract/README.md
-
位置:bankContract/README.md
-
包含一个bank的demo合约,实现存款、提款和排行榜功能
-
用solidity 编写 BigBank 实践 solidity 继承及接口合约交互 详情请查看bigBankContract/README.md
-
位置:bigBankContract/README.md
-
包含bank基础合约,管理员合约,银行合约接口文件,实现存款、提款、余额查询和转移管理员权限功能
-
用solidity 编写 ERC20 合约 详情请查看erc20/README.md
-
位置:erc20/README.md
-
包含ERC20合约,实现代币的基本功能:转账、查询余额、授权转账等。
-
用solidity 编写 ERC721 合约 详情请查看nft/README.md
-
位置:nft/README.md
-
包含ERC721合约,实现NFT的基本功能: mint、transfer、approve、balanceOf等。
-
用solidity 编写 Foundry 项目 详情请查看foundry/README.md
-
位置:foundry/README.md
-
包含Foundry项目的基本结构,以及如何初始化、编译、测试和部署智能合约。
-
用solidity 编写 NFT项目 详情请查看nft/README.md
-
位置:nft/nft-market
-
包含nft合约项目的基本结构,以及如何铸造nft、查看nft、测试和部署智能合约。
-
用solidity 编写 NFTMarketWithERC20 合约 详情请查看nft/nft-market-token/README.md
-
位置:nft/nft-market-token
-
包含NFTMarketWithERC20合约,实现用ERC20代币购买NFT的功能。
-
使用 Viem.sh 监听 NFTMarket 的买卖记录 详情请查看viemTokenBank/README.md
-
位置:viemTokenBank/README.md
-
包含Viem.sh项目的基本结构,以及如何监听智能合约。
-
监听 NFTMarket 的买卖记录,包括购买和销售事件。
-
基于 Viem.js 构建的 Sepolia 测试网命令行钱包,支持私钥生成、余额查询、ERC20 转账等功能。详情请查看cliWallet/README.md
-
位置:cliWallet
-
包含Viem.js项目的基本结构,以及如何使用命令行钱包进行操作。
-
用solidity 编写 NFTMarketWithERC20 合约 详情请查看nft/nft-market-token/README.md
-
位置:nft/nft-market-token
-
包含NFTMarketWithERC20合约,实现用ERC20代币购买NFT的功能。
-
用solidity 编写 esRNT 合约部署测试网后,使用viem读取锁信息 详情请查看evm/read-esrnt-locks/esrnt.sol
-
位置:evm/read-esrnt-locks
-
包含readLocks.js,实现读取esRNT合约锁信息的功能。
-
用solidity 编写 ABI 编码/解码合约 详情请查看abi/README.md
-
位置:abi
-
包含ABI编码/解码合约,实现对不同数据类型的编码和解码。
-
用solidity 编写 MultiSigWallet 合约 详情请查看multiSigner/README.md
-
位置:multiSigner
-
包含MultiSigWallet合约,实现多签名钱包的功能。
-
允许多个所有者共同管理资产,需要达到指定数量的人确认后才能执行交易
- 基于 Foundry 开发的 DeFi 项目,实现支持 Permit2 签名授权的银行合约系统。详情请查看permit2/README.md
- 位置:permit2
- 包含前端界面:Permit2 协议实现完整的 Web3 交互界面,支持 ETH 和 ERC20 分离显示
- 基于 EIP-7702 标准的账户抽象授权合约系统。详情请查看ethProt/eip7702/README.md
- 位置:ethProt/eip7702
- 包含前端界面:EIP-7702 协议实现完整的 Web3 交互界面,支持用户自定义授权和交易
- 基于 Foundry 开发的合约审计项目,演示如何使用 Foundry 测试框架进行智能合约安全审计。详情请查看contractAudit/README.md
- 位置:contractAudit
- 包含一个存在安全漏洞的 Vault 合约,以及相应的攻击测试用例
- 可以学习到 delegatecall 存储槽冲突漏洞的成因和利用方式,以及如何编写安全审计测试用例
- 基于 ChainLink Automation 平台的自动化合约项目,演示如何使用 ChainLink 自动化触发机制。详情请查看chainLink/README.md
- 位置:chainLink
- 包含一个基于 ChainLink Automation 的自动化合约,实现基于阈值的自动化触发机制
- 可以学习到 ChainLink Automation 的工作原理和集成方法
- 基于 solidity 开发的 Token Vesting 合约项目,实现代币延迟释放机制。详情请查看defi/vesting/README.md
- 位置:defi/vesting
- 包含一个基于 solidity 的 Token Vesting 合约,实现代币延迟释放机制
- 可以学习到 代币合约线性释放机制和foundry工具模拟时间测试方法
- 基于 solidity 开发的最小化代理合约项目,允许用户以极低的 gas 成本部署和铸造 Meme 代币。通过使用 EIP-1167 最小代理模式,每个新代币的部署成本大大降低。详情请查看memeFactory/README.md
- 位置:memeFactory
- 包含一个基于 solidity 的最小化代理合约,集成 ReentrancyGuard 和 Ownable
- 可以学习到 代理模式的工作原理和实现方法
- LaunchPad 是一个去中心化的代币发射平台,允许用户轻松创建和管理 Meme 代币。该项目集成了 Uniswap V3 协议,提供自动流动性添加功能,为新创建的代币提供即时的交易能力。详情请查看launchPad/README.md
- 位置:launchPad
- 包含一个基于 solidity 的 LaunchPad 合约,实现代币部署和铸造功能
- 可以学习到 合约工厂模式的工作原理和实现方法
-
基于 solidity 开发的获取 Uniswap 中 TWAP 价格合约项目,允许用户查询 Uniswap 中指定代币对的 TWAP 价格。详情请查看twap/README.md
-
位置:twap
-
包含一个基于 solidity 的获取 Uniswap 中 TWAP 价格合约,实现查询 TWAP 价格功能
-
可以学习到 合约交互模式的工作原理和实现方法
-
基于 ERC-20 标准的 rebase 型通缩 Token,参考 Ampleforth (AMPL) 的设计理念。该 Token 具有自动通缩机制,每年在上一年发行量基础上下降 1%。详情请查看stablecoin/README.md
-
位置:stablecoin
-
包含 Rebase Token 合约和前端界面,实现通缩机制和用户交互功能
-
可以学习到 Rebase Token来追踪其对存款者应付的资产金额——包括协议获得的利润
- 基于 Viem 开发的索引链上 ERC20 转账数据项目,允许用户查询和展示指定合约地址的转账记录。详情请查看viemIndexData/README.md
- 位置:viemIndexData
- 包含索引合约和前端界面,实现查询和展示转账记录功能
- 可以学习到 Viem 库的使用方法和合约交互模式,使用 Viem 的 getLogs 按 Transfer 事件索引 ERC20 转账记录
说明:后续新增练习代码时,在此处添加目录相对链接,方便从首页快速跳转。
