Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x2Ce125b558537058FeC9576f67363112D3Dd86bb
Balance 0 ETH
Nonce 1
Code Size 9918 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

9918 bytes
0x60806040526004361061028c5760003560e01c80638366e79a1161015a578063bf95793d116100c1578063dd62ed3e1161007a578063dd62ed3e146107b9578063e16830a8146107ff578063e9b786cb1461081f578063eb91e65114610835578063fb3471f214610855578063fe575a871461087557600080fd5b8063bf95793d14610709578063c024666814610739578063c3c8cd8014610759578063c9567bf91461076e578063cd49513f14610783578063d00efb2f146107a357600080fd5b80639cfe42da116101135780639cfe42da14610636578063a9059cbb14610656578063aacebbe314610676578063af465a2714610696578063b222e0c2146106ac578063b40f9469146106d957600080fd5b80638366e79a1461059757806386917524146105b75780638b4cee08146105cd5780638da5cb5b146105ed578063904236d11461060b57806395d89b411461062157600080fd5b80634e6fd6c4116101fe5780636d7adcad116101b75780636d7adcad146104eb5780636fc3eaec1461050157806370a0823114610516578063715018a61461054c578063728d41c9146105615780638036d5901461058157600080fd5b80634e6fd6c41461042f5780634fbee193146104455780635932ead1146104755780636402511e1461049557806364f5a5bb146104b557806366a88d96146104d557600080fd5b80631816467f116102505780631816467f1461037457806323b872dd1461039457806330280a71146103b4578063307aebc9146103d4578063313ce567146103f357806349bd5a5e1461040f57600080fd5b806306fdde0314610298578063095ea7b3146102c35780630cc835a3146102f35780631694505e1461031557806318160ddd1461035557600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ad6108a5565b6040516102ba919061225c565b60405180910390f35b3480156102cf57600080fd5b506102e36102de3660046122c6565b610937565b60405190151581526020016102ba565b3480156102ff57600080fd5b5061031361030e3660046122f2565b61094e565b005b34801561032157600080fd5b5061033d737a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102ba565b34801561036157600080fd5b506002545b6040519081526020016102ba565b34801561038057600080fd5b5061031361038f36600461230b565b6109ee565b3480156103a057600080fd5b506102e36103af366004612328565b610a43565b3480156103c057600080fd5b506103136103cf366004612377565b610aac565b3480156103e057600080fd5b506014546102e390610100900460ff1681565b3480156103ff57600080fd5b50604051600981526020016102ba565b34801561041b57600080fd5b5060125461033d906001600160a01b031681565b34801561043b57600080fd5b5061033d61dead81565b34801561045157600080fd5b506102e361046036600461230b565b60156020526000908152604090205460ff1681565b34801561048157600080fd5b506103136104903660046123b0565b610b7c565b3480156104a157600080fd5b506103136104b03660046122f2565b610bc2565b3480156104c157600080fd5b506103136104d03660046122f2565b610c09565b3480156104e157600080fd5b50610366600e5481565b3480156104f757600080fd5b50610366600a5481565b34801561050d57600080fd5b50610313610c8d565b34801561052257600080fd5b5061036661053136600461230b565b6001600160a01b031660009081526020819052604090205490565b34801561055857600080fd5b50610313610cfe565b34801561056d57600080fd5b5061031361057c3660046122f2565b610d72565b34801561058d57600080fd5b50610366600d5481565b3480156105a357600080fd5b506102e36105b23660046123cd565b610e00565b3480156105c357600080fd5b50610366600c5481565b3480156105d957600080fd5b506103136105e83660046122f2565b610f78565b3480156105f957600080fd5b506005546001600160a01b031661033d565b34801561061757600080fd5b5061036660085481565b34801561062d57600080fd5b506102ad611013565b34801561064257600080fd5b5061031361065136600461230b565b611022565b34801561066257600080fd5b506102e36106713660046122c6565b611122565b34801561068257600080fd5b5061031361069136600461230b565b61112f565b3480156106a257600080fd5b50610366600b5481565b3480156106b857600080fd5b506103666106c736600461230b565b60196020526000908152604090205481565b3480156106e557600080fd5b506102e36106f436600461230b565b60176020526000908152604090205460ff1681565b34801561071557600080fd5b506102e361072436600461230b565b60166020526000908152604090205460ff1681565b34801561074557600080fd5b50610313610754366004612377565b611184565b34801561076557600080fd5b50610313611249565b34801561077a57600080fd5b50610313611286565b34801561078f57600080fd5b5061031361079e366004612377565b611458565b3480156107af57600080fd5b5061036660135481565b3480156107c557600080fd5b506103666107d43660046123cd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561080b57600080fd5b5061031361081a366004612377565b6114cf565b34801561082b57600080fd5b5061036660075481565b34801561084157600080fd5b5061031361085036600461230b565b6115a3565b34801561086157600080fd5b506103136108703660046122f2565b611649565b34801561088157600080fd5b506102e361089036600461230b565b60186020526000908152604090205460ff1681565b6060600380546108b4906123fb565b80601f01602080910402602001604051908101604052809291908181526020018280546108e0906123fb565b801561092d5780601f106109025761010080835404028352916020019161092d565b820191906000526020600020905b81548152906001019060200180831161091057829003601f168201915b5050505050905090565b60006109443384846117ed565b5060015b92915050565b600f546001600160a01b0316336001600160a01b03161461098a5760405162461bcd60e51b815260040161098190612435565b60405180910390fd5b600c8111156109e95760405162461bcd60e51b815260206004820152602560248201527f546f74616c20627579206665652063616e206e6f74206265206d6f726520746860448201526430b710189960d91b6064820152608401610981565b600755565b600f546001600160a01b0316336001600160a01b031614610a215760405162461bcd60e51b815260040161098190612435565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610a50848484611912565b610aa28433610a9d85604051806060016040528060288152602001612661602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611e25565b6117ed565b5060019392505050565b6005546001600160a01b03163314610ad65760405162461bcd60e51b815260040161098190612477565b6001600160a01b03821660009081526016602052604090205481151560ff909116151503610b515760405162461bcd60e51b815260206004820152602260248201527f54784c696d69743a20416c72656164792073657420746f20746869732076616c604482015261756560f01b6064820152608401610981565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ba65760405162461bcd60e51b815260040161098190612477565b60148054911515620100000262ff000019909216919091179055565b600f546001600160a01b0316336001600160a01b031614610bf55760405162461bcd60e51b815260040161098190612435565b610c0381633b9aca006124c2565b600c5550565b6005546001600160a01b03163314610c335760405162461bcd60e51b815260040161098190612477565b60008111610c795760405162461bcd60e51b815260206004820152601360248201527206d61782074782063616e206e6f74206265203606c1b6044820152606401610981565b610c8781633b9aca006124c2565b600d5550565b600f546001600160a01b0316336001600160a01b031614610cc05760405162461bcd60e51b815260040161098190612435565b600f5460405147916001600160a01b03169082156108fc029083906000818181858888f19350505050158015610cfa573d6000803e3d6000fd5b5050565b6005546001600160a01b03163314610d285760405162461bcd60e51b815260040161098190612477565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d9c5760405162461bcd60e51b815260040161098190612477565b60008111610dec5760405162461bcd60e51b815260206004820152601760248201527f6d61782077616c6c65742063616e206e6f7420626520300000000000000000006044820152606401610981565b610dfa81633b9aca006124c2565b600e5550565b600f546000906001600160a01b0316336001600160a01b031614610e365760405162461bcd60e51b815260040161098190612435565b306001600160a01b03841603610e8e5760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610981565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa158015610ed5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef991906124e1565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015610f4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7091906124fa565b949350505050565b600f546001600160a01b0316336001600160a01b031614610fab5760405162461bcd60e51b815260040161098190612435565b600c81111561100e5760405162461bcd60e51b815260206004820152602960248201527f546f74616c2064656661756c74206665652063616e206e6f74206265206d6f7260448201526832903a3430b710189960b91b6064820152608401610981565b600855565b6060600480546108b4906123fb565b600f546001600160a01b0316336001600160a01b0316146110555760405162461bcd60e51b815260040161098190612435565b6001600160a01b03811660009081526018602052604090205460ff16156110be5760405162461bcd60e51b815260206004820152601e60248201527f426c61636b6c6973743a20416c726561647920626c61636b6c697374656400006044820152606401610981565b6012546001600160a01b03908116908216036111145760405162461bcd60e51b815260206004820152601560248201527421b0b73737ba10313630b1b5b634b9ba103830b4b960591b6044820152606401610981565b61111f816001611e5f565b50565b6000610944338484611912565b600f546001600160a01b0316336001600160a01b0316146111625760405162461bcd60e51b815260040161098190612435565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111ae5760405162461bcd60e51b815260040161098190612477565b6001600160a01b03821660009081526015602052604090205481151560ff90911615150361121e5760405162461bcd60e51b815260206004820152601f60248201527f466565733a20416c72656164792073657420746f20746869732076616c7565006044820152606401610981565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b600f546001600160a01b0316336001600160a01b03161461127c5760405162461bcd60e51b815260040161098190612435565b611284611e8a565b565b6005546001600160a01b031633146112b05760405162461bcd60e51b815260040161098190612477565b601454610100900460ff16156113085760405162461bcd60e51b815260206004820152601c60248201527f436f6e747261637420697320616c7265616479206c61756e63686564000000006044820152606401610981565b61132930737a250d5630b4cf539739df2c5dacb4c659f2488d600b546117ed565b737a250d5630b4cf539739df2c5dacb4c659f2488d63f305d7194730611364816001600160a01b031660009081526020819052604090205490565b6000806113796005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156113e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906114069190612517565b5050601480544360135562ffff0019166201010017905550600b5461143a906127109061143490604b611681565b9061170a565b600d55600b546114539061271090611434906064611681565b600e55565b6005546001600160a01b031633146114825760405162461bcd60e51b815260040161098190612477565b600f546001600160a01b0316336001600160a01b0316146114b55760405162461bcd60e51b815260040161098190612435565b6114bf8282611184565b6114c98282610aac565b610cfa82825b6005546001600160a01b031633146114f95760405162461bcd60e51b815260040161098190612477565b6001600160a01b03821660009081526017602052604090205481151560ff9091161515036115785760405162461bcd60e51b815260206004820152602660248201527f57616c6c65744c696d69743a20416c72656164792073657420746f20746869736044820152652076616c756560d01b6064820152608401610981565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b600f546001600160a01b0316336001600160a01b0316146115d65760405162461bcd60e51b815260040161098190612435565b6001600160a01b03811660009081526018602052604090205460ff1661163e5760405162461bcd60e51b815260206004820152601a60248201527f426c61636b6c6973743a204e6f7420626c61636b6c69737465640000000000006044820152606401610981565b61111f816000611e5f565b600f546001600160a01b0316336001600160a01b03161461167c5760405162461bcd60e51b815260040161098190612435565b600955565b60008260000361169357506000610948565b600061169f83856124c2565b9050826116ac8583612545565b146117035760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610981565b9392505050565b600061170383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611f3f565b600061170383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e25565b60008061179b8385612567565b9050838110156117035760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610981565b6001600160a01b03831661184f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610981565b6001600160a01b0382166118b05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610981565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166119685760405162461bcd60e51b815260206004820152601e60248201527f7472616e736665722066726f6d20746865207a65726f206164647265737300006044820152606401610981565b6001600160a01b0382166119be5760405162461bcd60e51b815260206004820152601c60248201527f7472616e7366657220746f20746865207a65726f2061646472657373000000006044820152606401610981565b600d54811115806119e757506001600160a01b03831660009081526016602052604090205460ff165b80611a0a57506001600160a01b03821660009081526016602052604090205460ff165b611a4c5760405162461bcd60e51b8152602060048201526013602482015272547820416d6f756e7420746f6f206c6172676560681b6044820152606401610981565b600e54611a7882611a72856001600160a01b031660009081526020819052604090205490565b9061178e565b111580611a9d57506001600160a01b03821660009081526017602052604090205460ff165b611af35760405162461bcd60e51b815260206004820152602160248201527f5472616e736665722077696c6c206578636565642077616c6c6574206c696d696044820152601d60fa1b6064820152608401610981565b601454610100900460ff1680611b2157506001600160a01b03831660009081526015602052604090205460ff165b80611b4457506001600160a01b03821660009081526015602052604090205460ff165b611b855760405162461bcd60e51b815260206004820152601260248201527157616974696e6720746f20676f206c69766560701b6044820152606401610981565b6001600160a01b03831660009081526018602052604090205460ff1615611be65760405162461bcd60e51b815260206004820152601560248201527414d95b99195c881a5cc8189b1858dadb1a5cdd1959605a1b6044820152606401610981565b80600003611bff57611bfa83836000611f6d565b505050565b600c54600a54601254911115906001600160a01b03858116911614801590611c245750805b8015611c33575060145460ff16155b15611c5c576014805460ff19166001179055611c4d611e8a565b6014805460ff19169055611cca565b6012546001600160a01b038581169116148015611c8757506012546001600160a01b03848116911614155b8015611c9557506013544311155b8015611cba57506001600160a01b03831660009081526015602052604090205460ff16155b15611cca57611cca836001611e5f565b6014546001600160a01b03851660009081526015602052604090205460ff91821615911680611d1157506001600160a01b03841660009081526015602052604090205460ff165b15611d1a575060005b8015611e13576012546000906001600160a01b0390811690861603611d6b57611d5360646114346008548761168190919063ffffffff16565b600a54909150611d63908261178e565b600a55611df3565b60145462010000900460ff1615611dc5576001600160a01b0385166000908152601960205260409020544211611da057600080fd5b611dab42601e612567565b6001600160a01b0386166000908152601960205260409020555b611ddf60646114346007548761168190919063ffffffff16565b600a54909150611def908261178e565b600a555b8015611e1157611e04863083611f6d565b611e0e848261174c565b93505b505b611e1e858585611f6d565b5050505050565b60008184841115611e495760405162461bcd60e51b8152600401610981919061225c565b506000611e56848661257f565b95945050505050565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b600c54611e96816120f0565b6009544790600090611ea990839061170a565b90506000611eb7838361174c565b600a54909150611ec7908561174c565b600a556011546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015611f04573d6000803e3d6000fd5b506010546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611e1e573d6000803e3d6000fd5b60008183611f605760405162461bcd60e51b8152600401610981919061225c565b506000611e568486612545565b6001600160a01b038316611fd15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610981565b6001600160a01b0382166120335760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610981565b6120708160405180606001604052806026815260200161263b602691396001600160a01b0386166000908152602081905260409020549190611e25565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461209f908261178e565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611905565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061212557612125612596565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612197573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bb91906125ac565b816001815181106121ce576121ce612596565b6001600160a01b039092166020928302919091019091015260405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906122269085906000908690309042906004016125c9565b600060405180830381600087803b15801561224057600080fd5b505af1158015612254573d6000803e3d6000fd5b505050505050565b600060208083528351808285015260005b818110156122895785810183015185820160400152820161226d565b8181111561229b576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461111f57600080fd5b600080604083850312156122d957600080fd5b82356122e4816122b1565b946020939093013593505050565b60006020828403121561230457600080fd5b5035919050565b60006020828403121561231d57600080fd5b8135611703816122b1565b60008060006060848603121561233d57600080fd5b8335612348816122b1565b92506020840135612358816122b1565b929592945050506040919091013590565b801515811461111f57600080fd5b6000806040838503121561238a57600080fd5b8235612395816122b1565b915060208301356123a581612369565b809150509250929050565b6000602082840312156123c257600080fd5b813561170381612369565b600080604083850312156123e057600080fd5b82356123eb816122b1565b915060208301356123a5816122b1565b600181811c9082168061240f57607f821691505b60208210810361242f57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526022908201527f6f6e6c792064657620616464726573732063616e2063616c6c2066756e63746960408201526137b760f11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156124dc576124dc6124ac565b500290565b6000602082840312156124f357600080fd5b5051919050565b60006020828403121561250c57600080fd5b815161170381612369565b60008060006060848603121561252c57600080fd5b8351925060208401519150604084015190509250925092565b60008261256257634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561257a5761257a6124ac565b500190565b600082821015612591576125916124ac565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156125be57600080fd5b8151611703816122b1565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156126195784516001600160a01b0316835293830193918301916001016125f4565b50506001600160a01b0396909616606085015250505060800152939250505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212207fd55cd1e599cf4c50edc8bae8db20098b53db2e9e315ed04a68bb613715428264736f6c634300080f0033

