msg.value 引发错误并且不会将 ETH 发送到合约



我正在尝试用Remix编写一个简单的合约,但无法找到以下问题的解决方案:试图将特定数量的以太坊转移到合约中。

合同的编译和部署没有任何问题。但是当我尝试调用函数时,我会收到以下错误消息,你可以在下面的图片上看到。问题不可能是以太坊不够,我在Rinkeby测试网络上有大约2个以太坊。

https://i.stack.imgur.com/a2hXj.png

我可以点击";发送事务";这将打开Metamask:

https://i.stack.imgur.com/vba66.png

几秒钟后,事务失败…:

https://i.stack.imgur.com/pT9hy.png

我正在使用msg.value((函数。我的代码如下:

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract Contract {
function sendEth() public payable {
require(msg.value > .02 ether, "Not enough ETH");
}
}

如果有人能得到一个提示,我真的很感激,因为我现在已经做了太久了。

第三个屏幕截图显示您在发送事务的同时发送0 wei。因此,Solidity代码中的require条件失败,因为0不超过0.02以太。

合约无法从您的钱包中提取任何ETH-您需要指定您想在交易中发送的金额。

在混音中,有一个";值";在";部署和运行事务";选项卡,用于指定金额。

相关内容

  • 没有找到相关文章

最新更新