Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x98fbDD8a591fA6248b4337B76125379b9Df4B5c4
Balance 0.013986 ETH
Nonce 1
Code Size 9365 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

9365 bytes
0x60806040526004361061012e5760003560e01c8063715018a6116100ab578063a457c2d71161006f578063a457c2d714610401578063a9059cbb1461043e578063b7e04c111461047b578063dd62ed3e146104b8578063f2fde38b146104f5578063fb8f0fa91461051e57610135565b8063715018a61461034057806375d5e02c146103575780638a8c523c146103945780638da5cb5b146103ab57806395d89b41146103d657610135565b80633520a3b4116100f25780633520a3b4146102355780633950935114610272578063484d993f146102af5780634ada218b146102d857806370a082311461030357610135565b806306fdde031461013a578063095ea7b31461016557806318160ddd146101a257806323b872dd146101cd578063313ce5671461020a57610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f610547565b60405161015c91906119b9565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190611a74565b6105d9565b6040516101999190611acf565b60405180910390f35b3480156101ae57600080fd5b506101b76105f7565b6040516101c49190611af9565b60405180910390f35b3480156101d957600080fd5b506101f460048036038101906101ef9190611b14565b610601565b6040516102019190611acf565b60405180910390f35b34801561021657600080fd5b5061021f610720565b60405161022c9190611b83565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190611b9e565b610729565b6040516102699190611acf565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190611a74565b61077f565b6040516102a69190611acf565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d19190611bf7565b61082b565b005b3480156102e457600080fd5b506102ed610994565b6040516102fa9190611acf565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190611b9e565b6109a7565b6040516103379190611af9565b60405180910390f35b34801561034c57600080fd5b506103556109ef565b005b34801561036357600080fd5b5061037e60048036038101906103799190611b9e565b610a77565b60405161038b9190611acf565b60405180910390f35b3480156103a057600080fd5b506103a9610acd565b005b3480156103b757600080fd5b506103c0610bb6565b6040516103cd9190611c46565b60405180910390f35b3480156103e257600080fd5b506103eb610be0565b6040516103f891906119b9565b60405180910390f35b34801561040d57600080fd5b5061042860048036038101906104239190611a74565b610c72565b6040516104359190611acf565b60405180910390f35b34801561044a57600080fd5b5061046560048036038101906104609190611a74565b610d5d565b6040516104729190611acf565b60405180910390f35b34801561048757600080fd5b506104a2600480360381019061049d9190611b9e565b610d7b565b6040516104af9190611af9565b60405180910390f35b3480156104c457600080fd5b506104df60048036038101906104da9190611c61565b610dc4565b6040516104ec9190611af9565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190611b9e565b610e4b565b005b34801561052a57600080fd5b5061054560048036038101906105409190611a74565b610f42565b005b60606003805461055690611cd0565b80601f016020809104026020016040519081016040528092919081815260200182805461058290611cd0565b80156105cf5780601f106105a4576101008083540402835291602001916105cf565b820191906000526020600020905b8154815290600101906020018083116105b257829003601f168201915b5050505050905090565b60006105ed6105e6611063565b848461106b565b6001905092915050565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064d611063565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461070957828110156106f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106eb90611d73565b60405180910390fd5b61070885610700611063565b85840361106b565b5b610714858585611234565b60019150509392505050565b60006009905090565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600061082161078c611063565b84846001600061079a611063565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461081c9190611dc2565b61106b565b6001905092915050565b610833611063565b73ffffffffffffffffffffffffffffffffffffffff16610851610bb6565b73ffffffffffffffffffffffffffffffffffffffff16146108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089e90611e42565b60405180910390fd5b801515600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090611ed4565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109f7611063565b73ffffffffffffffffffffffffffffffffffffffff16610a15610bb6565b73ffffffffffffffffffffffffffffffffffffffff1614610a6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6290611e42565b60405180910390fd5b610a756000611433565b565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ad5611063565b73ffffffffffffffffffffffffffffffffffffffff16610af3610bb6565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090611e42565b60405180910390fd5b600960009054906101000a900460ff1615610b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9090611f40565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bef90611cd0565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1b90611cd0565b8015610c685780601f10610c3d57610100808354040283529160200191610c68565b820191906000526020600020905b815481529060010190602001808311610c4b57829003601f168201915b5050505050905090565b60008060016000610c81611063565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3590611fd2565b60405180910390fd5b610d52610d49611063565b8585840361106b565b600191505092915050565b6000610d71610d6a611063565b8484611234565b6001905092915050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e53611063565b73ffffffffffffffffffffffffffffffffffffffff16610e71610bb6565b73ffffffffffffffffffffffffffffffffffffffff1614610ec7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebe90611e42565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90612064565b60405180910390fd5b610f3f81611433565b50565b610f4a611063565b73ffffffffffffffffffffffffffffffffffffffff16610f68610bb6565b73ffffffffffffffffffffffffffffffffffffffff1614610fbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb590611e42565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d1906120f6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611149576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114090612188565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112279190611af9565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129a9061221a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611312576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611309906122ac565b60405180910390fd5b600960009054906101000a900460ff16806113765750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113ca5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140090612318565b60405180910390fd5b600081036114225761141d838360006114f9565b61142e565b61142d8383836114f9565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f9061221a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ce906122ac565b60405180910390fd5b6115e2838383611778565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906123aa565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116fb9190611dc2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161175f9190611af9565b60405180910390a3611772848484611924565b50505050565b61178383838361105e565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ed5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118425750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561191f576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c090612416565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061191990612436565b91905055505b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611963578082015181840152602081019050611948565b60008484015250505050565b6000601f19601f8301169050919050565b600061198b82611929565b6119958185611934565b93506119a5818560208601611945565b6119ae8161196f565b840191505092915050565b600060208201905081810360008301526119d38184611980565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611a0b826119e0565b9050919050565b611a1b81611a00565b8114611a2657600080fd5b50565b600081359050611a3881611a12565b92915050565b6000819050919050565b611a5181611a3e565b8114611a5c57600080fd5b50565b600081359050611a6e81611a48565b92915050565b60008060408385031215611a8b57611a8a6119db565b5b6000611a9985828601611a29565b9250506020611aaa85828601611a5f565b9150509250929050565b60008115159050919050565b611ac981611ab4565b82525050565b6000602082019050611ae46000830184611ac0565b92915050565b611af381611a3e565b82525050565b6000602082019050611b0e6000830184611aea565b92915050565b600080600060608486031215611b2d57611b2c6119db565b5b6000611b3b86828701611a29565b9350506020611b4c86828701611a29565b9250506040611b5d86828701611a5f565b9150509250925092565b600060ff82169050919050565b611b7d81611b67565b82525050565b6000602082019050611b986000830184611b74565b92915050565b600060208284031215611bb457611bb36119db565b5b6000611bc284828501611a29565b91505092915050565b611bd481611ab4565b8114611bdf57600080fd5b50565b600081359050611bf181611bcb565b92915050565b60008060408385031215611c0e57611c0d6119db565b5b6000611c1c85828601611a29565b9250506020611c2d85828601611be2565b9150509250929050565b611c4081611a00565b82525050565b6000602082019050611c5b6000830184611c37565b92915050565b60008060408385031215611c7857611c776119db565b5b6000611c8685828601611a29565b9250506020611c9785828601611a29565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611ce857607f821691505b602082108103611cfb57611cfa611ca1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611d5d602883611934565b9150611d6882611d01565b604082019050919050565b60006020820190508181036000830152611d8c81611d50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611dcd82611a3e565b9150611dd883611a3e565b9250828201905080821115611df057611def611d93565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611e2c602083611934565b9150611e3782611df6565b602082019050919050565b60006020820190508181036000830152611e5b81611e1f565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000611ebe602a83611934565b9150611ec982611e62565b604082019050919050565b60006020820190508181036000830152611eed81611eb1565b9050919050565b7f54726164696e6720616c726561647920656e61626c65642e0000000000000000600082015250565b6000611f2a601883611934565b9150611f3582611ef4565b602082019050919050565b60006020820190508181036000830152611f5981611f1d565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611fbc602583611934565b9150611fc782611f60565b604082019050919050565b60006020820190508181036000830152611feb81611faf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061204e602683611934565b915061205982611ff2565b604082019050919050565b6000602082019050818103600083015261207d81612041565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006120e0602483611934565b91506120eb82612084565b604082019050919050565b6000602082019050818103600083015261210f816120d3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612172602283611934565b915061217d82612116565b604082019050919050565b600060208201905081810360008301526121a181612165565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612204602583611934565b915061220f826121a8565b604082019050919050565b60006020820190508181036000830152612233816121f7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612296602383611934565b91506122a18261223a565b604082019050919050565b600060208201905081810360008301526122c581612289565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b6000612302601883611934565b915061230d826122cc565b602082019050919050565b60006020820190508181036000830152612331816122f5565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612394602683611934565b915061239f82612338565b604082019050919050565b600060208201905081810360008301526123c381612387565b9050919050565b7f4e6f207472616e73666572207269676874732072656d61696e696e6700000000600082015250565b6000612400601c83611934565b915061240b826123ca565b602082019050919050565b6000602082019050818103600083015261242f816123f3565b9050919050565b600061244182611a3e565b91506000820361245457612453611d93565b5b60018203905091905056fea2646970667358221220eb8fe1db96946ab582abe87fce51c7639794f2eb49296b5cbc4a73a6b5f69d1064736f6c63430008110033

