You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Remix部署FundMe合约遭遇VM revert错误求助

解决Remix部署FundMe合约时的revert错误

问题根源

你混淆了合约部署和调用fund函数两个操作的要求:

  • 合约部署阶段:你的合约没有定义payable的构造函数(Solidity默认构造函数非payable),所以部署时发送ETH会直接触发revert。
  • 若部署时未发送ETH仍报错,大概率是操作时误将Value设为非0值,或者Remix环境缓存问题,但核心逻辑是部署阶段无需转ETH。

正确操作步骤

  1. 编译完FundMe.sol后,切换到Remix的「Deploy & Run Transactions」面板。
  2. 将Value输入框设置为0(或直接清空),点击「Deploy」按钮完成合约部署。
  3. 部署成功后,在已部署的合约实例中找到fund函数,在对应的Value输入框中填入≥1ETH的金额(比如2ETH),点击fund按钮执行转账,此时会触发合约中的require校验,金额符合要求即可成功执行。

额外说明

如果需要在部署合约时就接收ETH,需显式添加payable构造函数:

//SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;

contract FundMe {
    // 允许部署时接收ETH的构造函数
    constructor() payable {}

    function fund() payable public{
        require(msg.value > 1e18, "don't have enough ETH");
    } 
}

但根据你的合约逻辑,仅需在调用fund时发送ETH,所以无需添加这段代码。

内容的提问来源于stack exchange,提问作者Maulik Beladiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:35:33