WETH

Description:

ERC20 token contract with Factory capabilities. Standard implementation for fungible tokens on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

{{
  "language": "Solidity",
  "sources": {
    "contracts/core/WETH.sol": {
      "content": "// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;


import "../interfaces/IERC20.sol";
contract WETH is IERC20 {
    string public constant name = "Wrapped Ether"; string public constant symbol = "WETH"; uint8 public constant decimals = 18;
    uint256 public override totalSupply;
    mapping(address=>uint256) public override balanceOf;
    mapping(address=>mapping(address=>uint256)) public override allowance;
    event Deposit(address indexed dst, uint wad);
    event Withdrawal(address indexed src, uint wad);
    receive() external payable { deposit(); }
    function deposit() public payable { balanceOf[msg.sender]+=msg.value; totalSupply+=msg.value; emit Deposit(msg.sender,msg.value); emit Transfer(address(0),msg.sender,msg.value); }
    function withdraw(uint wad) public { require(balanceOf[msg.sender]>=wad, "bal"); balanceOf[msg.sender]-=wad; totalSupply-=wad; emit Withdrawal(msg.sender, wad); emit Transfer(msg.sender,address(0),wad); payable(msg.sender).transfer(wad); }
    function transfer(address to, uint v) external override returns(bool){ _transfer(msg.sender,to,v); return true; }
    function approve(address s, uint v) external override returns(bool){ allowance[msg.sender][s]=v; emit Approval(msg.sender,s,v); return true; }
    function transferFrom(address f, address t, uint v) external override returns(bool){
        uint a = allowance[f][msg.sender]; require(a>=v,"allowance");
        if(a!=type(uint).max){ allowance[f][msg.sender]=a-v; emit Approval(f,msg.sender,allowance[f][msg.sender]); }
        _transfer(f,t,v); return true;
    }
    function _transfer(address f,address t,uint v) internal { require(balanceOf[f]>=v,"bal"); unchecked{balanceOf[f]-=v; balanceOf[t]+=v;} emit Transfer(f,t,v); }
}
"
    },
    "contracts/interfaces/IERC20.sol": {
      "content": "// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;


interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
"
    }
  },
  "settings": {
    "optimizer": {
      "enabled": true,
      "runs": 500
    },
    "evmVersion": "paris",
    "outputSelection": {
      "*": {
        "*": [
          "evm.bytecode",
          "evm.deployedBytecode",
          "devdoc",
          "userdoc",
          "metadata",
          "abi"
        ]
      }
    }
  }
}}

Tags:
ERC20, Token, Factory|addr:0xfc2c3f3adc23d93be262d0d67f2bd30d5fc04d1e|verified:true|block:23742142|tx:0x5b9376e21173fc8ab4816cd8023d82ed1a6c8f7a2683a7072db3065e2534e915|first_check:1762458760

Submitted on: 2025-11-06 20:52:40

Comments

Log in to comment.

No comments yet.