如何用solidity做一个简易钱包。可以存入eth,提取eth。
代码
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;
contract Wallet {
address public owner;
constructor() payable{
owner = msg.sender;
}
receive() external payable{
}
function withdraw (uint amount) external {
require(msg.sender == owner, "not owner");
(bool sent, ) = owner.call{value: amount}("");
require(sent,"call err");
}
function getBanlance() external view returns(uint) {
return address(this).balance;
}
}
- // SPDX-License-Identifier: UNLICENSED
- license协议
- contract Wallet
- contract 合约关键字
- Wallet 自定义名字
- address public owner;
- address 地址类型
- public 外部可访问,自动生成get函数
- owner 自定义变量,拥有者地址
- constructor() payable
- construtor 构造函数,只执行一次
- payable 关键字表示可收款
- receive() external payable
- receive 外部调用 没匹配到的执行此方法
- external 外部调用标识
- function withdraw (uint amount) external
- 提现方法定义
- uint 无符号整型256位
- require(msg.sender == owner, “not owner”)
- require 关键字 一个条件验证,如果不符合则终止,后面跟一个提示
- msg.sender 全局变量,表示调用者的地址
- (bool sent, ) = owner.call{value: amount}("")
- call方法,表示 owner地址接收调用者地址amount eth
- address(this).balance
- 表示当前地址的余额
gif演示
账户1部署合约
账户2存入10 eth
账户1提现 5eth
gifox 只能录制10秒的gif,没找到延长的配置
然后转视频到gif,居然要70m