您需要一些Sepolia测试网ETH来支付Gas费用:
- Sepolia Faucet: https://sepoliafaucet.com/
- Alchemy Sepolia Faucet: https://sepoliafaucet.com/
- Infura Sepolia Faucet: https://www.infura.io/faucet/sepolia
- 访问 https://www.alchemy.com/
- 注册/登录账户
- 创建新的App,选择 Sepolia 网络
- 复制 HTTPS URL(格式:
https://eth-sepolia.g.alchemy.com/v2/YOUR_API_KEY)
- 访问 https://etherscan.io/
- 注册/登录账户
- 进入 API Keys 页面:https://etherscan.io/myapikey
- 创建新的API密钥
- 复制API密钥
- 仅用于测试网,不要使用包含真实资金的钱包
- 永远不要将私钥提交到Git仓库
- 使用专门的测试钱包
获取您的私钥:
- MetaMask: 账户详情 -> 导出私钥
- 其他钱包: 查看钱包的导出私钥选项
# 在项目根目录创建.env文件
cp env.example .env打开 .env 文件并填入真实配置:
# Network RPC URLs
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_ALCHEMY_API_KEY
# 私钥(去掉0x前缀或保留都可以)
PRIVATE_KEY=your_private_key_here
# Etherscan API密钥(用于合约验证)
ETHERSCAN_API_KEY=your_etherscan_api_key_here# 检查.env文件是否被git忽略
cat .gitignore | grep .env
# 应该看到 .env 在列表中# 加载环境变量并部署
source .env
forge script script/Deploy.s.sol:DeployScript \
--rpc-url $SEPOLIA_RPC_URL \
--broadcast \
--verify \
-vvvv如果配置了Makefile:
make deploy-sepolia如果暂时不需要验证合约:
forge script script/Deploy.s.sol:DeployScript \
--rpc-url $SEPOLIA_RPC_URL \
--broadcast \
-vvvv部署成功后,您会看到类似输出:
## Setting up 1 EVM.
==========================
Chain 11155111
Estimated gas price: 2.000000007 gwei
Estimated total gas used for script: 1234567
Estimated amount required: 0.002469134008641969 ETH
==========================
##### sepolia
✅ [Success] Hash: 0x1234...abcd
Contract Address: 0xYourContractAddress
Block: 12345678
Paid: 0.002469134008641969 ETH (1234567 gas * 2.000000007 gwei)
请保存以下信息:
- 合约地址 (Contract Address)
- 交易哈希 (Hash)
- 部署区块 (Block)
将部署的合约地址添加到 .env 文件:
BANK_CONTRACT_ADDRESS=0xYourContractAddress访问: https://sepolia.etherscan.io/address/YOUR_CONTRACT_ADDRESS
forge verify-contract \
YOUR_CONTRACT_ADDRESS \
src/Bank.sol:Bank \
--chain sepolia \
--etherscan-api-key $ETHERSCAN_API_KEY在Etherscan上您可以:
- 查看合约源代码
- 直接在网页上调用合约函数
- 查看所有交易历史
cast call $BANK_CONTRACT_ADDRESS "owner()" --rpc-url $SEPOLIA_RPC_URL# 存入0.1 ETH
cast send $BANK_CONTRACT_ADDRESS "deposit()" \
--value 0.1ether \
--rpc-url $SEPOLIA_RPC_URL \
--private-key $PRIVATE_KEY# 查询您的存款余额
cast call $BANK_CONTRACT_ADDRESS "getBalance(address)(uint256)" YOUR_ADDRESS \
--rpc-url $SEPOLIA_RPC_URLcast call $BANK_CONTRACT_ADDRESS "getTopDepositors()(address[3],uint256[3])" \
--rpc-url $SEPOLIA_RPC_URLexport BANK_CONTRACT_ADDRESS=0xYourContractAddress
export DEPOSIT_AMOUNT=1000000000000000000 # 1 ETH
forge script script/interactions/Deposit.s.sol \
--rpc-url $SEPOLIA_RPC_URL \
--broadcastexport WITHDRAW_AMOUNT=500000000000000000 # 0.5 ETH
forge script script/interactions/Withdraw.s.sol \
--rpc-url $SEPOLIA_RPC_URL \
--broadcast解决方案:
- 确保您的钱包有足够的Sepolia ETH
- 从faucet获取更多测试ETH
解决方案:
# 确保.env文件存在并包含PRIVATE_KEY
cat .env | grep PRIVATE_KEY
# 重新加载环境变量
source .env解决方案:
- 检查Alchemy API密钥是否正确
- 尝试使用其他RPC提供商(Infura, Ankr等)
解决方案:
# 等待几个区块后重试
sleep 30
# 重新运行验证命令
forge verify-contract \
YOUR_CONTRACT_ADDRESS \
src/Bank.sol:Bank \
--chain sepolia \
--etherscan-api-key $ETHERSCAN_API_KEY \
--watch如果您想部署完整的系统:
forge script script/DeployLatestRequirements.s.sol \
--rpc-url $SEPOLIA_RPC_URL \
--broadcast \
--verify \
-vvvv这将部署:
- Bank合约
- BigBank合约
- Admin合约
- 自动转移BigBank管理权给Admin合约
-
测试优先: 在部署前运行所有测试
forge test -
Gas估算: 在部署前估算Gas费用
forge script script/Deploy.s.sol --rpc-url $SEPOLIA_RPC_URL -
备份信息: 保存所有部署地址和交易哈希
-
安全检查:
- 确认部署账户地址
- 检查合约owner是否正确
- 验证初始状态
-
文档记录: 记录部署时间、网络、Gas费用等信息
- Sepolia Etherscan: https://sepolia.etherscan.io/
- Sepolia Faucet: https://sepoliafaucet.com/
- Alchemy Dashboard: https://dashboard.alchemy.com/
- Foundry Book: https://book.getfoundry.sh/
- Chainlist (Sepolia RPC): https://chainlist.org/chain/11155111
- 部署到测试网是免费的(除了Gas费)
- 可以随时重新部署测试
- 建议先在本地测试网(Anvil)测试部署流程
- 部署后立即验证合约,方便后续交互
如有问题,请查看项目的README.md或提交Issue。