返回 Papers
学习计划 Roadmap

90 天 Solidity+Rust+Move(Roadmap)

第一阶段检验标准:

441SOLIDITY_RUST_MOVE_90_PLAN.md

Solidity实战 + Rust/Move 多链开发 90天精通计划

定位:从"能读懂合约"升级到"能写+能审计" + 掌握多链开发能力 目标:Solidity中等复杂度合约开发与安全审计 + Solana/Sui多链程序开发 开始日期:2026-04-09 定位级别:有Web3产品知识基础,编程基础扎实,智能合约从入门到实战 时间安排:每天2-3小时,周一三五Solidity,周二四六Rust/Move,周日复习/补课 进度文件docs/daily/SC_PROGRESS.md


四阶段概览

阶段天数Solidity(周一三五)Rust/Move(周二四六)核心产出
一:基础构建Day 1-24语法精通+手写标准合约Rust语言基础+所有权体系ERC20/721合约 + rustlings通关
二:框架实战Day 25-48Foundry工具链+DeFi合约Solana/Anchor程序开发Staking/Vault合约 + Solana程序
三:安全审计Day 49-72漏洞学习+Ethernaut+审计Move语言+Sui开发审计报告 + Sui模块
四:综合实战Day 73-90综合DeFi项目+CTF多链对比+综合项目作品集项目 + 对比文章

第一阶段:基础构建 (Day 1-24)

Week 1: Solidity语法精通 + Rust入门

Day方向学习内容实操任务产出
1SolidityRemix IDE环境 + 数据类型(uint/int/bool/address/bytes) + 变量(state/local/global)在Remix写10个变量声明练习,部署到Sepolia笔记:Solidity数据类型全解
2RustRust安装(rustup) + cargo项目结构 + 变量/可变性/常量 + 基本类型安装Rust环境,完成rustlings intro+variables(8题)笔记:Rust环境与基础类型
3Solidity函数(visibility/modifier/view/pure) + 事件(event/emit) + 错误处理(require/revert/assert)手写一个SimpleStorage合约:存取数字+事件记录+权限控制SimpleStorage合约代码
4Rust所有权(ownership) + 借用(borrowing) + 引用(&/&mut)rustlings move_semantics(6题) + 写所有权练习代码笔记:Rust所有权核心概念
5Soliditymapping + struct + array + enum手写一个TodoList合约:增删改查+状态枚举TodoList合约代码
6Rust字符串(String/&str) + 切片 + 生命周期基础rustlings strings+primitive_types(8题)笔记:Rust字符串与生命周期
7复习回顾Week1全部内容Solidity: 重写SimpleStorage不看代码 / Rust: 复习所有权练习Week1总结笔记

Week 2: ERC标准合约 + Rust核心概念

Day方向学习内容实操任务产出
8SolidityERC20标准详解:接口/totalSupply/balanceOf/transfer/approve/transferFrom从零手写完整ERC20合约(不用OpenZeppelin)ERC20合约代码+注释
9Ruststruct + impl + 方法 + 关联函数rustlings structs(3题) + 写一个Token struct模拟ERC20逻辑Rust Token模拟代码
10SolidityERC20进阶:mint/burn/Pausable/AccessControl + 理解OpenZeppelin实现对比自己写的ERC20和OpenZeppelin版本,添加mint/burn/pause功能增强版ERC20 + 对比笔记
11Rustenum + 模式匹配(match) + Option/Resultrustlings enums+option(8题) + 写错误处理练习笔记:Rust枚举与错误处理
12SolidityERC721标准:tokenURI/ownerOf/safeTransferFrom + metadata手写完整ERC721合约:铸造+转让+查询+tokenURIERC721合约代码
13Rusttrait + 泛型(generics) + trait boundrustlings traits+generics(8题)笔记:Rust trait系统
14复习ERC20/721标准回顾 + Rust核心概念默写ERC20核心函数 / 不看文档写一个泛型函数Week2总结 + ERC标准速查卡

Week 3: 继承与高级语法 + Rust集合与闭包

