Skip to content

Commit c62fd33

Browse files
docs: add comprehensive Sepolia deployment guide and automated deployment script
- Add DEPLOYMENT_GUIDE.md with complete deployment instructions - Add deploy-sepolia.sh automated deployment script with pre-checks - Update env.example with clear configuration instructions - Include troubleshooting section and best practices - Add quick deployment checklist and FAQ Features: - Automatic environment validation - Balance checking before deployment - Interactive deployment process - Contract verification support - Post-deployment instructions
1 parent 770ce0b commit c62fd33

3 files changed

Lines changed: 469 additions & 1 deletion

File tree

DEPLOYMENT_GUIDE.md

Lines changed: 319 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,319 @@
1+
# Bank合约部署指南 - Sepolia测试网
2+
3+
## 📋 前置准备
4+
5+
### 1. 获取Sepolia测试网ETH
6+
7+
您需要一些Sepolia测试网ETH来支付Gas费用:
8+
9+
- **Sepolia Faucet**: https://sepoliafaucet.com/
10+
- **Alchemy Sepolia Faucet**: https://sepoliafaucet.com/
11+
- **Infura Sepolia Faucet**: https://www.infura.io/faucet/sepolia
12+
13+
### 2. 获取必要的API密钥
14+
15+
#### a. Alchemy RPC URL (推荐)
16+
1. 访问 https://www.alchemy.com/
17+
2. 注册/登录账户
18+
3. 创建新的App,选择 Sepolia 网络
19+
4. 复制 HTTPS URL(格式:`https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY`
20+
21+
#### b. Etherscan API密钥(用于合约验证)
22+
1. 访问 https://etherscan.io/
23+
2. 注册/登录账户
24+
3. 进入 API Keys 页面:https://etherscan.io/myapikey
25+
4. 创建新的API密钥
26+
5. 复制API密钥
27+
28+
### 3. 准备部署钱包
29+
30+
⚠️ **安全提醒**
31+
- 仅用于测试网,不要使用包含真实资金的钱包
32+
- 永远不要将私钥提交到Git仓库
33+
- 使用专门的测试钱包
34+
35+
获取您的私钥:
36+
- **MetaMask**: 账户详情 -> 导出私钥
37+
- **其他钱包**: 查看钱包的导出私钥选项
38+
39+
## 🔧 配置环境
40+
41+
### 步骤1: 创建.env文件
42+
43+
```bash
44+
# 在项目根目录创建.env文件
45+
cp env.example .env
46+
```
47+
48+
### 步骤2: 编辑.env文件
49+
50+
打开 `.env` 文件并填入真实配置:
51+
52+
```bash
53+
# Network RPC URLs
54+
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY
55+
56+
# 私钥(去掉0x前缀或保留都可以)
57+
PRIVATE_KEY=your_private_key_here
58+
59+
# Etherscan API密钥(用于合约验证)
60+
ETHERSCAN_API_KEY=your_etherscan_api_key_here
61+
```
62+
63+
### 步骤3: 验证配置
64+
65+
```bash
66+
# 检查.env文件是否被git忽略
67+
cat .gitignore | grep .env
68+
69+
# 应该看到 .env 在列表中
70+
```
71+
72+
## 🚀 部署Bank合约
73+
74+
### 方法1: 使用Forge命令(推荐)
75+
76+
```bash
77+
# 加载环境变量并部署
78+
source .env
79+
forge script script/Deploy.s.sol:DeployScript \
80+
--rpc-url $SEPOLIA_RPC_URL \
81+
--broadcast \
82+
--verify \
83+
-vvvv
84+
```
85+
86+
### 方法2: 使用Makefile
87+
88+
如果配置了Makefile:
89+
90+
```bash
91+
make deploy-sepolia
92+
```
93+
94+
### 方法3: 不进行验证的快速部署
95+
96+
如果暂时不需要验证合约:
97+
98+
```bash
99+
forge script script/Deploy.s.sol:DeployScript \
100+
--rpc-url $SEPOLIA_RPC_URL \
101+
--broadcast \
102+
-vvvv
103+
```
104+
105+
## 📝 部署后的步骤
106+
107+
### 1. 保存部署信息
108+
109+
部署成功后,您会看到类似输出:
110+
111+
```
112+
## Setting up 1 EVM.
113+
==========================
114+
Chain 11155111
115+
116+
Estimated gas price: 2.000000007 gwei
117+
Estimated total gas used for script: 1234567
118+
Estimated amount required: 0.002469134008641969 ETH
119+
120+
==========================
121+
122+
##### sepolia
123+
✅ [Success] Hash: 0x1234...abcd
124+
Contract Address: 0xYourContractAddress
125+
Block: 12345678
126+
Paid: 0.002469134008641969 ETH (1234567 gas * 2.000000007 gwei)
127+
```
128+
129+
**请保存以下信息**
130+
- 合约地址 (Contract Address)
131+
- 交易哈希 (Hash)
132+
- 部署区块 (Block)
133+
134+
### 2. 更新.env文件
135+
136+
将部署的合约地址添加到 `.env` 文件:
137+
138+
```bash
139+
BANK_CONTRACT_ADDRESS=0xYourContractAddress
140+
```
141+
142+
### 3. 在Etherscan上查看合约
143+
144+
访问: `https://sepolia.etherscan.io/address/YOUR_CONTRACT_ADDRESS`
145+
146+
## ✅ 验证合约(如果之前没有自动验证)
147+
148+
### 手动验证
149+
150+
```bash
151+
forge verify-contract \
152+
YOUR_CONTRACT_ADDRESS \
153+
src/Bank.sol:Bank \
154+
--chain sepolia \
155+
--etherscan-api-key $ETHERSCAN_API_KEY
156+
```
157+
158+
### 验证成功后
159+
160+
在Etherscan上您可以:
161+
- 查看合约源代码
162+
- 直接在网页上调用合约函数
163+
- 查看所有交易历史
164+
165+
## 🧪 测试部署的合约
166+
167+
### 1. 检查合约owner
168+
169+
```bash
170+
cast call $BANK_CONTRACT_ADDRESS "owner()" --rpc-url $SEPOLIA_RPC_URL
171+
```
172+
173+
### 2. 进行测试存款
174+
175+
```bash
176+
# 存入0.1 ETH
177+
cast send $BANK_CONTRACT_ADDRESS "deposit()" \
178+
--value 0.1ether \
179+
--rpc-url $SEPOLIA_RPC_URL \
180+
--private-key $PRIVATE_KEY
181+
```
182+
183+
### 3. 查询余额
184+
185+
```bash
186+
# 查询您的存款余额
187+
cast call $BANK_CONTRACT_ADDRESS "getBalance(address)(uint256)" YOUR_ADDRESS \
188+
--rpc-url $SEPOLIA_RPC_URL
189+
```
190+
191+
### 4. 查询前3名存款用户
192+
193+
```bash
194+
cast call $BANK_CONTRACT_ADDRESS "getTopDepositors()(address[3],uint256[3])" \
195+
--rpc-url $SEPOLIA_RPC_URL
196+
```
197+
198+
## 📊 使用交互脚本
199+
200+
### 存款脚本
201+
202+
```bash
203+
export BANK_CONTRACT_ADDRESS=0xYourContractAddress
204+
export DEPOSIT_AMOUNT=1000000000000000000 # 1 ETH
205+
206+
forge script script/interactions/Deposit.s.sol \
207+
--rpc-url $SEPOLIA_RPC_URL \
208+
--broadcast
209+
```
210+
211+
### 提取脚本(仅owner)
212+
213+
```bash
214+
export WITHDRAW_AMOUNT=500000000000000000 # 0.5 ETH
215+
216+
forge script script/interactions/Withdraw.s.sol \
217+
--rpc-url $SEPOLIA_RPC_URL \
218+
--broadcast
219+
```
220+
221+
## 🔍 故障排除
222+
223+
### 问题1: "insufficient funds for gas"
224+
225+
**解决方案**:
226+
- 确保您的钱包有足够的Sepolia ETH
227+
- 从faucet获取更多测试ETH
228+
229+
### 问题2: "PRIVATE_KEY not found"
230+
231+
**解决方案**:
232+
```bash
233+
# 确保.env文件存在并包含PRIVATE_KEY
234+
cat .env | grep PRIVATE_KEY
235+
236+
# 重新加载环境变量
237+
source .env
238+
```
239+
240+
### 问题3: "RPC URL not responding"
241+
242+
**解决方案**:
243+
- 检查Alchemy API密钥是否正确
244+
- 尝试使用其他RPC提供商(Infura, Ankr等)
245+
246+
### 问题4: 验证失败
247+
248+
**解决方案**:
249+
```bash
250+
# 等待几个区块后重试
251+
sleep 30
252+
253+
# 重新运行验证命令
254+
forge verify-contract \
255+
YOUR_CONTRACT_ADDRESS \
256+
src/Bank.sol:Bank \
257+
--chain sepolia \
258+
--etherscan-api-key $ETHERSCAN_API_KEY \
259+
--watch
260+
```
261+
262+
## 📱 部署BigBank和Admin合约
263+
264+
如果您想部署完整的系统:
265+
266+
```bash
267+
forge script script/DeployLatestRequirements.s.sol \
268+
--rpc-url $SEPOLIA_RPC_URL \
269+
--broadcast \
270+
--verify \
271+
-vvvv
272+
```
273+
274+
这将部署:
275+
1. Bank合约
276+
2. BigBank合约
277+
3. Admin合约
278+
4. 自动转移BigBank管理权给Admin合约
279+
280+
## 🎯 最佳实践
281+
282+
1. **测试优先**: 在部署前运行所有测试
283+
```bash
284+
forge test
285+
```
286+
287+
2. **Gas估算**: 在部署前估算Gas费用
288+
```bash
289+
forge script script/Deploy.s.sol --rpc-url $SEPOLIA_RPC_URL
290+
```
291+
292+
3. **备份信息**: 保存所有部署地址和交易哈希
293+
294+
4. **安全检查**:
295+
- 确认部署账户地址
296+
- 检查合约owner是否正确
297+
- 验证初始状态
298+
299+
5. **文档记录**: 记录部署时间、网络、Gas费用等信息
300+
301+
## 🔗 有用的链接
302+
303+
- **Sepolia Etherscan**: https://sepolia.etherscan.io/
304+
- **Sepolia Faucet**: https://sepoliafaucet.com/
305+
- **Alchemy Dashboard**: https://dashboard.alchemy.com/
306+
- **Foundry Book**: https://book.getfoundry.sh/
307+
- **Chainlist (Sepolia RPC)**: https://chainlist.org/chain/11155111
308+
309+
## 💡 提示
310+
311+
- 部署到测试网是免费的(除了Gas费)
312+
- 可以随时重新部署测试
313+
- 建议先在本地测试网(Anvil)测试部署流程
314+
- 部署后立即验证合约,方便后续交互
315+
316+
---
317+
318+
如有问题,请查看项目的README.md或提交Issue。
319+

0 commit comments

Comments
 (0)