// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract EtherTransferExample {
// 合约的拥有者
address public owner;
constructor() {
owner = msg.sender;
}
// 向指定地址转移以太币
function transferEther(address payable to, uint256 amount) public {
require(msg.sender == owner, "Only the owner can initiate transfers");
require(address(this).balance >= amount, "Insufficient contract balance");
// 使用transfer函数将以太币发送到目标地址
to.transfer(amount);
}
// 查看合约余额
function getContractBalance() public view returns (uint256) {
return address(this).balance;
}
}
合约包含了一个拥有者地址(合约创建者),只有拥有者可以发起转移。transferEther
函数接受目标地址和转移的金额作为参数,然后使用transfer
函数将指定数量的以太币发送到目标地址。在发送之前,合约会检查其余额是否足够。
需要注意的是,transfer
函数会在转移失败(例如,如果接收地址的执行代码耗尽了gas限制)时引发异常,导致整个转移过程回滚。