Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x37fe8F5694f3dEd31225501F7704FC8C2b40a66f
Balance 0 ETH
Nonce 1
Code Size 8842 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

8842 bytes
0x608060405234801561001057600080fd5b506004361061023d5760003560e01c8063715018a61161013b578063a9059cbb116100b8578063e6c75f711161007c578063e6c75f7114610514578063ea2f0b371461051d578063ec28438a14610530578063f16f07ae14610543578063f2fde38b1461054c57600080fd5b8063a9059cbb1461049b578063ae267735146104ae578063d2a09c71146104b6578063d4057d7e146104c9578063dd62ed3e146104db57600080fd5b80638da5cb5b116100ff5780638da5cb5b1461044957806391d55f411461045a57806395d89b411461046d5780639c74daf014610475578063a457c2d71461048857600080fd5b8063715018a6146103f057806375f0a874146103f85780637d1db4a51461040b5780637d459db31461041457806383ad79941461044057600080fd5b806339509351116101c9578063583e05681161018d578063583e05681461038357806359ecf39e146103ae5780635d098b38146103c15780636b67c4df146103d457806370a08231146103dd57600080fd5b8063395093511461030b578063437823ec1461031e5780634549b0391461033157806352390c02146103445780635342acb41461035757600080fd5b806323b872dd1161021057806323b872dd146102aa5780632d838119146102bd57806330b263ba146102d0578063313ce567146102e35780633685d419146102f857600080fd5b8063053ab1821461024257806306fdde0314610257578063095ea7b31461027557806318160ddd14610298575b600080fd5b610255610250366004611e4f565b61055f565b005b61025f61064d565b60405161026c9190611e68565b60405180910390f35b610288610283366004611ecb565b6106df565b604051901515815260200161026c565b6014545b60405190815260200161026c565b6102886102b8366004611ef7565b6106f6565b61029c6102cb366004611e4f565b61075f565b6102556102de366004611f38565b6107e3565b60055460405160ff909116815260200161026c565b610255610306366004611f5a565b61087b565b610288610319366004611ecb565b610a2d565b61025561032c366004611f5a565b610a63565b61029c61033f366004611f8c565b610ab1565b610255610352366004611f5a565b610b3c565b610288610365366004611f5a565b6001600160a01b031660009081526009602052604090205460ff1690565b600154610396906001600160a01b031681565b6040516001600160a01b03909116815260200161026c565b6102556103bc366004611e4f565b610c8f565b6102556103cf366004611f5a565b610cbe565b61029c600d5481565b61029c6103eb366004611f5a565b610d0a565b610255610d69565b601054610396906001600160a01b031681565b61029c60115481565b610288610422366004611f5a565b6001600160a01b03166000908152600a602052604090205460ff1690565b61029c600c5481565b6000546001600160a01b0316610396565b610255610468366004611e4f565b610d9f565b61025f610e3d565b600254610396906001600160a01b031681565b610288610496366004611ecb565b610e4c565b6102886104a9366004611ecb565b610e9b565b60165461029c565b6102556104c4366004611fb8565b610ea8565b60175461028890610100900460ff1681565b61029c6104e9366004611fd3565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b61029c60125481565b61025561052b366004611f5a565b610eec565b61025561053e366004611e4f565b610f37565b61029c60135481565b61025561055a366004611f5a565b610f98565b336000908152600a602052604090205460ff16156105d95760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084015b60405180910390fd5b60006105e482611030565b50505050905061061981600660006105f93390565b6001600160a01b0316815260208101919091526040016000205490611076565b336000908152600660205260409020556015546106369082611076565b60155560165461064690836110b8565b6016555050565b60606003805461065c9061200c565b80601f01602080910402602001604051908101604052809291908181526020018280546106889061200c565b80156106d55780601f106106aa576101008083540402835291602001916106d5565b820191906000526020600020905b8154815290600101906020018083116106b857829003601f168201915b5050505050905090565b60006106ec338484611117565b5060015b92915050565b600061070384848461123b565b610755843361075085604051806060016040528060288152602001612208602891396001600160a01b038a16600090815260086020908152604080832033845290915290205491906115ec565b611117565b5060019392505050565b60006015548211156107c65760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016105d0565b60006107d0611626565b90506107dc8382611649565b9392505050565b6000546001600160a01b0316331461080d5760405162461bcd60e51b81526004016105d090612046565b600c829055600d81905561082182826110b8565b600e81905561012c10156108775760405162461bcd60e51b815260206004820152601d60248201527f746f74616c20746178206d757374206265203325206f722062656c6f7700000060448201526064016105d0565b5050565b6000546001600160a01b031633146108a55760405162461bcd60e51b81526004016105d090612046565b6001600160a01b0381166000908152600a602052604090205460ff1661090d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016105d0565b60005b600b5481101561087757816001600160a01b0316600b82815481106109375761093761207b565b6000918252602090912001546001600160a01b031603610a1b57600b8054610961906001906120a7565b815481106109715761097161207b565b600091825260209091200154600b80546001600160a01b03909216918390811061099d5761099d61207b565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600a90925220805460ff19169055600b8054806109f5576109f56120ba565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610a25816120d0565b915050610910565b3360008181526008602090815260408083206001600160a01b038716845290915281205490916106ec91859061075090866110b8565b6000546001600160a01b03163314610a8d5760405162461bcd60e51b81526004016105d090612046565b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000601454831115610b055760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016105d0565b81610b23576000610b1584611030565b509294506106f09350505050565b6000610b2e84611030565b509194506106f09350505050565b6000546001600160a01b03163314610b665760405162461bcd60e51b81526004016105d090612046565b6001600160a01b0381166000908152600a602052604090205460ff1615610bcf5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016105d0565b6001600160a01b03811660009081526006602052604090205415610c29576001600160a01b038116600090815260066020526040902054610c0f9061075f565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600a60205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000546001600160a01b03163314610cb95760405162461bcd60e51b81526004016105d090612046565b601355565b6000546001600160a01b03163314610ce85760405162461bcd60e51b81526004016105d090612046565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152600a602052604081205460ff1615610d4757506001600160a01b031660009081526007602052604090205490565b6001600160a01b0382166000908152600660205260409020546106f09061075f565b6000546001600160a01b03163314610d935760405162461bcd60e51b81526004016105d090612046565b610d9d600061168b565b565b6000546001600160a01b03163314610dc95760405162461bcd60e51b81526004016105d090612046565b6012805490829055601454610ddf9060c8611649565b6012541015610e005760405162461bcd60e51b81526004016105d0906120e9565b60408051828152602081018490527f0a7c714b6801281a6e2610a6371ac6a5da9a5947616d74f4aa3ad1d289278e73910160405180910390a15050565b60606004805461065c9061200c565b60006106ec338461075085604051806060016040528060258152602001612230602591393360009081526008602090815260408083206001600160a01b038d16845290915290205491906115ec565b60006106ec33848461123b565b6000546001600160a01b03163314610ed25760405162461bcd60e51b81526004016105d090612046565b601780549115156101000261ff0019909216919091179055565b6000546001600160a01b03163314610f165760405162461bcd60e51b81526004016105d090612046565b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000546001600160a01b03163314610f615760405162461bcd60e51b81526004016105d090612046565b6011819055601454610f749060c8611649565b6011541015610f955760405162461bcd60e51b81526004016105d0906120e9565b50565b6000546001600160a01b03163314610fc25760405162461bcd60e51b81526004016105d090612046565b6001600160a01b0381166110275760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105d0565b610f958161168b565b6000806000806000806000611044886116db565b91509150600080600061105f8b8561105a611626565b61171a565b919d909c50909a5094985092965092945050505050565b60006107dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ec565b6000806110c5838561212d565b9050838110156107dc5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105d0565b6001600160a01b0383166111795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105d0565b6001600160a01b0382166111da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105d0565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661129f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d0565b6001600160a01b0382166113015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d0565b600081116113635760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016105d0565b6000546001600160a01b0384811691161480159061138f57506000546001600160a01b03838116911614155b156113f7576011548111156113f75760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016105d0565b6002546001600160a01b03848116911614801561142d57506001600160a01b03831660009081526009602052604090205460ff16155b801561145257506001600160a01b03821660009081526009602052604090205460ff16155b156114ce57600061146283610d0a565b601254909150611472838361212d565b11156114cc5760405162461bcd60e51b8152602060048201526024808201527f45786365656473206d6178696d756d2077616c6c657420746f6b656e20616d6f6044820152633ab73a1760e11b60648201526084016105d0565b505b60006114d930610d0a565b601754909150610100900460ff1680156114f557506013548110155b8015611504575060175460ff16155b801561151d57506002546001600160a01b038481169116145b1561153d575060135460105461153d9082906001600160a01b0316611756565b6001600160a01b03841660009081526009602052604090205460019060ff168061157f57506001600160a01b03841660009081526009602052604090205460ff165b15611588575060005b6002546001600160a01b038681169116148015906115b457506002546001600160a01b03858116911614155b156115bd575060005b806115ca576115ca6118fa565b6115d5858585611913565b806115e5576115e5600f54600e55565b5050505050565b600081848411156116105760405162461bcd60e51b81526004016105d09190611e68565b50600061161d84866120a7565b95945050505050565b6000806000611633611b62565b90925090506116428282611649565b9250505090565b60006107dc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ce4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008060006117016127106116fb600e5487611d1290919063ffffffff16565b90611649565b9050600061170f8583611076565b959194509092505050565b60008080806117298786611d12565b905060006117378787611d12565b905060006117458383611076565b929992985090965090945050505050565b6017805460ff1916600117905560408051600280825260608201835260009260208301908036833701905050905030816000815181106117985761179861207b565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156117f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118159190612140565b816001815181106118285761182861207b565b6001600160a01b039283166020918202929092018101919091523060009081526008825260408082206001549094168252929091522054831115611880576001546118809030906001600160a01b0316600019611117565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac947906118b990869060009086908890429060040161215d565b600060405180830381600087803b1580156118d357600080fd5b505af11580156118e7573d6000803e3d6000fd5b50506017805460ff191690555050505050565b600e5460000361190657565b600e8054600f5560009055565b60008061191f836116db565b91509150600080611933858461105a611626565b506001600160a01b0389166000908152600a6020526040902054919350915060ff1615611997576001600160a01b03871660009081526007602052604090205461197d9086611076565b6001600160a01b0388166000908152600760205260409020555b6001600160a01b0387166000908152600660205260409020546119ba9083611076565b6001600160a01b038089166000908152600660209081526040808320949094559189168152600a909152205460ff1615611a2b576001600160a01b038616600090815260076020526040902054611a1190856110b8565b6001600160a01b0387166000908152600760205260409020555b6001600160a01b038616600090815260066020526040902054611a4e90826110b8565b6001600160a01b0387166000908152600660205260409020558215611b0c576000611a8a600e546116fb600d5487611d1290919063ffffffff16565b90506000611aa9600e546116fb600c5488611d1290919063ffffffff16565b9050611ab481611d94565b8115611b0957611ac382611db8565b6010546040518381526001600160a01b03918216918b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b50505b856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051611b5191815260200190565b60405180910390a350505050505050565b6015546014546000918291825b600b54811015611cb4578260066000600b8481548110611b9157611b9161207b565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611bfc57508160076000600b8481548110611bd557611bd561207b565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c1257601554601454945094505050509091565b611c5860066000600b8481548110611c2c57611c2c61207b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611076565b9250611ca060076000600b8481548110611c7457611c7461207b565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611076565b915080611cac816120d0565b915050611b6f565b50601454601554611cc491611649565b821015611cdb576015546014549350935050509091565b90939092509050565b60008183611d055760405162461bcd60e51b81526004016105d09190611e68565b50600061161d84866121ce565b600082600003611d24575060006106f0565b6000611d3083856121f0565b905082611d3d85836121ce565b146107dc5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105d0565b6000611da8611da1611626565b8390611d12565b6015549091506106369082611076565b6000611dc2611626565b90506000611dd08383611d12565b30600090815260066020526040902054909150611ded90826110b8565b306000908152600660209081526040808320939093556010546001600160a01b03168252600a9052205460ff1615611e4a5730600090815260076020526040902054611e3990846110b8565b306000908152600760205260409020555b505050565b600060208284031215611e6157600080fd5b5035919050565b600060208083528351808285015260005b81811015611e9557858101830151858201604001528201611e79565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f9557600080fd5b60008060408385031215611ede57600080fd5b8235611ee981611eb6565b946020939093013593505050565b600080600060608486031215611f0c57600080fd5b8335611f1781611eb6565b92506020840135611f2781611eb6565b929592945050506040919091013590565b60008060408385031215611f4b57600080fd5b50508035926020909101359150565b600060208284031215611f6c57600080fd5b81356107dc81611eb6565b80358015158114611f8757600080fd5b919050565b60008060408385031215611f9f57600080fd5b82359150611faf60208401611f77565b90509250929050565b600060208284031215611fca57600080fd5b6107dc82611f77565b60008060408385031215611fe657600080fd5b8235611ff181611eb6565b9150602083013561200181611eb6565b809150509250929050565b600181811c9082168061202057607f821691505b60208210810361204057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156106f0576106f0612091565b634e487b7160e01b600052603160045260246000fd5b6000600182016120e2576120e2612091565b5060010190565b60208082526024908201527f6361742774207365742062656c6f7720302e3525206f6620746f74616c20737560408201526370706c7960e01b606082015260800190565b808201808211156106f0576106f0612091565b60006020828403121561215257600080fd5b81516107dc81611eb6565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121ad5784516001600160a01b031683529383019391830191600101612188565b50506001600160a01b03969096166060850152505050608001529392505050565b6000826121eb57634e487b7160e01b600052601260045260246000fd5b500490565b80820281158282048414176106f0576106f061209156fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122075d9bfccbe8725ec0d5a4b42c2e4861a84360a82bb450f864952f75bc6d8560e64736f6c63430008130033

