Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x712277e821913D97Bac0D396ee0de059c97AA7A3
Balance 0 ETH
Nonce 1
Code Size 11063 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11063 bytes
0x608060405260043610610395575f3560e01c8063902d55a5116101de578063c54b2c8f11610108578063dd4c19aa1161009d578063eb7e29471161006d578063eb7e294714610aca578063ece97f0c14610af8578063f2fde38b14610b23578063f9e96ff914610b42575f5ffd5b8063dd4c19aa14610a35578063dd62ed3e14610a54578063e1bb33da14610a8a578063e26ffe0814610a9f575f5ffd5b8063d5e4742d116100d8578063d5e4742d146109c0578063d6e2df05146109df578063da958696146109fe578063dc6102d314610a13575f5ffd5b8063c54b2c8f1461093d578063cdc0519f1461095e578063cea9d26f1461098c578063d2f343c7146109ab575f5ffd5b8063afcda52f1161017e578063b753bfe91161014e578063b753bfe9146108cc578063bc994acd146108e1578063bf24cad314610900578063c4590d3f1461091e575f5ffd5b8063afcda52f1461084b578063b0c150af14610860578063b1c255861461088e578063b746e6a1146108ad575f5ffd5b80639ae697bf116101b95780639ae697bf146107ce578063a9059cbb146107f9578063a9d807f014610818578063aa4bde2814610837575f5ffd5b8063902d55a51461077c578063959c80d51461079b57806395d89b41146107ba575f5ffd5b806340a24e6c116102bf57806370a082311161025f5780638a8c523c1161022f5780638a8c523c146107115780638c0b5e22146107255780638d331996146107395780638da5cb5b14610758575f5ffd5b806370a082311461067b57806374db9d11146106a65780637862e2df146106d157806389cde9dd146106e6575f5ffd5b8063590c1eb51161029a578063590c1eb5146106055780635f6ab8a31461062557806361d027b3146106445780636e0203e314610482575f5ffd5b806340a24e6c1461059f5780634ada218b146105be5780634e83423c146105d7575f5ffd5b806318160ddd1161033557806323b872dd1161030557806323b872dd146105175780632a7ea9d214610536578063313ce567146105555780633519a2f814610580575f5ffd5b806318160ddd1461048d5780631acec795146104b55780631bd5001d146104d45780631fd30aba14610502575f5ffd5b8063099a04e511610370578063099a04e51461042357806315b6c1761461044457806316f2c831146104635780631781715214610482575f5ffd5b8063060e7844146103a057806306fdde03146103e3578063095ea7b314610404575f5ffd5b3661039c57005b5f5ffd5b3480156103ab575f5ffd5b506103ce6103ba36600461267a565b60096020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b3480156103ee575f5ffd5b506103f7610b61565b6040516103da91906126c8565b34801561040f575f5ffd5b506103ce61041e3660046126da565b610bec565b34801561042e575f5ffd5b5061044261043d3660046126da565b610c58565b005b34801561044f575f5ffd5b5061044261045e366004612712565b610cc8565b34801561046e575f5ffd5b506011546103ce9062010000900460ff1681565b348015610442575f5ffd5b348015610498575f5ffd5b506b033b2e3c9fd0803ce80000005b6040519081526020016103da565b3480156104c0575f5ffd5b506104426104cf3660046127e6565b610d21565b3480156104df575f5ffd5b506103ce6104ee36600461267a565b600b6020525f908152604090205460ff1681565b34801561050d575f5ffd5b506104a760145481565b348015610522575f5ffd5b506103ce61053136600461282a565b610f34565b348015610541575f5ffd5b50610442610550366004612864565b611015565b348015610560575f5ffd5b5060025461056e9060ff1681565b60405160ff90911681526020016103da565b34801561058b575f5ffd5b5061044261059a3660046128b7565b6111ba565b3480156105aa575f5ffd5b506104426105b9366004612712565b6112a4565b3480156105c9575f5ffd5b506011546103ce9060ff1681565b3480156105e2575f5ffd5b506103ce6105f136600461267a565b600c6020525f908152604090205460ff1681565b348015610610575f5ffd5b506011546103ce906301000000900460ff1681565b348015610630575f5ffd5b5061044261063f3660046128ce565b6112fd565b34801561064f575f5ffd5b50600354610663906001600160a01b031681565b6040516001600160a01b0390911681526020016103da565b348015610686575f5ffd5b506104a761069536600461267a565b60046020525f908152604090205481565b3480156106b1575f5ffd5b506104a76106c036600461267a565b60086020525f908152604090205481565b3480156106dc575f5ffd5b506104a760135481565b3480156106f1575f5ffd5b506104a761070036600461267a565b60106020525f908152604090205481565b34801561071c575f5ffd5b506104426114f2565b348015610730575f5ffd5b506104a7611558565b348015610744575f5ffd5b506104426107533660046128b7565b611585565b348015610763575f5ffd5b506002546106639061010090046001600160a01b031681565b348015610787575f5ffd5b506104a76b033b2e3c9fd0803ce800000081565b3480156107a6575f5ffd5b506104426107b5366004612712565b6115ff565b3480156107c5575f5ffd5b506103f7611658565b3480156107d9575f5ffd5b506104a76107e836600461267a565b600f6020525f908152604090205481565b348015610804575f5ffd5b506103ce6108133660046126da565b611665565b348015610823575f5ffd5b506104426108323660046128b7565b61167a565b348015610842575f5ffd5b506104a76116e8565b348015610856575f5ffd5b506104a760185481565b34801561086b575f5ffd5b506103ce61087a36600461267a565b600a6020525f908152604090205460ff1681565b348015610899575f5ffd5b506104426108a83660046126da565b611706565b3480156108b8575f5ffd5b506104426108c73660046126da565b6117e5565b3480156108d7575f5ffd5b506104a760165481565b3480156108ec575f5ffd5b506104426108fb3660046128b7565b6119fb565b34801561090b575f5ffd5b506011546103ce90610100900460ff1681565b348015610929575f5ffd5b5061044261093836600461292b565b611a6a565b348015610948575f5ffd5b506011546103ce90640100000000900460ff1681565b348015610969575f5ffd5b506103ce61097836600461267a565b600e6020525f908152604090205460ff1681565b348015610997575f5ffd5b506104426109a636600461282a565b611aef565b3480156109b6575f5ffd5b506104a760155481565b3480156109cb575f5ffd5b506104426109da366004612712565b611c64565b3480156109ea575f5ffd5b506104426109f9366004612712565b611cbd565b348015610a09575f5ffd5b506104a760125481565b348015610a1e575f5ffd5b506011546103ce9065010000000000900460ff1681565b348015610a40575f5ffd5b50610442610a4f366004612712565b611d16565b348015610a5f575f5ffd5b506104a7610a6e36600461294b565b600560209081525f928352604080842090915290825290205481565b348015610a95575f5ffd5b506104a760175481565b348015610aaa575f5ffd5b506104a7610ab936600461267a565b60066020525f908152604090205481565b348015610ad5575f5ffd5b506103ce610ae436600461267a565b600d6020525f908152604090205460ff1681565b348015610b03575f5ffd5b506104a7610b1236600461267a565b60076020525f908152604090205481565b348015610b2e575f5ffd5b50610442610b3d36600461267a565b611d6f565b348015610b4d575f5ffd5b50610442610b5c3660046128b7565b611e2a565b5f8054610b6d9061297c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b999061297c565b8015610be45780601f10610bbb57610100808354040283529160200191610be4565b820191905f5260205f20905b815481529060010190602001808311610bc757829003601f168201915b505050505081565b335f8181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610c469086815260200190565b60405180910390a35060015b92915050565b60025461010090046001600160a01b03163314610c905760405162461bcd60e51b8152600401610c87906129b4565b60405180910390fd5b6040516001600160a01b0383169082156108fc029083905f818181858888f19350505050158015610cc3573d5f5f3e3d5ffd5b505050565b60025461010090046001600160a01b03163314610cf75760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600960205260409020805460ff1916911515919091179055565b60025461010090046001600160a01b03163314610d505760405162461bcd60e51b8152600401610c87906129b4565b815160208301207f8722566921b6b4a660249937c9a7d920647f2efe2e3156ce4a05c8ac0358547b01610d95576011805461ff00191661010083151502179055610ef7565b815160208301207fc432547b27d4d786bfcd017d8d4b256ad688a5927a7c9e58596fb6f74614f7f901610ddc576011805462ff000019166201000083151502179055610ef7565b815160208301207fb037059b9f9467a4e2c30d59b5d45929165219e471c144d9e62a1329a2935e1801610e25576011805463ff0000001916630100000083151502179055610ef7565b815160208301207f0dcdc0e72befb35411875c2e6f242311f4009b76d4b4a4e03307de2e705205e101610e70576011805464ff00000000191664010000000083151502179055610ef7565b815160208301207f139a0c897398226a6e859b2f78864620836e1aab205e8f9016be7ca41426d15901610ebd576011805465ff000000000019166501000000000083151502179055610ef7565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206665617475726560881b6044820152606401610c87565b7f43a0148be74197659be43bacdac4e492c6e55291225e29fd4f098868ff304fc18282604051610f289291906129d7565b60405180910390a15050565b6001600160a01b0383165f90815260056020908152604080832033845290915281205482811015610f9c5760405162461bcd60e51b8152602060048201526012602482015271105b1b1bddd85b98d948195e18d95959195960721b6044820152606401610c87565b610fa68382612a0e565b6001600160a01b0386165f81815260056020908152604080832033808552908352928190208590555193845290927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a361100a858585611e9f565b506001949350505050565b335f908152600c602052604090205460ff1680611041575060025461010090046001600160a01b031633145b61107e5760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c87565b6001600160a01b0383166110a45760405162461bcd60e51b8152600401610c8790612a21565b305f908152600460205260409020548211156110f65760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610c87565b305f9081526004602052604081208054849290611114908490612a0e565b90915550506001600160a01b0383165f9081526004602052604081208054849290611140908490612a47565b90915550506040518281526001600160a01b0384169030905f516020612ae25f395f51905f529060200160405180910390a3826001600160a01b03167fe3b79b7eb96061c2eb1347aed14a9dc16af77d12d080cc95aae2d186ca61260a83836040516111ad929190612a5a565b60405180910390a2505050565b60025461010090046001600160a01b031633146111e95760405162461bcd60e51b8152600401610c87906129b4565b335f908152600460205260409020548111156112375760405162461bcd60e51b815260206004820152600d60248201526c199d5b990e881b1bddc818985b609a1b6044820152606401610c87565b335f9081526004602052604081208054839290611255908490612a0e565b9091555050305f9081526004602052604081208054839290611278908490612a47565b9091555050604051818152309033905f516020612ae25f395f51905f529060200160405180910390a350565b60025461010090046001600160a01b031633146112d35760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b335f908152600c602052604090205460ff1680611329575060025461010090046001600160a01b031633145b6113665760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610c87565b6001600160a01b03841661138c5760405162461bcd60e51b8152600401610c8790612a21565b305f908152600460205260409020548311156113de5760405162461bcd60e51b81526020600482015260116024820152704e6f7420656e6f75676820746f6b656e7360781b6044820152606401610c87565b305f90815260046020526040812080548592906113fc908490612a0e565b90915550506001600160a01b0384165f9081526004602052604081208054859290611428908490612a47565b90915550506001600160a01b0384165f908152600f602052604081208054859290611454908490612a47565b9091555061146490508242612a47565b6001600160a01b0385165f818152601060205260409081902092909255905130905f516020612ae25f395f51905f52906114a19087815260200190565b60405180910390a3836001600160a01b03167fe3b79b7eb96061c2eb1347aed14a9dc16af77d12d080cc95aae2d186ca61260a84836040516114e4929190612a5a565b60405180910390a250505050565b60025461010090046001600160a01b031633146115215760405162461bcd60e51b8152600401610c87906129b4565b6011805460ff191660011790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c7905f90a1565b5f6127106017546b033b2e3c9fd0803ce80000006115769190612a7a565b6115809190612a91565b905090565b60025461010090046001600160a01b031633146115b45760405162461bcd60e51b8152600401610c87906129b4565b60018110156115fa5760405162461bcd60e51b815260206004820152601260248201527174696d6557696e646f7720746f6f206c6f7760701b6044820152606401610c87565b601555565b60025461010090046001600160a01b0316331461162e5760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b60018054610b6d9061297c565b5f611671338484611e9f565b50600192915050565b60025461010090046001600160a01b031633146116a95760405162461bcd60e51b8152600401610c87906129b4565b60018110156116e35760405162461bcd60e51b8152602060048201526006602482015265667265713c3160d01b6044820152606401610c87565b601455565b5f6127106018546b033b2e3c9fd0803ce80000006115769190612a7a565b60025461010090046001600160a01b031633146117355760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b0382165f9081526004602052604090205481111561178b5760405162461bcd60e51b815260206004820152600c60248201526b125b9cdd59999a58da595b9d60a21b6044820152606401610c87565b6001600160a01b0382165f908152600f6020526040812080548392906117b2908490612a47565b909155506117c69050426301e13380612a47565b6001600160a01b039092165f9081526010602052604090209190915550565b60025461010090046001600160a01b031633146118145760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b0382166118565760405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b6044820152606401610c87565b60165481111561189f5760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e74207265736572766560601b6044820152606401610c87565b305f908152600460205260409020548111156118f45760405162461bcd60e51b8152602060048201526014602482015273636f6e74726163742062616c616e6365206c6f7760601b6044820152606401610c87565b8060165f8282546119059190612a0e565b9091555050305f9081526004602052604081208054839290611928908490612a0e565b90915550506001600160a01b0382165f9081526004602052604081208054839290611954908490612a47565b90915550506040518181526001600160a01b0383169030905f516020612ae25f395f51905f529060200160405180910390a3604080516001600160a01b0384168152602081018390527f731c4d5834cb99427f762f81ed43118ac0de5a1a0194fb326be6154181a2546f910160405180910390a17f3b2e2bb5800be896083e3959a31b06d1e26dafb207d0e70a4c4f71c343af8737601654604051610f2891815260200190565b60025461010090046001600160a01b03163314611a2a5760405162461bcd60e51b8152600401610c87906129b4565b612710811115611a655760405162461bcd60e51b815260206004820152600660248201526506261642062760d41b6044820152606401610c87565b601355565b60025461010090046001600160a01b03163314611a995760405162461bcd60e51b8152600401610c87906129b4565b600a8210158015611aab5750600a8110155b611ae45760405162461bcd60e51b815260206004820152600a6024820152691d1bdbc81cdd1c9a58dd60b21b6044820152606401610c87565b601791909155601855565b60025461010090046001600160a01b03163314611b1e5760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b038216611b605760405162461bcd60e51b81526020600482015260096024820152683d32b9379030b2323960b91b6044820152606401610c87565b6040516001600160a01b038381166024830152604482018390525f91829186169060640160408051601f198184030181529181526020820180516001600160e01b031663a9059cbb60e01b17905251611bb99190612ab0565b5f604051808303815f865af19150503d805f8114611bf2576040519150601f19603f3d011682016040523d82523d5f602084013e611bf7565b606091505b5091509150818015611c21575080511580611c21575080806020019051810190611c219190612ac6565b611c5d5760405162461bcd60e51b815260206004820152600d60248201526c1c995cd8dd594819985a5b1959609a1b6044820152606401610c87565b5050505050565b60025461010090046001600160a01b03163314611c935760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600d60205260409020805460ff1916911515919091179055565b60025461010090046001600160a01b03163314611cec5760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600e60205260409020805460ff1916911515919091179055565b60025461010090046001600160a01b03163314611d455760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b03919091165f908152600b60205260409020805460ff1916911515919091179055565b60025461010090046001600160a01b03163314611d9e5760405162461bcd60e51b8152600401610c87906129b4565b6001600160a01b038116611dc45760405162461bcd60e51b8152600401610c8790612a21565b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b60025461010090046001600160a01b03163314611e595760405162461bcd60e51b8152600401610c87906129b4565b6107d0811115611e9a5760405162461bcd60e51b815260206004820152600c60248201526b0e8c2f040e8dede40d0d2ced60a31b6044820152606401610c87565b601255565b6001600160a01b038216611ec55760405162461bcd60e51b8152600401610c8790612a21565b6001600160a01b0383165f90815260046020526040902054811115611f1e5760405162461bcd60e51b815260206004820152600f60248201526e42616c616e636520746f6f206c6f7760881b6044820152606401610c87565b60115460ff1680611f4657506001600160a01b0383165f908152600a602052604090205460ff165b80611f6857506001600160a01b0382165f908152600a602052604090205460ff165b80611f8a57506001600160a01b0383165f9081526009602052604090205460ff165b80611fac57506001600160a01b0382165f9081526009602052604090205460ff165b611feb5760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b6044820152606401610c87565b6001600160a01b0383165f908152600d602052604090205460ff16156120615760405162461bcd60e51b815260206004820152602560248201527f52657374726963746564206163636f756e742063616e6e6f742073656e6420746044820152646f6b656e7360d81b6064820152608401610c87565b6001600160a01b0383165f908152601060205260409020544210156120e6576001600160a01b0383165f908152600f60209081526040808320546004909252909120546120af908390612a0e565b10156120e65760405162461bcd60e51b8152602060048201526006602482015265131bd8dad95960d21b6044820152606401610c87565b6001600160a01b0383165f908152600a602052604090205460ff16612264576001600160a01b0383165f90815260086020526040902054430361216b5760405162461bcd60e51b815260206004820152601860248201527f53616d6520626c6f636b20747261646520626c6f636b656400000000000000006044820152606401610c87565b6015546001600160a01b0384165f908152600660205260409020546121909042612a0e565b1015612220576001600160a01b0383165f9081526007602052604081208054600192906121be908490612a47565b90915550506014546001600160a01b0384165f90815260076020526040902054111561221b5760405162461bcd60e51b815260206004820152600c60248201526b109bdd0819195d1958dd195960a21b6044820152606401610c87565b61223c565b6001600160a01b0383165f908152600760205260409020600190555b6001600160a01b0383165f908152600660209081526040808320429055600890915290204390555b6001600160a01b0383165f908152600a602052604090205460ff161580156122a457506001600160a01b0382165f908152600a602052604090205460ff16155b1561236c576122b1611558565b8111156122e85760405162461bcd60e51b81526020600482015260056024820152640dac2f0a8f60db1b6044820152606401610c87565b6001600160a01b0382165f908152600e602052604090205460ff1661236c5761230f6116e8565b6001600160a01b0383165f90815260046020526040902054612332908390612a47565b111561236c5760405162461bcd60e51b81526020600482015260096024820152681b585e15d85b1b195d60ba1b6044820152606401610c87565b6001600160a01b0383165f90815260096020526040902054819060ff161580156123ae57506001600160a01b0383165f9081526009602052604090205460ff16155b80156123bb57505f601254115b80156123c9575060115460ff165b156125c5575f612710601254846123e09190612a7a565b6123ea9190612a91565b90505f612710601354836123fe9190612a7a565b6124089190612a91565b90505f6124158284612a0e565b6001600160a01b0388165f90815260046020526040812080549293508492909190612441908490612a0e565b9091555050305f9081526004602052604081208054849290612464908490612a47565b925050819055508160165f82825461247c9190612a47565b909155505060405182815230906001600160a01b038916905f516020612ae25f395f51905f529060200160405180910390a37f3b2e2bb5800be896083e3959a31b06d1e26dafb207d0e70a4c4f71c343af87376016546040516124e191815260200190565b60405180910390a1801561257c576001600160a01b0387165f9081526004602052604081208054839290612516908490612a0e565b90915550506003546001600160a01b03165f9081526004602052604081208054839290612544908490612a47565b90915550506003546040518281526001600160a01b03918216918916905f516020612ae25f395f51905f529060200160405180910390a35b6125868386612a0e565b93507f860c0aa5520013080c2f65981705fcdea474d9f7c3daf954656ed5e65d692d1f836040516125b991815260200190565b60405180910390a15050505b6001600160a01b0384165f90815260046020526040812080548392906125ec908490612a0e565b90915550506001600160a01b0383165f9081526004602052604081208054839290612618908490612a47565b92505081905550826001600160a01b0316846001600160a01b03165f516020612ae25f395f51905f528360405161265191815260200190565b60405180910390a350505050565b80356001600160a01b0381168114612675575f5ffd5b919050565b5f6020828403121561268a575f5ffd5b6126938261265f565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f612693602083018461269a565b5f5f604083850312156126eb575f5ffd5b6126f48361265f565b946020939093013593505050565b801515811461270f575f5ffd5b50565b5f5f60408385031215612723575f5ffd5b61272c8361265f565b9150602083013561273c81612702565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261276a575f5ffd5b813567ffffffffffffffff81111561278457612784612747565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156127b3576127b3612747565b6040528181528382016020018510156127ca575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156127f7575f5ffd5b823567ffffffffffffffff81111561280d575f5ffd5b6128198582860161275b565b925050602083013561273c81612702565b5f5f5f6060848603121561283c575f5ffd5b6128458461265f565b92506128536020850161265f565b929592945050506040919091013590565b5f5f5f60608486031215612876575f5ffd5b61287f8461265f565b925060208401359150604084013567ffffffffffffffff8111156128a1575f5ffd5b6128ad8682870161275b565b9150509250925092565b5f602082840312156128c7575f5ffd5b5035919050565b5f5f5f5f608085870312156128e1575f5ffd5b6128ea8561265f565b93506020850135925060408501359150606085013567ffffffffffffffff811115612913575f5ffd5b61291f8782880161275b565b91505092959194509250565b5f5f6040838503121561293c575f5ffd5b50508035926020909101359150565b5f5f6040838503121561295c575f5ffd5b6129658361265f565b91506129736020840161265f565b90509250929050565b600181811c9082168061299057607f821691505b6020821081036129ae57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b604081525f6129e9604083018561269a565b905082151560208301529392505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610c5257610c526129fa565b6020808252600c908201526b5a65726f206164647265737360a01b604082015260600190565b80820180821115610c5257610c526129fa565b828152604060208201525f612a72604083018461269a565b949350505050565b8082028115828204841417610c5257610c526129fa565b5f82612aab57634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b5f60208284031215612ad6575f5ffd5b81516126938161270256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f742ac5879e031deacd93e9719b74beb07abebcfa57bec188bf0c1ce5b0321f464736f6c634300081e0033

