Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xabD0E3535EcFBf6959b1798220335faf1B7ADA3a
Balance 0.004911 ETH
Nonce 1
Code Size 14378 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

14378 bytes
0x608060405260043610610233575f3560e01c8063715018a61161012d578063b0373f72116100aa578063ea43915e1161006e578063ea43915e14610818578063f2fde38b1461082e578063f887ea4014610856578063f88de0c314610880578063ffb54a99146108965761023a565b8063b0373f7214610736578063bf56b3711461075e578063d073a01f14610788578063d726b221146107b2578063dd62ed3e146107dc5761023a565b80638da5cb5b116100f15780638da5cb5b1461065457806395d89b411461067e578063a3a2e89e146106a8578063a8aa1b31146106d0578063a9059cbb146106fa5761023a565b8063715018a61461058457806375f0a8741461059a57806379f48091146105c4578063879bf9fe14610600578063893d20e81461062a5761023a565b8063346cc7be116101bb578063571ac8b01161017f578063571ac8b0146104a45780635d098b38146104e0578063665a11ca1461050857806366eb37851461053257806370a08231146105485761023a565b8063346cc7be146103c65780633dab5269146103ee5780633f4218e014610416578063455a4396146104525780634a74bb021461047a5761023a565b806318160ddd1161020257806318160ddd146102f657806323b872dd146103205780632b112e491461035c5780632ebcbf6c14610386578063313ce5671461039c5761023a565b8063018770201461023e5780630445b6671461026657806306fdde0314610290578063095ea7b3146102ba5761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b50610264600480360381019061025f9190612af4565b6108c0565b005b348015610271575f80fd5b5061027a6109b4565b6040516102879190612b37565b60405180910390f35b34801561029b575f80fd5b506102a46109ba565b6040516102b19190612bda565b60405180910390f35b3480156102c5575f80fd5b506102e060048036038101906102db9190612c24565b6109f7565b6040516102ed9190612c7c565b60405180910390f35b348015610301575f80fd5b5061030a610ae4565b6040516103179190612b37565b60405180910390f35b34801561032b575f80fd5b5061034660048036038101906103419190612c95565b610b08565b6040516103539190612c7c565b60405180910390f35b348015610367575f80fd5b50610370610cbd565b60405161037d9190612b37565b60405180910390f35b348015610391575f80fd5b5061039a610d2a565b005b3480156103a7575f80fd5b506103b0610deb565b6040516103bd9190612d00565b60405180910390f35b3480156103d1575f80fd5b506103ec60048036038101906103e79190612d54565b610df3565b005b3480156103f9575f80fd5b50610414600480360381019061040f9190612da9565b61102f565b005b348015610421575f80fd5b5061043c60048036038101906104379190612af4565b6110d9565b6040516104499190612c7c565b60405180910390f35b34801561045d575f80fd5b5061047860048036038101906104739190612de7565b6110f6565b005b348015610485575f80fd5b5061048e6112a6565b60405161049b9190612c7c565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190612af4565b6112b9565b6040516104d79190612c7c565b60405180910390f35b3480156104eb575f80fd5b5061050660048036038101906105019190612af4565b6112eb565b005b348015610513575f80fd5b5061051c6114a8565b6040516105299190612e34565b60405180910390f35b34801561053d575f80fd5b506105466114ce565b005b348015610553575f80fd5b5061056e60048036038101906105699190612af4565b6114e0565b60405161057b9190612b37565b60405180910390f35b34801561058f575f80fd5b50610598611526565b005b3480156105a5575f80fd5b506105ae61155a565b6040516105bb9190612e34565b60405180910390f35b3480156105cf575f80fd5b506105ea60048036038101906105e59190612e4d565b61157f565b6040516105f79190612b37565b60405180910390f35b34801561060b575f80fd5b50610614611598565b6040516106219190612c7c565b60405180910390f35b348015610635575f80fd5b5061063e6115ab565b60405161064b9190612e34565b60405180910390f35b34801561065f575f80fd5b506106686115b9565b6040516106759190612e34565b60405180910390f35b348015610689575f80fd5b506106926115e0565b60405161069f9190612bda565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c99190612de7565b61161d565b005b3480156106db575f80fd5b506106e46116cb565b6040516106f19190612e34565b60405180910390f35b348015610705575f80fd5b50610720600480360381019061071b9190612c24565b6116ef565b60405161072d9190612c7c565b60405180910390f35b348015610741575f80fd5b5061075c60048036038101906107579190612eaf565b611703565b005b348015610769575f80fd5b5061077261186f565b60405161077f9190612f31565b60405180910390f35b348015610793575f80fd5b5061079c611884565b6040516107a99190612f59565b60405180910390f35b3480156107bd575f80fd5b506107c66118b6565b6040516107d39190612f59565b60405180910390f35b3480156107e7575f80fd5b5061080260048036038101906107fd9190612f72565b6118e8565b60405161080f9190612b37565b60405180910390f35b348015610823575f80fd5b5061082c61196a565b005b348015610839575f80fd5b50610854600480360381019061084f9190612af4565b611a00565b005b348015610861575f80fd5b5061086a611aa3565b604051610877919061300b565b60405180910390f35b34801561088b575f80fd5b50610894611abb565b005b3480156108a1575f80fd5b506108aa611b43565b6040516108b79190612c7c565b60405180910390f35b6108c8611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361092d576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fedf1a035d265f6321083031b40acf4e5e06cd3e2e2025192fd308409b13b44c660405160405180910390a250565b60025481565b60606040518060400160405280600e81526020017f507265646963742043727970746f000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ad29190612b37565b60405180910390a36001905092915050565b5f6012600a610af39190613180565b6402540be400610b0391906131ca565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610ca9578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c2c919061320b565b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610cb4848484611bd4565b90509392505050565b5f610ce860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166114e0565b610cf361dead6114e0565b6012600a610d019190613180565b6402540be400610d1191906131ca565b610d1b919061320b565b610d25919061320b565b905090565b610d32611b56565b5f60055f9054906101000a900463ffffffff1663ffffffff1614610d82576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4360055f6101000a81548163ffffffff021916908363ffffffff1602179055506001600660166101000a81548160ff0219169083151502179055507f3126eb6b40eb49c85c6a99577574ba55f7dc795d4cbee28ed738c6191898a1b060405160405180910390a1565b5f6012905090565b610dfb611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610e60576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e9a9190612e34565b602060405180830381865afa158015610eb5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed99190613252565b90505f8103610f14576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f555760035f610f549190612a8a565b5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610fb192919061327d565b6020604051808303815f875af1158015610fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff191906132b8565b507f2c173e3ab5b50dfe2d876a6c7de0f777aef7fdaf4d1440ebed38708b3b78ebf4828260405161102392919061327d565b60405180910390a15050565b611037611b56565b69021e19e0c9bab240000081101561107b576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660156101000a81548160ff021916908315150217905550806002819055507f479b6e261fc1ed1b1a450fd333c906ece427a6ef5cdb37d2762bf1834ea0904882826040516110cd9291906132e3565b60405180910390a15050565b600a602052805f5260405f205f915054906101000a900460ff1681565b6110fe611b56565b600660179054906101000a900460ff16611144576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806111c957507f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611200576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fcf3473b85df1594d47b6958f29a32bea0abff9dd68296f7bf33443646793cfd88260405161129a9190612c7c565b60405180910390a25050565b600660159054906101000a900460ff1681565b5f6112e4827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6109f7565b9050919050565b6112f3611b56565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611358576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e760405160405180910390a250565b600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114d6611b56565b6114de61210c565b565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61152e611b56565b61155860015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121dc565b565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003816002811061158e575f80fd5b015f915090505481565b600660179054906101000a900460ff1681565b5f6115b46115b9565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f5052454149000000000000000000000000000000000000000000000000000000815250905090565b611625611b56565b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9f1eaee9ad9cb68284f0dc523aa42c465ed33b53f8da7fc7294ccea47358bbdf826040516116bf9190612c7c565b60405180910390a25050565b7f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7881565b5f6116fb338484611bd4565b905092915050565b61170b611b56565b5f8385611718919061330a565b90505f8284611727919061330a565b90506101f461ffff168261ffff16118061174a57506101f461ffff168161ffff16115b15611781576040517f58d620b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b85600560186101000a81548161ffff021916908361ffff160217905550846005601c6101000a81548161ffff021916908361ffff160217905550836005601a6101000a81548161ffff021916908361ffff160217905550826005601e6101000a81548161ffff021916908361ffff1602179055507fc8f6ebed6f64bd25f0aed0b6507ae982cddfd23874ad542be24905c9412a4a16868660405161182692919061333f565b60405180910390a17f52357d2b6ee817f5d57183c13530148906a8ec8b5be2fc82da16afbd8a045072848460405161185f92919061333f565b60405180910390a1505050505050565b60055f9054906101000a900463ffffffff1681565b5f6005601e9054906101000a900461ffff166005601a9054906101000a900461ffff166118b1919061330a565b905090565b5f6005601c9054906101000a900461ffff16600560189054906101000a900461ffff166118e3919061330a565b905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611972611b56565b600660179054906101000a900460ff166119b8576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600660176101000a81548160ff0219169083151502179055507fcac51b0f10907b766720ff6bed8f3de64d17380ad8652db73718e015b315635560405160405180910390a1565b611a08611b56565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8e906133d6565b60405180910390fd5b611aa0816121dc565b50565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b611ac3611b56565b5f4790505f8103611b00576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611b098161229d565b7f61834e9161bcb1e4b0b8bf1d8497dfce4358169ec3efa06ceababb5900694f1b81604051611b389190612b37565b60405180910390a150565b600660169054906101000a900460ff1681565b611b5e612367565b73ffffffffffffffffffffffffffffffffffffffff16611b7c6115b9565b73ffffffffffffffffffffffffffffffffffffffff1614611bd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc99061343e565b60405180910390fd5b565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c3a576040517f160fca8a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c9f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203611cd8576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660149054906101000a900460ff1615611cff57611cf884848461236e565b9050612105565b60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611d9a575060095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611dd1576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611e6c5750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e8357611e7c84848461236e565b9050612105565b600660169054906101000a900460ff16611ec9576040517fa3b8915f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611f15919061320b565b925050819055505f8290507f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f8457611f7d8584612485565b9050612047565b7f00000000000000000000000032ecc02da852f118966d0cd6d198a3b7d333aa7873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361204657600660159054906101000a900460ff16801561202b575060025460036001600281106120065761200561345c565b5b015460035f6002811061201c5761201b61345c565b5b01546120289190613489565b10155b156120395761203861210c565b5b612043858461253f565b90505b5b8060075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120939190613489565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120f79190612b37565b60405180910390a360019150505b9392505050565b5f60035f600281106121215761212061345c565b5b015490505f600360016002811061213b5761213a61345c565b5b015490505f818361214c9190613489565b90505f60028361215c91906134e9565b90505f818361216b919061320b565b90505f612177826125f9565b90505f82848361218791906131ca565b61219191906134e9565b90505f81836121a0919061320b565b90505f81146121b3576121b28161229d565b5b5f82146121c5576121c4858361283f565b5b60035f6121d29190612a8a565b5050505050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516122e390613546565b5f6040518083038185875af1925050503d805f811461231d576040519150601f19603f3d011682016040523d82523d5f602084013e612322565b606091505b5050905080612363577ff52ba60a0c4a09559a9f01ce57d52c9fc28936995ea9de3de131126384be569b8260405161235a9190612b37565b60405180910390a15b5050565b5f33905090565b5f8160075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123bb919061320b565b925050819055508160075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461240e9190613489565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124729190612b37565b60405180910390a3600190509392505050565b5f8061248f612936565b90505f8161249f576103846124b1565b600560189054906101000a900461ffff165b90505f826124c05760646124d2565b6005601c9054906101000a900461ffff165b90505f61271061ffff168361ffff16876124ec91906131ca565b6124f691906134e9565b90505f61271061ffff168361ffff168861251091906131ca565b61251a91906134e9565b9050612527888383612965565b87612532919061320b565b9550505050505092915050565b5f80612549612936565b90505f816125595761096061256b565b6005601a9054906101000a900461ffff165b90505f8261257a57606461258c565b6005601e9054906101000a900461ffff165b90505f61271061ffff168361ffff16876125a691906131ca565b6125b091906134e9565b90505f61271061ffff168361ffff16886125ca91906131ca565b6125d491906134e9565b90506125e1888383612965565b876125ec919061320b565b9550505050505092915050565b5f6001600660146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156126315761263061355a565b5b60405190808252806020026020018201604052801561265f5781602001602082028036833780820191505090505b50905030815f815181106126765761267561345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561270d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612731919061359b565b816001815181106127455761274461345c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061278930846109f7565b505f479050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8530426040518663ffffffff1660e01b81526004016127e39594939291906136b6565b5f604051808303815f87803b1580156127fa575f80fd5b505af115801561280c573d5f803e3d5ffd5b50505050804761281c919061320b565b925050505f600660146101000a81548160ff021916908315150217905550919050565b6001600660146101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80600560049054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016128d49695949392919061370e565b60606040518083038185885af11580156128f0573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190612915919061376d565b5050505f600660146101000a81548160ff0219169083151502179055505050565b5f43606460ff1660055f9054906101000a900463ffffffff1661295991906137bd565b63ffffffff1610905090565b5f8260035f6002811061297b5761297a61345c565b5b015f82825461298a9190613489565b925050819055508160036001600281106129a7576129a661345c565b5b015f8282546129b69190613489565b9250508190555081836129c99190613489565b90508060075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612a179190613489565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612a7b9190612b37565b60405180910390a39392505050565b505f81556001015f9055565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612ac382612a9a565b9050919050565b612ad381612ab9565b8114612add575f80fd5b50565b5f81359050612aee81612aca565b92915050565b5f60208284031215612b0957612b08612a96565b5b5f612b1684828501612ae0565b91505092915050565b5f819050919050565b612b3181612b1f565b82525050565b5f602082019050612b4a5f830184612b28565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b87578082015181840152602081019050612b6c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612bac82612b50565b612bb68185612b5a565b9350612bc6818560208601612b6a565b612bcf81612b92565b840191505092915050565b5f6020820190508181035f830152612bf28184612ba2565b905092915050565b612c0381612b1f565b8114612c0d575f80fd5b50565b5f81359050612c1e81612bfa565b92915050565b5f8060408385031215612c3a57612c39612a96565b5b5f612c4785828601612ae0565b9250506020612c5885828601612c10565b9150509250929050565b5f8115159050919050565b612c7681612c62565b82525050565b5f602082019050612c8f5f830184612c6d565b92915050565b5f805f60608486031215612cac57612cab612a96565b5b5f612cb986828701612ae0565b9350506020612cca86828701612ae0565b9250506040612cdb86828701612c10565b9150509250925092565b5f60ff82169050919050565b612cfa81612ce5565b82525050565b5f602082019050612d135f830184612cf1565b92915050565b5f612d2382612ab9565b9050919050565b612d3381612d19565b8114612d3d575f80fd5b50565b5f81359050612d4e81612d2a565b92915050565b5f60208284031215612d6957612d68612a96565b5b5f612d7684828501612d40565b91505092915050565b612d8881612c62565b8114612d92575f80fd5b50565b5f81359050612da381612d7f565b92915050565b5f8060408385031215612dbf57612dbe612a96565b5b5f612dcc85828601612d95565b9250506020612ddd85828601612c10565b9150509250929050565b5f8060408385031215612dfd57612dfc612a96565b5b5f612e0a85828601612ae0565b9250506020612e1b85828601612d95565b9150509250929050565b612e2e81612ab9565b82525050565b5f602082019050612e475f830184612e25565b92915050565b5f60208284031215612e6257612e61612a96565b5b5f612e6f84828501612c10565b91505092915050565b5f61ffff82169050919050565b612e8e81612e78565b8114612e98575f80fd5b50565b5f81359050612ea981612e85565b92915050565b5f805f8060808587031215612ec757612ec6612a96565b5b5f612ed487828801612e9b565b9450506020612ee587828801612e9b565b9350506040612ef687828801612e9b565b9250506060612f0787828801612e9b565b91505092959194509250565b5f63ffffffff82169050919050565b612f2b81612f13565b82525050565b5f602082019050612f445f830184612f22565b92915050565b612f5381612e78565b82525050565b5f602082019050612f6c5f830184612f4a565b92915050565b5f8060408385031215612f8857612f87612a96565b5b5f612f9585828601612ae0565b9250506020612fa685828601612ae0565b9150509250929050565b5f819050919050565b5f612fd3612fce612fc984612a9a565b612fb0565b612a9a565b9050919050565b5f612fe482612fb9565b9050919050565b5f612ff582612fda565b9050919050565b61300581612feb565b82525050565b5f60208201905061301e5f830184612ffc565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130a65780860481111561308257613081613024565b5b60018516156130915780820291505b808102905061309f85613051565b9450613066565b94509492505050565b5f826130be5760019050613179565b816130cb575f9050613179565b81600181146130e157600281146130eb5761311a565b6001915050613179565b60ff8411156130fd576130fc613024565b5b8360020a91508482111561311457613113613024565b5b50613179565b5060208310610133831016604e8410600b841016171561314f5782820a90508381111561314a57613149613024565b5b613179565b61315c848484600161305d565b9250905081840481111561317357613172613024565b5b81810290505b9392505050565b5f61318a82612b1f565b915061319583612ce5565b92506131c27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130af565b905092915050565b5f6131d482612b1f565b91506131df83612b1f565b92508282026131ed81612b1f565b9150828204841483151761320457613203613024565b5b5092915050565b5f61321582612b1f565b915061322083612b1f565b925082820390508181111561323857613237613024565b5b92915050565b5f8151905061324c81612bfa565b92915050565b5f6020828403121561326757613266612a96565b5b5f6132748482850161323e565b91505092915050565b5f6040820190506132905f830185612e25565b61329d6020830184612b28565b9392505050565b5f815190506132b281612d7f565b92915050565b5f602082840312156132cd576132cc612a96565b5b5f6132da848285016132a4565b91505092915050565b5f6040820190506132f65f830185612c6d565b6133036020830184612b28565b9392505050565b5f61331482612e78565b915061331f83612e78565b9250828201905061ffff81111561333957613338613024565b5b92915050565b5f6040820190506133525f830185612f4a565b61335f6020830184612f4a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133c0602683612b5a565b91506133cb82613366565b604082019050919050565b5f6020820190508181035f8301526133ed816133b4565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613428602083612b5a565b9150613433826133f4565b602082019050919050565b5f6020820190508181035f8301526134558161341c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61349382612b1f565b915061349e83612b1f565b92508282019050808211156134b6576134b5613024565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134f382612b1f565b91506134fe83612b1f565b92508261350e5761350d6134bc565b5b828204905092915050565b5f81905092915050565b50565b5f6135315f83613519565b915061353c82613523565b5f82019050919050565b5f61355082613526565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061359581612aca565b92915050565b5f602082840312156135b0576135af612a96565b5b5f6135bd84828501613587565b91505092915050565b5f819050919050565b5f6135e96135e46135df846135c6565b612fb0565b612b1f565b9050919050565b6135f9816135cf565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61363181612ab9565b82525050565b5f6136428383613628565b60208301905092915050565b5f602082019050919050565b5f613664826135ff565b61366e8185613609565b935061367983613619565b805f5b838110156136a95781516136908882613637565b975061369b8361364e565b92505060018101905061367c565b5085935050505092915050565b5f60a0820190506136c95f830188612b28565b6136d660208301876135f0565b81810360408301526136e8818661365a565b90506136f76060830185612e25565b6137046080830184612b28565b9695505050505050565b5f60c0820190506137215f830189612e25565b61372e6020830188612b28565b61373b60408301876135f0565b61374860608301866135f0565b6137556080830185612e25565b61376260a0830184612b28565b979650505050505050565b5f805f6060848603121561378457613783612a96565b5b5f6137918682870161323e565b93505060206137a28682870161323e565b92505060406137b38682870161323e565b9150509250925092565b5f6137c782612f13565b91506137d283612f13565b9250828201905063ffffffff8111156137ee576137ed613024565b5b9291505056fea264697066735822122026022cda82d067f03c2ca264084db5d503de4fc9e0700d3361d3178dae57640b64736f6c63430008180033

