繁体   English   中英

如何使用 solidity 调用 function 从合同中发送固定数量的以太币?

[英]How to send fixed amount of ether from contract using call function in solidity?

我正在尝试将以太币从合同发送到钱包,当我使用带有 msg.value 的调用 function 时它有效,但是当我尝试发送 1 个以太币而不是 msg.value 时它不起作用。 为什么会这样,如何克服呢? 我正在使用 Remix.io Javascript VM London,这可能是原因吗?

下面这段代码有效:

function sendMoney() public payable  {
    address payable receiver = payable(0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2);

    (bool sent, bytes memory data) = receiver.call{ value: msg.value }("");
    require(sent, "Failed to send Ether");
}

但是下面的这段代码不起作用。 我必须发送固定数量的以太币。

function sendMoney() public payable  {
    address payable receiver = payable(0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2);

    (bool sent, bytes memory data) = receiver.call{ value:  1 ether }("");
    require(sent, "Failed to send Ether");
}
sendMoney() public payable  {
    address payable receiver = 
    payable(0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2);

    (bool sent, bytes memory data) = receiver.call{ value:  1 ether }("");
    require(sent, "Failed to send Ether");
}

这行得通。 你只需要在 remix 中传递一些“值”,在 1 个以太币将被转移到 0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2 之后,你在 remix 中传递的值将被转移到合约余额中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM