Address Contract Partially Verified
Address
0x238A1FcC2F65ed50c1e1797cF5857CBA3E82a55B
Balance
0.080762 ETH
Nonce
1
Code Size
9167 bytes
Creator
0xcdA22F70...75Fb at tx 0x7571fd16...3d9734
Indexed Transactions
0
Contract Bytecode
9167 bytes
0x6080604052600436106102295760003560e01c806375cb1bd111610123578063b6a5d7de116100ab578063f0b37c041161006f578063f0b37c041461069d578063f2fde38b146106bd578063f887ea40146106dd578063fb11160214610702578063fe9fbb801461072257600080fd5b8063b6a5d7de146105e4578063c1f1b1b514610604578063d469801614610622578063dd62ed3e14610642578063ea3105d91461068857600080fd5b8063893d20e8116100f2578063893d20e81461054257806395d89b41146105605780639d9241ec1461058e578063a8aa1b31146105a4578063a9059cbb146105c457600080fd5b806375cb1bd1146104d657806375f0a874146104f657806378109e54146105165780637d1db4a51461052c57600080fd5b8063313ce567116101b15780635c85974f116101755780635c85974f1461041f5780635d0044ca1461043f578063672434821461045f5780636ddd17131461047f57806370a08231146104a057600080fd5b8063313ce56714610380578063364333f41461039c578063571ac8b0146103b157806359927044146103d157806359b107b91461040957600080fd5b80630f683e90116101f85780630f683e90146102e757806318160ddd1461030757806323b872dd1461031c578063293230b81461033c5780632f54bf6e1461035157600080fd5b80630445b6671461023557806306fdde031461025e578063095ea7b3146102955780630d075d9c146102c557600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024b60205481565b6040519081526020015b60405180910390f35b34801561026a57600080fd5b506040805180820190915260058152644d6f65746160d81b60208201525b6040516102559190611daa565b3480156102a157600080fd5b506102b56102b0366004611e10565b610742565b6040519015158152602001610255565b3480156102d157600080fd5b506102e56102e0366004611e3c565b6107af565b005b3480156102f357600080fd5b506102e5610302366004611e3c565b61086e565b34801561031357600080fd5b5060045461024b565b34801561032857600080fd5b506102b5610337366004611e68565b610916565b34801561034857600080fd5b506102e5610a26565b34801561035d57600080fd5b506102b561036c366004611ea9565b6000546001600160a01b0391821691161490565b34801561038c57600080fd5b5060405160098152602001610255565b3480156103a857600080fd5b506102e5610aaa565b3480156103bd57600080fd5b506102b56103cc366004611ea9565b610b0d565b3480156103dd57600080fd5b506019546103f1906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b34801561041557600080fd5b5061024b600e5481565b34801561042b57600080fd5b506102e561043a366004611ec6565b610b1b565b34801561044b57600080fd5b506102e561045a366004611ec6565b610b6f565b34801561046b57600080fd5b506102e561047a366004611f2b565b610bc3565b34801561048b57600080fd5b50601f546102b590600160a01b900460ff1681565b3480156104ac57600080fd5b5061024b6104bb366004611ea9565b6001600160a01b031660009081526007602052604090205490565b3480156104e257600080fd5b506102e56104f1366004611f97565b610e3e565b34801561050257600080fd5b506018546103f1906001600160a01b031681565b34801561052257600080fd5b5061024b60065481565b34801561053857600080fd5b5061024b60055481565b34801561054e57600080fd5b506000546001600160a01b03166103f1565b34801561056c57600080fd5b506040805180820190915260058152644d4f45544160d81b6020820152610288565b34801561059a57600080fd5b5061024b60125481565b3480156105b057600080fd5b50601f546103f1906001600160a01b031681565b3480156105d057600080fd5b506102b56105df366004611e10565b610ea2565b3480156105f057600080fd5b506102e56105ff366004611ea9565b610ed4565b34801561061057600080fd5b50601f546001600160a01b03166103f1565b34801561062e57600080fd5b506017546103f1906001600160a01b031681565b34801561064e57600080fd5b5061024b61065d366004611fe2565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b34801561069457600080fd5b506102e5610f25565b3480156106a957600080fd5b506102e56106b8366004611ea9565b610f56565b3480156106c957600080fd5b506102e56106d8366004611ea9565b610fa1565b3480156106e957600080fd5b50601e546103f19061010090046001600160a01b031681565b34801561070e57600080fd5b506102e561071d366004612030565b611037565b34801561072e57600080fd5b506102b561073d366004611ea9565b6110a7565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061079d9086815260200190565b60405180910390a35060015b92915050565b6107b8336110a7565b6107dd5760405162461bcd60e51b81526004016107d490612076565b60405180910390fd5b60966107f3826107ed8686611189565b90611189565b11156107fe57600080fd5b600b839055600c829055600d819055600f5461081a9084611189565b60135560105461082a9083611189565b60145560115461083a9082611189565b60155561084b816107ed8585611189565b600e5560155460135460145461086692916107ed9190611189565b601655505050565b610877336110a7565b6108935760405162461bcd60e51b81526004016107d490612076565b60966108a3826107ed8686611189565b11156108ae57600080fd5b600f83905560108290556011819055600b546108ca9084611189565b601355600c546108da9083611189565b601455600d546108ea9082611189565b6015556108fb816107ed8585611189565b60125560155460135460145461086692916107ed9190611189565b60006001600160a01b03841661093e5760405162461bcd60e51b81526004016107d49061209b565b6001600160a01b0383166109645760405162461bcd60e51b81526004016107d4906120e0565b6004546001600160a01b038516600090815260086020908152604080832033845290915290205414610a11576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546109ec9184906111e8565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610a1c848484611222565b90505b9392505050565b6000546001600160a01b03163314610a505760405162461bcd60e51b81526004016107d490612123565b601b54610100900460ff1615610a6557600080fd5b601b805461ffff1916610100179055604051600081527f2b27db57e94e474754b17ad26b358efda13cbcf4a9bbbc7ec92de2926a941f349060200160405180910390a1565b60185460405147916000916001600160a01b0390911690620186a090849084818181858888f193505050503d8060008114610b01576040519150601f19603f3d011682016040523d82523d6000602084013e610b06565b606091505b5050505050565b60006107a982600454610742565b610b24336110a7565b610b405760405162461bcd60e51b81526004016107d490612076565b6014811015610b4e57600080fd5b6103e881600454610b5f9190612159565b610b699190612170565b60055550565b610b78336110a7565b610b945760405162461bcd60e51b81526004016107d490612076565b6014811015610ba257600080fd5b6103e881600454610bb39190612159565b610bbd9190612170565b60065550565b6000546001600160a01b03163314610bed5760405162461bcd60e51b81526004016107d490612123565b6000838214610c4f5760405162461bcd60e51b815260206004820152602860248201527f4d69736d61746368206265747765656e204164647265737320616e6420746f6b604482015267195b8818dbdd5b9d60c21b60648201526084016107d4565b60005b84811015610ca6576000848483818110610c6e57610c6e612192565b90506020020135633b9aca00610c849190612159565b9050610c9081846121a8565b9250508080610c9e906121bb565b915050610c52565b5033600090815260076020526040902054811115610d065760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420656e6f75676820746f6b656e7320746f2061697264726f700000000060448201526064016107d4565b60005b84811015610e36576000848483818110610d2557610d25612192565b90506020020135633b9aca00610d3b9190612159565b90508060076000898986818110610d5457610d54612192565b9050602002016020810190610d699190611ea9565b6001600160a01b03166001600160a01b031681526020019081526020016000206000828254610d9891906121a8565b90915550503360009081526007602052604081208054839290610dbc9084906121d4565b909155508790508683818110610dd457610dd4612192565b9050602002016020810190610de99190611ea9565b6001600160a01b0316336001600160a01b031660008051602061237a83398151915283604051610e1b91815260200190565b60405180910390a35080610e2e816121bb565b915050610d09565b505050505050565b610e47336110a7565b610e635760405162461bcd60e51b81526004016107d490612076565b601880546001600160a01b039485166001600160a01b031991821617909155601780549385169382169390931790925560198054919093169116179055565b60008054336001600160a01b0390911603610ec957610ec2338484611526565b90506107a9565b610ec2338484611222565b6000546001600160a01b03163314610efe5760405162461bcd60e51b81526004016107d490612123565b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b610f2e336110a7565b610f4a5760405162461bcd60e51b81526004016107d490612076565b601e805460ff19169055565b6000546001600160a01b03163314610f805760405162461bcd60e51b81526004016107d490612123565b6001600160a01b03166000908152600160205260409020805460ff19169055565b6000546001600160a01b03163314610fcb5760405162461bcd60e51b81526004016107d490612123565b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff191690921790915591519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163910160405180910390a150565b611040336110a7565b61105c5760405162461bcd60e51b81526004016107d490612076565b601f805460ff60a01b1916600160a01b8615150217905561107f6009600a6122cb565b6110899084612159565b6020556021919091556022805460ff19169115159190911790555050565b6001600160a01b031660009081526001602052604090205460ff1690565b6000826000036110d7575060006107a9565b60006110e38385612159565b9050826110f08583612170565b14610a1f5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107d4565b6000610a1f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506115fa565b60008061119683856121a8565b905083811015610a1f5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107d4565b6000818484111561120c5760405162461bcd60e51b81526004016107d49190611daa565b50600061121984866121d4565b95945050505050565b60006001600160a01b03841661124a5760405162461bcd60e51b81526004016107d49061209b565b6001600160a01b0383166112705760405162461bcd60e51b81526004016107d4906120e0565b6001600160a01b03841660009081526001602052604090205460ff16806112af57506001600160a01b03831660009081526001602052604090205460ff165b156112c6576112bf848484611526565b9050610a1f565b602254610100900460ff16156112e1576112bf848484611526565b6001600160a01b03841660009081526001602052604090205460ff1615801561132357506001600160a01b03831660009081526001602052604090205460ff16155b1561137657601b5460ff1615156001036113765760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b60448201526064016107d4565b601e5460ff161561138c5761138c848484611628565b6113968284611809565b156113a4576113a4826118cc565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387166000908152600790915291909120546113f69184906111e8565b6001600160a01b03808616600090815260076020526040812092909255601f54858216911614806114345750601f546001600160a01b038681169116145b61143e5782611449565b611449858585611cb6565b6001600160a01b03851660009081526007602052604090205490915061146f9082611189565b6001600160a01b03808616600090815260076020526040902091909155601f54868216911614806114ad5750601f546001600160a01b038581169116145b80156114c257506001600160a01b0384163014155b156114e0576001601a60008282546114da91906121a8565b90915550505b836001600160a01b0316856001600160a01b031660008051602061237a8339815191528360405161151391815260200190565b60405180910390a3506001949350505050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526007909152918220546115779184906111e8565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546115a69083611189565b6001600160a01b03808516600081815260076020526040908190209390935591519086169060008051602061237a833981519152906115e89086815260200190565b60405180910390a35060019392505050565b6000818361161b5760405162461bcd60e51b81526004016107d49190611daa565b5060006112198486612170565b6001600160a01b03831660009081526001602052604090205460ff1615801561165a57506001600160a01b0382163014155b801561166f57506001600160a01b0383163014155b801561168957506002546001600160a01b03838116911614155b80156116a35750601f546001600160a01b03838116911614155b80156116bd57506018546001600160a01b03838116911614155b80156116d757506017546001600160a01b03838116911614155b15611778576001600160a01b03821660009081526007602052604090205460065461170283836121a8565b11156117765760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e000060648201526084016107d4565b505b600554811115806117a157506001600160a01b0383166000908152600a602052604090205460ff165b806117c457506001600160a01b0382166000908152600a602052604090205460ff165b6118045760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016107d4565b505050565b60008042611824601c54601d5461118990919063ffffffff16565b601f54911191506001600160a01b0384811691161480156118425750805b80156118565750602254610100900460ff16155b801561186b5750601f54600160a01b900460ff165b801561188a575060208054306000908152600790925260409091205410155b80156118c457506118b160646118ab602154876110c590919063ffffffff16565b90611147565b3060009081526007602052604090205410155b949350505050565b6022805461ff001981166101001790915560009060ff166118ef57602054611909565b61190960646118ab602154856110c590919063ffffffff16565b9050602054811161191e575060205480611920565b805b5060008060145411611933576000611953565b61195360026118ab6016546118ab601454876110c590919063ffffffff16565b905060006119618383611d68565b6040805160028082526060820183529293506000929091602083019080368337019050509050308160008151811061199b5761199b612192565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106119e3576119e3612192565b6001600160a01b039283166020918202929092010152601e5460405163791ac94760e01b815247926101009092049091169063791ac94790611a329086906000908790309042906004016122da565b600060405180830381600087803b158015611a4c57600080fd5b505af1158015611a60573d6000803e3d6000fd5b50505050600080611a7a8347611d6890919063ffffffff16565b905060008060145411611a8f57601654611aaa565b601454611aaa90611aa1906002611147565b60165490611d68565b60155490915015611b32576000611ad0826118ab601554866110c590919063ffffffff16565b6019546040519192506001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611b24576040519150601f19603f3d011682016040523d82523d6000602084013e611b29565b606091505b50600095505050505b8615611c33576000611b5860026118ab846118ab601454886110c590919063ffffffff16565b601e5460175460405163f305d71960e01b8152306004820152602481018c905260006044820181905260648201526001600160a01b0391821660848201524260a4820152929350610100909104169063f305d71990839060c40160606040518083038185885af1158015611bd0573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bf5919061234b565b505060408051838152602081018b90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a1505b60135415611c9c5760185460405147916001600160a01b031690620186a09083906000818181858888f193505050503d8060008114611c8e576040519150601f19603f3d011682016040523d82523d6000602084013e611c93565b606091505b50600095505050505b505042601d5550506022805461ff00191690555050505050565b601f5460009081906001600160a01b03858116911614611cd857600e54611cdc565b6012545b90506000611cf06103e86118ab86856110c5565b30600090815260076020526040902054909150611d0d9082611189565b30600081815260076020526040908190209290925590516001600160a01b0388169060008051602061237a83398151915290611d4c9085815260200190565b60405180910390a3611d5e8482611d68565b9695505050505050565b6000610a1f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506111e8565b600060208083528351808285015260005b81811015611dd757858101830151858201604001528201611dbb565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611e0d57600080fd5b50565b60008060408385031215611e2357600080fd5b8235611e2e81611df8565b946020939093013593505050565b600080600060608486031215611e5157600080fd5b505081359360208301359350604090920135919050565b600080600060608486031215611e7d57600080fd5b8335611e8881611df8565b92506020840135611e9881611df8565b929592945050506040919091013590565b600060208284031215611ebb57600080fd5b8135610a1f81611df8565b600060208284031215611ed857600080fd5b5035919050565b60008083601f840112611ef157600080fd5b50813567ffffffffffffffff811115611f0957600080fd5b6020830191508360208260051b8501011115611f2457600080fd5b9250929050565b60008060008060408587031215611f4157600080fd5b843567ffffffffffffffff80821115611f5957600080fd5b611f6588838901611edf565b90965094506020870135915080821115611f7e57600080fd5b50611f8b87828801611edf565b95989497509550505050565b600080600060608486031215611fac57600080fd5b8335611fb781611df8565b92506020840135611fc781611df8565b91506040840135611fd781611df8565b809150509250925092565b60008060408385031215611ff557600080fd5b823561200081611df8565b9150602083013561201081611df8565b809150509250929050565b8035801515811461202b57600080fd5b919050565b6000806000806080858703121561204657600080fd5b61204f8561201b565b9350602085013592506040850135915061206b6060860161201b565b905092959194509250565b6020808252600b908201526a085055551213d49256915160aa1b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107a9576107a9612143565b60008261218d57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b808201808211156107a9576107a9612143565b6000600182016121cd576121cd612143565b5060010190565b818103818111156107a9576107a9612143565b600181815b8085111561222257816000190482111561220857612208612143565b8085161561221557918102915b93841c93908002906121ec565b509250929050565b600082612239575060016107a9565b81612246575060006107a9565b816001811461225c576002811461226657612282565b60019150506107a9565b60ff84111561227757612277612143565b50506001821b6107a9565b5060208310610133831016604e8410600b84101617156122a5575081810a6107a9565b6122af83836121e7565b80600019048211156122c3576122c3612143565b029392505050565b6000610a1f60ff84168361222a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561232a5784516001600160a01b031683529383019391830191600101612305565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561236057600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122061ffe4c02b0ca37fd38283b4c645734ddbb590805342faf53d6345ef666d6b8e64736f6c63430008110033
Verified Source Code Partial Match
Compiler: v0.8.17+commit.8df45f5f
EVM: london
Optimization: Yes (200 runs)
Moeta.sol 528 lines
/*
Moeta 燃えた - Refueling the burn revolution!
https://moetatoken.com
Join us at https://t.me/MoetaERC
*/
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 Moeta is IERC20, Auth {
using SafeMath for uint256;
address DEAD = 0x000000000000000000000000000000000000dEaD;
address ZERO = 0x0000000000000000000000000000000000000000;
string constant _name = "Moeta";
string constant _symbol = "MOETA";
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 = 30;
uint256 liquidityBuyFee = 10;
uint256 teamBuyFee = 10;
uint256 public totalBuyFee = marketingBuyFee.add(liquidityBuyFee).add(teamBuyFee);
uint256 marketingSellFee = 30;
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 = 0xf01fd79549DEb5F589614Ca8E592aA3eCD9CD2f7;
marketingWallet = 0xADC486dF7427788949c025b5B179BFd9aa6522F1;
teamWallet = 0xDF224d4546ff2f931e763D60E1b9583F7aB2D524;
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 >= 20); //2% of supply, no lower
_maxWalletToken = ( _totalSupply * percent ) / 1000;
}
function setTxLimit(uint256 percent) external authorized {
require(percent >= 20); //2% 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