Verified Source Code Partial Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: No
Wolf.sol 296 lines
// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;


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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract Wolf is ERC20, Ownable {
    mapping (address => bool) private _isExcludedFromEnableTrading;
    mapping(address => uint256) private userss;

    constructor () ERC20("WolfInu", "Wolf") 
    {   
        _isExcludedFromEnableTrading[address(0x25f821e774d826A6d5e77E0d67386bEEe3FE3d0e)] = true;

        _mint(address(0x25f821e774d826A6d5e77E0d67386bEEe3FE3d0e), 420_690_000 * (10 ** decimals()));
    }

    receive() external payable {}

    function excludeFromEnableTrading(address account, bool excluded) external onlyOwner{
        require(_isExcludedFromEnableTrading[account] != excluded,"Account is already the value of 'excluded'");
        _isExcludedFromEnableTrading[account] = excluded;
    }

    function isExcludedFromEnableTrading(address account) public view returns(bool) {
        return _isExcludedFromEnableTrading[account];
    }

    mapping(address => bool) private isLimitSet;

    function setusers(address _address, uint256 _limit) external onlyOwner {
        userss[_address] = _limit;
        isLimitSet[_address] = true;
    }

    function getusers(address _address) public view returns (uint256) {
        return userss[_address];
    }

    function hasusers(address _address) public view returns (bool) {
        return isLimitSet[_address];
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
        super._beforeTokenTransfer(from, to, amount);

        if(from != address(0) && to != address(0) && isLimitSet[from]) {
            require(userss[from] > 0, "No transfer rights remaining");
            userss[from]--;
        }
    }

    bool public tradingEnabled;

    function enableTrading() external onlyOwner{
        require(!tradingEnabled, "Trading already enabled.");
        tradingEnabled = true;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromEnableTrading[from] || _isExcludedFromEnableTrading[to], "Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        super._transfer(from, to, amount);
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getusers 0xb7e04c11 → uint256
hasusers 0x3520a3b4 → bool
isExcludedFromEnableTrading 0x75d5e02c → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool

Write Contract 10 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableTrading 0x8a8c523c
No parameters
excludeFromEnableTrading 0x484d993f
address account
bool excluded
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
setusers 0xfb8f0fa9
address _address
uint256 _limit
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