227 lines
8.1 KiB
Markdown
227 lines
8.1 KiB
Markdown
# Monad 区块链开发助手
|
||
|
||
`区块链` `智能合约` `Monad` `DeFi` `Foundry` `AI辅助开发`
|
||
|
||
# Monad Wingman
|
||
|
||
一款以 Agent Skill 形式构建的 Monad 区块链开发全能导师与指南。涵盖使用 Foundry + Scaffold-Monad 工具链进行智能合约开发、DeFi 协议集成,以及针对 Monad 并行执行 EVM 兼容 L1 的安全最佳实践。
|
||
|
||
## 快速开始
|
||
|
||
**在 AI 辅助下从零构建 Monad dApp:**
|
||
|
||
```bash
|
||
# 1. 创建新项目目录
|
||
mkdir my-monad-project
|
||
cd my-monad-project
|
||
|
||
# 2. 安装 Monad Wingman skill
|
||
npx skills add monad-wingman
|
||
|
||
# 3. 用 Cursor(或其他支持 AI 的编辑器)打开
|
||
cursor .
|
||
```
|
||
|
||
**然后直接告诉 AI 你想构建什么:**
|
||
|
||
> "帮我在 Monad 上构建一个质押合约"
|
||
|
||
> "创建一个带买卖功能的代币"
|
||
|
||
> "构建一个 NFT 系列并部署到 Monad 测试网"
|
||
|
||
Monad Wingman 将会:
|
||
- 搭建 Foundry 或 Scaffold-Monad 项目
|
||
- 为 Monad 进行配置(prague EVM、--legacy 标志、正确的链 ID)
|
||
- 提醒你关键的注意事项(gas 上限计费、代币精度、重入攻击等)
|
||
- 指导安全最佳实践
|
||
- 附带正确的验证步骤将合约部署到 Monad 测试网
|
||
|
||
---
|
||
|
||
## 什么是 Monad Wingman?
|
||
|
||
Monad Wingman 是一套知识库与提示词系统,帮助 AI 代理协助开发者在 Monad 上进行开发。内容涵盖:
|
||
|
||
- **智能合约挑战**:12 个学习模块(NFT、质押、DEX、借贷、预言机等)
|
||
- **Foundry 工具链**:以 forge 脚本、Anvil 测试、Monad 部署为核心的主要工作流
|
||
- **Scaffold-Monad**:含 React/Next.js 前端的全栈 dApp 脚手架
|
||
- **DeFi 协议**:Monad 上的 Uniswap V3、Euler、Morpho、Kuru、Fastlane、Pyth 使用模式
|
||
- **ERC 标准**:ERC-20、721、1155、4626 的完整指南
|
||
- **Monad 架构**:并行执行、MonadBFT、gas 上限计费、储备余额
|
||
- **安全性**:关键注意事项(通用 + Monad 专属)、历史漏洞案例、上线前检查清单
|
||
|
||
## 安装
|
||
|
||
### 通过 skills.sh 安装(推荐)
|
||
```bash
|
||
npx skills add monad-wingman
|
||
```
|
||
|
||
兼容 Cursor、Claude Code、Codex、OpenCode 及其他 AI 编程助手。
|
||
|
||
### 手动安装
|
||
|
||
**Cursor:**
|
||
将 `.cursorrules` 复制到项目根目录,或添加到 Cursor 全局规则中。
|
||
|
||
**Claude Code:**
|
||
在项目说明中引用 `CLAUDE.md` 文件。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
monad-wingman/
|
||
├── skills/
|
||
│ └── monad-wingman/ # skills.sh 兼容包
|
||
│ ├── SKILL.md # 含 frontmatter 的 Skill 定义
|
||
│ ├── AGENTS.md # 完整编译后的指令
|
||
│ ├── metadata.json # Skill 元数据
|
||
│ ├── README.md # Skill 文档
|
||
│ ├── scripts/ # 辅助脚本
|
||
│ │ ├── init-project.sh
|
||
│ │ └── check-gotchas.sh
|
||
│ └── references/ # 核心知识文件
|
||
├── knowledge/
|
||
│ ├── challenges/ # 12 个智能合约挑战模块
|
||
│ ├── protocols/ # DeFi 协议文档(Uniswap、Euler、Morpho、Kuru 等)
|
||
│ ├── standards/ # ERC 标准
|
||
│ ├── foundations/ # Monad 基础、Solidity、预言机、生态系统
|
||
│ └── gotchas/ # 安全知识
|
||
├── tools/
|
||
│ ├── scaffold-eth/ # Scaffold-Monad 文档
|
||
│ ├── deployment/ # 部署模式
|
||
│ ├── testing/ # 前端测试
|
||
│ └── security/ # 安全工具
|
||
├── prompts/ # AI 代理提示词(构建、教学、审查、调试)
|
||
├── data/
|
||
│ └── addresses/ # Monad 上的代币、协议、鲸鱼地址
|
||
├── AGENTS.md # skills/monad-wingman/AGENTS.md 的软链接
|
||
├── skill.json # Skill 清单
|
||
├── .cursorrules # Cursor IDE 集成
|
||
└── CLAUDE.md # Claude Code 集成
|
||
```
|
||
|
||
## 核心概念
|
||
|
||
### 最重要的概念
|
||
|
||
**链上没有任何事情是自动发生的。**
|
||
|
||
智能合约无法自动执行。对于任何"需要发生"的函数:
|
||
1. 让**任何人**都可以调用(而非仅限管理员)
|
||
2. 给调用者一个**理由**(利润、奖励、自身利益)
|
||
3. 确保激励**足以**覆盖 gas 费用并有盈余
|
||
|
||
Wingman 始终会问:*"谁来调用这个函数?他们为何要支付 gas?"*
|
||
|
||
### 关键注意事项
|
||
|
||
每位 Monad 开发者必须了解:
|
||
|
||
1. **代币精度各异**:USDC = 6 位,WBTC = 8 位,大多数 = 18 位
|
||
2. **需要 Approve 模式**:合约在调用 transferFrom 前需要授权
|
||
3. **重入攻击**:始终使用检查-效果-交互模式 + ReentrancyGuard
|
||
4. **预言机操纵**:永远不要使用 DEX 现货价格
|
||
5. **无浮点数**:使用基点(500/10000 = 5%)
|
||
6. **Gas 上限计费(Monad)**:按 gas_limit 收费,而非实际用量——请设置严格上限!
|
||
7. **储备余额(Monad)**:EIP-7702 委托 EOA 的余额不能低于 10 MON
|
||
8. **--legacy 标志(Monad)**:在 Monad 上使用 forge/cast 时始终加上 `--legacy`
|
||
|
||
### Monad 链配置
|
||
|
||
| 网络 | 链 ID | RPC |
|
||
|------|-------|-----|
|
||
| 主网 | 143 | https://rpc.monad.xyz |
|
||
| 测试网(默认) | 10143 | https://testnet-rpc.monad.xyz |
|
||
| 本地(Anvil) | 31337 | http://localhost:8545 |
|
||
|
||
- **原生代币**:MON(18 位精度)
|
||
- **EVM 版本**:prague
|
||
- **Solidity**:推荐 0.8.28
|
||
- **合约最大体积**:128KB
|
||
|
||
### 智能合约挑战
|
||
|
||
| 挑战 | 概念 |
|
||
|------|------|
|
||
| 简单 NFT | ERC-721、铸造、元数据 |
|
||
| 去中心化质押 | 协调机制、截止日期、托管 |
|
||
| 代币售卖机 | ERC-20 授权模式 |
|
||
| 骰子游戏 | 随机数漏洞 |
|
||
| DEX | AMM、恒定乘积公式 |
|
||
| 预言机 | 价格数据源、防操纵 |
|
||
| 借贷 | 抵押机制、清算 |
|
||
| 稳定币 | 锚定机制 |
|
||
| 预测市场 | 结果结算 |
|
||
| ZK 投票 | 隐私保护治理 |
|
||
| 多签 | 门限签名 |
|
||
| SVG NFT | 链上生成艺术 |
|
||
|
||
## 使用示例
|
||
|
||
### 构建模式
|
||
- "帮我在 Monad 上构建一个带买卖功能的代币"
|
||
- "搭建一个带奖励的质押合约"
|
||
- "用 Scaffold-Monad 创建一个 NFT 铸造页面"
|
||
|
||
### 教学模式
|
||
- "Monad 上的并行执行是如何工作的?"
|
||
- "解释 AMM 中的恒定乘积公式"
|
||
- "借贷协议有哪些安全注意事项?"
|
||
|
||
### 代码审查模式
|
||
- "检查这个提款函数是否存在漏洞"
|
||
- "检查这个 vault 合约是否存在通胀攻击风险"
|
||
- "审计这个 Monad 上的预言机集成"
|
||
|
||
### 调试模式
|
||
- "为什么我的交易在 Monad 测试网上回滚了?"
|
||
- "我遇到了 'transaction type not supported' 错误——怎么解决?"
|
||
- "调试这个 gas 不足的问题"
|
||
|
||
## Monad 上的 DeFi 协议
|
||
|
||
- **Uniswap V3** —— AMM,集中流动性
|
||
- **Euler** —— 模块化借贷协议
|
||
- **Morpho** —— 借贷优化
|
||
- **Kuru** —— Monad 原生订单簿 DEX
|
||
- **Fastlane** —— MEV 基础设施
|
||
- **Chainlink / Pyth** —— 预言机与价格数据源
|
||
- **Kintsu / Magma** —— 流动性质押(shMON、gMON)
|
||
- **LayerZero / Wormhole** —— 跨链桥
|
||
|
||
## 贡献
|
||
|
||
添加新内容:
|
||
1. 将 Markdown 文件添加到对应目录
|
||
2. 遵循现有格式(代码示例、安全说明)
|
||
3. 如添加新功能,更新 skill.json
|
||
4. 与 AI 代理测试以确保内容清晰
|
||
|
||
## 资源
|
||
|
||
- [Monad 文档](https://docs.monad.xyz)
|
||
- [Monad LLM 文档](https://docs.monad.xyz/llms.txt)
|
||
- [Scaffold-Monad Foundry](https://github.com/monad-developers/scaffold-monad-foundry)
|
||
- [MonadVision 浏览器](https://monadvision.com)
|
||
- [Monadscan 浏览器](https://monadscan.com)
|
||
- [Monad 水龙头](https://faucet.monad.xyz)
|
||
- [OpenZeppelin](https://openzeppelin.com/)
|
||
|
||
## 许可证
|
||
|
||
MIT 许可证——可自由用于学习和开发。
|
||
|
||
## 致谢
|
||
|
||
为 Monad 开发者社区而构建。
|
||
|
||
派生自 [BuidlGuidl](https://buidlguidl.com/) 的 [Ethereum Wingman](https://github.com/BuidlGuidl/ethereum-wingman)。原版 Ethereum Wingman 提供了基础知识库结构和智能合约挑战体系。Monad Wingman 在此基础上针对 Monad 生态系统进行了适配与扩展,新增了 Monad 专属工具链、注意事项、部署工作流及 DeFi 协议文档。
|
||
|
||
整合了来自以下来源的知识:
|
||
- [Monad 文档](https://docs.monad.xyz)
|
||
- [BuidlGuidl / Scaffold-ETH](https://buidlguidl.com/)
|
||
- [OpenZeppelin](https://openzeppelin.com/)
|
||
- [Chainlink](https://chain.link/)
|
||
- [Pyth Network](https://pyth.network/) |