Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xe32ca6520ef5efe6BeB1ad4ecc0e36e03Eadc76a
Balance 0 ETH
Nonce 1
Code Size 5190 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5190 bytes
0x6080604052600436106101b2575f3560e01c8063715018a6116100e7578063a9059cbb11610087578063df20fd4911610062578063df20fd4914610537578063f6b20c3b14610556578063f887ea401461056a578063ffb54a9914610589575f80fd5b8063a9059cbb146104bf578063da8d0bd0146104de578063dd62ed3e146104f3575f80fd5b80638a8c523c116100c25780638a8c523c146104295780638da5cb5b1461043d57806395d89b411461045b578063a8aa1b311461048c575f80fd5b8063715018a6146103c257806375f0a874146103d6578063893d20e81461040d575f80fd5b80632f54bf6e11610152578063516239de1161012d578063516239de14610343578063571ac8b0146103585780636ddd17131461037757806370a0823114610397575f80fd5b80632f54bf6e146102c2578063313ce567146102ef5780633f4218e014610315575f80fd5b806318160ddd1161018d57806318160ddd1461025a57806323b872dd1461026e5780632b112e491461028d5780632c18c23d146102a1575f80fd5b80630445b667146101bd57806306fdde03146101e5578063095ea7b31461022b575f80fd5b366101b957005b5f80fd5b3480156101c8575f80fd5b506101d260095481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b5061021e6040518060400160405280600e81526020016d151bdb481d1a1948131a5e985c9960921b81525081565b6040516101dc91906110d8565b348015610236575f80fd5b5061024a610245366004611128565b6105a9565b60405190151581526020016101dc565b348015610265575f80fd5b506101d2610615565b348015610279575f80fd5b5061024a610288366004611150565b610632565b348015610298575f80fd5b506101d26106f0565b3480156102ac575f80fd5b506102c06102bb36600461118a565b610776565b005b3480156102cd575f80fd5b5061024a6102dc3660046111a1565b5f546001600160a01b0391821691161490565b3480156102fa575f80fd5b50610303600c81565b60405160ff90911681526020016101dc565b348015610320575f80fd5b5061024a61032f3660046111a1565b60036020525f908152604090205460ff1681565b34801561034e575f80fd5b506101d2600b5481565b348015610363575f80fd5b5061024a6103723660046111a1565b6107ad565b348015610382575f80fd5b5060085461024a90600160a81b900460ff1681565b3480156103a2575f80fd5b506101d26103b13660046111a1565b60016020525f908152604090205481565b3480156103cd575f80fd5b506102c06107b9565b3480156103e1575f80fd5b506007546103f5906001600160a01b031681565b6040516001600160a01b0390911681526020016101dc565b348015610418575f80fd5b505f546001600160a01b03166103f5565b348015610434575f80fd5b506102c06107f3565b348015610448575f80fd5b505f546103f5906001600160a01b031681565b348015610466575f80fd5b5061021e6040518060400160405280600681526020016513125690549160d21b81525081565b348015610497575f80fd5b506103f57f0000000000000000000000000458fde18dc6da73a4186a86cce8d3a459f1bec181565b3480156104ca575f80fd5b5061024a6104d9366004611128565b610831565b3480156104e9575f80fd5b506101d2600c5481565b3480156104fe575f80fd5b506101d261050d3660046111ba565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b348015610542575f80fd5b506102c06105513660046111eb565b61083d565b348015610561575f80fd5b506102c0610907565b348015610575575f80fd5b506008546103f5906001600160a01b031681565b348015610594575f80fd5b5060085461024a90600160a01b900460ff1681565b335f8181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106039086815260200190565b60405180910390a35060015b92915050565b610621600c600a611302565b61062f90633b9aca00611310565b81565b6001600160a01b0383165f9081526002602090815260408083203384529091528120545f19146106db576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526002825283812033825290915291909120546106b791849061093b565b6001600160a01b0385165f9081526002602090815260408083203384529091529020555b6106e6848484610973565b90505b9392505050565b60016020527fa6eef7e35abe7026729641147f7915573c7e97b47efa546f5f6e3230263bcb495461dead5f9081527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d5490919061074f600c600a611302565b61075d90633b9aca00611310565b6107679190611327565b6107719190611327565b905090565b5f546001600160a01b031633146107a85760405162461bcd60e51b815260040161079f9061133a565b60405180910390fd5b600c55565b5f61060f825f196105a9565b5f546001600160a01b031633146107e25760405162461bcd60e51b815260040161079f9061133a565b5f80546001600160a01b0319169055565b5f546001600160a01b0316331461081c5760405162461bcd60e51b815260040161079f9061133a565b6008805460ff60a01b1916600160a01b179055565b5f6106e9338484610973565b5f546001600160a01b031633146108665760405162461bcd60e51b815260040161079f9061133a565b6014610874600c600a611302565b61088290633b9aca00611310565b61088c919061135a565b81106108e55760405162461bcd60e51b815260206004820152602260248201527f416d6f756e7420746f6f20686967682c206d617820616c6c6f77656420696e20604482015261352560f01b606482015260840161079f565b60088054921515600160a81b0260ff60a81b1990931692909217909155600955565b5f546001600160a01b031633146109305760405162461bcd60e51b815260040161079f9061133a565b5f6005819055600455565b5f818484111561095e5760405162461bcd60e51b815260040161079f91906110d8565b505f61096a8486611327565b95945050505050565b600a545f9060ff16156109925761098b848484610bd1565b90506106e9565b6001600160a01b0384165f9081526003602052604090205460ff161580156109d257506001600160a01b0383165f9081526003602052604090205460ff16155b15610a2757600854600160a01b900460ff16610a275760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015260640161079f565b610a2f610cb4565b8015610a6c57507f0000000000000000000000000458fde18dc6da73a4186a86cce8d3a459f1bec16001600160a01b0316836001600160a01b0316145b8015610a875750600c54600b54610a839190611379565b4310155b15610a9457610a94610cf1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f90815260019091529190912054610ae591849061093b565b6001600160a01b0385165f90815260016020908152604080832093909355600390529081205460ff1680610b3057506001600160a01b0384165f9081526003602052604090205460ff165b610b4457610b3f858486610e12565b610b46565b825b6001600160a01b0385165f90815260016020526040902054909150610b6b9082610f4e565b6001600160a01b038086165f8181526001602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610bbe9085815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600190915291822054610c2191849061093b565b6001600160a01b038086165f908152600160205260408082209390935590851681522054610c4f9083610f4e565b6001600160a01b038085165f8181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ca29086815260200190565b60405180910390a35060019392505050565b600a545f9060ff16158015610cd25750600854600160a81b900460ff165b8015610771575050600954305f90815260016020526040902054101590565b600a805460ff191660011790556009546040805160028082526060820183525f9260208301908036833701905050905030815f81518110610d3457610d3461138c565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610d8857610d8861138c565b6001600160a01b03928316602091820292909201015260085460075460405163791ac94760e01b81529183169263791ac94792610dd39287925f9288929091169042906004016113a0565b5f604051808303815f87803b158015610dea575f80fd5b505af1158015610dfc573d5f803e3d5ffd5b505043600b555050600a805460ff191690555050565b6006545f906001600160a01b037f0000000000000000000000000458fde18dc6da73a4186a86cce8d3a459f1bec1811690841603610e535750600454610e91565b7f0000000000000000000000000458fde18dc6da73a4186a86cce8d3a459f1bec16001600160a01b0316856001600160a01b031603610e9157506005545b831580610e9c575080155b15610eaa57839150506106e9565b5f610ec06064610eba8785610fac565b9061102a565b90508015610f3a57305f90815260016020526040902054610ee19082610f4e565b305f81815260016020526040908190209290925590516001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610f319085815260200190565b60405180910390a35b610f44858261106b565b9695505050505050565b5f80610f5a8385611379565b9050838110156106e95760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640161079f565b5f825f03610fbb57505f61060f565b5f610fc68385611310565b905082610fd3858361135a565b146106e95760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161079f565b5f6106e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110ac565b5f6106e983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061093b565b5f81836110cc5760405162461bcd60e51b815260040161079f91906110d8565b505f61096a848661135a565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b0381168114611123575f80fd5b919050565b5f8060408385031215611139575f80fd5b6111428361110d565b946020939093013593505050565b5f805f60608486031215611162575f80fd5b61116b8461110d565b92506111796020850161110d565b929592945050506040919091013590565b5f6020828403121561119a575f80fd5b5035919050565b5f602082840312156111b1575f80fd5b6106e98261110d565b5f80604083850312156111cb575f80fd5b6111d48361110d565b91506111e26020840161110d565b90509250929050565b5f80604083850312156111fc575f80fd5b82358015158114611142575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561125a5780850481111561123e5761123e61120b565b600184161561124c57908102905b60019390931c928002611223565b935093915050565b5f826112705750600161060f565b8161127c57505f61060f565b8160018114611292576002811461129c576112b8565b600191505061060f565b60ff8411156112ad576112ad61120b565b50506001821b61060f565b5060208310610133831016604e8410600b84101617156112db575081810a61060f565b6112e75f19848461121f565b805f19048211156112fa576112fa61120b565b029392505050565b5f6106e960ff841683611262565b808202811582820484141761060f5761060f61120b565b8181038181111561060f5761060f61120b565b60208082526006908201526510a7aba722a960d11b604082015260600190565b5f8261137457634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561060f5761060f61120b565b634e487b7160e01b5f52603260045260245ffd5b5f60a0820187835286602084015260a0604084015280865180835260c0850191506020880192505f5b818110156113f05783516001600160a01b03168352602093840193909201916001016113c9565b50506001600160a01b03959095166060840152505060800152939250505056fea2646970667358221220617b844d7d1d3b9e56c8ba73109bf2087f0f791f4377b8457624bf84e255e45f64736f6c634300081a0033

