Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x7f8D0dD1Db2d620A1547D1A6dd0aE30C6456e28C
Balance 0.028163 ETH
Nonce 1
Code Size 11288 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11288 bytes
0x6080604052600436106103035760003560e01c80636f4ce42811610190578063bf56b371116100dc578063e96fada211610095578063f84ba65d1161006f578063f84ba65d14610902578063f8821a6214610922578063f887ea4014610938578063fabb0b4f1461095857600080fd5b8063e96fada2146108a2578063f1f3bca3146108c2578063f2fde38b146108e257600080fd5b8063bf56b371146107b9578063bfa21d6a146107cf578063c1adf7bc146107ef578063c287184e1461081c578063d68601421461083c578063dd62ed3e1461085c57600080fd5b806395d89b4111610149578063a8aa1b3111610123578063a8aa1b3114610744578063a9059cbb14610764578063abe57e7014610784578063bafe446b146107a457600080fd5b806395d89b41146103385780639b02c4021461070e578063a4b45c001461072457600080fd5b80636f4ce428146106265780636fcba3771461065357806370a0823114610673578063715018a6146106a9578063893d20e8146106be5780638da5cb5b146106f057600080fd5b8063492a937b1161024f578063584f969a1161020857806363a803e1116101e257806363a803e1146105b7578063658d4b7f146105cc57806367243482146105ec5780636ddd17131461060c57600080fd5b8063584f969a1461056c57806360bba03d1461058157806361e08e72146105a157600080fd5b8063492a937b146104b657806350713935146104d657806354a1dfc9146104f657806356a227f214610516578063571ac8b0146105365780635804f1e41461055657600080fd5b8063234e9494116102bc578063313ce56711610296578063313ce5671461043857806334848b9a14610454578063421dd7c71461047457806346d7edaa1461048957600080fd5b8063234e9494146103ee57806323b872dd146104035780632b112e491461042357600080fd5b80630445b6671461030f57806306fdde0314610338578063095db78f14610372578063095ea7b3146103945780631031e36e146103c457806318160ddd146103d957600080fd5b3661030a57005b600080fd5b34801561031b57600080fd5b5061032560245481565b6040519081526020015b60405180910390f35b34801561034457600080fd5b50604080518082018252600b81526a29b1b43937b234b733b2b960a91b6020820152905161032f91906128dc565b34801561037e57600080fd5b5061039261038d3660046126f8565b61096e565b005b3480156103a057600080fd5b506103b46103af366004612660565b610b2a565b604051901515815260200161032f565b3480156103d057600080fd5b50610392610b97565b3480156103e557600080fd5b50600354610325565b3480156103fa57600080fd5b50610325610bfc565b34801561040f57600080fd5b506103b461041e3660046125ea565b610c1c565b34801561042f57600080fd5b50610325610cb1565b34801561044457600080fd5b506040516009815260200161032f565b34801561046057600080fd5b5061039261046f366004612825565b610cf2565b34801561048057600080fd5b50610392610d93565b34801561049557600080fd5b506103256104a4366004612577565b60186020526000908152604090205481565b3480156104c257600080fd5b506103926104d136600461262b565b610de8565b3480156104e257600080fd5b506103926104f1366004612825565b610ea6565b34801561050257600080fd5b50610392610511366004612767565b610f41565b34801561052257600080fd5b506103926105313660046127de565b610fc4565b34801561054257600080fd5b506103b4610551366004612577565b611054565b34801561056257600080fd5b50610325601f5481565b34801561057857600080fd5b50610392611062565b34801561058d57600080fd5b5061039261059c36600461262b565b6110b7565b3480156105ad57600080fd5b5061032560225481565b3480156105c357600080fd5b5061032561110c565b3480156105d857600080fd5b506103926105e736600461262b565b611127565b3480156105f857600080fd5b5061039261060736600461268c565b61117c565b34801561061857600080fd5b506023546103b49060ff1681565b34801561063257600080fd5b50610325610641366004612577565b60096020526000908152604090205481565b34801561065f57600080fd5b5061039261066e36600461287f565b6112e3565b34801561067f57600080fd5b5061032561068e366004612577565b6001600160a01b031660009081526007602052604090205490565b3480156106b557600080fd5b50610392611346565b3480156106ca57600080fd5b506000546001600160a01b03165b6040516001600160a01b03909116815260200161032f565b3480156106fc57600080fd5b506000546001600160a01b03166106d8565b34801561071a57600080fd5b50610325601b5481565b34801561073057600080fd5b5061039261073f3660046125b1565b6113ba565b34801561075057600080fd5b50601d546106d8906001600160a01b031681565b34801561077057600080fd5b506103b461077f366004612660565b611412565b34801561079057600080fd5b5061039261079f366004612803565b61141f565b3480156107b057600080fd5b50610325611490565b3480156107c557600080fd5b50610325601e5481565b3480156107db57600080fd5b506013546106d8906001600160a01b031681565b3480156107fb57600080fd5b5061032561080a366004612577565b600a6020526000908152604090205481565b34801561082857600080fd5b506103926108373660046127c5565b6114ab565b34801561084857600080fd5b506103926108573660046127a9565b6114e8565b34801561086857600080fd5b506103256108773660046125b1565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b3480156108ae57600080fd5b506014546106d8906001600160a01b031681565b3480156108ce57600080fd5b506103256108dd36600461274c565b611579565b3480156108ee57600080fd5b506103926108fd366004612577565b6115c6565b34801561090e57600080fd5b5061039261091d36600461262b565b6116b0565b34801561092e57600080fd5b5061032560255481565b34801561094457600080fd5b506015546106d8906001600160a01b031681565b34801561096457600080fd5b5061032560205481565b3360009081526027602052604090205460ff168061099657506000546001600160a01b031633145b6109bb5760405162461bcd60e51b81526004016109b290612931565b60405180910390fd5b80156109d05760195460ff166109d057600080fd5b60005b82811015610b24578115610a5f57601b80549060006109f183612b83565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea32858584818110610a2a57610a2a612bb4565b9050602002016020810190610a3f9190612577565b436002604051610a5294939291906128b1565b60405180910390a1610abf565b60186000858584818110610a7557610a75612bb4565b9050602002016020810190610a8a9190612577565b6001600160a01b0316815260208101919091526040016000205415610abf57601b8054906000610ab983612b6c565b91905055505b81610acb576000610acd565b435b60186000868685818110610ae357610ae3612bb4565b9050602002016020810190610af89190612577565b6001600160a01b0316815260208101919091526040016000205580610b1c81612b83565b9150506109d3565b50505050565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610b859086815260200190565b60405180910390a35060015b92915050565b3360009081526027602052604090205460ff1680610bbf57506000546001600160a01b031633145b610bdb5760405162461bcd60e51b81526004016109b290612931565b602154610100900460ff1615610bf057600080fd5b6021805460ff19169055565b6000610c0a6009600a612a8b565b600554610c179190612a26565b905090565b6001600160a01b038316600090815260086020908152604080832033845290915281205460001914610c9c576001600160a01b0384166000908152600860209081526040808320338452909152902054610c77908390612b55565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b610ca7848484611705565b90505b9392505050565b6002546001600160a01b039081166000908152600760205260408082205460015490931682528120549091610ce591612a0e565b600354610c179190612b55565b3360009081526027602052604090205460ff1680610d1a57506000546001600160a01b031633145b610d365760405162461bcd60e51b81526004016109b290612931565b60215460ff16158015610d495750600a83105b610d5257600080fd5b60208390556021805460ff1916600117905543601e55610d728242612a0e565b601c55610d816009600a612a8b565b610d8b9082612b36565b601a55505050565b3360009081526027602052604090205460ff1680610dbb57506000546001600160a01b031633145b610dd75760405162461bcd60e51b81526004016109b290612931565b6019805461ffff1916610100179055565b6000546001600160a01b03163314610e125760405162461bcd60e51b81526004016109b290612968565b601d546001600160a01b0383811691161415610e7b5760405162461bcd60e51b815260206004820152602260248201527f43616e277420616c7465722063757272656e74206c697175696469747920706160448201526134b960f11b60648201526084016109b2565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610ed05760405162461bcd60e51b81526004016109b290612968565b600083118015610ee05750600082115b8015610eec5750600081115b8015610efa57506127108111155b610f0357600080fd5b8083600354610f129190612b36565b610f1c9190612a26565b6004556003548190610f2f908490612b36565b610f399190612a26565b600555505050565b6000546001600160a01b03163314610f6b5760405162461bcd60e51b81526004016109b290612968565b60008211610f7857600080fd5b6023805461ffff191685151561ff0019161761010085151502179055600354610fa2908390612a26565b602455610fb16009600a612a8b565b610fbb9082612b36565b60255550505050565b3360009081526027602052604090205460ff1680610fec57506000546001600160a01b031633145b6110085760405162461bcd60e51b81526004016109b290612931565b476001600160a01b0382166108fc60646110228685612b36565b61102c9190612a26565b6040518115909202916000818181858888f19350505050158015610b24573d6000803e3d6000fd5b6000610b9182600019610b2a565b3360009081526027602052604090205460ff168061108a57506000546001600160a01b031633145b6110a65760405162461bcd60e51b81526004016109b290612931565b6021805461ffff1916610101179055565b6000546001600160a01b031633146110e15760405162461bcd60e51b81526004016109b290612968565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b600061111a6009600a612a8b565b600654610c179190612a26565b6000546001600160a01b031633146111515760405162461bcd60e51b81526004016109b290612968565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111a65760405162461bcd60e51b81526004016109b290612968565b82158015906111b457508083145b6111bd57600080fd5b3360005b848110156112db57601760008787848181106111df576111df612bb4565b90506020020160208101906111f49190612577565b6001600160a01b0316815260208101919091526040016000205460ff161580156112635750600d600087878481811061122f5761122f612bb4565b90506020020160208101906112449190612577565b6001600160a01b0316815260208101919091526040016000205460ff16155b156112c9576112c78287878481811061127e5761127e612bb4565b90506020020160208101906112939190612577565b61129f6009600a612a8b565b8787868181106112b1576112b1612bb4565b905060200201356112c29190612b36565b611c07565b505b806112d381612b83565b9150506111c1565b505050505050565b6000546001600160a01b0316331461130d5760405162461bcd60e51b81526004016109b290612968565b600f849055600e8390556113218484612a0e565b60105560118290556012819055611339600282612a26565b60105410610b2457600080fd5b6000546001600160a01b031633146113705760405162461bcd60e51b81526004016109b290612968565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031633146113e45760405162461bcd60e51b81526004016109b290612968565b601380546001600160a01b039384166001600160a01b03199182161790915560148054929093169116179055565b6000610caa338484611705565b6000546001600160a01b031633146114495760405162461bcd60e51b81526004016109b290612968565b6000821180156114595750600081115b801561146757506127108111155b61147057600080fd5b808260035461147f9190612b36565b6114899190612a26565b6006555050565b600061149e6009600a612a8b565b600454610c179190612a26565b6000546001600160a01b031633146114d55760405162461bcd60e51b81526004016109b290612968565b603c8111156114e357600080fd5b602255565b3360009081526027602052604090205460ff168061151057506000546001600160a01b031633145b61152c5760405162461bcd60e51b81526004016109b290612931565b601954610100900460ff161561154157600080fd5b6019805460ff191683151517905562015180811061155e57600080fd5b80601c60008282546115709190612a0e565b90915550505050565b600043602054601e5461158c9190612a0e565b106115a0576001601254610b919190612b55565b81156115b657601154601054610b919190612a0e565b601154601054610b919190612b55565b6000546001600160a01b031633146115f05760405162461bcd60e51b81526004016109b290612968565b6001600160a01b0381166116555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b2565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116da5760405162461bcd60e51b81526004016109b290612968565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b60006001600160a01b03841661175d5760405162461bcd60e51b815260206004820152601860248201527f42455032303a207472616e736665722066726f6d20307830000000000000000060448201526064016109b2565b6001600160a01b0383166117ac5760405162461bcd60e51b8152602060048201526016602482015275042455032303a207472616e7366657220746f203078360541b60448201526064016109b2565b600082116117f45760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74206d757374206265203e207a65726f60581b60448201526064016109b2565b6001600160a01b0384166000908152600760205260409020548211156118535760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016109b2565b601e5415801561187b57506001600160a01b03831660009081526017602052604090205460ff165b15611902576001600160a01b0384166000908152600d602052604090205460ff166118e85760405162461bcd60e51b815260206004820152601860248201527f4c6971756964697479206e6f74206164646564207965742e000000000000000060448201526064016109b2565b61190243601e5542601f556023805460ff19166001179055565b60215460ff1661198f576001600160a01b0384166000908152600d602052604090205460ff168061194b57506001600160a01b0383166000908152600d602052604090205460ff165b61198f5760405162461bcd60e51b81526020600482015260156024820152742a3930b234b733903737ba1037b832b7103cb2ba1760591b60448201526064016109b2565b61199a848484611cc1565b6001600160a01b03831660009081526017602052604090205460ff161580156119d157506001546001600160a01b03848116911614155b15611a00576001600160a01b0383166000908152600c602052604090205460ff16611a0057611a008383612016565b60195460ff168015611a13575042601c54115b15611add576001600160a01b03841660009081526017602052604090205460ff168015611a495750326001600160a01b03841614155b8015611a6b57506001600160a01b038316600090815260186020526040902054155b15611add576001600160a01b0383166000908152601860205260408120439055601b805491611a9983612b83565b91905055507f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea3284436000604051611ad494939291906128b1565b60405180910390a15b60265460ff1615611afa57611af3848484611c07565b9050610caa565b6001600160a01b038416600090815260076020526040902054611b1e908390612b55565b6001600160a01b038516600090815260076020908152604080832093909355600b90529081205460ff1615611b535782611b5d565b611b5d848461209b565b9050611b6884612119565b15611b7c578215611b7c57611b7c83612190565b6001600160a01b038416600090815260076020526040902054611ba0908290612a0e565b6001600160a01b0380861660008181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611bf49085815260200190565b60405180910390a3506001949350505050565b6001600160a01b038316600090815260076020526040812054611c2b908390612b55565b6001600160a01b038086166000908152600760205260408082209390935590851681522054611c5b908390612a0e565b6001600160a01b0380851660008181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611caf9086815260200190565b60405180910390a35060019392505050565b6001600160a01b0383166000908152600c602052604090205460ff1680611d1357506001600160a01b03831660009081526017602052604090205460ff16611d0b57600554611d0f565b6004545b8111155b611d535760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b60448201526064016109b2565b6001600160a01b0383166000908152600c602052604090205460ff1680611d9f57506022546001600160a01b0383166000908152600a60205260409020544391611d9c91612a0e565b11155b611deb5760405162461bcd60e51b815260206004820152601d60248201527f5472616e736665722072617465206c696d69742065786365656465642e00000060448201526064016109b2565b6001600160a01b03831660009081526018602052604090205415611ece57611e156009600a612a8b565b601a54611e229190612b36565b8111158015611e4757506001600160a01b038316600090815260096020526040902054155b8015611e54575042601c54115b611eb25760405162461bcd60e51b815260206004820152602960248201527f57616c6c65742070726f7465637465642c20706c6561736520636f6e746163746044820152681039bab83837b93a1760b91b60648201526084016109b2565b6001600160a01b03831660009081526009602052604090204390555b6001600160a01b03821660009081526017602052604090205460ff1615611f0d5750506001600160a01b03166000908152600960205260409020439055565b6001600160a01b0383166000908152600b602052604090205460ff166120115760195460ff168015611f40575042601c54115b8015611f5a5750326000908152600a602052604090205443145b8015611f7c57506001600160a01b038216600090815260186020526040902054155b15611fdd576001600160a01b03821660009081526018602052604090819020439081905590517f47e78c0c4ce6dbe67ff01d67de13c04f361afa37858e7056d665001d746855ea91611fd491329186916001906128b1565b60405180910390a15b6001600160a01b0382166000818152600a60205260409020439055321461201157326000908152600a602052604090204390555b505050565b6006546001600160a01b038316600090815260076020526040902054819061203f908490612a0e565b11156120115760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016109b2565b6001600160a01b03821660009081526017602052604081205460125460ff9091169082906120c883611579565b6120d29086612b36565b6120dc9190612a26565b30600090815260076020526040812080549293508392909190612100908490612a0e565b9091555061211090508185612b55565b95945050505050565b3360009081526017602052604081205460ff1615801561213c575060265460ff16155b801561214a575060235460ff165b801561216e57506001600160a01b03821660009081526017602052604090205460ff165b8015610b91575060255430600090815260076020526040902054101592915050565b6026805460ff1916600117905560245460009082106121b1576024546121b3565b815b306000908152600760205260409020549091508111156121df5750306000908152600760205260409020545b60006010546002600f54846121f49190612b36565b6121fe9190612a26565b6122089190612a26565b90506122148183612b55565b6040805160028082526060820183529294506000929091602083019080368337019050509050308160008151811061224e5761224e612bb4565b6001600160a01b03928316602091820292909201810191909152601554604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156122a257600080fd5b505afa1580156122b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122da9190612594565b816001815181106122ed576122ed612bb4565b6001600160a01b03928316602091820292909201015260155460405163791ac94760e01b81524792919091169063791ac9479061233790879060009087903090429060040161299d565b600060405180830381600087803b15801561235157600080fd5b505af1158015612365573d6000803e3d6000fd5b50505050600081476123779190612b55565b905060006002600f5461238a9190612a26565b6010546123979190612b55565b90506000816002600f54856123ac9190612b36565b6123b69190612a26565b6123c09190612a26565b905060006123ce8285612b55565b90508015612412576014546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612410573d6000803e3d6000fd5b505b86156124c05760155460135460405163f305d71960e01b8152306004820152602481018a905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990849060c4016060604051808303818588803b15801561248357600080fd5b505af1158015612497573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124bc9190612851565b5050505b60408051828152602081018490529081018890527fdaf6233a382145376035341e71f8a04305f7e323d0fe3e58c908cf0a26b76df99060600160405180910390a150506026805460ff1916905550505050505050565b60008083601f84011261252857600080fd5b50813567ffffffffffffffff81111561254057600080fd5b6020830191508360208260051b850101111561255b57600080fd5b9250929050565b8035801515811461257257600080fd5b919050565b60006020828403121561258957600080fd5b8135610caa81612bca565b6000602082840312156125a657600080fd5b8151610caa81612bca565b600080604083850312156125c457600080fd5b82356125cf81612bca565b915060208301356125df81612bca565b809150509250929050565b6000806000606084860312156125ff57600080fd5b833561260a81612bca565b9250602084013561261a81612bca565b929592945050506040919091013590565b6000806040838503121561263e57600080fd5b823561264981612bca565b915061265760208401612562565b90509250929050565b6000806040838503121561267357600080fd5b823561267e81612bca565b946020939093013593505050565b600080600080604085870312156126a257600080fd5b843567ffffffffffffffff808211156126ba57600080fd5b6126c688838901612516565b909650945060208701359150808211156126df57600080fd5b506126ec87828801612516565b95989497509550505050565b60008060006040848603121561270d57600080fd5b833567ffffffffffffffff81111561272457600080fd5b61273086828701612516565b9094509250612743905060208501612562565b90509250925092565b60006020828403121561275e57600080fd5b610caa82612562565b6000806000806080858703121561277d57600080fd5b61278685612562565b935061279460208601612562565b93969395505050506040820135916060013590565b600080604083850312156127bc57600080fd5b61267e83612562565b6000602082840312156127d757600080fd5b5035919050565b600080604083850312156127f157600080fd5b8235915060208301356125df81612bca565b6000806040838503121561281657600080fd5b50508035926020909101359150565b60008060006060848603121561283a57600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561286657600080fd5b8351925060208401519150604084015190509250925092565b6000806000806080858703121561289557600080fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b039485168152929093166020830152604082015260ff909116606082015260800190565b600060208083528351808285015260005b81811015612909578581018301518582016040015282016128ed565b8181111561291b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f43616c6c6572206973206e6f742061207465616d206d656d6265720000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129ed5784516001600160a01b0316835293830193918301916001016129c8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115612a2157612a21612b9e565b500190565b600082612a4357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a83578160001904821115612a6957612a69612b9e565b80851615612a7657918102915b93841c9390800290612a4d565b509250929050565b6000610caa60ff841683600082612aa457506001610b91565b81612ab157506000610b91565b8160018114612ac75760028114612ad157612aed565b6001915050610b91565b60ff841115612ae257612ae2612b9e565b50506001821b610b91565b5060208310610133831016604e8410600b8410161715612b10575081810a610b91565b612b1a8383612a48565b8060001904821115612b2e57612b2e612b9e565b029392505050565b6000816000190483118215151615612b5057612b50612b9e565b500290565b600082821015612b6757612b67612b9e565b500390565b600081612b7b57612b7b612b9e565b506000190190565b6000600019821415612b9757612b97612b9e565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114612bdf57600080fd5b5056fea264697066735822122078f6f05d3bddc4ff9a2ce56ba3a20ecf5f026845b33d764d92fb65992fc4d6f464736f6c63430008070033