Verified Source Code Partial Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: shanghai Optimization: No
PREDICTCRYPTO.sol 571 lines
// SPDX-License-Identifier: MIT

/**

https://linktr.ee/predictcrypto

*/

pragma solidity =0.8.24;

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
    );
    event Burn(address indexed from, address indexed to, uint256 value);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    address internal ZERO = 0x0000000000000000000000000000000000000000;

    constructor() {
        _transferOwnership(_msgSender());
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(ZERO);
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

contract PREDICTCRYPTO is IERC20, Ownable {
    address private immutable WETH;
    address public immutable pair;
    IDEXRouter public constant router =
        IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
    string private constant _name = "Predict Crypto";
    string private constant _symbol = "PREAI";
    uint8 private constant _decimals = 18;
    uint8 private constant ANTI_BOT_BLOCKS = 100;
    uint16 private constant ANTI_BOT_BUY_AI = 900;
    uint16 private constant ANTI_BOT_SELL_AI = 2400;
    uint16 private constant ANTI_BOT_BUY_LP = 100;
    uint16 private constant ANTI_BOT_SELL_LP = 100;
    uint16 private constant MAX_FEE = 500;
    uint16 private constant DENOMINATOR = 10000;
    uint256 private constant TOTAL_SUPPLY = 1 * 10 ** 10 * (10 ** _decimals);
    uint256 private constant MINIMUM_SWAP_LIMIT = 10_000 ether;

    uint256 public swapThreshold = TOTAL_SUPPLY / 1000; // Starting at 0.1%
    uint256[2] public taxesCollected = [0, 0];

    uint32 public launchedAt;
    address public liquidityPool = DEAD;
    // All fees are in basis points (100 = 1%)
    uint16 private _buyAi = 300;
    uint16 private _sellAi = 300;
    uint16 private _buyLP = 200;
    uint16 private _sellLP = 200;
    address public marketingWallet = 0x41267eE8F02312bd9AF8622806b092892974304a;
    bool private _inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    bool public tradingOpen = false;
    bool public isBlacklistFunctionAvailable = true;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _blacklist;
    mapping(address => bool) public isFeeExempt;

    modifier lockTheSwap() {
        _inSwapAndLiquify = true;
        _;
        _inSwapAndLiquify = false;
    }

    //Event Logs
    event LiquidityPoolUpdated(address indexed _newPool);
    event MarketingWalletUpdated(address indexed _newWallet);
    event BuyFeesUpdated(uint16 _newAi, uint16 _newLp);
    event SellFeesUpdated(uint16 _neAi, uint16 _newLp);
    event StuckETHCleared(uint256 _amount);
    event StuckTokensCleared(address _token, uint256 _amount);
    event FeeExemptionChanged(address indexed _exemptWallet, bool _exempt);
    event SwapbackSettingsChanged(bool _enabled, uint256 _newSwapbackAmount);
    event Blacklisted(address indexed _wallet, bool _status);
    event BlacklistDisabled();
    event LaunchSequenceStarted();
    event StuckETH(uint256 _amount);

    error InvalidAddress();
    error InvalidAmount();
    error InvalidFee();
    error Unavailable();
    error TransferFromZeroAddress();
    error TransferToZeroAddress();

    constructor() {
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[owner()] = true;
        isFeeExempt[marketingWallet] = true;
        isFeeExempt[address(this)] = true;

        _balances[owner()] = TOTAL_SUPPLY;

        emit Transfer(address(0), owner(), TOTAL_SUPPLY);
    }

    function blacklistAddress(
        address _wallet,
        bool _status
    ) external onlyOwner {
        if (!isBlacklistFunctionAvailable) revert Unavailable();
        if (_wallet == address(0) || _wallet == pair) revert InvalidAddress();
        _blacklist[_wallet] = _status;
        emit Blacklisted(_wallet, _status);
    }

    function disableBlacklist() external onlyOwner {
        /// @dev permanently disables any future changes to the blacklist
        if (!isBlacklistFunctionAvailable) revert Unavailable();
        isBlacklistFunctionAvailable = false;
        emit BlacklistDisabled();
    }

    function launchSequence() external onlyOwner {
        if (launchedAt != 0) revert Unavailable();
        launchedAt = uint32(block.number);
        tradingOpen = true;
        emit LaunchSequenceStarted();
    }

    function getCirculatingSupply() external view returns (uint256) {
        return TOTAL_SUPPLY - balanceOf(DEAD) - balanceOf(ZERO);
    }

    function totalSupply() external pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }

    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 baseBuyFee() external view returns (uint16) {
        return _buyAi + _buyLP;
    }

    function baseSellFee() external view returns (uint16) {
        return _sellAi + _sellLP;
    }

    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, type(uint256).max);
    }

    //Transfer Functions

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transfer(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return _transfer(sender, recipient, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        if (sender == address(0)) revert TransferFromZeroAddress();
        if (recipient == address(0)) revert TransferToZeroAddress();
        if (amount == 0) revert InvalidAmount();
        if (_inSwapAndLiquify) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (_blacklist[sender] || _blacklist[recipient]) revert Unavailable();
        if (isFeeExempt[sender] || isFeeExempt[recipient]) {
            return _basicTransfer(sender, recipient, amount);
        }
        if (!tradingOpen) revert Unavailable();
        _balances[sender] -= amount;
        uint256 finalAmount = amount;
        if (sender == pair) {
            finalAmount = _handleBuyTax(sender, amount);
        } else if (recipient == pair) {
            if (
                swapAndLiquifyEnabled &&
                taxesCollected[0] + taxesCollected[1] >= swapThreshold
            ) {
                _swapBack();
            }
            finalAmount = _handleSellTax(sender, amount);
        }
        _balances[recipient] += finalAmount;
        emit Transfer(sender, recipient, finalAmount);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    //Tax Functions

    function _handleBuyTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 buyAi = chargeBaseFee ? _buyAi : ANTI_BOT_BUY_AI;
        uint16 buyLP = chargeBaseFee ? _buyLP : ANTI_BOT_BUY_LP;
        uint256 aiTaxB = (amount * buyAi) / DENOMINATOR;
        uint256 lpTaxB = (amount * buyLP) / DENOMINATOR;
        return amount - _handleTaxCollection(sender, aiTaxB, lpTaxB);
    }

    function _handleSellTax(
        address sender,
        uint256 amount
    ) private returns (uint256) {
        bool chargeBaseFee = _chargeBaseFee();
        uint16 sellAi = chargeBaseFee ? _sellAi : ANTI_BOT_SELL_AI;
        uint16 sellLP = chargeBaseFee ? _sellLP : ANTI_BOT_SELL_LP;
        uint256 aiTaxS = (amount * sellAi) / DENOMINATOR;
        uint256 lpTaxS = (amount * sellLP) / DENOMINATOR;
        return amount - _handleTaxCollection(sender, aiTaxS, lpTaxS);
    }

    function _chargeBaseFee() private view returns (bool) {
        /// @dev launchedAt will always be > 0 at this point
        return launchedAt + ANTI_BOT_BLOCKS < block.number;
    }

    function _handleTaxCollection(
        address sender,
        uint256 ai,
        uint256 lp
    ) private returns (uint256 tax) {
        taxesCollected[0] += ai;
        taxesCollected[1] += lp;
        tax = ai + lp;
        _balances[address(this)] += tax;
        emit Transfer(sender, address(this), tax);
        return tax;
    }

    //LP and Swapback Functions
    function _swapTokensForETH(
        uint256 tokenAmount
    ) private lockTheSwap returns (uint256) {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        approve(address(this), tokenAmount);
        uint256 ethBefore = address(this).balance;
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return address(this).balance - ethBefore;
    }

    function _addLiquidity(
        uint256 tokenAmount,
        uint256 ETHAmount
    ) private lockTheSwap {
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidityPool,
            block.timestamp
        );
    }

    function _swapBack() private {
        uint256 aiShare = taxesCollected[0];
        uint256 lpShare = taxesCollected[1];
        uint256 totalTax = aiShare + lpShare;
        uint256 tokensForLiquidity = lpShare / 2;
        uint256 amountToSwap = totalTax - tokensForLiquidity;

        uint256 ethReceived = _swapTokensForETH(amountToSwap);

        uint256 ETHForLiquidity = (ethReceived * tokensForLiquidity) /
            amountToSwap;
        uint256 ETHForAi = ethReceived - ETHForLiquidity;

        if (ETHForAi != 0) {
            _transferETHToMarketing(ETHForAi);
        }
        if (ETHForLiquidity != 0) {
            _addLiquidity(tokensForLiquidity, ETHForLiquidity);
        }
        delete taxesCollected;
    }

    function manualSwapBack() external onlyOwner {
        _swapBack();
    }

    // Update/Change Functions

    function changeIsFeeExempt(address holder, bool exempt) external onlyOwner {
        isFeeExempt[holder] = exempt;
        emit FeeExemptionChanged(holder, exempt);
    }

    function setMarketingWallet(address newMarketingWallet) external onlyOwner {
        if (newMarketingWallet == address(0)) revert InvalidAddress();
        isFeeExempt[marketingWallet] = false;
        marketingWallet = newMarketingWallet;
        isFeeExempt[newMarketingWallet] = true;
        emit MarketingWalletUpdated(newMarketingWallet);
    }

    function setLiquidityPool(address newLiquidityPool) external onlyOwner {
        if (newLiquidityPool == address(0)) revert InvalidAddress();
        liquidityPool = newLiquidityPool;
        emit LiquidityPoolUpdated(newLiquidityPool);
    }

    function changeSwapBackSettings(
        bool enableSwapback,
        uint256 newSwapbackLimit
    ) external onlyOwner {
        if (newSwapbackLimit < MINIMUM_SWAP_LIMIT) revert InvalidAmount();
        swapAndLiquifyEnabled = enableSwapback;
        swapThreshold = newSwapbackLimit;
        emit SwapbackSettingsChanged(enableSwapback, newSwapbackLimit);
    }

    function updateBuyFees(
        uint16 newBuyAiFee,
        uint16 newBuyLpFee,
        uint16 newSellAiFee,
        uint16 newSellLpFee
    ) external onlyOwner {
        uint16 totalNewBuyFee = newBuyAiFee + newBuyLpFee;
        uint16 totalNewSellFee = newSellAiFee + newSellLpFee;
        if (totalNewBuyFee > MAX_FEE || totalNewSellFee > MAX_FEE)
            revert InvalidFee();
        _buyAi = newBuyAiFee;
        _buyLP = newBuyLpFee;
        _sellAi = newSellAiFee;
        _sellLP = newSellLpFee;
        emit BuyFeesUpdated(newBuyAiFee, newBuyLpFee);
        emit SellFeesUpdated(newSellAiFee, newSellLpFee);
    }

    function clearStuckETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        if (contractETHBalance == 0) revert InvalidAmount();
        _transferETHToMarketing(contractETHBalance);
        emit StuckETHCleared(contractETHBalance);
    }

    function clearStuckTokens(IERC20 token) external onlyOwner {
        if (address(token) == address(0)) revert InvalidAddress();
        uint256 balance = token.balanceOf(address(this));
        if (balance == 0) revert InvalidAmount();
        if (address(token) == address(this)) {
            delete taxesCollected;
        }
        token.transfer(marketingWallet, balance);
        emit StuckTokensCleared(address(token), balance);
    }

    function _transferETHToMarketing(uint256 amount) private {
        (bool success, ) = marketingWallet.call{value: amount}("");
        if (!success) {
            /// @dev owner can claim ETH via clearStuckETH()
            emit StuckETH(amount);
        }
    }

    receive() external payable {}
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
baseBuyFee 0xd726b221 → uint16
baseSellFee 0xd073a01f → uint16
decimals 0x313ce567 → uint8
getCirculatingSupply 0x2b112e49 → uint256
getOwner 0x893d20e8 → address
isBlacklistFunctionAvailable 0x879bf9fe → bool
isFeeExempt 0x3f4218e0 → bool
launchedAt 0xbf56b371 → uint32
liquidityPool 0x665a11ca → address
marketingWallet 0x75f0a874 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapAndLiquifyEnabled 0x4a74bb02 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
taxesCollected 0x79f48091 → uint256
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool

Write Contract 17 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
blacklistAddress 0x455a4396
address _wallet
bool _status
changeIsFeeExempt 0xa3a2e89e
address holder
bool exempt
changeSwapBackSettings 0x3dab5269
bool enableSwapback
uint256 newSwapbackLimit
clearStuckETH 0xf88de0c3
No parameters
clearStuckTokens 0x346cc7be
address token
disableBlacklist 0xea43915e
No parameters
launchSequence 0x2ebcbf6c
No parameters
manualSwapBack 0x66eb3785
No parameters
renounceOwnership 0x715018a6
No parameters
setLiquidityPool 0x01877020
address newLiquidityPool
setMarketingWallet 0x5d098b38
address newMarketingWallet
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateBuyFees 0xb0373f72
uint16 newBuyAiFee
uint16 newBuyLpFee
uint16 newSellAiFee
uint16 newSellLpFee

Recent Transactions

No transactions found for this address