Verified Source Code Partial Match

Compiler: v0.8.19+commit.7dd6d404 EVM: paris Optimization: Yes (200 runs)
PIG20.sol 526 lines
// SPDX-License-Identifier: Unlicensed
                                                                               
pragma solidity 0.8.19;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// IERC20 interface 
interface IERC20 {
    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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

// SafeMath library
library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }


    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract PIG20 is Context, IERC20, Ownable {

    using SafeMath for uint256;
   
    IUniswapV2Router02 public _uniswapV2Router; 
    address public _uniswapV2Pair; 
    
    string private _name     = "PIG 2.0";
    string private _symbol   = "PIG2.0";
    uint8  private _decimals = 18;
    
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 public reflectionFee = 150; // 1.5% 
    uint256 public marketingFee = 150; // 1.5%
    uint256 private _totalTax = reflectionFee.add(marketingFee);
    uint256 private _previousTaxFee;

    address payable public marketingWallet = payable(0x3cfdF5eD07D5958c6e8fB81192fD2cAbd991B937);

    uint256 public _maxTxAmount        = 770000000000 * 10**18; // 1% of total supply
    uint256 public maxWalletToken = 1540000000000 * (10**18); // 2% of total supply
    uint256 public _tokenSwapThreshold = 7700000000 * (10**18); // 0.01% of total supply

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 77_000_000_000_000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _totalReflections; // Total reflections

    bool swapping;
    bool public _enableSwap = true; 

    modifier lockSwapping {
        swapping = true;
        _;
        swapping = false;
    }

    event MaxWalletAmountUpdated(uint256 prevValue, uint256 newValue);

    constructor (address _owner) {
        _rOwned[_owner] = _rTotal;
        
        // Exclude the owner, marketing wallet and the contract from paying fees
        _isExcludedFromFees[_owner] = true;
        _isExcludedFromFees[address(this)] = true;
        _isExcludedFromFees[marketingWallet] = true;
        
        // Set up the uniswap V2 router
        IUniswapV2Router02 uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH());
        _uniswapV2Router = uniswapV2Router;
        
        emit Transfer(address(0), _owner, _tTotal);
    }

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

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

    function decimals() external view returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 getTotalReflections() external view returns (uint256) {
        return _totalReflections;
    }
    
    function isExcludedFromFee(address account) external view returns(bool) {
        return _isExcludedFromFees[account];
    }
    
    function isExcludedFromReflection(address account) external view returns(bool) {
        return _isExcluded[account];
    }
    
    function excludeFromFee(address account) external onlyOwner() {
        _isExcludedFromFees[account] = true;
    }
    
    function includeInFee(address account) external onlyOwner() {
        _isExcludedFromFees[account] = false;
    }
    
    function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount,,,,) = _getValues(tAmount);
            return rAmount;
        } else {
            (,uint256 rTransferAmount,,,) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }
    
    function removeAllFees() private {
        if(_totalTax == 0) return;
        
        _previousTaxFee = _totalTax;
        _totalTax = 0;
    }
    
    function restoreAllFees() private {
        _totalTax = _previousTaxFee;
    }
    
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, _getRate());
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee);
    }

    function _getTValues(uint256 tAmount) private view returns (uint256, uint256) {
        uint256 tFee = tAmount.mul(_totalTax).div(10000);
        uint256 tTransferAmount = tAmount.sub(tFee);
        return (tTransferAmount, tFee);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee);
        return (rAmount, rTransferAmount, rFee);
    }


    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
    
    function excludeFromReward(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        // Only the owner of this contract can bypass the max transfer amount
        if(from != owner() && to != owner()) {
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
        }

        if (from==_uniswapV2Pair && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
            uint256 contractBalanceRecepient = balanceOf(to);
            require(contractBalanceRecepient + amount <= maxWalletToken, "Exceeds maximum wallet token amount.");
        }

        uint256 tokenBalance = balanceOf(address(this));
        
        // swap the marketing collected tax for eth
        if (_enableSwap && tokenBalance >= _tokenSwapThreshold && !swapping && to == _uniswapV2Pair) {
            tokenBalance = _tokenSwapThreshold;
            swapTokensForEth(tokenBalance, marketingWallet);
        }

         // If any account belongs to _isExcludedFromFee account then remove the fee
        bool takeFee = true;
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        // For wallet-to-wallet transfers, takeFee is false
        if(from != _uniswapV2Pair && to != _uniswapV2Pair) {
            takeFee = false;
        }

        // Remove fees completely from the transfer if either wallet are excluded or if it's wallet-to-wallet transfer
        if (!takeFee) {
            removeAllFees();
        }
    
        // Transfer the token amount from sender to receipient.
        _tokenTransfer(from, to, amount);
    
        // If we removed the fees for this transaction, then restore them for future transactions
        if (!takeFee) {
            restoreAllFees();
        }
    }
    
    function _tokenTransfer(address sender, address recipient, uint256 tAmount) private {
        // Calculate the values required to execute a transfer
        (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount,) = _getRValues(tAmount, tFee, _getRate());
        
        // Transfer from sender to recipient
		if (_isExcluded[sender]) {
		    _tOwned[sender] = _tOwned[sender].sub(tAmount);
		}
		_rOwned[sender] = _rOwned[sender].sub(rAmount);
		
		if (_isExcluded[recipient]) {
            _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
		}
		_rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
		
		if (tFee > 0) {
	    	uint256 marketingTokens = tFee.mul(marketingFee).div(_totalTax);
            uint256 reflectionTokens = tFee.mul(reflectionFee).div(_totalTax);

            // Reflect some of the taxed tokens 
    		_reflectTokens(reflectionTokens);
            
            // Take the rest of the taxed tokens for marketing wallet
            if(marketingTokens > 0) {
                _takeTokens(marketingTokens);
                emit Transfer(sender, marketingWallet, marketingTokens);
            }
		}
            
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectTokens(uint256 tFee) private {
        uint256 rFee = tFee.mul(_getRate());
        _rTotal = _rTotal.sub(rFee);
        _totalReflections = _totalReflections.add(tFee);
    }
    
    function _takeTokens(uint256 tTakeAmount) private {
        uint256 currentRate = _getRate();
        uint256 rTakeAmount = tTakeAmount.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTakeAmount);
        if(_isExcluded[marketingWallet]) {
            _tOwned[address(this)] = _tOwned[address(this)].add(tTakeAmount);
        }
    }
   
    function reflect(uint256 tAmount) public {
        require(!_isExcluded[_msgSender()], "Excluded addresses cannot call this function");
        (uint256 rAmount,,,,) = _getValues(tAmount);
        _rOwned[_msgSender()] = _rOwned[_msgSender()].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _totalReflections = _totalReflections.add(tAmount);
    }

    function swapTokensForEth(uint256 tokenAmount, address _marketingWallet) private lockSwapping {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapV2Router.WETH();

        if (_allowances[address(this)][address(_uniswapV2Router)] < tokenAmount) {
          _approve(address(this), address(_uniswapV2Router), ~uint256(0));
        }

        // make the swap
        _uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            _marketingWallet,
            block.timestamp
        );
        
    }

    function setTaxFeePercent(uint256 reflection, uint256 marketing) external onlyOwner() {
        reflectionFee = reflection;
        marketingFee = marketing;
        _totalTax = reflectionFee.add(marketingFee);
        require(_totalTax <= 300, "total tax must be 3% or below");
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        _maxTxAmount = maxTxAmount;
        require(_maxTxAmount >= _tTotal.div(200), "cat't set below 0.5% of total supply");
    }

    function setMarketingWallet(address payable _markWallet) external onlyOwner() {
        marketingWallet = _markWallet;
    }

    function setMaxWalletToken(uint256 _newValue) external onlyOwner {
        uint256 prevValue = maxWalletToken;
  	    maxWalletToken = _newValue;
        require(maxWalletToken >= _tTotal.div(200), "cat't set below 0.5% of total supply");
        emit MaxWalletAmountUpdated(prevValue, _newValue);
  	}

      function setTokenSwapThreshold(uint256 tokenSwapThreshold) external onlyOwner() {
        _tokenSwapThreshold = tokenSwapThreshold;
    }

    function enableSwap(bool _enable) external onlyOwner() {
        _enableSwap = _enable;
    }

}

