Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xCd30a25138cae9EE7D8Bfb7313a38a867ccdAa51
Balance 0 ETH
Nonce 1
Code Size 8028 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

8028 bytes
0x6080604052600436106101b2575f3560e01c80638bad0c0a116100e7578063bbde77c111610087578063d798cbd211610062578063d798cbd2146104c0578063dd62ed3e146104d5578063ef81bad814610519578063f851a44014610538575f5ffd5b8063bbde77c11461046d578063cc274b2914610482578063d6dd3ba2146104a1575f5ffd5b80639e8c708e116100c25780639e8c708e146103f7578063a0b1e45114610416578063a9059cbb1461042f578063aacebbe31461044e575f5ffd5b80638bad0c0a146103ce57806391ceedbf146103e257806395d89b4114610206575f5ffd5b8063313ce567116101525780635d0044ca1161012d5780635d0044ca1461034857806370a082311461036757806375829def1461039b5780638a8c523c146103ba575f5ffd5b8063313ce567146102eb578063368b5ccd14610306578063400099271461031a575f5ffd5b80630758d9241161018d5780630758d9241461023e578063095ea7b31461028957806318160ddd146102b857806323b872dd146102cc575f5ffd5b80630445b667146101bd57806305a4bb62146101e557806306fdde0314610206575f5ffd5b366101b957005b5f5ffd5b3480156101c8575f5ffd5b506101d260105481565b6040519081526020015b60405180910390f35b3480156101f0575f5ffd5b506102046101ff3660046119b0565b610554565b005b348015610211575f5ffd5b50604080518082018252600a8152690416d65726963613235360b41b602082015290516101dc9190611a08565b348015610249575f5ffd5b506102717f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101dc565b348015610294575f5ffd5b506102a86102a3366004611a3d565b6108a5565b60405190151581526020016101dc565b3480156102c3575f5ffd5b506101d26108bb565b3480156102d7575f5ffd5b506102a86102e6366004611a67565b6108dc565b3480156102f6575f5ffd5b50604051601281526020016101dc565b348015610311575f5ffd5b50610204610954565b348015610325575f5ffd5b506102a8610334366004611aa5565b60056020525f908152604090205460ff1681565b348015610353575f5ffd5b50610204610362366004611ac0565b610991565b348015610372575f5ffd5b506101d2610381366004611aa5565b6001600160a01b03165f9081526002602052604090205490565b3480156103a6575f5ffd5b506102046103b5366004611aa5565b6109bf565b3480156103c5575f5ffd5b50610204610a97565b3480156103d9575f5ffd5b50610204610ad4565b3480156103ed575f5ffd5b506101d260065481565b348015610402575f5ffd5b50610204610411366004611aa5565b610b45565b348015610421575f5ffd5b506011546102a89060ff1681565b34801561043a575f5ffd5b506102a8610449366004611a3d565b610cb9565b348015610459575f5ffd5b50610204610468366004611aa5565b610cc5565b348015610478575f5ffd5b506101d2600f5481565b34801561048d575f5ffd5b5061020461049c366004611ac0565b610d10565b3480156104ac575f5ffd5b506102046104bb366004611ad7565b610d3e565b3480156104cb575f5ffd5b506101d2600e5481565b3480156104e0575f5ffd5b506101d26104ef366004611b0e565b6001600160a01b039182165f90815260036020908152604080832093909416825291909152205490565b348015610524575f5ffd5b50610204610533366004611b52565b610d7e565b348015610543575f5ffd5b505f546001600160a01b0316610271565b5f546001600160a01b031633146105865760405162461bcd60e51b815260040161057d90611ba5565b60405180910390fd5b5f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105e3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106079190611bd2565b60405163095ea7b360e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d60048201525f1960248201529091506001600160a01b0382169063095ea7b3906044016020604051808303815f875af1158015610668573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068c9190611bed565b506040516370a0823160e01b81526001600160a01b0386811660048301525f91908316906370a0823190602401602060405180830381865afa1580156106d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f89190611c08565b6040516323b872dd60e01b81526001600160a01b03888116600483015230602483015260448201839052919250908316906323b872dd906064016020604051808303815f875af115801561074e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107729190611bed565b505f5b848110156107b5576107ad8487878481811061079357610793611c1f565b90506020020160208101906107a89190611aa5565b610e11565b600101610775565b5043600e556040516370a0823160e01b81523060048201525f906001600160a01b038416906370a0823190602401602060405180830381865afa1580156107fe573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108229190611c08565b9050801561089c5760405163a9059cbb60e01b81526001600160a01b0388811660048301526024820183905284169063a9059cbb906044016020604051808303815f875af1158015610876573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061089a9190611bed565b505b50505050505050565b5f6108b1338484611176565b5060015b92915050565b5f6108c86012600a611d2a565b6108d7906461f313f880611d38565b905090565b5f6108e88484846111d6565b6001600160a01b0384165f9081526003602090815260408083203384529091529020545f191461094a576001600160a01b0384165f90815260036020908152604080832033845290915281208054849290610944908490611d4f565b90915550505b5060019392505050565b5f546001600160a01b0316331461097d5760405162461bcd60e51b815260040161057d90611ba5565b6011805460ff19811660ff90911615179055565b5f546001600160a01b031633146109ba5760405162461bcd60e51b815260040161057d90611ba5565b600f55565b5f546001600160a01b031633146109e85760405162461bcd60e51b815260040161057d90611ba5565b6001600160a01b038116610a3e5760405162461bcd60e51b815260206004820181905260248201527f4e65772061646d696e2063616e6e6f74206265207a65726f2061646472657373604482015260640161057d565b5f80546040516001600160a01b03808516939216917f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610ac05760405162461bcd60e51b815260040161057d90611ba5565b600e5415610ace575f600e55565b43600e55565b5f546001600160a01b03163314610afd5760405162461bcd60e51b815260040161057d90611ba5565b5f80546040516001600160a01b03909116907f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f908390a35f80546001600160a01b0319169055565b306001600160a01b03821603610b9d5760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f74207265636f766572206e617469766520746f6b656e0000000000604482015260640161057d565b6001546040516370a0823160e01b81523060048201526001600160a01b038381169263a9059cbb9291169083906370a0823190602401602060405180830381865afa158015610bee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c129190611c08565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015610c5a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7e9190611bed565b506001546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610cb5573d5f5f3e3d5ffd5b5050565b5f6108b13384846111d6565b5f546001600160a01b03163314610cee5760405162461bcd60e51b815260040161057d90611ba5565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610d395760405162461bcd60e51b815260040161057d90611ba5565b601055565b5f546001600160a01b03163314610d675760405162461bcd60e51b815260040161057d90611ba5565b600994909455600a92909255600b55600c55600d55565b5f546001600160a01b03163314610da75760405162461bcd60e51b815260040161057d90611ba5565b5f5b82811015610e0b578160045f868685818110610dc757610dc7611c1f565b9050602002016020810190610ddc9190611aa5565b6001600160a01b0316815260208101919091526040015f20805460ff1916911515919091179055600101610da9565b50505050565b6011805461ff001916610100179055604080516315ab88c960e31b815290515f916001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169163ad5c4648916004808201926020929091908290030181865afa158015610e86573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eaa9190611bd2565b6040805160028082526060820183529293505f92909160208301908036833701905050905081815f81518110610ee257610ee2611c1f565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610f1657610f16611c1f565b6001600160a01b03929092166020928302919091018201526040805160028082526060820183525f93919290918301908036833701905050905030815f81518110610f6357610f63611c1f565b60200260200101906001600160a01b031690816001600160a01b0316815250508281600181518110610f9757610f97611c1f565b6001600160a01b0392831660209182029290920101526040516370a0823160e01b81523060048201525f918516906370a0823190602401602060405180830381865afa158015610fe9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100d9190611c08565b90505f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663d06ca61f88856040518363ffffffff1660e01b815260040161105e929190611db9565b5f60405180830381865afa158015611078573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261109f9190810190611dd9565b6001815181106110b1576110b1611c1f565b602002602001015190505f8282116110c957816110cb565b825b9050805f036110df57505050505050611167565b604051635c11d79560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1690635c11d795906111339084905f908a908d904290600401611ea1565b5f604051808303815f87803b15801561114a575f5ffd5b505af115801561115c573d5f5f3e3d5ffd5b505050505050505050505b50506011805461ff0019169055565b6001600160a01b038381165f8181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383165f908152600260205260409020548111156112345760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015260640161057d565b601154610100900460ff161561124f57610e0b8383836114d6565b5f61125a8484611589565b6001600160a01b0384165f9081526005602052604090205490915060ff16801561128c5750601154610100900460ff16155b80156112b057506001600160a01b0384165f9081526004602052604090205460ff16155b80156112d457506001600160a01b0383165f9081526004602052604090205460ff16155b80156112e35750600d54600654115b1561131f57305f90815260026020526040812054908184116113055783611307565b815b905060105481111561131c5761131c816115e4565b50505b80156114ca575f600e541161136b5760405162461bcd60e51b815260206004820152601260248201527154726164696e67206e6f742061637469766560701b604482015260640161057d565b6001600160a01b0384165f9081526005602052604090205460ff1680156113c457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0316836001600160a01b031614155b80156113e857506001600160a01b0383165f9081526004602052604090205460ff16155b156114825760068054905f6113fc83611edc565b91905055505f600f54118015611414575060115460ff165b1561148257600f546001600160a01b0384165f9081526002602052604090205461143f908490611ef4565b11156114825760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc81b585e081dd85b1b195d60721b604482015260640161057d565b60115460ff1680156114aa57506001600160a01b0384165f9081526002602052604090205482145b156114ca576114bd6305f5e10083611f07565b6114c79083611d4f565b91505b610e0b8484848461177c565b6001600160a01b0383165f908152600260205260408120805483919083906114ff908490611d4f565b90915550506001600160a01b0383165f908152600260205260408120805484929061152b908490611ef4565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161157791815260200190565b60405180910390a35060019392505050565b6001600160a01b0382165f9081526004602052604081205460ff161580156115c957506001600160a01b0382165f9081526004602052604090205460ff16155b80156115dd5750601154610100900460ff16155b9392505050565b6011805461ff0019166101001790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061162657611626611c1f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c69190611bd2565b816001815181106116d9576116d9611c1f565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83169263791ac947926117409287925f9288929116904290600401611ea1565b5f604051808303815f87803b158015611757575f5ffd5b505af1158015611769573d5f5f3e3d5ffd5b50506011805461ff001916905550505050565b6001600160a01b0384165f90815260026020526040812080548492906117a3908490611d4f565b909155505f90508115611848575f6117bb86866118cf565b90505f60646117ca8387611d38565b6117d49190611f07565b9050801561184557305f908152600260205260408120805492945084928392906117ff908490611ef4565b909155505060405181815230906001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b6118528184611d4f565b6001600160a01b0385165f9081526002602052604081208054909190611879908490611ef4565b90915550506001600160a01b038085169086167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6118b78487611d4f565b60405190815260200160405180910390a35050505050565b6001600160a01b0381165f9081526005602052604081205460ff161561190d57600c546006541161190257600854611906565b600a545b90506108b5565b6001600160a01b0383165f9081526005602052604090205460ff161561194957600b546006541161194057600754611906565b506009546108b5565b505f92915050565b6001600160a01b0381168114611965575f5ffd5b50565b5f5f83601f840112611978575f5ffd5b50813567ffffffffffffffff81111561198f575f5ffd5b6020830191508360208260051b85010111156119a9575f5ffd5b9250929050565b5f5f5f5f606085870312156119c3575f5ffd5b84356119ce81611951565b9350602085013567ffffffffffffffff8111156119e9575f5ffd5b6119f587828801611968565b9598909750949560400135949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215611a4e575f5ffd5b8235611a5981611951565b946020939093013593505050565b5f5f5f60608486031215611a79575f5ffd5b8335611a8481611951565b92506020840135611a9481611951565b929592945050506040919091013590565b5f60208284031215611ab5575f5ffd5b81356115dd81611951565b5f60208284031215611ad0575f5ffd5b5035919050565b5f5f5f5f5f60a08688031215611aeb575f5ffd5b505083359560208501359550604085013594606081013594506080013592509050565b5f5f60408385031215611b1f575f5ffd5b8235611b2a81611951565b91506020830135611b3a81611951565b809150509250929050565b8015158114611965575f5ffd5b5f5f5f60408486031215611b64575f5ffd5b833567ffffffffffffffff811115611b7a575f5ffd5b611b8686828701611968565b9094509250506020840135611b9a81611b45565b809150509250925092565b60208082526013908201527221b0b63632b91034b9903737ba1030b236b4b760691b604082015260600190565b5f60208284031215611be2575f5ffd5b81516115dd81611951565b5f60208284031215611bfd575f5ffd5b81516115dd81611b45565b5f60208284031215611c18575f5ffd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b6001815b6001841115611c8257808504811115611c6657611c66611c33565b6001841615611c7457908102905b60019390931c928002611c4b565b935093915050565b5f82611c98575060016108b5565b81611ca457505f6108b5565b8160018114611cba5760028114611cc457611ce0565b60019150506108b5565b60ff841115611cd557611cd5611c33565b50506001821b6108b5565b5060208310610133831016604e8410600b8410161715611d03575081810a6108b5565b611d0f5f198484611c47565b805f1904821115611d2257611d22611c33565b029392505050565b5f6115dd60ff841683611c8a565b80820281158282048414176108b5576108b5611c33565b818103818111156108b5576108b5611c33565b634e487b7160e01b5f52604160045260245ffd5b5f8151808452602084019350602083015f5b82811015611daf5781516001600160a01b0316865260209586019590910190600101611d88565b5093949350505050565b828152604060208201525f611dd16040830184611d76565b949350505050565b5f60208284031215611de9575f5ffd5b815167ffffffffffffffff811115611dff575f5ffd5b8201601f81018413611e0f575f5ffd5b805167ffffffffffffffff811115611e2957611e29611d62565b8060051b604051601f19603f830116810181811067ffffffffffffffff82111715611e5657611e56611d62565b604052918252602081840181019290810187841115611e73575f5ffd5b6020850194505b83851015611e9657845180825260209586019590935001611e7a565b509695505050505050565b85815284602082015260a060408201525f611ebf60a0830186611d76565b6001600160a01b0394909416606083015250608001529392505050565b5f60018201611eed57611eed611c33565b5060010190565b808201808211156108b5576108b5611c33565b5f82611f2157634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220f1edefd09f14151d58fdc8cc1f39357d1eb766e81f90960034a5482bd887fe1464736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: Yes (200 runs)
America250.sol 406 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function totalSupply() external view returns (uint256);
    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);
}

