Goerli测试网Remix调用Uniswap V3 swap函数执行回退问题求助
解决Uniswap V3 swap函数执行回退问题(错误:Must pass non 0 ETH amount)
问题根源
错误信息明确指出:你调用swap函数时传入的ETH金额为0,Uniswap V3的核心逻辑要求必须传入大于0的ETH数量才能触发兑换流程。
修复步骤
- 修正Remix调用的ETH金额:在Remix的合约调用面板中,找到标注为
Value的输入框(用于设置交易附带的ETH数量),输入大于0的Goerli测试网ETH(例如0.01 ETH),确保该值与你期望兑换的ETH数量一致。 - 检查自定义合约参数传递:如果是你自己编写的集成Uniswap V3的合约,确认swap函数中正确使用
msg.value获取传入的ETH金额,没有被错误地硬编码为0或覆盖。 - 验证钱包余额:确保你的钱包在Goerli测试网拥有足够的测试ETH,金额需覆盖兑换量+Gas费用。
- 不要强制发送交易:Remix提示"是否强制发送"时,先修正参数再执行,强制发送只会浪费Gas。
确保代币到账的额外配置
- 在swap函数的参数中,将接收代币的地址明确设置为你的钱包地址,避免留空或设置为合约地址(除非你的合约有自动转至钱包的逻辑)。
- 确认目标代币的合约地址正确,且该代币在Goerli测试网的Uniswap V3池中存在有效流动性。
内容的提问来源于stack exchange,提问作者Dhruva Parmar
相关产品推荐
相关产品推荐

