Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xf7b2e24c53476899357d205C7923958cA85e49B4
Balance 0 ETH
Nonce 1
Code Size 13429 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13429 bytes
0x60806040526004361061014e575f3560e01c806370a08231116100b5578063a9059cbb1161006e578063a9059cbb14610446578063bafeb47914610482578063c63dfc31146104ac578063c876d0b9146104c2578063dd62ed3e146104ec578063e68fa5181461052857610155565b806370a082311461034b578063715018a614610387578063722b62ad1461039d578063807e3ee9146103c75780638da5cb5b146103f257806395d89b411461041c57610155565b80632ded0b04116101075780632ded0b0414610265578063313ce5671461028f5780633abee352146102b957806351bc3c85146102e357806361f6d19d146102f95780636bb1231e1461032357610155565b806306fdde0314610159578063095ea7b3146101835780630bd05b69146101bf57806313314431146101d557806318160ddd146101ff57806323b872dd1461022957610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610550565b60405161017a91906124b1565b60405180910390f35b34801561018e575f80fd5b506101a960048036038101906101a49190612562565b61058d565b6040516101b691906125ba565b60405180910390f35b3480156101ca575f80fd5b506101d36105aa565b005b3480156101e0575f80fd5b506101e9610acb565b6040516101f691906125e2565b60405180910390f35b34801561020a575f80fd5b50610213610ad1565b60405161022091906125e2565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a91906125fb565b610af4565b60405161025c91906125ba565b60405180910390f35b348015610270575f80fd5b50610279610bc8565b60405161028691906125ba565b60405180910390f35b34801561029a575f80fd5b506102a3610bde565b6040516102b09190612666565b60405180910390f35b3480156102c4575f80fd5b506102cd610be6565b6040516102da91906125e2565b60405180910390f35b3480156102ee575f80fd5b506102f7610bec565b005b348015610304575f80fd5b5061030d610c69565b60405161031a91906125e2565b60405180910390f35b34801561032e575f80fd5b506103496004803603810190610344919061267f565b610c6f565b005b348015610356575f80fd5b50610371600480360381019061036c91906126aa565b610ce1565b60405161037e91906125e2565b60405180910390f35b348015610392575f80fd5b5061039b610d27565b005b3480156103a8575f80fd5b506103b1610e75565b6040516103be9190612666565b60405180910390f35b3480156103d2575f80fd5b506103db610e87565b6040516103e99291906126d5565b60405180910390f35b3480156103fd575f80fd5b50610406610ebf565b604051610413919061270b565b60405180910390f35b348015610427575f80fd5b50610430610ee6565b60405161043d91906124b1565b60405180910390f35b348015610451575f80fd5b5061046c60048036038101906104679190612562565b610f23565b60405161047991906125ba565b60405180910390f35b34801561048d575f80fd5b50610496610f40565b6040516104a391906125e2565b60405180910390f35b3480156104b7575f80fd5b506104c0610f46565b005b3480156104cd575f80fd5b506104d661108e565b6040516104e391906125ba565b60405180910390f35b3480156104f7575f80fd5b50610512600480360381019061050d9190612724565b6110a0565b60405161051f91906125e2565b60405180910390f35b348015610533575f80fd5b5061054e60048036038101906105499190612762565b611122565b005b60606040518060400160405280600981526020017f4f6374616e655061790000000000000000000000000000000000000000000000815250905090565b5f6105a06105996111e2565b84846111e9565b6001905092915050565b6105b26111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461063e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610635906127ea565b60405180910390fd5b601660149054906101000a900460ff161561068e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068590612852565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061072a3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61071691906129cc565b6305f5e1006107259190612a16565b6111e9565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610794573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107b89190612a6b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108629190612a6b565b6040518363ffffffff1660e01b815260040161087f929190612a96565b6020604051808303815f875af115801561089b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108bf9190612a6b565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061094630610ce1565b5f80610950610ebf565b426040518863ffffffff1660e01b815260040161097296959493929190612aff565b60606040518083038185885af115801561098e573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906109b39190612b72565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a53929190612bc2565b6020604051808303815f875af1158015610a6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a939190612c13565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b60125481565b5f6009600a610ae091906129cc565b6305f5e100610aef9190612a16565b905090565b5f610b008484846113ac565b610bbd84610b0c6111e2565b610bb8856040518060600160405280602881526020016134186028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b6f6111e2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e109092919063ffffffff16565b6111e9565b600190509392505050565b5f601660149054906101000a900460ff16905090565b5f6009905090565b60145481565b610bf4610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610c126111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610c31575f80fd5b5f610c3b30610ce1565b90505f811115610c4f57610c4e81611e72565b5b5f4790505f811115610c6557610c64816120dd565b5b5050565b60115481565b610c77610ebf565b73ffffffffffffffffffffffffffffffffffffffff16610c956111e2565b73ffffffffffffffffffffffffffffffffffffffff1614610cb4575f80fd5b6009548111158015610cc85750600a548111155b610cd0575f80fd5b8060098190555080600a8190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610d2f6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db2906127ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60185f9054906101000a900460ff1681565b5f80600b54600e5411610e9c57600754610ea0565b6009545b9150600c54600e5411610eb557600854610eb9565b600a545b90509091565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4f43540000000000000000000000000000000000000000000000000000000000815250905090565b5f610f36610f2f6111e2565b84846113ac565b6001905092915050565b60135481565b610f4e6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd1906127ea565b60405180910390fd5b6009600a610fe891906129cc565b6305f5e100610ff79190612a16565b6011819055506009600a61100b91906129cc565b6305f5e10061101a9190612a16565b6012819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a61106891906129cc565b6305f5e1006110779190612a16565b60405161108491906125e2565b60405180910390a1565b60065f9054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61112a6111e2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ad906127ea565b60405180910390fd5b80601a83815481106111cb576111ca612c3e565b5b905f5260205f209060020201600101819055505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e90612cdb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bc90612d69565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161139f91906125e2565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361141a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141190612df7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147f90612e85565b60405180910390fd5b5f81116114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c190612f13565b60405180910390fd5b5f6114d3610ebf565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115415750611511610ebf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b605760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115e4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6115ec575f80fd5b611628606461161a600b54600e54116116075760075461160b565b6009545b8561226290919063ffffffff16565b6122d990919063ffffffff16565b905060065f9054906101000a900460ff16156117b05760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116e8575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117af574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541061176c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176390612fc7565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611859575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ac575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611966576011548211156118f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ed90613055565b60405180910390fd5b6012548261190385610ce1565b61190d9190613073565b111561194e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611945906130f0565b60405180910390fd5b600e5f8154809291906119609061310e565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119ee57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a3257611a2f6064611a21600c54600e5411611a0e57600854611a12565b600a545b8561226290919063ffffffff16565b6122d990919063ffffffff16565b90505b5f611a3c30610ce1565b9050601660159054906101000a900460ff16158015611aa7575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611abd575060168054906101000a900460ff165b8015611aca575060135481115b8015611ad95750600d54600e54115b15611b5e576019544311611b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b19906130f0565b60405180910390fd5b611b3f611b3a84611b3584601454612322565b612322565b611e72565b5f4790505f811115611b5557611b54476120dd565b5b43601981905550505b505b5f811115611c5f57611bb88160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233a90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c5691906125e2565b60405180910390a35b611caf8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461239790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d52611d06828461239790919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461233a90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611df5848661239790919063ffffffff16565b604051611e0291906125e2565b60405180910390a350505050565b5f838311158290611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e91906124b1565b60405180910390fd5b505f8385611e659190613155565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ea957611ea8613188565b5b604051908082528060200260200182016040528015611ed75781602001602082028036833780820191505090505b50905030815f81518110611eee57611eed612c3e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fb69190612a6b565b81600181518110611fca57611fc9612c3e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120303060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e9565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161209295949392919061326c565b5f604051808303815f87803b1580156120a9575f80fd5b505af11580156120bb573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b5f8190505f5b601a805490508110156121cf575f6064601a838154811061210757612106612c3e565b5b905f5260205f20906002020160010154856121229190612a16565b61212c91906132f1565b9050808361213a9190613155565b9250601a82815481106121505761214f612c3e565b5b905f5260205f2090600202015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156121c0573d5f803e3d5ffd5b505080806001019150506120e3565b505f81111561225e57601a5f815481106121ec576121eb612c3e565b5b905f5260205f2090600202015f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561225c573d5f803e3d5ffd5b505b5050565b5f808303612272575f90506122d3565b5f828461227f9190612a16565b905082848261228e91906132f1565b146122ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c590613391565b60405180910390fd5b809150505b92915050565b5f61231a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123e0565b905092915050565b5f8183116123305782612332565b815b905092915050565b5f8082846123489190613073565b90508381101561238d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612384906133f9565b60405180910390fd5b8091505092915050565b5f6123d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e10565b905092915050565b5f8083118290612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241d91906124b1565b60405180910390fd5b505f838561243491906132f1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61248382612441565b61248d818561244b565b935061249d81856020860161245b565b6124a681612469565b840191505092915050565b5f6020820190508181035f8301526124c98184612479565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124fe826124d5565b9050919050565b61250e816124f4565b8114612518575f80fd5b50565b5f8135905061252981612505565b92915050565b5f819050919050565b6125418161252f565b811461254b575f80fd5b50565b5f8135905061255c81612538565b92915050565b5f8060408385031215612578576125776124d1565b5b5f6125858582860161251b565b92505060206125968582860161254e565b9150509250929050565b5f8115159050919050565b6125b4816125a0565b82525050565b5f6020820190506125cd5f8301846125ab565b92915050565b6125dc8161252f565b82525050565b5f6020820190506125f55f8301846125d3565b92915050565b5f805f60608486031215612612576126116124d1565b5b5f61261f8682870161251b565b93505060206126308682870161251b565b92505060406126418682870161254e565b9150509250925092565b5f60ff82169050919050565b6126608161264b565b82525050565b5f6020820190506126795f830184612657565b92915050565b5f60208284031215612694576126936124d1565b5b5f6126a18482850161254e565b91505092915050565b5f602082840312156126bf576126be6124d1565b5b5f6126cc8482850161251b565b91505092915050565b5f6040820190506126e85f8301856125d3565b6126f560208301846125d3565b9392505050565b612705816124f4565b82525050565b5f60208201905061271e5f8301846126fc565b92915050565b5f806040838503121561273a576127396124d1565b5b5f6127478582860161251b565b92505060206127588582860161251b565b9150509250929050565b5f8060408385031215612778576127776124d1565b5b5f6127858582860161254e565b92505060206127968582860161254e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6127d460208361244b565b91506127df826127a0565b602082019050919050565b5f6020820190508181035f830152612801816127c8565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61283c60178361244b565b915061284782612808565b602082019050919050565b5f6020820190508181035f83015261286981612830565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128f2578086048111156128ce576128cd612870565b5b60018516156128dd5780820291505b80810290506128eb8561289d565b94506128b2565b94509492505050565b5f8261290a57600190506129c5565b81612917575f90506129c5565b816001811461292d576002811461293757612966565b60019150506129c5565b60ff84111561294957612948612870565b5b8360020a9150848211156129605761295f612870565b5b506129c5565b5060208310610133831016604e8410600b841016171561299b5782820a90508381111561299657612995612870565b5b6129c5565b6129a884848460016128a9565b925090508184048111156129bf576129be612870565b5b81810290505b9392505050565b5f6129d68261252f565b91506129e18361264b565b9250612a0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128fb565b905092915050565b5f612a208261252f565b9150612a2b8361252f565b9250828202612a398161252f565b91508282048414831517612a5057612a4f612870565b5b5092915050565b5f81519050612a6581612505565b92915050565b5f60208284031215612a8057612a7f6124d1565b5b5f612a8d84828501612a57565b91505092915050565b5f604082019050612aa95f8301856126fc565b612ab660208301846126fc565b9392505050565b5f819050919050565b5f819050919050565b5f612ae9612ae4612adf84612abd565b612ac6565b61252f565b9050919050565b612af981612acf565b82525050565b5f60c082019050612b125f8301896126fc565b612b1f60208301886125d3565b612b2c6040830187612af0565b612b396060830186612af0565b612b4660808301856126fc565b612b5360a08301846125d3565b979650505050505050565b5f81519050612b6c81612538565b92915050565b5f805f60608486031215612b8957612b886124d1565b5b5f612b9686828701612b5e565b9350506020612ba786828701612b5e565b9250506040612bb886828701612b5e565b9150509250925092565b5f604082019050612bd55f8301856126fc565b612be260208301846125d3565b9392505050565b612bf2816125a0565b8114612bfc575f80fd5b50565b5f81519050612c0d81612be9565b92915050565b5f60208284031215612c2857612c276124d1565b5b5f612c3584828501612bff565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612cc560248361244b565b9150612cd082612c6b565b604082019050919050565b5f6020820190508181035f830152612cf281612cb9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d5360228361244b565b9150612d5e82612cf9565b604082019050919050565b5f6020820190508181035f830152612d8081612d47565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612de160258361244b565b9150612dec82612d87565b604082019050919050565b5f6020820190508181035f830152612e0e81612dd5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6f60238361244b565b9150612e7a82612e15565b604082019050919050565b5f6020820190508181035f830152612e9c81612e63565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612efd60298361244b565b9150612f0882612ea3565b604082019050919050565b5f6020820190508181035f830152612f2a81612ef1565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f612fb160498361244b565b9150612fbc82612f31565b606082019050919050565b5f6020820190508181035f830152612fde81612fa5565b9050919050565b7f4578636565647320746865205f6d61785472616e73616374696f6e4c696d69745f8201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f61303f60218361244b565b915061304a82612fe5565b604082019050919050565b5f6020820190508181035f83015261306c81613033565b9050919050565b5f61307d8261252f565b91506130888361252f565b92508282019050808211156130a05761309f612870565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6130da601a8361244b565b91506130e5826130a6565b602082019050919050565b5f6020820190508181035f830152613107816130ce565b9050919050565b5f6131188261252f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361314a57613149612870565b5b600182019050919050565b5f61315f8261252f565b915061316a8361252f565b925082820390508181111561318257613181612870565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131e7816124f4565b82525050565b5f6131f883836131de565b60208301905092915050565b5f602082019050919050565b5f61321a826131b5565b61322481856131bf565b935061322f836131cf565b805f5b8381101561325f57815161324688826131ed565b975061325183613204565b925050600181019050613232565b5085935050505092915050565b5f60a08201905061327f5f8301886125d3565b61328c6020830187612af0565b818103604083015261329e8186613210565b90506132ad60608301856126fc565b6132ba60808301846125d3565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132fb8261252f565b91506133068361252f565b925082613316576133156132c4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61337b60218361244b565b915061338682613321565b604082019050919050565b5f6020820190508181035f8301526133a88161336f565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133e3601b8361244b565b91506133ee826133af565b602082019050919050565b5f6020820190508181035f830152613410816133d7565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200267850dd38e7f7c829c07b5895a6de90e7cce6b903f2772efbfb0c6e5eb17c864736f6c63430008190033