interface IUniswapV2Router {
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    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;
    
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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

abstract contract TokenAdmin {
    address internal _admin;
    
    event AdminChanged(address indexed previousAdmin, address indexed newAdmin);
    
    constructor() {
        _admin = msg.sender;
        emit AdminChanged(address(0), msg.sender);
    }
    
    function admin() public view returns (address) {
        return _admin;
    }
    
    modifier onlyAdmin() {
        require(_admin == msg.sender, "Caller is not admin");
        _;
    }
    
    function transferAdmin(address newAdmin) public virtual onlyAdmin {
        require(newAdmin != address(0), "New admin cannot be zero address");
        emit AdminChanged(_admin, newAdmin);
        _admin = newAdmin;
    }
    
    function renounceAdmin() public virtual onlyAdmin {
        emit AdminChanged(_admin, address(0));
        _admin = address(0);
    }
}

contract America250 is IERC20, TokenAdmin {
    // Token metadata
    string private constant TOKEN_NAME = unicode"America250";
    string private constant TOKEN_SYMBOL = "America250";
    uint8 private constant DECIMALS = 18;
    uint256 private constant TOTAL_SUPPLY = 420690000000 * (10**DECIMALS);
    
    // DEX addresses
    address private constant UNISWAP_ROUTER = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address private immutable UNISWAP_PAIR;
    
    // Fee addresses
    address private constant INITIAL_HOLDER = 0x691ADDe5bA2F215992755903fE29F0dbF8B3ba38;
    address payable private marketingWallet = payable(0x2fa8198926852041c5c009281c134212b528bdE4);
    
    // Token state
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) public isDexPair;
    
