msg.value 引发错误并且不发送 eth 到合约
msg.value raises error and doesn't send eth to contract
我正在尝试在 Remix 中编写一个简单的合约,但找不到解决以下问题的方法:尝试将特定数量的以太币转移到合约中。
合约编译和部署没有任何问题。
但是当我尝试调用该函数时,我收到以下错误消息,您可以在下图中看到。问题不能是以太币不够,我在 Rinkeby Testnetwork 上得到了大约 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 代码中的要求条件失败,因为 0 不超过 0.02 以太币。
合约无法从您的钱包中提取任何 ETH - 您需要指定您希望通过交易发送多少。
在 Remix 中,“部署和 运行 事务”选项卡中有一个“值”输入,允许您指定数量。
我正在尝试在 Remix 中编写一个简单的合约,但找不到解决以下问题的方法:尝试将特定数量的以太币转移到合约中。
合约编译和部署没有任何问题。 但是当我尝试调用该函数时,我收到以下错误消息,您可以在下图中看到。问题不能是以太币不够,我在 Rinkeby Testnetwork 上得到了大约 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 代码中的要求条件失败,因为 0 不超过 0.02 以太币。
合约无法从您的钱包中提取任何 ETH - 您需要指定您希望通过交易发送多少。
在 Remix 中,“部署和 运行 事务”选项卡中有一个“值”输入,允许您指定数量。