address.call.value(amount)( ) 方法对我不起作用

address.call.value(amount)( ) method is not working with me

我在 solidity 中写了一个非常简单的方法来将以太币发送到账户,但不幸的是它不起作用

(已经尝试发送和传输方法)

function sendByCallValue(address payable _receiver, uint _amount) public payable {
    (bool success, ) = _receiver.call{value:_amount}("");
    require(success, "Transfer failed.");
}

我通过传递地址和数量从 REMIX IDE 调用此函数,但它抛出错误。

在图片中你会发现:

to : NftStaker.sendByCallValue(address,uint256) 0xEf9f1ACE83dfbB8f559Da621f4aEA72C6EB10eBf

我觉得应该是这样的

to : 0xEf9f1ACE83dfbB8f559Da621f4aEA72C6EB10eBf

我不确定是哪个东西抛出了错误。

交易输出显示您正在通过交易传递 0 wei,并尝试从合约地址发送 10 wei。

它没有显示合约拥有多少,但假设它少于 10 wei,交易失败,因为 .call() 试图从合约发送超过它拥有的。

您可以指定 value 与 Remix IDE 的“部署 & 运行 交易”中的交易一起发送。