4.Wallet
一个最基本的钱包,其实只需要两个功能
- Anyone can send ETH.
 - Only the owner can withdraw.
 
最小实现:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract EtherWallet {
    address payable public owner;
    constructor() {
        owner = payable(msg.sender);
    }
    receive() external payable {}
    function withdraw(uint256 _amount) external {
        require(msg.sender == owner, "caller is not owner");
        payable(msg.sender).transfer(_amount);
    }
    function getBalance() external view returns (uint256) {
        return address(this).balance;
    }
}