Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x359eda69c7da1889f4Bc74a6438901aF9dd1fdb1
Balance 0 ETH
Nonce 1
Code Size 9174 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

9174 bytes
0x6080604052600436106102295760003560e01c806375cb1bd111610123578063b6a5d7de116100ab578063f0b37c041161006f578063f0b37c04146106a4578063f2fde38b146106c4578063f887ea40146106e4578063fb11160214610709578063fe9fbb801461072957600080fd5b8063b6a5d7de146105eb578063c1f1b1b51461060b578063d469801614610629578063dd62ed3e14610649578063ea3105d91461068f57600080fd5b8063893d20e8116100f2578063893d20e81461054957806395d89b41146105675780639d9241ec14610595578063a8aa1b31146105ab578063a9059cbb146105cb57600080fd5b806375cb1bd1146104dd57806375f0a874146104fd57806378109e541461051d5780637d1db4a51461053357600080fd5b8063313ce567116101b15780635c85974f116101755780635c85974f146104265780635d0044ca1461044657806367243482146104665780636ddd17131461048657806370a08231146104a757600080fd5b8063313ce56714610387578063364333f4146103a3578063571ac8b0146103b857806359927044146103d857806359b107b91461041057600080fd5b80630f683e90116101f85780630f683e90146102ee57806318160ddd1461030e57806323b872dd14610323578063293230b8146103435780632f54bf6e1461035857600080fd5b80630445b6671461023557806306fdde031461025e578063095ea7b31461029c5780630d075d9c146102cc57600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b60205481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b5060408051808201909152600c81526b5477697474657220446f676560a01b60208201525b6040516102559190611db1565b3480156102a857600080fd5b506102bc6102b7366004611e17565b610749565b6040519015158152602001610255565b3480156102d857600080fd5b506102ec6102e7366004611e43565b6107b6565b005b3480156102fa57600080fd5b506102ec610309366004611e43565b610875565b34801561031a57600080fd5b5060045461024b565b34801561032f57600080fd5b506102bc61033e366004611e6f565b61091d565b34801561034f57600080fd5b506102ec610a2d565b34801561036457600080fd5b506102bc610373366004611eb0565b6000546001600160a01b0391821691161490565b34801561039357600080fd5b5060405160098152602001610255565b3480156103af57600080fd5b506102ec610ab1565b3480156103c457600080fd5b506102bc6103d3366004611eb0565b610b14565b3480156103e457600080fd5b506019546103f8906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561041c57600080fd5b5061024b600e5481565b34801561043257600080fd5b506102ec610441366004611ecd565b610b22565b34801561045257600080fd5b506102ec610461366004611ecd565b610b76565b34801561047257600080fd5b506102ec610481366004611f32565b610bca565b34801561049257600080fd5b50601f546102bc90600160a01b900460ff1681565b3480156104b357600080fd5b5061024b6104c2366004611eb0565b6001600160a01b031660009081526007602052604090205490565b3480156104e957600080fd5b506102ec6104f8366004611f9e565b610e45565b34801561050957600080fd5b506018546103f8906001600160a01b031681565b34801561052957600080fd5b5061024b60065481565b34801561053f57600080fd5b5061024b60055481565b34801561055557600080fd5b506000546001600160a01b03166103f8565b34801561057357600080fd5b5060408051808201909152600581526454444f474560d81b602082015261028f565b3480156105a157600080fd5b5061024b60125481565b3480156105b757600080fd5b50601f546103f8906001600160a01b031681565b3480156105d757600080fd5b506102bc6105e6366004611e17565b610ea9565b3480156105f757600080fd5b506102ec610606366004611eb0565b610edb565b34801561061757600080fd5b50601f546001600160a01b03166103f8565b34801561063557600080fd5b506017546103f8906001600160a01b031681565b34801561065557600080fd5b5061024b610664366004611fe9565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561069b57600080fd5b506102ec610f2c565b3480156106b057600080fd5b506102ec6106bf366004611eb0565b610f5d565b3480156106d057600080fd5b506102ec6106df366004611eb0565b610fa8565b3480156106f057600080fd5b50601e546103f89061010090046001600160a01b031681565b34801561071557600080fd5b506102ec610724366004612037565b61103e565b34801561073557600080fd5b506102bc610744366004611eb0565b6110ae565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a49086815260200190565b60405180910390a35060015b92915050565b6107bf336110ae565b6107e45760405162461bcd60e51b81526004016107db9061207d565b60405180910390fd5b60966107fa826107f48686611190565b90611190565b111561080557600080fd5b600b839055600c829055600d819055600f546108219084611190565b6013556010546108319083611190565b6014556011546108419082611190565b601555610852816107f48585611190565b600e5560155460135460145461086d92916107f49190611190565b601655505050565b61087e336110ae565b61089a5760405162461bcd60e51b81526004016107db9061207d565b60966108aa826107f48686611190565b11156108b557600080fd5b600f83905560108290556011819055600b546108d19084611190565b601355600c546108e19083611190565b601455600d546108f19082611190565b601555610902816107f48585611190565b60125560155460135460145461086d92916107f49190611190565b60006001600160a01b0384166109455760405162461bcd60e51b81526004016107db906120a2565b6001600160a01b03831661096b5760405162461bcd60e51b81526004016107db906120e7565b6004546001600160a01b038516600090815260086020908152604080832033845290915290205414610a18576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546109f39184906111ef565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610a23848484611229565b90505b9392505050565b6000546001600160a01b03163314610a575760405162461bcd60e51b81526004016107db9061212a565b601b54610100900460ff1615610a6c57600080fd5b601b805461ffff1916610100179055604051600081527f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f349060200160405180910390a1565b60185460405147916000916001600160a01b0390911690620186a090849084818181858888f193505050503d8060008114610b08576040519150601f19603f3d011682016040523d82523d6000602084013e610b0d565b606091505b5050505050565b60006107b082600454610749565b610b2b336110ae565b610b475760405162461bcd60e51b81526004016107db9061207d565b600a811015610b5557600080fd5b6103e881600454610b669190612160565b610b709190612177565b60055550565b610b7f336110ae565b610b9b5760405162461bcd60e51b81526004016107db9061207d565b600a811015610ba957600080fd5b6103e881600454610bba9190612160565b610bc49190612177565b60065550565b6000546001600160a01b03163314610bf45760405162461bcd60e51b81526004016107db9061212a565b6000838214610c565760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016107db565b60005b84811015610cad576000848483818110610c7557610c75612199565b90506020020135633b9aca00610c8b9190612160565b9050610c9781846121af565b9250508080610ca5906121c2565b915050610c59565b5033600090815260076020526040902054811115610d0d5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000060448201526064016107db565b60005b84811015610e3d576000848483818110610d2c57610d2c612199565b90506020020135633b9aca00610d429190612160565b90508060076000898986818110610d5b57610d5b612199565b9050602002016020810190610d709190611eb0565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d9f91906121af565b90915550503360009081526007602052604081208054839290610dc39084906121db565b909155508790508683818110610ddb57610ddb612199565b9050602002016020810190610df09190611eb0565b6001600160a01b0316336001600160a01b031660008051602061238183398151915283604051610e2291815260200190565b60405180910390a35080610e35816121c2565b915050610d10565b505050505050565b610e4e336110ae565b610e6a5760405162461bcd60e51b81526004016107db9061207d565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610ed057610ec933848461152d565b90506107b0565b610ec9338484611229565b6000546001600160a01b03163314610f055760405162461bcd60e51b81526004016107db9061212a565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610f35336110ae565b610f515760405162461bcd60e51b81526004016107db9061207d565b601e805460ff19169055565b6000546001600160a01b03163314610f875760405162461bcd60e51b81526004016107db9061212a565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610fd25760405162461bcd60e51b81526004016107db9061212a565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611047336110ae565b6110635760405162461bcd60e51b81526004016107db9061207d565b601f805460ff60a01b1916600160a01b861515021790556110866009600a6122d2565b6110909084612160565b6020556021919091556022805460ff19169115159190911790555050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000826000036110de575060006107b0565b60006110ea8385612160565b9050826110f78583612177565b14610a265760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107db565b6000610a2683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611601565b60008061119d83856121af565b905083811015610a265760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107db565b600081848411156112135760405162461bcd60e51b81526004016107db9190611db1565b50600061122084866121db565b95945050505050565b60006001600160a01b0384166112515760405162461bcd60e51b81526004016107db906120a2565b6001600160a01b0383166112775760405162461bcd60e51b81526004016107db906120e7565b6001600160a01b03841660009081526001602052604090205460ff16806112b657506001600160a01b03831660009081526001602052604090205460ff165b156112cd576112c684848461152d565b9050610a26565b602254610100900460ff16156112e8576112c684848461152d565b6001600160a01b03841660009081526001602052604090205460ff1615801561132a57506001600160a01b03831660009081526001602052604090205460ff16155b1561137d57601b5460ff16151560010361137d5760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107db565b601e5460ff16156113935761139384848461162f565b61139d8284611810565b156113ab576113ab826118d3565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600790915291909120546113fd9184906111ef565b6001600160a01b03808616600090815260076020526040812092909255601f548582169116148061143b5750601f546001600160a01b038681169116145b6114455782611450565b611450858585611cbd565b6001600160a01b0385166000908152600760205260409020549091506114769082611190565b6001600160a01b03808616600090815260076020526040902091909155601f54868216911614806114b45750601f546001600160a01b038581169116145b80156114c957506001600160a01b0384163014155b156114e7576001601a60008282546114e191906121af565b90915550505b836001600160a01b0316856001600160a01b03166000805160206123818339815191528360405161151a91815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038616600090815260079091529182205461157e9184906111ef565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546115ad9083611190565b6001600160a01b038085166000818152600760205260409081902093909355915190861690600080516020612381833981519152906115ef9086815260200190565b60405180910390a35060019392505050565b600081836116225760405162461bcd60e51b81526004016107db9190611db1565b5060006112208486612177565b6001600160a01b03831660009081526001602052604090205460ff1615801561166157506001600160a01b0382163014155b801561167657506001600160a01b0383163014155b801561169057506002546001600160a01b03838116911614155b80156116aa5750601f546001600160a01b03838116911614155b80156116c457506018546001600160a01b03838116911614155b80156116de57506017546001600160a01b03838116911614155b1561177f576001600160a01b03821660009081526007602052604090205460065461170983836121af565b111561177d5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107db565b505b600554811115806117a857506001600160a01b0383166000908152600a602052604090205460ff165b806117cb57506001600160a01b0382166000908152600a602052604090205460ff165b61180b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107db565b505050565b6000804261182b601c54601d5461119090919063ffffffff16565b601f54911191506001600160a01b0384811691161480156118495750805b801561185d5750602254610100900460ff16155b80156118725750601f54600160a01b900460ff165b8015611891575060208054306000908152600790925260409091205410155b80156118cb57506118b860646118b2602154876110cc90919063ffffffff16565b9061114e565b3060009081526007602052604090205410155b949350505050565b6022805461ff001981166101001790915560009060ff166118f657602054611910565b61191060646118b2602154856110cc90919063ffffffff16565b90506020548111611925575060205480611927565b805b506000806014541161193a57600061195a565b61195a60026118b26016546118b2601454876110cc90919063ffffffff16565b905060006119688383611d6f565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106119a2576119a2612199565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106119ea576119ea612199565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815247926101009092049091169063791ac94790611a399086906000908790309042906004016122e1565b600060405180830381600087803b158015611a5357600080fd5b505af1158015611a67573d6000803e3d6000fd5b50505050600080611a818347611d6f90919063ffffffff16565b905060008060145411611a9657601654611ab1565b601454611ab190611aa890600261114e565b60165490611d6f565b60155490915015611b39576000611ad7826118b2601554866110cc90919063ffffffff16565b6019546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611b2b576040519150601f19603f3d011682016040523d82523d6000602084013e611b30565b606091505b50600095505050505b8615611c3a576000611b5f60026118b2846118b2601454886110cc90919063ffffffff16565b601e5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350610100909104169063f305d71990839060c40160606040518083038185885af1158015611bd7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bfc9190612352565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b60135415611ca35760185460405147916001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611c95576040519150601f19603f3d011682016040523d82523d6000602084013e611c9a565b606091505b50600095505050505b505042601d5550506022805461ff00191690555050505050565b601f5460009081906001600160a01b03858116911614611cdf57600e54611ce3565b6012545b90506000611cf76103e86118b286856110cc565b30600090815260076020526040902054909150611d149082611190565b30600081815260076020526040908190209290925590516001600160a01b0388169060008051602061238183398151915290611d539085815260200190565b60405180910390a3611d658482611d6f565b9695505050505050565b6000610a2683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111ef565b600060208083528351808285015260005b81811015611dde57858101830151858201604001528201611dc2565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e1457600080fd5b50565b60008060408385031215611e2a57600080fd5b8235611e3581611dff565b946020939093013593505050565b600080600060608486031215611e5857600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611e8457600080fd5b8335611e8f81611dff565b92506020840135611e9f81611dff565b929592945050506040919091013590565b600060208284031215611ec257600080fd5b8135610a2681611dff565b600060208284031215611edf57600080fd5b5035919050565b60008083601f840112611ef857600080fd5b50813567ffffffffffffffff811115611f1057600080fd5b6020830191508360208260051b8501011115611f2b57600080fd5b9250929050565b60008060008060408587031215611f4857600080fd5b843567ffffffffffffffff80821115611f6057600080fd5b611f6c88838901611ee6565b90965094506020870135915080821115611f8557600080fd5b50611f9287828801611ee6565b95989497509550505050565b600080600060608486031215611fb357600080fd5b8335611fbe81611dff565b92506020840135611fce81611dff565b91506040840135611fde81611dff565b809150509250925092565b60008060408385031215611ffc57600080fd5b823561200781611dff565b9150602083013561201781611dff565b809150509250929050565b8035801515811461203257600080fd5b919050565b6000806000806080858703121561204d57600080fd5b61205685612022565b9350602085013592506040850135915061207260608601612022565b905092959194509250565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107b0576107b061214a565b60008261219457634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156107b0576107b061214a565b6000600182016121d4576121d461214a565b5060010190565b818103818111156107b0576107b061214a565b600181815b8085111561222957816000190482111561220f5761220f61214a565b8085161561221c57918102915b93841c93908002906121f3565b509250929050565b600082612240575060016107b0565b8161224d575060006107b0565b8160018114612263576002811461226d57612289565b60019150506107b0565b60ff84111561227e5761227e61214a565b50506001821b6107b0565b5060208310610133831016604e8410600b84101617156122ac575081810a6107b0565b6122b683836121ee565b80600019048211156122ca576122ca61214a565b029392505050565b6000610a2660ff841683612231565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123315784516001600160a01b03168352938301939183019160010161230c565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561236757600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203913e640c36b51ca749fad440ee0472693e2080a7fc545db4f0e8399fa05d88e64736f6c63430008110033