Day方向学习内容实操任务产出
15Solidity继承(is) + 接口(interface) + 抽象合约(abstract) + super关键字写一个继承链:BaseToken → BurnableToken → MyToken继承示例代码
16Rust集合:Vec/HashMap/HashSet + 迭代器(iter/map/filter/collect)rustlings collections+iterators(8题) + 写一个地址余额HashMap笔记:Rust集合与迭代器
17Soliditylibrary + using for + 内联汇编(assembly)初探 + 低级调用(call/delegatecall)写一个SafeMath库(理解原理) + 用call发送ETHLibrary示例 + 低级调用笔记
18Rust闭包(closures) + 函数指针 + 生命周期深入('a标注)rustlings lifetimes+closures(6题) + 写闭包处理交易过滤笔记:Rust闭包与生命周期
19Solidityreceive/fallback函数 + payable + msg.value + 合约间调用写一个Crowdfunding合约:众筹+退款+提现Crowdfunding合约代码
20Rust错误处理深入:自定义Error + ? 运算符 + thiserror/anyhow写一个完整的错误处理示例项目笔记:Rust错误处理最佳实践
21复习Solidity高级语法 + Rust中级特性重写Crowdfunding合约 / 整理Rust核心概念图谱Week3总结

Week 4: 设计模式 + Rust异步与CLI

Day方向学习内容实操任务产出
22Solidity设计模式:工厂模式/代理模式/状态机/Pull over Push写一个TokenFactory合约:一键创建新ERC20TokenFactory代码 + 设计模式笔记
23Rust异步编程:async/await + tokio + Future搭建tokio项目,写异步HTTP请求笔记:Rust异步编程
24Solidity时间锁(Timelock) + 多签逻辑 + 合约升级概念(代理模式原理)写一个简单Timelock合约 + 理解代理模式存储槽Timelock合约 + 代理模式笔记

第一阶段检验标准

  • 能从零手写ERC20/ERC721合约
  • 理解Solidity所有核心语法和常用设计模式
  • Rust所有权/借用/生命周期理解清晰
  • rustlings完成80%+

第二阶段:框架实战 (Day 25-48)

Week 5: Foundry工具链 + Rust项目实战

Day方向学习内容实操任务产出
25SolidityFoundry安装配置 + forge init/build/test + 项目结构把之前的ERC20迁移到Foundry项目,写第一个测试Foundry项目模板
26Rustserde序列化 + reqwest HTTP客户端 + JSON处理写一个调用Etherscan API查询余额的CLI工具链上查询CLI v1
27SolidityFoundry测试深入:setUp/assert/vm.prank/vm.deal/vm.expectRevert为ERC20写完整测试套件(10+测试用例)ERC20测试套件
28Rustclap命令行解析 + 项目结构化(mod/lib/bin)增强CLI:支持多命令(balance/tx/token),结构化项目链上查询CLI v2
29SolidityFoundry高级:fork测试/fuzz测试/gas报告/脚本部署写forge script部署到Sepolia + fuzz测试ERC20部署脚本 + Fuzz测试
30Rust文件IO + 配置管理(toml) + 日志(tracing)CLI添加配置文件、日志输出、多链支持链上查询CLI v3(完整版)
31复习Foundry工具链总结 + Rust CLI总结从零搭建一个新Foundry项目(限时30min)Week5总结

Week 6: DeFi合约开发(上) + Solana入门

Day方向学习内容实操任务产出
32SolidityVault合约模式:deposit/withdraw/shares计算(ERC4626)手写SimpleVault合约(按份额存取)SimpleVault合约+测试
33Rust/SolanaSolana架构总览:Account模型/Program/Instruction/Transaction + 与EVM对比安装Solana CLI + solana-keygen + 领devnet SOL笔记:Solana vs EVM架构对比
34SolidityStaking合约:质押/解质押/奖励计算(rewardPerToken模式)手写Staking合约(参考Synthetix的StakingRewards)Staking合约+测试
35Rust/SolanaAnchor框架入门:#[program]/#[derive(Accounts)]/#[account]安装Anchor + anchor init + 写Hello World程序第一个Anchor程序
36Solidity闪电贷原理 + 简单闪电贷合约写一个FlashLoan合约(借→用→还+手续费)FlashLoan合约+测试
37Rust/SolanaAnchor账户约束:#[account(init/mut/has_one/constraint)] + PDA推导写一个Counter程序(初始化+递增+PDA存储)Counter程序+测试
38复习DeFi合约模式总结 + Solana概念梳理画DeFi合约交互图 / 默写PDA推导流程Week6总结

Week 7: DeFi合约开发(下) + Solana Token

Day方向学习内容实操任务产出
39SolidityAMM原理:恒定乘积公式 + 添加/移除流动性 + swap计算手写SimpleAMM合约(两个token的swap池)SimpleAMM合约+测试
40Rust/SolanaSPL Token标准 + Associated Token Account(ATA) + Token操作用Anchor写Token铸造程序(create mint + mint to)Token铸造程序
41SolidityAMM进阶:手续费/滑点保护/价格预言机接口给SimpleAMM添加0.3%手续费+最小输出量检查增强版AMM+测试
42Rust/SolanaCPI(跨程序调用) + Token转账/燃烧写一个Vault程序(存入/取出SPL Token,用CPI调用Token程序)Solana Vault程序
43Solidity预言机集成:Chainlink Price Feed + 价格数据使用写一个PriceConsumer合约 + Fork主网测试价格获取预言机集成示例+测试
44Rust/SolanaSolana事件(emit!) + 前端交互(anchor-client/IDL)给Vault添加事件 + 用TypeScript客户端调用Vault+前端调用脚本
45复习AMM/预言机 + Solana Token操作重新部署AMM到Sepolia / 重新部署Vault到devnetWeek7总结

Week 8: 合约升级与治理 + Solana进阶

Day方向学习内容实操任务产出
46Solidity代理模式深入:Transparent Proxy/UUPS/Beacon + 存储冲突用OpenZeppelin写UUPS可升级合约(V1→V2)可升级合约示例+测试
47Rust/SolanaSolana PDAs进阶:多层PDA/PDA签名/种子设计写一个Escrow程序(买卖双方托管交易)Escrow程序
48Solidity治理合约:Governor + TimelockController + 投票机制用OpenZeppelin Governor写简单DAO治理DAO治理合约+测试

第二阶段检验标准

  • 熟练使用Foundry(测试/fuzz/fork/部署)
  • 能手写Vault/Staking/AMM/FlashLoan合约
  • 能用Anchor开发Solana程序(Token/Vault/Escrow)
  • 理解代理模式和合约升级
  • Rust CLI项目完成

第三阶段:安全审计 (Day 49-72)

Week 9: 常见漏洞学习 + Move入门

Day方向学习内容实操任务产出
49Solidity重入攻击(Reentrancy):原理/案例(DAO Hack)/防护(CEI模式/ReentrancyGuard)Ethernaut #10 Re-entrancy + 写一个有漏洞的合约再修复笔记:重入攻击全解
50MoveMove语言概述:资源模型(Resource) + 能力系统(copy/drop/store/key) + 与Solidity对比安装Sui CLI + sui client + 领devnet SUI笔记:Move vs Solidity
51Solidity整数溢出/tx.origin钓鱼/自毁攻击(selfdestruct)Ethernaut #5 Token + #4 Telephone + #7 Force漏洞笔记:整数/tx.origin/自毁
52MoveMove基础语法:module/struct/function/acquires + 资源的move语义写第一个Move模块:Counter(存储/递增/读取)Counter Move模块
53Solidity权限漏洞/未初始化代理/存储碰撞Ethernaut #16 Preservation + #6 Delegation漏洞笔记:权限与存储
54MoveSui对象模型:owned objects/shared objects/immutable objects + 转移策略写一个NFT模块(铸造/转让/销毁)Sui NFT模块
55复习漏洞分类总结 + Move概念梳理整理漏洞Checklist / 画Move资源生命周期图Week9总结 + 漏洞速查表

Week 10: Ethernaut通关 + Sui开发

Day方向学习内容实操任务产出
56Solidity闪电贷攻击/价格操纵/只读重入Ethernaut剩余关卡(选做8-10关)闪电贷/价格操纵笔记
57Move/SuiSui Coin标准 + 泛型 + Witness模式写一个自定义Coin模块(create/mint/burn)Sui Coin模块
58Solidity前端漏洞(签名重放/EIP712) + 中心化风险Ethernaut通关冲刺签名安全笔记
59Move/SuiSui事件 + 动态字段(dynamic fields) + 表(Table)给NFT模块添加属性系统(动态字段存储metadata)增强版Sui NFT
60SolidityDamn Vulnerable DeFi:#1 Unstoppable + #2 Naive Receiver解题+写解题思路DVDF解题笔记#1-2
61Move/SuiSui Transfer Policy + Kiosk(NFT交易框架)用Kiosk框架写NFT市场模块NFT市场模块
62复习Ethernaut总结 + Sui开发总结整理所有Ethernaut解题笔记 / Sui模块回顾Week10总结

Week 11: 审计方法论 + Sui DeFi

Day方向学习内容实操任务产出
63Solidity审计方法论:流程/Checklist/报告格式 + 工具链(Slither/Aderyn/Mythril)用Slither扫描自己之前写的合约,修复所有warning审计工具使用笔记
64Move/SuiSui DeFi模式:共享对象 + 流动性池设计写一个SimpleSwap模块(两种Coin交换)Sui Swap模块
65Solidity手动审计练习(1):审计一个简单Token合约(500行内)找一个GitHub开源合约,写审计报告审计报告#1
66Move/SuiMove Prover(形式化验证)入门 + Sui安全最佳实践给Counter模块添加spec验证Move安全笔记
67Solidity手动审计练习(2):审计一个DeFi合约(Vault/Staking)找一个DeFi合约,写详细审计报告审计报告#2
68Move/SuiSui TypeScript SDK + 前端集成用TS SDK调用之前写的Sui模块Sui前端调用示例
69复习审计方法论总结 + Sui开发总结完善审计Checklist / 整理Sui项目代码Week11总结 + 审计Checklist

Week 12: DVDF挑战 + Move安全

Day方向学习内容实操任务产出
70SolidityDVDF #3 Truster + #4 Side Entrance解题+分析DeFi组合攻击DVDF解题笔记#3-4
71MoveMove安全:溢出/权限/闪电贷在Move中的处理 + Move审计案例分析一个Move合约审计报告Move安全分析笔记
72SolidityDVDF #5 The Rewarder + #8 Puppet解题+闪电贷攻击实战DVDF解题笔记#5+8

第三阶段检验标准

  • Ethernaut通关(至少15关)
  • DVDF完成5-6题
  • 能使用Slither/Aderyn等自动化审计工具
  • 写出2份规范的审计报告
  • 掌握Move资源模型和Sui对象模型
  • 能用Sui开发NFT/Coin/Swap模块

第四阶段:综合实战 (Day 73-90)

Week 13: 综合DeFi项目 + Solana安全

Day方向学习内容实操任务产出
73Solidity综合项目启动:设计一个Mini Lending协议(存款/借款/清算)写项目规格文档 + 核心数据结构设计Mini Lending设计文档
74Rust/SolanaSolana安全:常见漏洞(缺少签名验证/PDA种子碰撞/整数溢出)分析3个Solana审计报告的常见问题Solana安全笔记
75SolidityMini Lending:存款池 + 利率模型(简化版)实现deposit/withdraw + 利率计算Lending核心合约v1
76Rust/SolanaSolana性能优化:账户数据打包/compute units/并行交易优化之前的Vault程序(减少CU消耗)Solana优化笔记
77SolidityMini Lending:借款 + 健康因子 + 预言机集成实现borrow/repay + healthFactor + Chainlink集成Lending合约v2
78Rust/SolanaAnchor高级:零拷贝反序列化/剩余账户/自定义错误给Escrow程序添加超时取消+自定义错误增强版Escrow程序
79复习Mini Lending进度检查 + Solana项目回顾写Lending合约测试 / 部署Solana项目到devnetWeek13总结

Week 14: 综合项目完成 + 多链对比

Day方向学习内容实操任务产出
80SolidityMini Lending:清算机制 + 清算奖励实现liquidate函数 + 清算测试用例Lending合约v3(清算)
81多链EVM vs Solana vs Move 架构对比:账户模型/并发/安全/开发体验写对比分析文章(上):架构与编程模型多链对比文章(上)
82SolidityMini Lending:完整测试套件 + Gas优化 + 事件/视图函数写20+测试用例 + gas snapshot优化Lending完整测试
83多链EVM vs Solana vs Move:DeFi模式/NFT模式/安全模型对比写对比分析文章(下):应用层与生态多链对比文章(下)
84SolidityMini Lending:自我审计 + 修复 + 写审计报告用Slither扫描 + 手动审计 + 修复漏洞Mini Lending审计报告
85多链多链产品策略:何时选EVM/Solana/Sui + 跨链方案写PM视角的多链选择框架多链选择指南(PM视角)
86复习综合项目收尾 + 多链对比整合部署Mini Lending到Sepolia + 整理所有代码Week14总结

Week 15: Gas优化 + DVDF冲刺 + 总结

Day方向学习内容实操任务产出
87SolidityGas优化专题:存储布局/calldata vs memory/短路/打包/不可变量优化Mini Lending合约(目标降低20%gas)Gas优化技巧笔记
88SolidityDVDF冲刺:挑选2-3道新题解题 + 写解题报告DVDF补充解题笔记
89全栈90天成果整理:所有合约代码/审计报告/笔记/对比文章整理GitHub仓库README + 作品集页面完整作品集
90总结90天复盘:知识图谱/能力评估/下一步方向写90天总结文档 + 更新简历技能点90天总结文档

每日学习模板

# SC Day X: [主题名称]

> **日期**: YYYY-MM-DD
> **方向**: Solidity / Rust / Move / Solana / 多链
> **阶段**: 基础构建 / 框架实战 / 安全审计 / 综合实战
> **标签**: #solidity #rust #move #solana #security #defi

---

## 今日目标
- [ ] 目标1
- [ ] 目标2
- [ ] 目标3

## 核心概念

### 概念1: [名称]
[详细说明]

### 概念2: [名称]
[详细说明]

## 代码实战
```solidity/rust/move
// 今日核心代码

踩坑记录

  • 问题1 → 解决方案
  • 问题2 → 解决方案

面试关联

  • 可能的面试题: [问题]
  • 答案要点: [要点]

参考资源

明日预告

  • 下一天将学习...

---

## 核心学习资源

### Solidity

| 资源 | 用途 | 优先级 |
|------|------|--------|
| [Solidity by Example](https://solidity-by-example.org/) | 语法速查+练习 | P0 必用 |
| [Foundry Book](https://book.getfoundry.sh/) | 工具链文档 | P0 必用 |
| [OpenZeppelin Contracts](https://docs.openzeppelin.com/contracts/) | 标准实现参考 | P0 必用 |
| [Ethernaut](https://ethernaut.openzeppelin.com/) | 安全CTF入门 | P0 必做 |
| [Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/) | DeFi安全CTF | P0 必做 |
| [Secureum](https://secureum.xyz/) | 审计知识体系 | P1 重要 |
| [Solidity Docs](https://docs.soliditylang.org/) | 官方文档 | P1 参考 |
| [Patrick Collins Foundry Course](https://www.youtube.com/watch?v=umepbfKp5rI) | 视频教程 | P1 推荐 |
| [Cyfrin Updraft](https://updraft.cyfrin.io/) | 系统化课程 | P1 推荐 |
| [EVM Codes](https://www.evm.codes/) | 操作码参考 | P2 进阶 |

### Rust

| 资源 | 用途 | 优先级 |
|------|------|--------|
| [The Rust Book](https://doc.rust-lang.org/book/) | 语言教程 | P0 必读 |
| [rustlings](https://github.com/rust-lang/rustlings) | 刷题练习 | P0 必做 |
| [Rust by Example](https://doc.rust-lang.org/rust-by-example/) | 示例速查 | P1 参考 |
| [Tokio Tutorial](https://tokio.rs/tokio/tutorial) | 异步编程 | P1 重要 |

### Solana

| 资源 | 用途 | 优先级 |
|------|------|--------|
| [Anchor Book](https://www.anchor-lang.com/) | 框架文档 | P0 必用 |
| [Solana Cookbook](https://solanacookbook.com/) | 实用参考 | P0 必用 |
| [Solana Developer Docs](https://solana.com/docs) | 官方文档 | P1 参考 |
| [Solana Program Security](https://github.com/coral-xyz/sealevel-attacks) | 安全案例 | P1 重要 |

### Move/Sui

| 资源 | 用途 | 优先级 |
|------|------|--------|
| [Sui Developer Docs](https://docs.sui.io/) | 官方文档 | P0 必用 |
| [Move Book](https://move-book.com/) | 语言教程 | P0 必读 |
| [Sui Examples](https://examples.sui.io/) | 示例代码 | P1 参考 |
| [Sui Move Intro Course](https://github.com/sui-foundation/sui-move-intro-course) | 入门课程 | P1 推荐 |

---

## 90天成果清单

### 合约/程序代码

| # | 项目 | 链 | 复杂度 |
|---|------|-----|--------|
| 1 | ERC20(手写) | EVM | 基础 |
| 2 | ERC721(手写) | EVM | 基础 |
| 3 | TodoList | EVM | 基础 |
| 4 | Crowdfunding | EVM | 中等 |
| 5 | TokenFactory | EVM | 中等 |
| 6 | Timelock | EVM | 中等 |
| 7 | SimpleVault(ERC4626) | EVM | 中等 |
| 8 | StakingRewards | EVM | 中等 |
| 9 | FlashLoan | EVM | 中等 |
| 10 | SimpleAMM | EVM | 高 |
| 11 | UUPS可升级合约 | EVM | 高 |
| 12 | DAO治理 | EVM | 高 |
| 13 | **Mini Lending协议** | EVM | 高(综合) |
| 14 | Rust链上查询CLI | 工具 | 中等 |
| 15 | Counter程序 | Solana | 基础 |
| 16 | Token铸造程序 | Solana | 中等 |
| 17 | Vault程序 | Solana | 中等 |
| 18 | Escrow程序 | Solana | 高 |
| 19 | Counter模块 | Sui/Move | 基础 |
| 20 | NFT模块 | Sui/Move | 中等 |
| 21 | Coin模块 | Sui/Move | 中等 |
| 22 | NFT市场模块 | Sui/Move | 高 |
| 23 | SimpleSwap模块 | Sui/Move | 高 |

### 安全审计

| # | 内容 | 产出 |
|---|------|------|
| 1 | Ethernaut 15+关 | 解题笔记集 |
| 2 | DVDF 6-8题 | 解题报告集 |
| 3 | 自动化审计工具使用 | 工具对比笔记 |
| 4 | 手动审计练习×2 | 2份审计报告 |
| 5 | Mini Lending自审 | 自审报告 |
| 6 | 漏洞Checklist | 速查表 |

### 文章/文档

| # | 标题 | 类型 |
|---|------|------|
| 1 | EVM vs Solana vs Move 架构对比(上) | 技术分析 |
| 2 | EVM vs Solana vs Move 应用层对比(下) | 技术分析 |
| 3 | 多链选择指南(PM视角) | 产品策略 |
| 4 | 90天总结 | 复盘总结 |

### 能力验证

- [ ] 能独立写中等复杂度Solidity合约并部署
- [ ] 能识别重入/闪电贷/权限等常见漏洞
- [ ] 能使用Foundry进行开发测试部署全流程
- [ ] 能用Anchor开发Solana程序
- [ ] 能用Move开发Sui模块
- [ ] 能从架构层面对比三大智能合约平台
- [ ] 能写规范的审计报告
- [ ] 能从PM视角评估多链部署策略

---

## 环境准备清单

### Day 1 前完成

```bash
# Solidity
# 1. 安装 Foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup

# 2. 安装 Node.js (如已有可跳过)
# 3. 安装 VS Code Solidity 插件 (Nomic Foundation)
# 4. MetaMask 准备 Sepolia 测试网ETH

# Rust
# 1. 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 2. 安装 rustlings
cargo install rustlings

# 3. VS Code 安装 rust-analyzer 插件

# Solana (Week 5 前安装)
# 1. 安装 Solana CLI
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"

# 2. 安装 Anchor
cargo install --git https://github.com/coral-xyz/anchor anchor-cli

# Sui (Week 9 前安装)
# 1. 安装 Sui CLI
cargo install --locked --git https://github.com/MystenLabs/sui.git sui

周日复习模板

# Week X 复习

## 本周完成
- [x] ...
- [x] ...

## 知识盲点
- 需要加强的点1
- 需要加强的点2

## 代码Review
- 回顾本周写的合约/程序
- 有没有更好的写法?
- 安全性检查

## 下周预告
- 下周核心目标
- 需要提前准备的环境/资源