Verified Source Code Full Match

Compiler: v0.8.7+commit.e28d00a7 EVM: london Optimization: Yes (200 runs)
sss1.sol 543 lines
/*
MEET ELONS FIRST CAT schrodinger , you have seen MARVIN < GATSBY < now its time for the first cat of blockchain schrodinger
Telegram: https://t.me/SchrodingerEth
   _____      _                   _ _                       
  / ____|    | |                 | (_)                      
 | (___   ___| |__  _ __ ___   __| |_ _ __   __ _  ___ _ __ 
  \___ \ / __| '_ \| '__/ _ \ / _` | | '_ \ / _` |/ _ \ '__|
  ____) | (__| | | | | | (_) | (_| | | | | | (_| |  __/ |   
 |_____/ \___|_| |_|_|  \___/ \__,_|_|_| |_|\__, |\___|_|   
                                             __/ |          
                                            |___/           
 
*/
// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

library Address {
    /**
     * C U ON THE MOON
     */
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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 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 addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Ownable is Context {
    address private _owner;

    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);
    }
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract Schrodinger is IERC20, Ownable {
    using Address for address;
    
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Schrodinger";
    string constant _symbol = "Schrodinger";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 _maxBuyTxAmount = (_totalSupply * 1) / 2000;
    uint256 _maxSellTxAmount = (_totalSupply * 1) / 500;
    uint256 _maxWalletSize = (_totalSupply * 2) / 100;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => uint256) public lastSell;
    mapping (address => uint256) public lastBuy;

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

    uint256 marketingFee = 600;
    uint256 liquidityFee = 500;
    uint256 totalFee = marketingFee + liquidityFee;
    uint256 sellBias = 0;
    uint256 feeDenominator = 10000;

    address payable public liquidityFeeReceiver = payable(0x91b52208a79fCEd36151a6BAD9c2CA9FCC106D98);
    address payable public marketingFeeReceiver = payable(0x91b52208a79fCEd36151a6BAD9c2CA9FCC106D98);

    IDEXRouter public router;
    address routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    mapping (address => bool) liquidityPools;
    mapping (address => uint256) public protected;
    bool protectionEnabled = true;
    bool protectionDisabled = false;
    uint256 protectionLimit;
    uint256 public protectionCount;
    uint256 protectionTimer;

    address public pair;

    uint256 public launchedAt;
    uint256 public launchedTime;
    uint256 public deadBlocks;
    bool startBullRun = false;
    bool pauseDisabled = false;
    uint256 public rateLimit = 2;

    bool public swapEnabled = false;
    bool processEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000;
    uint256 public swapMinimum = _totalSupply / 10000;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    mapping (address => bool) teamMember;
    
    modifier onlyTeam() {
        require(teamMember[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
        _;
    }
    
    event ProtectedWallet(address, address, uint256, uint8);

    constructor () {
        router = IDEXRouter(routerAddress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        liquidityPools[pair] = true;
        _allowances[owner()][routerAddress] = type(uint256).max;
        _allowances[address(this)][routerAddress] = type(uint256).max;

        isFeeExempt[owner()] = true;
        liquidityCreator[owner()] = true;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[routerAddress] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[owner()] = _totalSupply;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function symbol() external pure returns (string memory) { return _symbol; }
    function name() external pure returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function maxBuyTxTokens() external view returns (uint256) { return _maxBuyTxAmount / (10 ** _decimals); }
    function maxSellTxTokens() external view returns (uint256) { return _maxSellTxAmount / (10 ** _decimals); }
    function maxWalletTokens() external view returns (uint256) { return _maxWalletSize / (10 ** _decimals); }
    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 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);
    }
    
    function setTeamMember(address _team, bool _enabled) external onlyOwner {
        teamMember[_team] = _enabled;
    }
    
    function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
        require(addresses.length > 0 && amounts.length == addresses.length);
        address from = msg.sender;

        for (uint i = 0; i < addresses.length; i++) {
            if(!liquidityPools[addresses[i]] && !liquidityCreator[addresses[i]]) {
                _basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
            }
        }
    }
    
    function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
        uint256 amountETH = address(this).balance;
        payable(adr).transfer((amountETH * amountPercentage) / 100);
    }
    
    function openTrading(uint256 _deadBlocks, uint256 _protection, uint256 _limit) external onlyTeam {
        require(!startBullRun && _deadBlocks < 10);
        deadBlocks = _deadBlocks;
        startBullRun = true;
        launchedAt = block.number;
        protectionTimer = block.timestamp + _protection;
        protectionLimit = _limit * (10 ** _decimals);
    }
    
    function pauseTrading() external onlyTeam {
        require(!pauseDisabled);
        startBullRun = false;
    }
    
    function disablePause() external onlyTeam {
        pauseDisabled = true;
        startBullRun = true;
    }
    
    function setProtection(bool _protect, uint256 _addTime) external onlyTeam {
        require(!protectionDisabled);
        protectionEnabled = _protect;
        require(_addTime < 1 days);
        protectionTimer += _addTime;
    }
    
    function disableProtection() external onlyTeam {
        protectionDisabled = true;
        protectionEnabled = false;
    }
    
    function protectWallet(address[] calldata _wallets, bool _protect) external onlyTeam {
        if (_protect) {
            require(protectionEnabled);
        }
        
        for (uint i = 0; i < _wallets.length; i++) {
            
            if (_protect) {
                protectionCount++;
                emit ProtectedWallet(tx.origin, _wallets[i], block.number, 2);
            }
            else {
                if (protected[_wallets[i]] != 0)
                    protectionCount--;      
            }
            protected[_wallets[i]] = _protect ? block.number : 0;
        }
    }

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

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "BEP20: transfer from 0x0");
        require(recipient != address(0), "BEP20: transfer to 0x0");
        require(amount > 0, "Amount must be > zero");
        require(_balances[sender] >= amount, "Insufficient balance");
        if(!launched() && liquidityPools[recipient]){ require(liquidityCreator[sender], "Liquidity not added yet."); launch(); }
        if(!startBullRun){ require(liquidityCreator[sender] || liquidityCreator[recipient], "Trading not open yet."); }

        checkTxLimit(sender, recipient, amount);
        
        if (!liquidityPools[recipient] && recipient != DEAD) {
            if (!isTxLimitExempt[recipient]) {
                checkWalletLimit(recipient, amount);
            }
        }
        
        if(protectionEnabled && protectionTimer > block.timestamp) {
            if(liquidityPools[sender] && tx.origin != recipient && protected[recipient] == 0) {
                protected[recipient] = block.number;
                protectionCount++;
                emit ProtectedWallet(tx.origin, recipient, block.number, 0);
            }
        }
        
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        _balances[sender] = _balances[sender] - amount;

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(recipient, amount) : amount;
        
        if(shouldSwapBack(recipient)){ if (amount > 0) swapBack(amount); }
        
        _balances[recipient] = _balances[recipient] + amountReceived;

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function launched() internal view returns (bool) {
        return launchedAt != 0;
    }

    function launch() internal {
        launchedAt = block.number;
        launchedTime = block.timestamp;
        swapEnabled = true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function checkWalletLimit(address recipient, uint256 amount) internal view {
        uint256 walletLimit = _maxWalletSize;
        require(_balances[recipient] + amount <= walletLimit, "Transfer amount exceeds the bag size.");
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal {
        require(isTxLimitExempt[sender] || amount <= (liquidityPools[sender] ? _maxBuyTxAmount : _maxSellTxAmount), "TX Limit Exceeded");
        require(isTxLimitExempt[sender] || lastBuy[recipient] + rateLimit <= block.number, "Transfer rate limit exceeded.");
        
        if (protected[sender] != 0){
            require(amount <= protectionLimit * (10 ** _decimals) && lastSell[sender] == 0 && protectionTimer > block.timestamp, "Wallet protected, please contact support.");
            lastSell[sender] = block.number;
        }
        
        if (liquidityPools[recipient]) {
            lastSell[sender] = block.number;
        } else if (shouldTakeFee(sender)) {
            if (protectionEnabled && protectionTimer > block.timestamp && lastBuy[tx.origin] == block.number && protected[recipient] == 0) {
                protected[recipient] = block.number;
                emit ProtectedWallet(tx.origin, recipient, block.number, 1);
            }
            lastBuy[recipient] = block.number;
            if (tx.origin != recipient)
                lastBuy[tx.origin] = block.number;
        }
    }

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

    function getTotalFee(bool selling) public view returns (uint256) {
        if(launchedAt + deadBlocks >= block.number){ return feeDenominator - 1; }
        if (selling) return totalFee + sellBias;
        return totalFee - sellBias;
    }

    function takeFee(address recipient, uint256 amount) internal returns (uint256) {
        bool selling = liquidityPools[recipient];
        uint256 feeAmount = (amount * getTotalFee(selling)) / feeDenominator;
        
        _balances[address(this)] += feeAmount;
    
        return amount - feeAmount;
    }

    function shouldSwapBack(address recipient) internal view returns (bool) {
        return !liquidityPools[msg.sender]
        && !inSwap
        && swapEnabled
        && liquidityPools[recipient]
        && _balances[address(this)] >= swapMinimum;
    }

    function swapBack(uint256 amount) internal swapping {
        uint256 amountToSwap = amount < swapThreshold ? amount : swapThreshold;
        if (_balances[address(this)] < amountToSwap) amountToSwap = _balances[address(this)];
        
        uint256 amountToLiquify = (amountToSwap * liquidityFee / 2) / totalFee;
        amountToSwap -= amountToLiquify;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        
        uint256 balanceBefore = address(this).balance;

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

        uint256 amountBNB = address(this).balance - balanceBefore;
        uint256 totalBNBFee = totalFee - (liquidityFee / 2);

        uint256 amountBNBLiquidity = (amountBNB * liquidityFee / 2) / totalBNBFee;
        uint256 amountBNBMarketing = amountBNB - amountBNBLiquidity;
        
        if (amountBNBMarketing > 0)
            marketingFeeReceiver.transfer(amountBNBMarketing);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                liquidityFeeReceiver,
                block.timestamp
            );
        }

        emit FundsDistributed(amountBNBMarketing, amountBNBLiquidity, amountToLiquify);
    }
    
    function addLiquidityPool(address lp, bool isPool) external onlyOwner {
        require(lp != pair, "Can't alter current liquidity pair");
        liquidityPools[lp] = isPool;
    }

    function setRateLimit(uint256 rate) external onlyOwner {
        require(rate <= 60 seconds);
        rateLimit = rate;
    }

    function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
        require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
        _maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
        _maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
    }
    
    function setMaxWallet(uint256 numerator, uint256 divisor) external onlyOwner() {
        require(numerator > 0 && divisor > 0 && divisor <= 10000);
        _maxWalletSize = (_totalSupply * numerator) / divisor;
    }

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

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _marketingFee, uint256 _sellBias, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        marketingFee = _marketingFee;
        totalFee = _marketingFee + _liquidityFee;
        sellBias = _sellBias;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 2);
    }

    function setFeeReceivers(address _liquidityFeeReceiver, address _marketingFeeReceiver) external onlyOwner {
        liquidityFeeReceiver = payable(_liquidityFeeReceiver);
        marketingFeeReceiver = payable(_marketingFeeReceiver);
    }

    function setSwapBackSettings(bool _enabled, bool _processEnabled, uint256 _denominator, uint256 _swapMinimum) external onlyOwner {
        require(_denominator > 0);
        swapEnabled = _enabled;
        processEnabled = _processEnabled;
        swapThreshold = _totalSupply / _denominator;
        swapMinimum = _swapMinimum * (10 ** _decimals);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply - (balanceOf(DEAD) + balanceOf(ZERO));
    }

    event FundsDistributed(uint256 marketingBNB, uint256 liquidityBNB, uint256 liquidityTokens);
    //C U ON THE MOON
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
deadBlocks 0xfabb0b4f → uint256
decimals 0x313ce567 → uint8
getCirculatingSupply 0x2b112e49 → uint256
getOwner 0x893d20e8 → address
getTotalFee 0xf1f3bca3 → uint256
lastBuy 0xc1adf7bc → uint256
lastSell 0x6f4ce428 → uint256
launchedAt 0xbf56b371 → uint256
launchedTime 0x5804f1e4 → uint256
liquidityFeeReceiver 0xbfa21d6a → address
marketingFeeReceiver 0xe96fada2 → address
maxBuyTxTokens 0xbafe446b → uint256
maxSellTxTokens 0x234e9494 → uint256
maxWalletTokens 0x63a803e1 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
protected 0x46d7edaa → uint256
protectionCount 0x9b02c402 → uint256
rateLimit 0x61e08e72 → uint256
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
swapMinimum 0xf8821a62 → uint256
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 24 functions

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