    // Fee configuration
    uint256 public buyCounter = 0;
    uint256 private initialBuyFee = 35;
    uint256 private initialSellFee = 35;
    uint256 private finalBuyFee = 35;
    uint256 private finalSellFee = 35;
    uint256 private buyFeeReductionThreshold = 0;
    uint256 private sellFeeReductionThreshold = 0;
    uint256 private feeActivationThreshold = 0;
    
    // Trading controls
    uint256 public tradingStartBlock;
    uint256 public maxWalletBalance = 0;
    uint256 public swapThreshold = TOTAL_SUPPLY / 25000;
    bool public enforceMaxWallet = false;
    bool private inSwapProcess;
    
    // Router instance
    IUniswapV2Router public immutable dexRouter;
    
    modifier swapLock {
        inSwapProcess = true;
        _;
        inSwapProcess = false;
    }
    
    constructor() {
        // Initialize token distribution
        _balances[INITIAL_HOLDER] = TOTAL_SUPPLY;
        emit Transfer(address(0), INITIAL_HOLDER, TOTAL_SUPPLY);
        
        // Set up fee exclusions
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[INITIAL_HOLDER] = true;
        _isExcludedFromFee[marketingWallet] = true;
        
        // Initialize DEX router
        dexRouter = IUniswapV2Router(UNISWAP_ROUTER);
        _allowances[address(this)][UNISWAP_ROUTER] = type(uint256).max;
        
        // Create DEX pair
        UNISWAP_PAIR = IUniswapV2Factory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );
        isDexPair[UNISWAP_PAIR] = true;
        
