Solidty 钱包合约

我们可以使用 Solidity 编写智能合约做一个钱包。

钱包合约的功能包括:存币、取币和查看余额,而且只能由合约发布者才拥有权限。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract Wallet {
    address payable public owner;

    modifier onlyOwner() {
        require(msg.sender == owner, "sender is not owner");
        _;
    }

    constructor() {
        owner = payable(msg.sender);
    }

    // 允许存币
    receive() external payable {}

    // 取币
    function withdraw(uint amount) external payable onlyOwner{
        // mgs.sender 与 owner 相等,不使用 owner 可以节省 gas
        payable(msg.sender).transfer(amount);
    }

    // 获取余额
    function getBalance() external view onlyOwner returns(uint) {
        return payable(this).balance;
    }
}

Solidity 在智能合约中有三种方式发送 Eth。transfer:使用 transfer 发送 Eth,会带有 2300 个gas,如果失败,就会 revert。send:使用 send 发送 Eth,会 ...