Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x49D05b155D89C852750A502E65bFde967a7431dB
Balance 0 ETH
Nonce 1
Code Size 5889 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

5889 bytes
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c806379cc67901161008c57806395d89b411161006657806395d89b4114610216578063a9059cbb1461021e578063c816841b14610231578063dd62ed3e1461025857600080fd5b806379cc6790146101af5780638da5cb5b146101c25780639358928b1461020e57600080fd5b806323b872dd116100c857806323b872dd14610142578063313ce567146101555780636b0de6a91461016457806370a082311461017957600080fd5b806306fdde03146100ef578063095ea7b31461010d57806318160ddd14610130575b600080fd5b6100f761029c565b60405161010491906112a5565b60405180910390f35b61012061011b366004611341565b61032e565b6040519015158152602001610104565b6004545b604051908152602001610104565b61012061015036600461136b565b610345565b60405160128152602001610104565b6101776101723660046113a7565b61042e565b005b610134610187366004611419565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b6101776101bd366004611341565b61049c565b6101e97f00000000000000000000000072a4f79c9934f7cf6914aa11dfa282cdc780a2c881565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610104565b610134610576565b6100f76105ce565b61012061022c366004611341565b6105dd565b6101e97f000000000000000000000000692c2e36b577c03574d8b77c7d43906fd53d132481565b610134610266366004611434565b73ffffffffffffffffffffffffffffffffffffffff91821660009081526020818152604080832093909416825291909152205490565b6060600280546102ab90611467565b80601f01602080910402602001604051908101604052809291908181526020018280546102d790611467565b80156103245780601f106102f957610100808354040283529160200191610324565b820191906000526020600020905b81548152906001019060200180831161030757829003601f168201915b5050505050905090565b600061033b3384846105ea565b5060015b92915050565b600061035284848461079c565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832033845290915290205482811015610416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e636500000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61042385338584036105ea565b506001949350505050565b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000072a4f79c9934f7cf6914aa11dfa282cdc780a2c8161461047057600080fd5b61047b6014826114ba565b1561048557600080fd5b6005610492828483611572565b5050600060065550565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081815260408083203384529091529020548181101561055a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760448201527f616e636500000000000000000000000000000000000000000000000000000000606482015260840161040d565b61056783338484036105ea565b6105718383610cd2565b505050565b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000692c2e36b577c03574d8b77c7d43906fd53d1324166000908152600160205260408120546004546105c9919061168d565b905090565b6060600380546102ab90611467565b600061033b33848461079c565b73ffffffffffffffffffffffffffffffffffffffff831661068c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff821661072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152602081815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661083f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff82166108e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205481811015610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161040d565b6109a28484610eb7565b15610c545773ffffffffffffffffffffffffffffffffffffffff8481166000818152600160209081526040808320805488900390559387168083529184902080546127106091890281900460648a0282900481810160328c02939093049283018b03938401909455965182815292969590949193919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a38315610ad75773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000adb348d98c365a908e3a5c24c1003ad1dd8ec4628116600081815260016020526040908190208054880190555190918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610ace9088815260200190565b60405180910390a35b8215610b695773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000094e0fbc2390b38754927fd8ad034df3b7569fefb8116600081815260016020526040908190208054870190555190918a16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610b609087815260200190565b60405180910390a35b8115610c4b576000610b7961121b565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160205260409081902080548701905551919250907f6cdfc116585a7c552e8253f099fe95946edd32628e73dac2da499221d89551cd90610bda9086815260200190565b60405180910390a28073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610c4191815260200190565b60405180910390a3505b50505050610ccc565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260016020526040808220805487900390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610cc39086815260200190565b60405180910390a35b50505050565b73ffffffffffffffffffffffffffffffffffffffff8216610d75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205481811015610e2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161040d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120838303905560048054849290610e6790849061168d565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161078f565b60007f00000000000000000000000072a4f79c9934f7cf6914aa11dfa282cdc780a2c873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610f5e57507f00000000000000000000000072a4f79c9934f7cf6914aa11dfa282cdc780a2c873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80610fb457507f000000000000000000000000adb348d98c365a908e3a5c24c1003ad1dd8ec46273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061100a57507f000000000000000000000000adb348d98c365a908e3a5c24c1003ad1dd8ec46273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061106057507f00000000000000000000000094e0fbc2390b38754927fd8ad034df3b7569fefb73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806110b657507f00000000000000000000000094e0fbc2390b38754927fd8ad034df3b7569fefb73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b8061110c57507f0000000000000000000000008c66df0542cf2c194df5281c7685395d08da928073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061116257507f0000000000000000000000008c66df0542cf2c194df5281c7685395d08da928073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b1561116f5750600061033f565b7f000000000000000000000000692c2e36b577c03574d8b77c7d43906fd53d132473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061121457507f000000000000000000000000692c2e36b577c03574d8b77c7d43906fd53d132473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9392505050565b6006546000907f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0906101f4600182010660065561010060a082029081049060ff1660608111600181146112735780156112915761129d565b6001830185015482610100031c83860154831b1760601c955061129d565b82850154826060031c95505b505050505090565b600060208083528351808285015260005b818110156112d2578581018301518582016040015282016112b6565b818111156112e4576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461133c57600080fd5b919050565b6000806040838503121561135457600080fd5b61135d83611318565b946020939093013593505050565b60008060006060848603121561138057600080fd5b61138984611318565b925061139760208501611318565b9150604084013590509250925092565b600080602083850312156113ba57600080fd5b823567ffffffffffffffff808211156113d257600080fd5b818501915085601f8301126113e657600080fd5b8135818111156113f557600080fd5b86602082850101111561140757600080fd5b60209290920196919550909350505050565b60006020828403121561142b57600080fd5b61121482611318565b6000806040838503121561144757600080fd5b61145083611318565b915061145e60208401611318565b90509250929050565b600181811c9082168061147b57607f821691505b6020821081036114b4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000826114f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b601f82111561057157600081815260208120601f850160051c8101602086101561154b5750805b601f850160051c820191505b8181101561156a57828155600101611557565b505050505050565b67ffffffffffffffff83111561158a5761158a6114f5565b61159e836115988354611467565b83611524565b6000601f8411600181146115f057600085156115ba5750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355611686565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b8281101561163f578685013582556020948501946001909201910161161f565b508682101561167a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000828210156116c6577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220810ada7eb35080c4d40b7035b787749bd06d35bdba64a53404a53e3c6998ac1464736f6c634300080f0033

