遵守ERC20协议,将以太坊协议包装在WETH中,可以实现所有的以太坊方法。
继承Openzepplin协议
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
contract WETH is ERC20, ERC20Burnable, Ownable{
event Deposit(address indexed account, uint amount);
event Withdraw(address indexed account, uint amount);
constructor(address initialOwner)
ERC20("MyToken", "MTK")
Ownable(initialOwner)
{}
fallback() external payable {
deposit();
}
function mint(address to, uint256 amount) public onlyOwner {
_mint(to, amount);
}
function deposit() public payable {
_mint(msg.sender, msg.value);
emit Deposit(msg.sender, msg.value);
}
function withdraw(uint _amount) external {
_burn(msg.sender, _amount);
payable(msg.sender).transfer(_amount);
emit Withdraw(msg.sender, _amount);
}
}
