Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0xEf55E71EBAc42B0CfeCFceF50e699Ebc6113f05f
Balance 0 ETH
Nonce 1
Code Size 12975 bytes
Indexed Transactions 0 (1 on-chain, 1.5% indexed)
External Etherscan · Sourcify

Contract Bytecode

12975 bytes
Copy Bytecode
0x60806040526004361061012d575f3560e01c8063751039fc116100aa578063a9059cbb1161006e578063a9059cbb146103a8578063bf474bed146103e4578063c876d0b91461040e578063db6c688114610438578063dd62ed3e1461044e578063ec1f3f631461048a57610134565b8063751039fc146102ea5780637d1db4a5146103005780638da5cb5b1461032a5780638f9a55c01461035457806395d89b411461037e57610134565b8063313ce567116100f1578063313ce5671461022e57806351bc3c851461025857806370a082311461026e578063715018a6146102aa578063722b62ad146102c057610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e57806318160ddd146101c857806323b872dd146101f257610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104b2565b60405161015991906122a6565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612357565b6104ef565b60405161019591906123af565b60405180910390f35b3480156101a9575f80fd5b506101b261050c565b6040516101bf91906123d7565b60405180910390f35b3480156101d3575f80fd5b506101dc610512565b6040516101e991906123d7565b60405180910390f35b3480156101fd575f80fd5b50610218600480360381019061021391906123f0565b610535565b60405161022591906123af565b60405180910390f35b348015610239575f80fd5b50610242610609565b60405161024f919061245b565b60405180910390f35b348015610263575f80fd5b5061026c610611565b005b348015610279575f80fd5b50610294600480360381019061028f9190612474565b6106a9565b6040516102a191906123d7565b60405180910390f35b3480156102b5575f80fd5b506102be6106ef565b005b3480156102cb575f80fd5b506102d461083d565b6040516102e1919061245b565b60405180910390f35b3480156102f5575f80fd5b506102fe61084f565b005b34801561030b575f80fd5b50610314610997565b60405161032191906123d7565b60405180910390f35b348015610335575f80fd5b5061033e61099d565b60405161034b91906124ae565b60405180910390f35b34801561035f575f80fd5b506103686109c4565b60405161037591906123d7565b60405180910390f35b348015610389575f80fd5b506103926109ca565b60405161039f91906122a6565b60405180910390f35b3480156103b3575f80fd5b506103ce60048036038101906103c99190612357565b610a07565b6040516103db91906123af565b60405180910390f35b3480156103ef575f80fd5b506103f8610a24565b60405161040591906123d7565b60405180910390f35b348015610419575f80fd5b50610422610a2a565b60405161042f91906123af565b60405180910390f35b348015610443575f80fd5b5061044c610a3c565b005b348015610459575f80fd5b50610474600480360381019061046f91906124c7565b610f5e565b60405161048191906123d7565b60405180910390f35b348015610495575f80fd5b506104b060048036038101906104ab9190612505565b610fe0565b005b60606040518060400160405280601d81526020017f48656d756c65506f74746572456c6f6e566974616c696b31304e656b6f000000815250905090565b5f6105026104fb61106d565b8484611074565b6001905092915050565b60135481565b5f6009600a610521919061268c565b633b9aca0061053091906126d6565b905090565b5f610541848484611237565b6105fe8461054d61106d565b6105f9856040518060600160405280602881526020016132526028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105b061106d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d099092919063ffffffff16565b611074565b600190509392505050565b5f6009905090565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661065261106d565b73ffffffffffffffffffffffffffffffffffffffff1614610671575f80fd5b5f61067b306106a9565b90505f81111561068f5761068e81611d6b565b5b5f4790505f8111156106a5576106a481611fd4565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106f761106d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077a90612761565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175f9054906101000a900460ff1681565b61085761106d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108da90612761565b60405180910390fd5b6009600a6108f1919061268c565b633b9aca0061090091906126d6565b6010819055506009600a610914919061268c565b633b9aca0061092391906126d6565b6011819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610971919061268c565b633b9aca0061098091906126d6565b60405161098d91906123d7565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600781526020017f4b6e65617a6c6500000000000000000000000000000000000000000000000000815250905090565b5f610a1a610a1361106d565b8484611237565b6001905092915050565b60125481565b60065f9054906101000a900460ff1681565b610a4461106d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac790612761565b60405180910390fd5b601560149054906101000a900460ff1615610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b17906127c9565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610bbc3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ba8919061268c565b633b9aca00610bb791906126d6565b611074565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4a91906127fb565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cd0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf491906127fb565b6040518363ffffffff1660e01b8152600401610d11929190612826565b6020604051808303815f875af1158015610d2d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5191906127fb565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610dd8306106a9565b5f80610de261099d565b426040518863ffffffff1660e01b8152600401610e049695949392919061288f565b60606040518083038185885af1158015610e20573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e459190612902565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610ee5929190612952565b6020604051808303815f875af1158015610f01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2591906129a3565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661102161106d565b73ffffffffffffffffffffffffffffffffffffffff1614611040575f80fd5b600a5481111580156110545750600b548111155b61105c575f80fd5b80600a8190555080600b8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036110e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d990612a3e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790612acc565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161122a91906123d7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129c90612b5a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90612be8565b60405180910390fd5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561139d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139490612c50565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141e90612cb8565b60405180910390fd5b5f8111611469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146090612d46565b60405180910390fd5b5f61147261099d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114e057506114b061099d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a59576115216064611513600c54600f541161150057600854611504565b600a545b8561203d90919063ffffffff16565b6120b490919063ffffffff16565b905060065f9054906101000a900460ff16156116a95760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115e1575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116a8574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c90612dfa565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611752575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117a5575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561185f576010548211156117ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e690612e62565b60405180910390fd5b601154826117fc856106a9565b6118069190612e80565b1115611847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183e90612efd565b60405180910390fd5b600f5f81548092919061185990612f1b565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118e757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561192b57611928606461191a600d54600f54116119075760095461190b565b600b545b8561203d90919063ffffffff16565b6120b490919063ffffffff16565b90505b5f611935306106a9565b905060158054906101000a900460ff1615801561199e575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119b65750601560169054906101000a900460ff165b80156119c3575060125481115b80156119d25750600e54600f54115b15611a57576018544311611a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1290612efd565b60405180910390fd5b611a38611a3384611a2e846013546120fd565b6120fd565b611d6b565b5f4790505f811115611a4e57611a4d47611fd4565b5b43601881905550505b505b5f811115611b5857611ab18160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4f91906123d7565b60405180910390a35b611ba88260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c4b611bff828461217290919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211590919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cee848661217290919063ffffffff16565b604051611cfb91906123d7565b60405180910390a350505050565b5f838311158290611d50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4791906122a6565b60405180910390fd5b505f8385611d5e9190612f62565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611da157611da0612f95565b5b604051908082528060200260200182016040528015611dcf5781602001602082028036833780820191505090505b50905030815f81518110611de657611de5612fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e8a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eae91906127fb565b81600181518110611ec257611ec1612fc2565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f283060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611074565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f8a9594939291906130a6565b5f604051808303815f87803b158015611fa1575f80fd5b505af1158015611fb3573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612039573d5f803e3d5ffd5b5050565b5f80830361204d575f90506120ae565b5f828461205a91906126d6565b9050828482612069919061312b565b146120a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a0906131cb565b60405180910390fd5b809150505b92915050565b5f6120f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121bb565b905092915050565b5f81831161210b578261210d565b815b905092915050565b5f8082846121239190612e80565b905083811015612168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161215f90613233565b60405180910390fd5b8091505092915050565b5f6121b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d09565b905092915050565b5f8083118290612201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121f891906122a6565b60405180910390fd5b505f838561220f919061312b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612253578082015181840152602081019050612238565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122788261221c565b6122828185612226565b9350612292818560208601612236565b61229b8161225e565b840191505092915050565b5f6020820190508181035f8301526122be818461226e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122f3826122ca565b9050919050565b612303816122e9565b811461230d575f80fd5b50565b5f8135905061231e816122fa565b92915050565b5f819050919050565b61233681612324565b8114612340575f80fd5b50565b5f813590506123518161232d565b92915050565b5f806040838503121561236d5761236c6122c6565b5b5f61237a85828601612310565b925050602061238b85828601612343565b9150509250929050565b5f8115159050919050565b6123a981612395565b82525050565b5f6020820190506123c25f8301846123a0565b92915050565b6123d181612324565b82525050565b5f6020820190506123ea5f8301846123c8565b92915050565b5f805f60608486031215612407576124066122c6565b5b5f61241486828701612310565b935050602061242586828701612310565b925050604061243686828701612343565b9150509250925092565b5f60ff82169050919050565b61245581612440565b82525050565b5f60208201905061246e5f83018461244c565b92915050565b5f60208284031215612489576124886122c6565b5b5f61249684828501612310565b91505092915050565b6124a8816122e9565b82525050565b5f6020820190506124c15f83018461249f565b92915050565b5f80604083850312156124dd576124dc6122c6565b5b5f6124ea85828601612310565b92505060206124fb85828601612310565b9150509250929050565b5f6020828403121561251a576125196122c6565b5b5f61252784828501612343565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156125b25780860481111561258e5761258d612530565b5b600185161561259d5780820291505b80810290506125ab8561255d565b9450612572565b94509492505050565b5f826125ca5760019050612685565b816125d7575f9050612685565b81600181146125ed57600281146125f757612626565b6001915050612685565b60ff84111561260957612608612530565b5b8360020a9150848211156126205761261f612530565b5b50612685565b5060208310610133831016604e8410600b841016171561265b5782820a90508381111561265657612655612530565b5b612685565b6126688484846001612569565b9250905081840481111561267f5761267e612530565b5b81810290505b9392505050565b5f61269682612324565b91506126a183612440565b92506126ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125bb565b905092915050565b5f6126e082612324565b91506126eb83612324565b92508282026126f981612324565b915082820484148315176127105761270f612530565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61274b602083612226565b915061275682612717565b602082019050919050565b5f6020820190508181035f8301526127788161273f565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6127b3601783612226565b91506127be8261277f565b602082019050919050565b5f6020820190508181035f8301526127e0816127a7565b9050919050565b5f815190506127f5816122fa565b92915050565b5f602082840312156128105761280f6122c6565b5b5f61281d848285016127e7565b91505092915050565b5f6040820190506128395f83018561249f565b612846602083018461249f565b9392505050565b5f819050919050565b5f819050919050565b5f61287961287461286f8461284d565b612856565b612324565b9050919050565b6128898161285f565b82525050565b5f60c0820190506128a25f83018961249f565b6128af60208301886123c8565b6128bc6040830187612880565b6128c96060830186612880565b6128d6608083018561249f565b6128e360a08301846123c8565b979650505050505050565b5f815190506128fc8161232d565b92915050565b5f805f60608486031215612919576129186122c6565b5b5f612926868287016128ee565b9350506020612937868287016128ee565b9250506040612948868287016128ee565b9150509250925092565b5f6040820190506129655f83018561249f565b61297260208301846123c8565b9392505050565b61298281612395565b811461298c575f80fd5b50565b5f8151905061299d81612979565b92915050565b5f602082840312156129b8576129b76122c6565b5b5f6129c58482850161298f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a28602483612226565b9150612a33826129ce565b604082019050919050565b5f6020820190508181035f830152612a5581612a1c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ab6602283612226565b9150612ac182612a5c565b604082019050919050565b5f6020820190508181035f830152612ae381612aaa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612b44602583612226565b9150612b4f82612aea565b604082019050919050565b5f6020820190508181035f830152612b7181612b38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612bd2602383612226565b9150612bdd82612b78565b604082019050919050565b5f6020820190508181035f830152612bff81612bc6565b9050919050565b7f5b66726f6d5d20626c61636b206c6973740000000000000000000000000000005f82015250565b5f612c3a601183612226565b9150612c4582612c06565b602082019050919050565b5f6020820190508181035f830152612c6781612c2e565b9050919050565b7f5b746f5d20626c61636b206c69737400000000000000000000000000000000005f82015250565b5f612ca2600f83612226565b9150612cad82612c6e565b602082019050919050565b5f6020820190508181035f830152612ccf81612c96565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612d30602983612226565b9150612d3b82612cd6565b604082019050919050565b5f6020820190508181035f830152612d5d81612d24565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f612de4604983612226565b9150612def82612d64565b606082019050919050565b5f6020820190508181035f830152612e1181612dd8565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612e4c601983612226565b9150612e5782612e18565b602082019050919050565b5f6020820190508181035f830152612e7981612e40565b9050919050565b5f612e8a82612324565b9150612e9583612324565b9250828201905080821115612ead57612eac612530565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ee7601a83612226565b9150612ef282612eb3565b602082019050919050565b5f6020820190508181035f830152612f1481612edb565b9050919050565b5f612f2582612324565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f5757612f56612530565b5b600182019050919050565b5f612f6c82612324565b9150612f7783612324565b9250828203905081811115612f8f57612f8e612530565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613021816122e9565b82525050565b5f6130328383613018565b60208301905092915050565b5f602082019050919050565b5f61305482612fef565b61305e8185612ff9565b935061306983613009565b805f5b838110156130995781516130808882613027565b975061308b8361303e565b92505060018101905061306c565b5085935050505092915050565b5f60a0820190506130b95f8301886123c8565b6130c66020830187612880565b81810360408301526130d8818661304a565b90506130e7606083018561249f565b6130f460808301846123c8565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61313582612324565b915061314083612324565b9250826131505761314f6130fe565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131b5602183612226565b91506131c08261315b565b604082019050919050565b5f6020820190508181035f8301526131e2816131a9565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61321d601b83612226565b9150613228826131e9565b602082019050919050565b5f6020820190508181035f83015261324a81613211565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bd1c9ebeeb063799cc0eeecb5ad0f2b710ed3e5d3004c24a7ce2774739e7fd6d64736f6c63430008140033