        // Approve WETH
        IERC20(dexRouter.WETH()).approve(UNISWAP_ROUTER, type(uint256).max);
        
        transferAdmin(INITIAL_HOLDER);
    }
    
    // Token standard functions
    function name() external pure override returns (string memory) {
        return TOKEN_NAME;
    }
    
    function symbol() external pure override returns (string memory) {
        return TOKEN_SYMBOL;
    }
    
    function decimals() external pure override returns (uint8) {
        return DECIMALS;
    }
    
    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
    
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }
    
    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }
        
        return true;
    }
    
    // Admin functions
    function updateMarketingWallet(address payable newWallet) external onlyAdmin {
        marketingWallet = newWallet;
    }
    
    function configureFees(
        uint256 newFinalBuyFee,
        uint256 newFinalSellFee,
        uint256 newBuyReductionPoint,
        uint256 newSellReductionPoint,
        uint256 newActivationThreshold
    ) external onlyAdmin {
        finalBuyFee = newFinalBuyFee;
        finalSellFee = newFinalSellFee;
        buyFeeReductionThreshold = newBuyReductionPoint;
        sellFeeReductionThreshold = newSellReductionPoint;
        feeActivationThreshold = newActivationThreshold;
    }
   
    
    function toggleMaxWalletEnforcement() external onlyAdmin {
        enforceMaxWallet = !enforceMaxWallet;
    }
    
    function updateSwapThreshold(uint256 newThreshold) external onlyAdmin {
        swapThreshold = newThreshold;
    }
    
    function setMaxWallet(uint256 maxAmount) external onlyAdmin {
        maxWalletBalance = maxAmount;
    }
    
    function batchExcludeFromFee(address[] calldata accounts, bool excluded) external onlyAdmin {
        for (uint i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }
    
    function enableTrading() external onlyAdmin {
        tradingStartBlock = tradingStartBlock == 0 ? block.number : 0;
    }
    
    function initializeTrading(
        address fundingAccount,
        address[] calldata recipients,
        uint256 amountPerRecipient
    ) external onlyAdmin {
        address weth = dexRouter.WETH();
        IERC20(weth).approve(UNISWAP_ROUTER, type(uint256).max);
        
        uint256 wethBalance = IERC20(weth).balanceOf(fundingAccount);
        IERC20(weth).transferFrom(fundingAccount, address(this), wethBalance);
        
        for (uint i = 0; i < recipients.length; i++) {
            _distributeTokens(amountPerRecipient, recipients[i]);
        }
        
        tradingStartBlock = block.number;
        
        uint256 remainingWeth = IERC20(weth).balanceOf(address(this));
        if (remainingWeth > 0) {
            IERC20(weth).transfer(fundingAccount, remainingWeth);
        }
    }
    
    function recoverERC20(address tokenAddress) external {
        require(tokenAddress != address(this), "Cannot recover native token");
        IERC20(tokenAddress).transfer(
            marketingWallet,
            IERC20(tokenAddress).balanceOf(address(this))
        );
        marketingWallet.transfer(address(this).balance);
    }
    
    // Internal functions
    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(_balances[from] >= amount, "Insufficient balance");
        
        if (inSwapProcess) {
            _basicTransfer(from, to, amount);
            return;
        }
        
        bool applyFees = _shouldApplyFees(from, to);
        
        if (isDexPair[to] && !inSwapProcess && 
            !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && 
            buyCounter > feeActivationThreshold) {
            uint256 contractBalance = balanceOf(address(this));
            uint256 sellAmount = amount > contractBalance ? contractBalance : amount;
            
            if (sellAmount > swapThreshold) {
                _convertToETH(sellAmount);
            }
        }
        
        if (applyFees) {
            require(tradingStartBlock > 0, "Trading not active");
            
            if (isDexPair[from] && to != address(dexRouter) && !_isExcludedFromFee[to]) {
                buyCounter++;
                
                if (maxWalletBalance > 0 && enforceMaxWallet) {
                    require(_balances[to] + amount <= maxWalletBalance, "Exceeds max wallet");
                }
            }
            
            if (enforceMaxWallet && amount == _balances[from]) {
                amount = amount - (amount / 100000000); // Leave dust
            }
        }
        
        _executeTransfer(from, to, amount, applyFees);
    }
    
    function _basicTransfer(address from, address to, uint256 amount) private returns (bool) {
        _balances[from] -= amount;
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        return true;
    }
    
    function _executeTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        _balances[sender] -= amount;
        uint256 feeAmount = 0;
        
        if (takeFee) {
            uint256 feeRate = _determineFeeRate(sender, recipient);
            uint256 calculatedFee = (amount * feeRate) / 100;
            
            if (calculatedFee > 0) {
                feeAmount = calculatedFee;
                _balances[address(this)] += calculatedFee;
                emit Transfer(sender, address(this), calculatedFee);
            }
        }
        
        _balances[recipient] += (amount - feeAmount);
        emit Transfer(sender, recipient, amount - feeAmount);
    }
    
    function _shouldApplyFees(address from, address to) private view returns (bool) {
        return !_isExcludedFromFee[from] && 
               !_isExcludedFromFee[to] && 
               !inSwapProcess;
    }
    
    function _determineFeeRate(address sender, address recipient) private view returns (uint256) {
        if (isDexPair[recipient]) {
            return buyCounter > sellFeeReductionThreshold ? finalSellFee : initialSellFee;
        } else if (isDexPair[sender]) {
            return buyCounter > buyFeeReductionThreshold ? finalBuyFee : initialBuyFee;
        }
        return 0;
    }
    
    function _distributeTokens(uint256 tokenAmount, address recipient) private swapLock {
        address weth = dexRouter.WETH();
        address[] memory buyPath = new address[](2);
        buyPath[0] = weth;
        buyPath[1] = address(this);
        
        address[] memory sellPath = new address[](2);
        sellPath[0] = address(this);
        sellPath[1] = weth;
        
        uint256 wethBalance = IERC20(weth).balanceOf(address(this));
        uint256 estimatedBuyAmount = dexRouter.getAmountsOut(tokenAmount, sellPath)[1];
        uint256 actualBuyAmount = estimatedBuyAmount > wethBalance ? wethBalance : estimatedBuyAmount;
        
        if (actualBuyAmount == 0) return;
        
        dexRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            actualBuyAmount,
            0,
            buyPath,
            recipient,
            block.timestamp
        );
    }
    
    function _convertToETH(uint256 tokenAmount) private swapLock {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();
        
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            marketingWallet,
            block.timestamp
        );
    }
    
    receive() external payable {}
}

