Spaces:
Sleeping
Sleeping
| // SPDX-License-Identifier: MIT | |
| pragma solidity 0.8.24; | |
| /// @title SafeWallet | |
| /// @notice Uses msg.sender for auth, access-controlled sensitive functions, | |
| /// and checks low-level call results. | |
| contract SafeWallet { | |
| address public owner; | |
| constructor() { | |
| owner = msg.sender; | |
| } | |
| modifier onlyOwner() { | |
| require(msg.sender == owner, "not owner"); | |
| _; | |
| } | |
| receive() external payable {} | |
| // SAFE: msg.sender auth + access control + checked call. | |
| function transferTo(address payable dest, uint256 amount) external onlyOwner { | |
| (bool ok, ) = dest.call{value: amount}(""); | |
| require(ok, "transfer failed"); | |
| } | |
| // SAFE: guarded owner change. | |
| function setOwner(address newOwner) external onlyOwner { | |
| require(newOwner != address(0), "zero owner"); | |
| owner = newOwner; | |
| } | |
| } | |