Verified Source Code Full Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: Yes (200 runs)
GENSPX.sol 276 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

contract GenesisSPX {
    string public name = "Genesis SPX";
    string public symbol = "GENSPX";
    uint8  public decimals = 18;
    uint256 public constant TOTAL_SUPPLY = 1_000_000_000 * 10**18;

    address public owner;
    address public treasury;

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    mapping(address => uint256) public lastTradeTimestamp;
    mapping(address => uint256) public tradeFrequency;
    mapping(address => uint256) public lastTradeBlock;

    mapping(address => bool) public isExemptFromTax;
    mapping(address => bool) public isLimitExempt;
    mapping(address => bool) public isWhitelistedApp;
    mapping(address => bool) public isRewardManager;
    mapping(address => bool) public isRestrictedProjectAccount;
    mapping(address => bool) public isMarketMaker;

    mapping(address => uint256) public lockedBalance;
    mapping(address => uint256) public lockExpiry;

    bool public tradingEnabled = false;
    bool public enableAITriggers = false;
    bool public enableInOutTracking = false;
    bool public enableGeoLogic = false;
    bool public enableBehavioralLimits = false;
    bool public enableSmartEscrow = false;

    uint256 public dynamicTaxBP = 200;
    uint256 public liquidityTaxShareBP = 7000;
    uint256 public frequencyThreshold = 3;
    uint256 public timeWindow = 60;

    uint256 public liquidityReserve;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed ownerA, address indexed spender, uint256 value);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event TradingEnabled();
    event FeatureToggled(string feature, bool enabled);
    event RewardGiven(address indexed to, uint256 amount, string reason);
    event LiquidityReserveUpdated(uint256 newReserve);
    event LiquidityTokensSent(address to, uint256 amount);
    event FeesCollected(uint256 tax);

    modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; }
    modifier onlyRewardManager() { require(isRewardManager[msg.sender] || msg.sender == owner, "Not authorized"); _; }

    constructor(address _treasury) {
        require(_treasury != address(0), "Invalid treasury");
        owner = msg.sender;
        treasury = _treasury;

        balanceOf[address(this)] = TOTAL_SUPPLY;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);

        isExemptFromTax[owner] = true;
        isExemptFromTax[treasury] = true;
        isLimitExempt[owner] = true;
        isLimitExempt[address(this)] = true;
    }

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

    function approve(address spender, uint256 value) external returns (bool) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

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

    function transferFrom(address from, address to, uint256 amount) external returns (bool) {
        uint256 al = allowance[from][msg.sender];
        require(al >= amount, "Allowance exceeded");
        allowance[from][msg.sender] = al - amount;
        emit Approval(from, msg.sender, allowance[from][msg.sender]);
        _transfer(from, to, amount);
        return true;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
        emit TradingEnabled();
    }

    function setRouterPlaceholder() external pure {}

    function setRewardManager(address who, bool allowed) external onlyOwner {
        isRewardManager[who] = allowed;
    }

    function setRestrictedProjectAccount(address who, bool restricted) external onlyOwner {
        isRestrictedProjectAccount[who] = restricted;
    }

    function setExemptFromTax(address who, bool exempt) external onlyOwner {
        isExemptFromTax[who] = exempt;
    }

    function setLimitExempt(address who, bool exempt) external onlyOwner {
        isLimitExempt[who] = exempt;
    }

    function setMarketMaker(address who, bool mm) external onlyOwner {
        isMarketMaker[who] = mm;
    }

    function lockTokens(address account, uint256 amount) external onlyOwner {
        require(balanceOf[account] >= amount, "Insufficient");
        lockedBalance[account] += amount;
        lockExpiry[account] = block.timestamp + 365 days;
    }

    function distributeReward(address to, uint256 amount, string memory reason) external onlyRewardManager {
        require(to != address(0), "Zero address");
        require(balanceOf[address(this)] >= amount, "Not enough tokens");
        balanceOf[address(this)] -= amount;
        balanceOf[to] += amount;
        emit Transfer(address(this), to, amount);
        emit RewardGiven(to, amount, reason);
    }

    function rewardWithLock(address to, uint256 amount, uint256 duration, string memory reason) external onlyRewardManager {
        require(to != address(0), "Zero address");
        require(balanceOf[address(this)] >= amount, "Not enough tokens");
        balanceOf[address(this)] -= amount;
        balanceOf[to] += amount;
        lockedBalance[to] += amount;
        lockExpiry[to] = block.timestamp + duration;
        emit Transfer(address(this), to, amount);
        emit RewardGiven(to, amount, reason);
    }

    function _transfer(address from, address to, uint256 amount) internal {
        require(to != address(0), "Zero address");
        require(balanceOf[from] >= amount, "Balance too low");
        require(tradingEnabled || isLimitExempt[from] || isLimitExempt[to] || isExemptFromTax[from] || isExemptFromTax[to], "Trading disabled");
        require(!isRestrictedProjectAccount[from], "Restricted account cannot send tokens");

        if (lockExpiry[from] > block.timestamp) {
            require(balanceOf[from] - amount >= lockedBalance[from], "Locked");
        }

        if (!isLimitExempt[from]) {
            if (block.number == lastTradeBlock[from]) revert("Same block trade blocked");
            if (block.timestamp - lastTradeTimestamp[from] < timeWindow) {
                tradeFrequency[from] += 1;
                require(tradeFrequency[from] <= frequencyThreshold, "Bot detected");
            } else {
                tradeFrequency[from] = 1;
            }
            lastTradeTimestamp[from] = block.timestamp;
            lastTradeBlock[from] = block.number;
        }

        if (!isLimitExempt[from] && !isLimitExempt[to]) {
            require(amount <= maxTxAmount(), "maxTx");
            if (!isMarketMaker[to]) {
                require(balanceOf[to] + amount <= maxWalletAmount(), "maxWallet");
            }
        }

        uint256 transferAmount = amount;

        if (!isExemptFromTax[from] && !isExemptFromTax[to] && dynamicTaxBP > 0 && tradingEnabled) {
            uint256 tax = (amount * dynamicTaxBP) / 10000;
            uint256 toLiquidity = (tax * liquidityTaxShareBP) / 10000;
            uint256 toTreasury = tax - toLiquidity;

            balanceOf[from] -= toLiquidity;
            balanceOf[address(this)] += toLiquidity;
            liquidityReserve += toLiquidity;
            emit Transfer(from, address(this), toLiquidity);
            emit LiquidityReserveUpdated(liquidityReserve);

            if (toTreasury > 0) {
                balanceOf[from] -= toTreasury;
                balanceOf[treasury] += toTreasury;
                emit Transfer(from, treasury, toTreasury);
            }

            transferAmount = amount - tax;
            emit FeesCollected(tax);
        }

        balanceOf[from] -= transferAmount;
        balanceOf[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function _approveInternal(address owner_, address spender, uint256 amount) internal {
        allowance[owner_][spender] = amount;
        emit Approval(owner_, spender, amount);
    }

    function sendLiquidityTokensTo(address to, uint256 amount) external onlyOwner {
        require(to != address(0), "zero addr");
        require(amount <= liquidityReserve, "insufficient reserve");
        require(balanceOf[address(this)] >= amount, "contract balance low");

        liquidityReserve -= amount;
        balanceOf[address(this)] -= amount;
        balanceOf[to] += amount;

        emit Transfer(address(this), to, amount);
        emit LiquidityTokensSent(to, amount);
        emit LiquidityReserveUpdated(liquidityReserve);
    }

    function fundContract(uint256 amount) external onlyOwner {
        require(balanceOf[msg.sender] >= amount, "fund: low bal");
        balanceOf[msg.sender] -= amount;
        balanceOf[address(this)] += amount;
        emit Transfer(msg.sender, address(this), amount);
    }

    function toggleFeature(string memory feature, bool enabled) external onlyOwner {
        if (keccak256(bytes(feature)) == keccak256("AI")) enableAITriggers = enabled;
        else if (keccak256(bytes(feature)) == keccak256("INOUT")) enableInOutTracking = enabled;
        else if (keccak256(bytes(feature)) == keccak256("GEO")) enableGeoLogic = enabled;
        else if (keccak256(bytes(feature)) == keccak256("BEHAVIOR")) enableBehavioralLimits = enabled;
        else if (keccak256(bytes(feature)) == keccak256("ESCROW")) enableSmartEscrow = enabled;
        else revert("Invalid feature");
        emit FeatureToggled(feature, enabled);
    }

    function registerApp(address app, bool approved) external onlyOwner {
        isWhitelistedApp[app] = approved;
    }

    function setTaxBP(uint256 bp) external onlyOwner { require(bp <= 2000, "tax too high"); dynamicTaxBP = bp; }
    function setLiquidityTaxShareBP(uint256 bp) external onlyOwner { require(bp <= 10000, "bad bp"); liquidityTaxShareBP = bp; }
    function setFrequencyThreshold(uint256 freq) external onlyOwner { require(freq >= 1, "freq<1"); frequencyThreshold = freq; }
    function setTimeWindow(uint256 secondsWindow) external onlyOwner { require(secondsWindow >= 1, "timeWindow too low"); timeWindow = secondsWindow; }
    function setLPReceiverPlaceholder() external pure {}

    uint256 public maxTxBP = 200;
    uint256 public maxWalletBP = 200;
    function setLimits(uint256 _maxTxBP, uint256 _maxWalletBP) external onlyOwner {
        require(_maxTxBP >= 10 && _maxWalletBP >= 10, "too strict");
        maxTxBP = _maxTxBP;
        maxWalletBP = _maxWalletBP;
    }
    function maxTxAmount() public view returns (uint256) { return (TOTAL_SUPPLY * maxTxBP) / 10000; }
    function maxWalletAmount() public view returns (uint256) { return (TOTAL_SUPPLY * maxWalletBP) / 10000; }

    function rescueTokens(address tokenContract, address to, uint256 amount) external onlyOwner {
        require(to != address(0), "zero addr");
        (bool ok, bytes memory data) = tokenContract.call(abi.encodeWithSignature("transfer(address,uint256)", to, amount));
        require(ok && (data.length == 0 || abi.decode(data, (bool))), "rescue failed");
    }

    function rescueETH(address to, uint256 amount) external onlyOwner {
        payable(to).transfer(amount);
    }

    receive() external payable {}
}

Read Contract

TOTAL_SUPPLY 0x902d55a5 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
dynamicTaxBP 0xda958696 → uint256
enableAITriggers 0xbf24cad3 → bool
enableBehavioralLimits 0xc54b2c8f → bool
enableGeoLogic 0x590c1eb5 → bool
enableInOutTracking 0x16f2c831 → bool
enableSmartEscrow 0xdc6102d3 → bool
frequencyThreshold 0x1fd30aba → uint256
isExemptFromTax 0x060e7844 → bool
isLimitExempt 0xb0c150af → bool
isMarketMaker 0xcdc0519f → bool
isRestrictedProjectAccount 0xeb7e2947 → bool
isRewardManager 0x4e83423c → bool
isWhitelistedApp 0x1bd5001d → bool
lastTradeBlock 0x74db9d11 → uint256
lastTradeTimestamp 0xe26ffe08 → uint256
liquidityReserve 0xb753bfe9 → uint256
liquidityTaxShareBP 0x7862e2df → uint256
lockExpiry 0x89cde9dd → uint256
lockedBalance 0x9ae697bf → uint256
maxTxAmount 0x8c0b5e22 → uint256
maxTxBP 0xe1bb33da → uint256
maxWalletAmount 0xaa4bde28 → uint256
maxWalletBP 0xafcda52f → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
setLPReceiverPlaceholder 0x17817152
setRouterPlaceholder 0x6e0203e3
symbol 0x95d89b41 → string
timeWindow 0xd2f343c7 → uint256
totalSupply 0x18160ddd → uint256
tradeFrequency 0xece97f0c → uint256
tradingEnabled 0x4ada218b → bool
treasury 0x61d027b3 → address

Write Contract 24 functions

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

approve 0x095ea7b3
address spender
uint256 value
returns: bool
distributeReward 0x2a7ea9d2
address to
uint256 amount
string reason
enableTrading 0x8a8c523c
No parameters
fundContract 0x3519a2f8
uint256 amount
lockTokens 0xb1c25586
address account
uint256 amount
registerApp 0xdd4c19aa
address app
bool approved
rescueETH 0x099a04e5
address to
uint256 amount
rescueTokens 0xcea9d26f
address tokenContract
address to
uint256 amount
rewardWithLock 0x5f6ab8a3
address to
uint256 amount
uint256 duration
string reason
sendLiquidityTokensTo 0xb746e6a1
address to
uint256 amount
setExemptFromTax 0x15b6c176
address who
bool exempt
setFrequencyThreshold 0xa9d807f0
uint256 freq
setLimitExempt 0x40a24e6c
address who
bool exempt
setLimits 0xc4590d3f
uint256 _maxTxBP
uint256 _maxWalletBP
setLiquidityTaxShareBP 0xbc994acd
uint256 bp
setMarketMaker 0xd6e2df05
address who
bool mm
setRestrictedProjectAccount 0xd5e4742d
address who
bool restricted
setRewardManager 0x959c80d5
address who
bool allowed
setTaxBP 0xf9e96ff9
uint256 bp
setTimeWindow 0x8d331996
uint256 secondsWindow
toggleFeature 0x1acec795
string feature
bool enabled
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address