addLiquidityPool 0x492a937b
address lp
bool isPool
airdrop 0x67243482
address[] addresses
uint256[] amounts
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
clearStuckBalance 0x56a227f2
uint256 amountPercentage
address adr
disablePause 0x584f969a
No parameters
disableProtection 0x421dd7c7
No parameters
openTrading 0x34848b9a
uint256 _deadBlocks
uint256 _protection
uint256 _limit
pauseTrading 0x1031e36e
No parameters
protectWallet 0x095db78f
address[] _wallets
bool _protect
renounceOwnership 0x715018a6
No parameters
setFeeReceivers 0xa4b45c00
address _liquidityFeeReceiver
address _marketingFeeReceiver
setFees 0x6fcba377
uint256 _liquidityFee
uint256 _marketingFee
uint256 _sellBias
uint256 _feeDenominator
setIsFeeExempt 0x658d4b7f
address holder
bool exempt
setIsTxLimitExempt 0xf84ba65d
address holder
bool exempt
setMaxWallet 0xabe57e70
uint256 numerator
uint256 divisor
setProtection 0xd6860142
bool _protect
uint256 _addTime
setRateLimit 0xc287184e
uint256 rate
setSwapBackSettings 0x54a1dfc9
bool _enabled
bool _processEnabled
uint256 _denominator
uint256 _swapMinimum
setTeamMember 0x60bba03d
address _team
bool _enabled
setTxLimit 0x50713935
uint256 buyNumerator
uint256 sellNumerator
uint256 divisor
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address