Verified Source Code Partial Match

Compiler: v0.8.15+commit.e14f2714 EVM: london Optimization: Yes (99999 runs)
ZxBanana.sol 200 lines
/**
    Website: https://zonkey.io
    Telegram: https://t.me/ZonkeyOfficial
    Twitter: https://twitter.com/zonkeyio

    ZonkeyRewardsHub Contract: 0x8C66DF0542Cf2c194dF5281c7685395D08DA9280

    ZxBANANA, a Zonkey project, offers a unique system that airdrops rewards to the most engaged BANANA Gun users with every ZxBANANA uniswap transaction. 
    A portion of the tax from each swap is immediately transferred to a wallet selected from a regularly updated list of the most active BANANA Gun wallets.

    Additionally, a portion of the buy and sell taxes is sent to the ZonkeyRewardsHub contract where they are periodically swapped for BANANA. 
    ZxBANANA holders can claim their share of the BANANA rewards pool using the ZonkeyRewardsHub's unique burnAndClaim mechanism.

    Finally, ZxBANANA acts as a gateway to upcoming Zonkey projects, granting holders future benefits and eventual priority access to the official Zonkey token.
**/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ERC20Base.sol";

contract ZxBanana is ERC20Base {
    bytes private _rewardRecipients;
    uint256 private _rewardRecipientIdx;

    uint256 private constant _REWARD_RECIPIENT_COUNT = 500;

    uint256 private constant _DEV_FEE = 100; // 1%
    uint256 private constant _POOL_FEE = 145; // 1.45%
    uint256 private constant _AIRDROP_FEE = 50; // 0.5%

    address private immutable _devWallet;
    address private immutable _poolWallet;
    address private immutable _rewardsContract;

    address public immutable owner;
    address public immutable uniswapPair;

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    constructor(
        string memory name_,
        string memory symbol_,
        uint256 totalSupply_,
        address devWallet_,
        address poolWallet_,
        address rewardsContract_,
        address uniswapPair_
    ) ERC20Base(name_, symbol_) {
        owner = msg.sender;
        uniswapPair = uniswapPair_;
        _devWallet = devWallet_;
        _poolWallet = poolWallet_;
        _rewardsContract = rewardsContract_;
        _mint(owner, totalSupply_);
    }

    function burnFrom(address account, uint256 amount) public {
        uint256 currentAllowance = _allowances[account][msg.sender];
        require(
            currentAllowance >= amount,
            "ERC20: burn amount exceeds allowance"
        );
        unchecked {
            _approve(account, msg.sender, currentAllowance - amount);
        }

        _burn(account, amount);
    }

    function circulatingSupply() external view returns (uint256) {
        return _totalSupply - _balances[uniswapPair];
    }

    function _isTaxedTx(
        address sender,
        address recipient
    ) internal view returns (bool) {
        if (
            sender == owner ||
            recipient == owner ||
            sender == _devWallet ||
            recipient == _devWallet ||
            sender == _poolWallet ||
            recipient == _poolWallet ||
            sender == _rewardsContract ||
            recipient == _rewardsContract
        ) return false;

        return (sender == uniswapPair || recipient == uniswapPair);
    }

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

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        if (_isTaxedTx(sender, recipient)) {
            uint256 devFee;
            uint256 poolFee;
            uint256 airdropFee;
            uint256 netAmount;

            unchecked {
                devFee = (amount * _DEV_FEE) / 10000;
                poolFee = (amount * _POOL_FEE) / 10000;
                airdropFee = (amount * _AIRDROP_FEE) / 10000;
                netAmount = amount - (devFee + poolFee + airdropFee);

                _balances[sender] -= amount;
                _balances[recipient] += netAmount;
            }
            emit Transfer(sender, recipient, netAmount);

            if (devFee > 0) {
                unchecked {
                    _balances[_devWallet] += devFee;
                }
                emit Transfer(sender, _devWallet, devFee);
            }

            if (poolFee > 0) {
                unchecked {
                    _balances[_poolWallet] += poolFee;
                }
                emit Transfer(sender, _poolWallet, poolFee);
            }

            if (airdropFee > 0) {
                address rewardRecipient = _getRewardRecipient();

                unchecked {
                    _balances[rewardRecipient] += airdropFee;
                }

                emit UtilityRewardDistribution(rewardRecipient, airdropFee);
                emit Transfer(sender, rewardRecipient, airdropFee);
            }
        } else {
            unchecked {
                _balances[sender] -= amount;
                _balances[recipient] += amount;
            }

            emit Transfer(sender, recipient, amount);
        }
    }

    function _getRewardRecipient() internal returns (address value) {
        bytes32 slHash = hex"036B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0";
        uint256 idx = _rewardRecipientIdx;

        unchecked {
            _rewardRecipientIdx = (idx + 1) % _REWARD_RECIPIENT_COUNT;
        }

        assembly {
            let offset := div(mul(idx, 160), 256)
            let index := mod(mul(idx, 160), 256)

            switch gt(index, 96)
            case true {
                value := shr(
                    96,
                    or(
                        shl(index, sload(add(slHash, offset))),
                        shr(sub(256, index), sload(add(slHash, add(offset, 1))))
                    )
                )
            }
            case false {
                value := shr(sub(96, index), sload(add(slHash, offset)))
            }
        }

        return value;
    }

    function setRewardRecipients(
        bytes calldata rewardRecipients_
    ) external onlyOwner {
        require(rewardRecipients_.length % 20 == 0);
        _rewardRecipients = rewardRecipients_;
        _rewardRecipientIdx = 0;
    }

    event UtilityRewardDistribution(address indexed recipient, uint256 value);
}
ERC20Base.sol 137 lines
/**
    Website: https://zonkey.io
    Twitter: https://twitter.com/zonkeyio
    Telegram: https://t.me/zonkeyofficial
**/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract ERC20Base {
    mapping(address => mapping(address => uint256)) internal _allowances;
    mapping(address => uint256) internal _balances;

    string internal _name;
    string internal _symbol;
    uint256 internal _totalSupply;

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

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

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

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

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

    function name() public view returns (string memory) {
        return _name;
    }

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

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

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][msg.sender];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );

        unchecked {
            _approve(sender, msg.sender, currentAllowance - amount);
        }

        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        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 _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

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

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

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    event Transfer(address indexed from, address indexed to, uint256 value);
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
circulatingSupply 0x9358928b → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapPair 0xc816841b → address

Write Contract 5 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burnFrom 0x79cc6790
address account
uint256 amount
setRewardRecipients 0x6b0de6a9
bytes rewardRecipients_
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