Verified Source Code Partial Match

Compiler: v0.8.25+commit.b61c2a91 EVM: cancun Optimization: No
OctanePay.sol 508 lines
/* 

OctanePay is a next-generation crypto payment gateway designed to make digital currency transactions effortless, secure, and completely fee-free.

Website : https://www.octanepay.app/
Docs : https://docs.octanepay.app/
Github : https://github.com/OctanePay
X / Twitter : https://x.com/OctanePay
Telegram : https://t.me/OctanePay

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.25;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
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
    );
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}
 
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);
    }
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
 
    function factory() external pure returns (address);
 
    function WETH() external pure returns (address);
 
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}
 
contract OctanePay is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
 
    bool public transferDelayEnabled = true;
 
    uint256 private _launchBuyFee = 20;
    uint256 private _launchSellFee = 20;
    uint256 private _stableBuyFee = 5;
    uint256 private _stableSellFee = 15;
    uint256 private _buyPhaseLimit = 80;
    uint256 private _sellPhaseLimit = 80;
    uint256 private _swapActivationPoint = 20;
    uint256 private _totalBuys = 0;
 
    uint256 private _taxWallet1Amount = 70;
    uint256 private _taxWallet2Amount = 30;
 
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"OctanePay";
    string private constant _symbol = unicode"OCT";
    uint256 public _maxTransactionLimit = 1000000 * 10**_decimals;
    uint256 public _walletSizeRestriction = 1000000 * 10**_decimals;
    uint256 public _swapTriggerThreshold = 400000 * 10**_decimals;
    uint256 public _swapCapAmount = 1500000 * 10**_decimals;
 
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    mapping(address => uint256) private cooldownTimer;
    uint8 public cooldownTimerInterval = 1;
    uint256 private lastExecutedBlockNumber;
    event MaxTxAmountUpdated(uint256 _maxTransactionLimit);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }
    TaxSystem[] private _taxSystem;
    struct TaxSystem {
        address taxWallet;
        uint256 taxPercentageValue;
    }
 
    constructor(TaxSystem[] memory taxSystem) {
        // Track the total of taxPercentageValue
        uint256 totaltaxPercentageValue;
 
        for (uint256 i = 0; i < taxSystem.length; i++) {
            totaltaxPercentageValue += taxSystem[i].taxPercentageValue;
            _taxSystem.push(taxSystem[i]);
            _isExcludedFromFee[taxSystem[i].taxWallet] = true;
        }
        require(
            totaltaxPercentageValue <= 100,
            "ERR: TAX PERCENTAGE VALUE OVERFLOW, KEPT BELOW 100"
        );
 
        _balances[owner()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
 
        emit Transfer(address(0), owner(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }
 
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount
                .mul(
                    (_totalBuys > _buyPhaseLimit)
                        ? _stableBuyFee
                        : _launchBuyFee
                )
                .div(100);
 
            if (transferDelayEnabled) {
                if (
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }
 
            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTransactionLimit, "Exceeds the _maxTransactionLimit.");
                require(
                    balanceOf(to) + amount <= _walletSizeRestriction,
                    "Exceeds the maxWalletSize."
                );
                _totalBuys++;
            }
 
            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_totalBuys > _sellPhaseLimit)
                            ? _stableSellFee
                            : _launchSellFee
                    )
                    .div(100);
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _swapTriggerThreshold &&
                _totalBuys > _swapActivationPoint
            ) {
                require(
                    block.number > lastExecutedBlockNumber,
                    "Exceeds the maxWalletSize."
                );
                swapTokensForEth(
                    min(amount, min(contractTokenBalance, _swapCapAmount))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                lastExecutedBlockNumber = block.number;
            }
        }
 
        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function unlockTokenLimits() external onlyOwner {
        _maxTransactionLimit = _tTotal;
        _walletSizeRestriction = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
    /**
     * @dev MAIN CHANGE
     * Modified this function to accept the dyanmic tax system.
     */
    function sendETHToFee(uint256 amount) private {
        // Keep track of the amount
        uint256 amountLeft = amount;
 
        // Iterate from _taxSystem and sends the taxAmount calc from the taxPercentageValue
        for (uint256 i = 0; i < _taxSystem.length; i++) {
            uint256 taxAmount = (amount * _taxSystem[i].taxPercentageValue) /
                100;
            amountLeft -= taxAmount;
            payable(_taxSystem[i].taxWallet).transfer(taxAmount);
        }
 
        // Safety measures to ensure that no amount left is being kept
        // if somehow there was still some amounts left, send it to _taxSystem[0].taxWallet
        if (amountLeft > 0) {
            // default to _taxSystem[0].taxWallet incase the dev wants to renounceOwnership
            payable(_taxSystem[0].taxWallet).transfer(amountLeft);
        }
    }
 
    function activateTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
 
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );
        swapEnabled = true;
        tradingOpen = true;
    }
 
    function changeTaxWalletPercentage(uint256 index, uint256 amount)
        external
        onlyOwner
    {
        _taxSystem[index].taxPercentageValue = amount;
    }
 
    function getCurrentTaxRates() external view returns (uint256 buyTax, uint256 sellTax) {
        buyTax = (_totalBuys > _buyPhaseLimit) ? _stableBuyFee : _launchBuyFee;
        sellTax = (_totalBuys > _sellPhaseLimit) ? _stableSellFee : _launchSellFee;
    }
 
    function isTradingLive() external view returns (bool) {
        return tradingOpen;
    }
 
    function setManualFee(uint256 _newFee) external {
        require(_msgSender() == owner());
        require(_newFee <= _stableBuyFee && _newFee <= _stableSellFee);
        _stableBuyFee = _newFee;
        _stableSellFee = _newFee;
    }
 
    receive() external payable {}
 
    function manualSwap() external {
        require(_msgSender() == owner());
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }
}

Read Contract

_maxTransactionLimit 0x61f6d19d → uint256
_swapCapAmount 0x3abee352 → uint256
_swapTriggerThreshold 0xbafeb479 → uint256
_walletSizeRestriction 0x13314431 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
cooldownTimerInterval 0x722b62ad → uint8
decimals 0x313ce567 → uint8
getCurrentTaxRates 0x807e3ee9 → uint256, uint256
isTradingLive 0x2ded0b04 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
transferDelayEnabled 0xc876d0b9 → bool

Write Contract 9 functions

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

activateTrading 0x0bd05b69
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeTaxWalletPercentage 0xe68fa518
uint256 index
uint256 amount
manualSwap 0x51bc3c85
No parameters
renounceOwnership 0x715018a6
No parameters
setManualFee 0x6bb1231e
uint256 _newFee
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
unlockTokenLimits 0xc63dfc31
No parameters

Recent Transactions

No transactions found for this address