【发布时间】:2021-12-25 20:59:46
【问题描述】:
我开始学习solidity,并且我正在尝试构建一个sendEther 合约,其中某个地址将一定数量的以太币发送到另一个地址。我在 remix 上构建它,但在设置接收器地址时遇到了麻烦。这是我目前的代码。
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.4;
contract sendEther {
address payable public owner;
address payable public receiver;
uint256 public value;
error insufficientBalance();
error transferAlreadyCalled();
event Log(string message);
constructor() payable {
owner = payable(msg.sender);
}
modifier inBalance(address owner_) {
if (owner.balance < value) {
emit Log("Insufficient balance");
revert insufficientBalance();
_;
}
}
function transferEther() external payable {
owner = payable(msg.sender);
(
bool sent, /* bytes memory data */
) = owner.call{value: msg.value}("");
require(sent, "Failed to send Ether");
}
}
我很难理解owner.call() 将如何将以太币发送到接收器,因为接收器没有设置为任何地址。也就是说,我应该如何从用户那里获得所需的地址输入?
【问题讨论】:
标签: blockchain ethereum solidity web3