Read Contract

admin 0xf851a440 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyCounter 0x91ceedbf → uint256
decimals 0x313ce567 → uint8
dexRouter 0x0758d924 → address
enforceMaxWallet 0xa0b1e451 → bool
isDexPair 0x40009927 → bool
maxWalletBalance 0xbbde77c1 → uint256
name 0x06fdde03 → string
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingStartBlock 0xd798cbd2 → uint256

Write Contract 14 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
batchExcludeFromFee 0xef81bad8
address[] accounts
bool excluded
configureFees 0xd6dd3ba2
uint256 newFinalBuyFee
uint256 newFinalSellFee
uint256 newBuyReductionPoint
uint256 newSellReductionPoint
uint256 newActivationThreshold
enableTrading 0x8a8c523c
No parameters
initializeTrading 0x05a4bb62
address fundingAccount
address[] recipients
uint256 amountPerRecipient
recoverERC20 0x9e8c708e
address tokenAddress
renounceAdmin 0x8bad0c0a
No parameters
setMaxWallet 0x5d0044ca
uint256 maxAmount
toggleMaxWalletEnforcement 0x368b5ccd
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferAdmin 0x75829def
address newAdmin
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
updateMarketingWallet 0xaacebbe3
address newWallet
updateSwapThreshold 0xcc274b29
uint256 newThreshold

Recent Transactions

No transactions found for this address