Read Contract

_enableSwap 0xd4057d7e → bool
_maxTxAmount 0x7d1db4a5 → uint256
_tokenSwapThreshold 0xf16f07ae → uint256
_uniswapV2Pair 0x9c74daf0 → address
_uniswapV2Router 0x583e0568 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getTotalReflections 0xae267735 → uint256
isExcludedFromFee 0x5342acb4 → bool
isExcludedFromReflection 0x7d459db3 → bool
marketingFee 0x6b67c4df → uint256
marketingWallet 0x75f0a874 → address
maxWalletToken 0xe6c75f71 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
reflectionFee 0x83ad7994 → uint256
reflectionFromToken 0x4549b039 → uint256
symbol 0x95d89b41 → string
tokenFromReflection 0x2d838119 → uint256
totalSupply 0x18160ddd → uint256

Write Contract 18 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableSwap 0xd2a09c71
bool _enable
excludeFromFee 0x437823ec
address account
excludeFromReward 0x52390c02
address account
includeInFee 0xea2f0b37
address account
includeInReward 0x3685d419
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
reflect 0x053ab182
uint256 tAmount
renounceOwnership 0x715018a6
No parameters
setMarketingWallet 0x5d098b38
address _markWallet
setMaxTxAmount 0xec28438a
uint256 maxTxAmount
setMaxWalletToken 0x91d55f41
uint256 _newValue
setTaxFeePercent 0x30b263ba
uint256 reflection
uint256 marketing
setTokenSwapThreshold 0x59ecf39e
uint256 tokenSwapThreshold
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address