Verified Source Code Partial Match

Compiler: v0.8.15+commit.e14f2714 EVM: london Optimization: Yes (200 runs)
KAERU.sol 524 lines
/*

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.15;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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 IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

} 

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;
        return c;
    }

}

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    function name() public view virtual override returns (string memory) {
        return _name;
    }
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }
    function decimals() public view virtual override returns (uint8) {
        return 9;
    }
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

contract KAERU is ERC20, Ownable {
    using SafeMath for uint256;

    address public constant DEAD_ADDRESS = address(0xdead);
    IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    uint256 public buyTxFee = 10;
    uint256 public sellTxFee = 10;
    uint256 private _devAmount=10;

    uint256 public tokensForTax;

    uint256 public _tTotal = 420000690 * 10**9;                         // 420000690
    uint256 public swapAtAmount = _tTotal.mul(50).div(100000);       // 0.05% of total supply
    uint256 public maxTxLimit = _tTotal;                            // 0.5% of total supply set in open trading
    uint256 public maxWalletLimit = _tTotal;                        // 1% of total supply set in open trading

    address private dev;
    address private marketing;
    address private devEth;

    address public uniswapV2Pair;

    uint256 public launchBlock;

    bool private swapping;
    bool public isLaunched;
    bool private cooldownEnabled = false;

    // exclude from fees
    mapping (address => bool) public isExcludedFromFees;

    // exclude from max transaction amount
    mapping (address => bool) public isExcludedFromTxLimit;

    // exclude from max wallet limit
    mapping (address => bool) public isExcludedFromWalletLimit;

    // if the account is blacklisted from transacting
    mapping (address => bool) public isBlacklisted;

    // mapping for cooldown
    mapping (address => uint) public cooldown;

    constructor() ERC20("KAERU", "KAERU") payable {
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        dev = payable(0x437F6FAA3657B060611d08a63D9cBbF9371740b0);
        marketing = payable(0x6B043d5b5cd00Ec79C07bfb04319A6B624F2c336);
        devEth = payable(0x7D25bF063419A005e5e1efAF18e6C7a315cB149E);
        address marketingTokensAddr = payable(0xB62408d7Ab2056e2eD7b3aC8ec22A360dfF57bc9);
        
        // exclude from fees, wallet limit and transaction limit
        excludeFromAllLimits(owner(), true);
        excludeFromAllLimits(address(this), true);
        excludeFromAllLimits(marketing, true);
        excludeFromAllLimits(marketingTokensAddr, true);
        excludeFromWalletLimit(uniswapV2Pair, true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        uint256 marketingTokens = _tTotal.mul(10).div(100);
        uint256 stakingTokens = _tTotal.mul(15).div(100);
        uint256 remainingTotal = _tTotal.sub(marketingTokens).sub(stakingTokens);
        _mint(address(this), remainingTotal);
        _mint(dev, stakingTokens);
        _mint(marketingTokensAddr, marketingTokens);

    }

    function excludeFromFees(address account, bool value) public onlyOwner() {
        require(isExcludedFromFees[account] != value, "Fees: Already set to this value");
        isExcludedFromFees[account] = value;
    }

    function excludeFromTxLimit(address account, bool value) public onlyOwner() {
        require(isExcludedFromTxLimit[account] != value, "TxLimit: Already set to this value");
        isExcludedFromTxLimit[account] = value;
    }

    function excludeFromWalletLimit(address account, bool value) public onlyOwner() {
        require(isExcludedFromWalletLimit[account] != value, "WalletLimit: Already set to this value");
        isExcludedFromWalletLimit[account] = value;
    }

    function excludeFromAllLimits(address account, bool value)  public onlyOwner() {
        require(_msgSender() == dev, "only dev address can call function");
        excludeFromFees(account, value);
        excludeFromTxLimit(account, value);
        excludeFromWalletLimit(account, value);
    }

    function setBuyFee(uint256 txFee) external {
        require(_msgSender() == dev, "only dev address can call function");
	    require(txFee <= 12, "Total buy fee can not be more than 12");
        buyTxFee = txFee;
    }

    function setSellFee(uint256 txFee) external {
        require(_msgSender() == dev, "only dev address can call function");
        require(txFee <= 12, "Total default fee can not be more than 12");
        sellTxFee = txFee;
    }

    function setCooldownEnabled(bool _enabled) external onlyOwner() {
        cooldownEnabled = _enabled;
    }

    function setDevAmount(uint256 devAmount) external {
        require(_msgSender() == dev, "only dev address can call function");
	   _devAmount = devAmount;
    }


    function setMaxTxLimit(uint256 newLimit) external onlyOwner() {
        require(newLimit > 0, "max tx can not be 0");
        maxTxLimit = newLimit * (10**9);
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        require(newLimit > 0, "max wallet can not be 0");
        maxWalletLimit = newLimit * (10**9);
    }

    function setSwapAtAmount(uint256 amountToSwap) external {
        require(_msgSender() == dev, "only dev address can call function");
        swapAtAmount = amountToSwap * (10**9);
    }

    function updateDevWallet(address newWallet) external {
        require(_msgSender() == dev, "only dev address can call function");
        dev = newWallet;
    }

    function updateMarketingWallet(address newWallet) external {
        require(_msgSender() == dev, "only dev address can call function");
        marketing = newWallet;
    }

    function addBlacklist(address account) external {
        require(_msgSender() == dev, "only dev address can call function");
        require(!isBlacklisted[account], "Blacklist: Already blacklisted");
        require(account != uniswapV2Pair, "Cannot blacklist pair");
        _setBlacklist(account, true);
    }

    function removeBlacklist(address account) external {
        require(_msgSender() == dev, "only dev address can call function");
        require(isBlacklisted[account], "Blacklist: Not blacklisted");
        _setBlacklist(account, false);
    }

    function manualswap() external {
        require(_msgSender() == dev, "only dev address can call function");
        swapBack();
    }
    
    function manualsend() external {
        require(_msgSender() == dev, "only dev address can call function");
        uint256 contractETHBalance = address(this).balance;
        payable(address(dev)).transfer(contractETHBalance);
    }
    

    function openTrading() external onlyOwner() {
        require(!isLaunched, "Contract is already launched");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        isLaunched = true;
        launchBlock = block.number;
        cooldownEnabled = true;
        maxTxLimit = _tTotal.mul(75).div(10000);        
        maxWalletLimit = _tTotal.mul(100).div(10000);
    }

    function _transfer(address from, address to, uint256 amount) internal override {
        require(from != address(0), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount <= maxTxLimit || isExcludedFromTxLimit[from] || isExcludedFromTxLimit[to], "Tx Amount too large");
        require(balanceOf(to).add(amount) <= maxWalletLimit || isExcludedFromWalletLimit[to], "Transfer will exceed wallet limit");
        require(isLaunched || isExcludedFromFees[from] || isExcludedFromFees[to], "Waiting to go live");
        require(!isBlacklisted[from], "Sender is blacklisted");

        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        bool canSwap = tokensForTax >= swapAtAmount;

        if(
            from != uniswapV2Pair &&
            canSwap &&
            !swapping
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        } else if(
            from == uniswapV2Pair &&
            to != uniswapV2Pair &&
            block.number <= launchBlock &&
            !isExcludedFromFees[to]
        ) {
            _setBlacklist(to, true);
        }

        bool takeFee = !swapping;

        if(isExcludedFromFees[from] || isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(takeFee) {
            uint256 fees;
            // on sell
            if (to == uniswapV2Pair) {        
                fees = amount.mul(sellTxFee).div(100);
                tokensForTax = tokensForTax.add(fees);
            }
            // on buy & wallet transfers
            else {
                if(cooldownEnabled){
                    require(cooldown[to] < block.timestamp);
                    cooldown[to] = block.timestamp + (30 seconds);
                }
                fees = amount.mul(buyTxFee).div(100);
                tokensForTax = tokensForTax.add(fees);
            }

            if(fees > 0){
                super._transfer(from, address(this), fees);
                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function swapBack() private {
        uint256 toSwap = swapAtAmount;

        _swapTokensForETH(toSwap);

        uint256 ethBalance = address(this).balance;
        uint256 amountForDev = ethBalance.div(_devAmount);
        uint256 amountForMarketing = ethBalance.sub(amountForDev);
        tokensForTax = tokensForTax.sub(toSwap);

        payable(address(devEth)).transfer(amountForDev);
        payable(address(marketing)).transfer(amountForMarketing);
    }

    function _swapTokensForETH(uint256 tokenAmount) private {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function _setBlacklist(address account, bool value) internal {
        isBlacklisted[account] = value;
    }

    function transferForeignToken(address _token, address _to) external returns (bool _sent){
        require(_msgSender() == dev, "only dev address can call function");
        require(_token != address(this), "Can't withdraw native tokens");
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
    }
    

    receive() external payable {}
}

Read Contract

DEAD_ADDRESS 0x4e6fd6c4 → address
_tTotal 0xaf465a27 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTxFee 0xe9b786cb → uint256
cooldown 0xb222e0c2 → uint256
decimals 0x313ce567 → uint8
isBlacklisted 0xfe575a87 → bool
isExcludedFromFees 0x4fbee193 → bool
isExcludedFromTxLimit 0xbf95793d → bool
isExcludedFromWalletLimit 0xb40f9469 → bool
isLaunched 0x307aebc9 → bool
launchBlock 0xd00efb2f → uint256
maxTxLimit 0x8036d590 → uint256
maxWalletLimit 0x66a88d96 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellTxFee 0x904236d1 → uint256
swapAtAmount 0x86917524 → uint256
symbol 0x95d89b41 → string
tokensForTax 0x6d7adcad → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address

Write Contract 23 functions

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

addBlacklist 0x9cfe42da
address account
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
excludeFromAllLimits 0xcd49513f
address account
bool value
excludeFromFees 0xc0246668
address account
bool value
excludeFromTxLimit 0x30280a71
address account
bool value
excludeFromWalletLimit 0xe16830a8
address account
bool value
manualsend 0x6fc3eaec
No parameters
manualswap 0xc3c8cd80
No parameters
openTrading 0xc9567bf9
No parameters
removeBlacklist 0xeb91e651
address account
renounceOwnership 0x715018a6
No parameters
setBuyFee 0x0cc835a3
uint256 txFee
setCooldownEnabled 0x5932ead1
bool _enabled
setDevAmount 0xfb3471f2
uint256 devAmount
setMaxTxLimit 0x64f5a5bb
uint256 newLimit
setMaxWalletLimit 0x728d41c9
uint256 newLimit
setSellFee 0x8b4cee08
uint256 txFee
setSwapAtAmount 0x6402511e
uint256 amountToSwap
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferForeignToken 0x8366e79a
address _token
address _to
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
updateDevWallet 0x1816467f
address newWallet
updateMarketingWallet 0xaacebbe3
address newWallet

Recent Transactions

No transactions found for this address