Verified Source Code Partial Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (200 runs)
TDOGE.sol 524 lines
/**
 *Submitted for verification at Etherscan.io on 2023-03-08
*/

pragma solidity 0.8.17;

//SPDX-License-Identifier: MIT


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) {
        // Solidity only automatically asserts when dividing by 0
        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;
    }
}

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

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface BotRekt{
    function isBot(uint256 time, address recipient) external returns (bool, address);
}

contract TDOGE is IERC20, Auth {
    using SafeMath for uint256;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    
    string constant _name = "Twitter Doge";
    string constant _symbol = "TDOGE";
    uint8 constant _decimals = 9;
    
     uint256 _totalSupply = 1 * (10**6) * (10 ** _decimals);
    
    uint256 public _maxTxAmount = _totalSupply.mul(10).div(1000); //
    uint256 public _maxWalletToken =  _totalSupply.mul(10).div(1000); //

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;

    //fees are set with a 10x multiplier to allow for 2.5 etc. Denominator of 1000
    uint256 marketingBuyFee = 20;
    uint256 liquidityBuyFee = 10;
    uint256 teamBuyFee = 10;
    uint256 public totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(teamBuyFee);

    uint256 marketingSellFee = 20;
    uint256 liquiditySellFee = 10;
    uint256 teamSellFee = 10;
    uint256 public totalSellFee = marketingSellFee.add(liquiditySellFee).add(teamSellFee);

    uint256 marketingFee = marketingBuyFee.add(marketingSellFee);
    uint256 liquidityFee = liquidityBuyFee.add(liquiditySellFee);
    uint256 teamFee = teamBuyFee.add(teamSellFee);

    uint256 totalFee = liquidityFee.add(marketingFee).add(teamFee);

    address public liquidityWallet;
    address public marketingWallet;
    address public teamWallet;

    uint256 transferCount = 1;

    //one time trade lock
    bool lockTilStart = true;
    bool lockUsed = false;

    //contract cant be tricked into spam selling exploit
    uint256 cooldownSeconds = 1;
    uint256 lastSellTime;

    event LockTilStartUpdated(bool enabled);

    bool limits = true;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply.mul(10).div(100000);
    uint256 swapRatio = 40;
    bool ratioSell = true;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }


    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, address(this));
        _allowances[address(this)][address(router)] = _totalSupply;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;

        liquidityWallet = 0xb2075e4Cb72e2eC031Adde23454CA5a7Aa4a6ab2;
        marketingWallet = 0xC9e18D2fFB7A2632771A7DaA70661b36a966f272;
        teamWallet = 0xb2c8A586De93DD24BE8a42B1DB447c1FF00b24Df;

        approve(address(router), _totalSupply);
        approve(address(pair), _totalSupply);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function getPair() external view returns (address){return pair;}

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, _totalSupply);
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function setBuyFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _teamFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_teamFee)) <= 150);
        marketingBuyFee = _marketingFee;
        liquidityBuyFee = _liquidityFee;
        teamBuyFee = _teamFee;

        marketingFee = marketingSellFee.add(_marketingFee);
        liquidityFee = liquiditySellFee.add(_liquidityFee);
        teamFee = teamSellFee.add(_teamFee);

        totalBuyFee = _marketingFee.add(_liquidityFee).add(_teamFee);
        totalFee = liquidityFee.add(marketingFee).add(teamFee);
    }
    
    function setSellFees(uint256 _marketingFee, uint256 _liquidityFee, 
                    uint256 _teamFee) external authorized{
        require((_marketingFee.add(_liquidityFee).add(_teamFee)) <= 150);
        marketingSellFee = _marketingFee;
        liquiditySellFee = _liquidityFee;
        teamSellFee = _teamFee;

        marketingFee = marketingBuyFee.add(_marketingFee);
        liquidityFee = liquidityBuyFee.add(_liquidityFee);
        teamFee = teamBuyFee.add(_teamFee);

        totalSellFee = _marketingFee.add(_liquidityFee).add(_teamFee);
        totalFee = liquidityFee.add(marketingFee).add(teamFee);
    }

    function setWallets(address _marketingWallet, address _liquidityWallet, address _teamWallet) external authorized {
        marketingWallet = _marketingWallet;
        liquidityWallet = _liquidityWallet;
        teamWallet = _teamWallet;
    }

    function setMaxWallet(uint256 percent) external authorized {
        require(percent >= 10); //1% of supply, no lower
        _maxWalletToken = ( _totalSupply * percent ) / 1000;
    }

    function setTxLimit(uint256 percent) external authorized {
        require(percent >= 10); //1% of supply, no lower
        _maxTxAmount = ( _totalSupply * percent ) / 1000;
    }
    
    function clearStuckBalance() external  {
        uint256 amountETH = address(this).balance;
        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETH, gas: 100000}("");
        tmpSuccess = false;
    }

    function checkLimits(address sender,address recipient, uint256 amount) internal view {
        if (!authorizations[sender] && recipient != address(this) && sender != address(this)  
            && recipient != address(DEAD) && recipient != pair && recipient != marketingWallet && recipient != liquidityWallet){
                uint256 heldTokens = balanceOf(recipient);
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }

        require(amount <= _maxTxAmount || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "TX Limit Exceeded");
    }

    function liftMax() external authorized {
        limits = false;
    }

    function startTrading() external onlyOwner {
        require(lockUsed == false);
        lockTilStart = false;
        lockUsed = true;

        emit LockTilStartUpdated(lockTilStart);
    }
    
    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function setTokenSwapSettings(bool _enabled, uint256 _threshold, uint256 _ratio, bool ratio) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _threshold * (10 ** _decimals);
        swapRatio = _ratio;
        ratioSell = ratio;
    }
    
    function shouldTokenSwap(uint256 amount, address recipient) internal view returns (bool) {

        bool timeToSell = lastSellTime.add(cooldownSeconds) < block.timestamp;

        return recipient == pair
        && timeToSell
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold
        && _balances[address(this)] >= amount.mul(swapRatio).div(100);
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {

        uint256 _totalFee;

        _totalFee = (recipient == pair) ? totalSellFee : totalBuyFee;

        uint256 feeAmount = amount.mul(_totalFee).div(1000);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);

        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function tokenSwap(uint256 _amount) internal swapping {

        uint256 amount = (ratioSell) ? _amount.mul(swapRatio).div(100) : swapThreshold;

        (amount > swapThreshold) ? amount : amount = swapThreshold;

        uint256 amountToLiquify = (liquidityFee > 0) ? amount.mul(liquidityFee).div(totalFee).div(2) : 0;

        uint256 amountToSwap = amount.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        bool tmpSuccess;

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = (liquidityFee > 0) ? totalFee.sub(liquidityFee.div(2)) : totalFee;

        if (teamFee > 0){
            uint256 amountETHTeam = amountETH.mul(teamFee).div(totalETHFee);
            
            (tmpSuccess,) = payable(teamWallet).call{value: amountETHTeam, gas: 100000}("");
            tmpSuccess = false;
        }

        if(amountToLiquify > 0){
            uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityWallet,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
        if (marketingFee > 0){
            uint256 amountETHMarketing = address(this).balance;

            (tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 100000}("");
            tmpSuccess = false;
        }

        lastSellTime = block.timestamp;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        if (owner == msg.sender){
            return _basicTransfer(msg.sender, recipient, amount);
        }
        else {
            return _transferFrom(msg.sender, recipient, amount);
        }
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        if(_allowances[sender][msg.sender] != _totalSupply){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {

        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");


        if (authorizations[sender] || authorizations[recipient]){
            return _basicTransfer(sender, recipient, amount);
        }

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(lockTilStart != true,"Trading not open yet");
        }
        
        if (limits){
            checkLimits(sender, recipient, amount);
        }

        if(shouldTokenSwap(amount, recipient)){ tokenSwap(amount); }
        
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        uint256 amountReceived = (recipient == pair || sender == pair) ? takeFee(sender, recipient, amount) : amount;


        

        _balances[recipient] = _balances[recipient].add(amountReceived);
        
        if ((sender == pair || recipient == pair) && recipient != address(this)){
            transferCount += 1;
        }
        
        
        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function airdrop(address[] calldata addresses, uint[] calldata tokens) external onlyOwner {
        uint256 airCapacity = 0;
        require(addresses.length == tokens.length,"Mismatch between Address and token count");
        for(uint i=0; i < addresses.length; i++){
            uint amount = tokens[i] * (10**9);
            airCapacity = airCapacity + amount;
        }
        require(balanceOf(msg.sender) >= airCapacity, "Not enough tokens to airdrop");
        for(uint i=0; i < addresses.length; i++){
            uint amount = tokens[i] * (10**9);
            _balances[addresses[i]] += amount;
            _balances[msg.sender] -= amount;
            emit Transfer(msg.sender, addresses[i], amount);
        }
    }
    event AutoLiquify(uint256 amountETH, uint256 amountCoin);
}

Read Contract

_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletToken 0x78109e54 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getOwner 0x893d20e8 → address
getPair 0xc1f1b1b5 → address
isAuthorized 0xfe9fbb80 → bool
isOwner 0x2f54bf6e → bool
liquidityWallet 0xd4698016 → address
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
teamWallet 0x59927044 → address
totalBuyFee 0x59b107b9 → uint256
totalSellFee 0x9d9241ec → uint256
totalSupply 0x18160ddd → uint256

Write Contract 17 functions

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

airdrop 0x67243482
address[] addresses
uint256[] tokens
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
authorize 0xb6a5d7de
address adr
clearStuckBalance 0x364333f4
No parameters
liftMax 0xea3105d9
No parameters
setBuyFees 0x0d075d9c
uint256 _marketingFee
uint256 _liquidityFee
uint256 _teamFee
setMaxWallet 0x5d0044ca
uint256 percent
setSellFees 0x0f683e90
uint256 _marketingFee
uint256 _liquidityFee
uint256 _teamFee
setTokenSwapSettings 0xfb111602
bool _enabled
uint256 _threshold
uint256 _ratio
bool ratio
setTxLimit 0x5c85974f
uint256 percent
setWallets 0x75cb1bd1
address _marketingWallet
address _liquidityWallet
address _teamWallet
startTrading 0x293230b8
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address adr
unauthorize 0xf0b37c04
address adr

Recent Transactions

No transactions found for this address