Verified Source Code Partial Match

Compiler: v0.8.26+commit.8a97fa7a EVM: cancun Optimization: Yes (200 runs)
LIZARD.sol 276 lines
// SPDX-License-Identifier: MIT

/*

Web: https://tomthelizard.xyz/
X: https://x.com/tomthelizardeth
TG: https://t.me/tomthelizardeth

*/

pragma solidity 0.8.26;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address public owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
    }
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

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

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract LIZARD is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Tom the Lizard";
    string public constant symbol = "LIZARD";
    uint8 public constant decimals = 12;

    uint256 public constant totalSupply = 1_000_000_000 * 10**decimals;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;

    uint256 sellFee = 20;
    uint256 buyFee = 20;
    uint256 transferFee = 0;

    address public marketingWallet;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 200;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    uint256 public lastContractSellBlock;
    uint256 public MIN_BLOCKS_BETWEEN_CONTRACT_SELLS = 1;

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingWallet = 0x14de23f2a374F836Ef6C21A075B1d5202956cA19;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingWallet] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

    function getOwner() external view override returns (address) { return owner; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        if(shouldSwapBack() && recipient == pair && (block.number >= lastContractSellBlock + MIN_BLOCKS_BETWEEN_CONTRACT_SELLS)) {
            swapBack();
        }


        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        uint256 multiplier = transferFee;

        if(recipient == pair) {
            multiplier = sellFee;
        } else if(sender == pair) {
            multiplier = buyFee;
        }

        if(amount == 0 || multiplier == 0){
            return amount;
        }

        uint256 feeAmount = amount.mul(multiplier).div(100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function enableTrading() external onlyOwner {
        tradingOpen = true;
    }

    function swapdelay(uint256 _blocks) external onlyOwner {
        MIN_BLOCKS_BETWEEN_CONTRACT_SELLS = _blocks;
    }

    function swapBack() internal swapping {
        uint256 amountToSwap = swapThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            payable(marketingWallet),
            block.timestamp
        );
        lastContractSellBlock = block.number;
    }

    function removeFees() external onlyOwner {
        buyFee = 0;
        sellFee = 0;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external onlyOwner {
        require(_amount < (totalSupply/20), "Amount too high, max allowed in 5%");

        swapEnabled = _enabled;
        swapThreshold = _amount;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Read Contract

MIN_BLOCKS_BETWEEN_CONTRACT_SELLS 0xda8d0bd0 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getCirculatingSupply 0x2b112e49 → uint256
getOwner 0x893d20e8 → address
isFeeExempt 0x3f4218e0 → bool
isOwner 0x2f54bf6e → bool
lastContractSellBlock 0x516239de → uint256
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool

Write Contract 9 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
enableTrading 0x8a8c523c
No parameters
removeFees 0xf6b20c3b
No parameters
renounceOwnership 0x715018a6
No parameters
setSwapBackSettings 0xdf20fd49
bool _enabled
uint256 _amount
swapdelay 0x2c18c23d
uint256 _blocks
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address