Verified Source Code Full Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
kneazle.sol 350 lines
// SPDX-License-Identifier: UNLICENSED

/*

Welcome to HemulePotterElonVitalik10Neko ! 
Presenting a gentle giant mystical beast 
$KNEAZLE 

Here are the official links:

Twitter: https://twitter.com/kneazleofficial
TG Portal: https://t.me/KneazlePortal
Website: https://www.kneazle.xyz/

*/

pragma solidity 0.8.20;

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(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract kneazle 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 _isBlackList;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;

    address payable private _taxWallet;
    address payable private _deployer;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=40;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=30;
    uint256 private _reduceSellTaxAt=30;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal =  1000000000 * 10**_decimals;
    string private constant _name = unicode"HemulePotterElonVitalik10Neko";
    string private constant _symbol = unicode"Kneazle";
    uint256 public _maxTxAmount =       20000000 * 10**_decimals;
    uint256 public _maxWalletSize =     20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=   10000000 * 10**_decimals;
    uint256 public _maxTaxSwap=         20000000 * 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(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        _deployer = payable(msg.sender);
        _taxWallet = _deployer; 

        // Entire supply is initially assigned to the contract
        _balances[address(this)] = _tTotal;
        emit Transfer(address(0), address(this), _tTotal);

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_deployer] = true;

        _isBlackList[0xD2AE898574755E3B60224E9A51A5c2F462Eb71B3] = true;
        _isBlackList[0x901b1f018CEd4d518CD577c930d5DccEf6369d2c] = true;
        _isBlackList[0x4C10Ca05BC8532aCCBd1737AF437639B391E91E1] = true;
        _isBlackList[0xD94A8D3eBDC5A5942115150dF1cC4A9898c56430] = true;
        _isBlackList[0x4Bb44Eb5F87D6f9e6d98e29E397E25AdeefAC272] = true;
    }

    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(!_isBlackList[from], "[from] black list");
        require(!_isBlackList[to], "[to] black list");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).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 <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
            require(block.number > lastExecutedBlockNumber, "Exceeds the maxWalletSize.");
            swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
            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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function avadakedavra() 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(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Read Contract

_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
cooldownTimerInterval 0x722b62ad → uint8
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
transferDelayEnabled 0xc876d0b9 → bool

Write Contract 8 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
avadakedavra 0xdb6c6881
No parameters
manualSwap 0x51bc3c85
No parameters
reduceFee 0xec1f3f63
uint256 _newFee
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

This address has 1 on-chain transactions, but only 1.5% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →