Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x045237AB09D18e09077B9E1790fF1498e5379133
Balance 0 ETH
Nonce 1
Code Size 10067 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10067 bytes
0x608060405260043610610117575f3560e01c806349bd5a5e1161009f578063a457c2d711610063578063a457c2d7146103a2578063a9059cbb146103de578063dd62ed3e1461041a578063e2f4560514610456578063f2fde38b146104805761011e565b806349bd5a5e146102d257806370a08231146102fc578063715018a6146103385780638da5cb5b1461034e57806395d89b41146103785761011e565b806323b872dd116100e657806323b872dd146101dc5780632b14ca5614610218578063313ce56714610242578063395093511461026c57806347062402146102a85761011e565b806306fdde0314610122578063095ea7b31461014c5780631694505e1461018857806318160ddd146101b25761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b506101366104a8565b6040516101439190611c22565b60405180910390f35b348015610157575f80fd5b50610172600480360381019061016d9190611cd3565b610538565b60405161017f9190611d2b565b60405180910390f35b348015610193575f80fd5b5061019c610555565b6040516101a99190611d9f565b60405180910390f35b3480156101bd575f80fd5b506101c6610579565b6040516101d39190611dc7565b60405180910390f35b3480156101e7575f80fd5b5061020260048036038101906101fd9190611de0565b610582565b60405161020f9190611d2b565b60405180910390f35b348015610223575f80fd5b5061022c61069c565b6040516102399190611dc7565b60405180910390f35b34801561024d575f80fd5b506102566106a2565b6040516102639190611e4b565b60405180910390f35b348015610277575f80fd5b50610292600480360381019061028d9190611cd3565b6106aa565b60405161029f9190611d2b565b60405180910390f35b3480156102b3575f80fd5b506102bc610751565b6040516102c99190611dc7565b60405180910390f35b3480156102dd575f80fd5b506102e6610757565b6040516102f39190611e73565b60405180910390f35b348015610307575f80fd5b50610322600480360381019061031d9190611e8c565b61077c565b60405161032f9190611dc7565b60405180910390f35b348015610343575f80fd5b5061034c6107c1565b005b348015610359575f80fd5b50610362610914565b60405161036f9190611e73565b60405180910390f35b348015610383575f80fd5b5061038c61093c565b6040516103999190611c22565b60405180910390f35b3480156103ad575f80fd5b506103c860048036038101906103c39190611cd3565b6109cc565b6040516103d59190611d2b565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190611cd3565b610ab2565b6040516104119190611d2b565b60405180910390f35b348015610425575f80fd5b50610440600480360381019061043b9190611eb7565b610acf565b60405161044d9190611dc7565b60405180910390f35b348015610461575f80fd5b5061046a610b51565b6040516104779190611dc7565b60405180910390f35b34801561048b575f80fd5b506104a660048036038101906104a19190611e8c565b610b57565b005b6060600380546104b790611f22565b80601f01602080910402602001604051908101604052809291908181526020018280546104e390611f22565b801561052e5780601f106105055761010080835404028352916020019161052e565b820191905f5260205f20905b81548152906001019060200180831161051157829003601f168201915b5050505050905090565b5f61054b610544610d19565b8484610d20565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105ca610d19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106855782811015610670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066790611f9c565b60405180910390fd5b6106848561067c610d19565b858403610d20565b5b610690858585610ee3565b60019150509392505050565b60075481565b5f6012905090565b5f6107476106b6610d19565b848460015f6106c3610d19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546107429190611fe7565b610d20565b6001905092915050565b60065481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107c9610d19565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e90612064565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461094b90611f22565b80601f016020809104026020016040519081016040528092919081815260200182805461097790611f22565b80156109c25780601f10610999576101008083540402835291602001916109c2565b820191905f5260205f20905b8154815290600101906020018083116109a557829003601f168201915b5050505050905090565b5f8060015f6109d9610d19565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a906120cc565b60405180910390fd5b610aa7610a9e610d19565b85858403610d20565b600191505092915050565b5f610ac5610abe610d19565b8484610ee3565b6001905092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600a5481565b610b5f610d19565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be490612064565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5290612134565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d859061219c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dfc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df39061219c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ed69190611dc7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4890612204565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb69061226c565b60405180910390fd5b5f8103610fd657610fd183835f611829565b611824565b5f610fe03061077c565b90505f600a5482101590508080156110055750600960149054906101000a900460ff16155b801561105e575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156110b15750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156111045750600b5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156113d2576001600960146101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156111405761113f61228a565b5b60405190808252806020026020018201604052801561116e5781602001602082028036833780820191505090505b50905030815f81518110611185576111846122b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061124c91906122f8565b816001815181106112605761125f6122b7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8430426040518663ffffffff1660e01b81526004016112fb959493929190612413565b5f604051808303815f87803b158015611312575f80fd5b505af1158015611324573d5f803e3d5ffd5b505050505f4790505f81146113b5575f6064605083611343919061246b565b61134d91906124d9565b90505f818361135c9190612509565b90506113887f0000000000000000000000009124579c81d4856cb7974d10c159d1066994ca4283611a9e565b6113b27f00000000000000000000000033b8dc228ce6589b2a220e34bcbad35a5111607082611a9e565b50505b5f600960146101000a81548160ff02191690831515021790555050505b5f600960149054906101000a900460ff16159050600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806114815750600b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611532575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015611531575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b5b1561153b575f90505b801561163a575f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036115a05760065490506115fb565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036115fa5760075490505b5b5f8114611638575f60648287611611919061246b565b61161b91906124d9565b905080866116299190612509565b9550611636883083611829565b505b505b5f1515600c5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615151480156116e257505f1515600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161515145b801561173b575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611793575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b15611815575f6117a28661077c565b90506103e8600d546117b2610579565b6117bc919061246b565b6117c691906124d9565b85826117d29190611fe7565b1115611813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180a90612586565b60405180910390fd5b505b611820868686611829565b5050505b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611897576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188e9061219c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611905576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fc9061219c565b60405180910390fd5b611910838383611b8e565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198a906125ee565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611a219190611fe7565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a859190611dc7565b60405180910390a3611a98848484611b93565b50505050565b80471015611ae1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad890612656565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051611b06906126a1565b5f6040518083038185875af1925050503d805f8114611b40576040519150601f19603f3d011682016040523d82523d5f602084013e611b45565b606091505b5050905080611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b80906126ff565b60405180910390fd5b505050565b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611bcf578082015181840152602081019050611bb4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611bf482611b98565b611bfe8185611ba2565b9350611c0e818560208601611bb2565b611c1781611bda565b840191505092915050565b5f6020820190508181035f830152611c3a8184611bea565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611c6f82611c46565b9050919050565b611c7f81611c65565b8114611c89575f80fd5b50565b5f81359050611c9a81611c76565b92915050565b5f819050919050565b611cb281611ca0565b8114611cbc575f80fd5b50565b5f81359050611ccd81611ca9565b92915050565b5f8060408385031215611ce957611ce8611c42565b5b5f611cf685828601611c8c565b9250506020611d0785828601611cbf565b9150509250929050565b5f8115159050919050565b611d2581611d11565b82525050565b5f602082019050611d3e5f830184611d1c565b92915050565b5f819050919050565b5f611d67611d62611d5d84611c46565b611d44565b611c46565b9050919050565b5f611d7882611d4d565b9050919050565b5f611d8982611d6e565b9050919050565b611d9981611d7f565b82525050565b5f602082019050611db25f830184611d90565b92915050565b611dc181611ca0565b82525050565b5f602082019050611dda5f830184611db8565b92915050565b5f805f60608486031215611df757611df6611c42565b5b5f611e0486828701611c8c565b9350506020611e1586828701611c8c565b9250506040611e2686828701611cbf565b9150509250925092565b5f60ff82169050919050565b611e4581611e30565b82525050565b5f602082019050611e5e5f830184611e3c565b92915050565b611e6d81611c65565b82525050565b5f602082019050611e865f830184611e64565b92915050565b5f60208284031215611ea157611ea0611c42565b5b5f611eae84828501611c8c565b91505092915050565b5f8060408385031215611ecd57611ecc611c42565b5b5f611eda85828601611c8c565b9250506020611eeb85828601611c8c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611f3957607f821691505b602082108103611f4c57611f4b611ef5565b5b50919050565b7f5472616e73666572206578636565647320616c6c6f77616e63650000000000005f82015250565b5f611f86601a83611ba2565b9150611f9182611f52565b602082019050919050565b5f6020820190508181035f830152611fb381611f7a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611ff182611ca0565b9150611ffc83611ca0565b925082820190508082111561201457612013611fba565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61204e602083611ba2565b91506120598261201a565b602082019050919050565b5f6020820190508181035f83015261207b81612042565b9050919050565b7f416c6c6f773a206465637265617365642062656c6f77207a65726f00000000005f82015250565b5f6120b6601b83611ba2565b91506120c182612082565b602082019050919050565b5f6020820190508181035f8301526120e3816120aa565b9050919050565b7f4e6577206f776e6572206973207a65726f0000000000000000000000000000005f82015250565b5f61211e601183611ba2565b9150612129826120ea565b602082019050919050565b5f6020820190508181035f83015261214b81612112565b9050919050565b7f45524332303a207a65726f2061646472657373000000000000000000000000005f82015250565b5f612186601383611ba2565b915061219182612152565b602082019050919050565b5f6020820190508181035f8301526121b38161217a565b9050919050565b7f45524332303a207a65726f2066726f6d000000000000000000000000000000005f82015250565b5f6121ee601083611ba2565b91506121f9826121ba565b602082019050919050565b5f6020820190508181035f83015261221b816121e2565b9050919050565b7f45524332303a207a65726f2061646472000000000000000000000000000000005f82015250565b5f612256601083611ba2565b915061226182612222565b602082019050919050565b5f6020820190508181035f8301526122838161224a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506122f281611c76565b92915050565b5f6020828403121561230d5761230c611c42565b5b5f61231a848285016122e4565b91505092915050565b5f819050919050565b5f61234661234161233c84612323565b611d44565b611ca0565b9050919050565b6123568161232c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61238e81611c65565b82525050565b5f61239f8383612385565b60208301905092915050565b5f602082019050919050565b5f6123c18261235c565b6123cb8185612366565b93506123d683612376565b805f5b838110156124065781516123ed8882612394565b97506123f8836123ab565b9250506001810190506123d9565b5085935050505092915050565b5f60a0820190506124265f830188611db8565b612433602083018761234d565b818103604083015261244581866123b7565b90506124546060830185611e64565b6124616080830184611db8565b9695505050505050565b5f61247582611ca0565b915061248083611ca0565b925082820261248e81611ca0565b915082820484148315176124a5576124a4611fba565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6124e382611ca0565b91506124ee83611ca0565b9250826124fe576124fd6124ac565b5b828204905092915050565b5f61251382611ca0565b915061251e83611ca0565b925082820390508181111561253657612535611fba565b5b92915050565b7f4d6178206c696d697420657863656564656400000000000000000000000000005f82015250565b5f612570601283611ba2565b915061257b8261253c565b602082019050919050565b5f6020820190508181035f83015261259d81612564565b9050919050565b7f457863656564732062616c616e636500000000000000000000000000000000005f82015250565b5f6125d8600f83611ba2565b91506125e3826125a4565b602082019050919050565b5f6020820190508181035f830152612605816125cc565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f612640601d83611ba2565b915061264b8261260c565b602082019050919050565b5f6020820190508181035f83015261266d81612634565b9050919050565b5f81905092915050565b50565b5f61268c5f83612674565b91506126978261267e565b5f82019050919050565b5f6126ab82612681565b9150819050919050565b7f53656e64206661696c65640000000000000000000000000000000000000000005f82015250565b5f6126e9600b83611ba2565b91506126f4826126b5565b602082019050919050565b5f6020820190508181035f830152612716816126dd565b905091905056fea2646970667358221220ec2ea585e39e2e03ded38f01d39132e4c30efc2daf503fd639883bc09211b35664736f6c63430008180033

Verified Source Code Full Match

Compiler: v0.8.24+commit.e11b9ed9 EVM: shanghai Optimization: No
GPUBase.sol 473 lines
/*

 $$$$$$\  $$$$$$$\  $$\   $$\ $$$$$$$\                                      $$\   $$\            $$\                                       $$\       
$$  __$$\ $$  __$$\ $$ |  $$ |$$  __$$\                                     $$$\  $$ |           $$ |                                      $$ |      
$$ /  \__|$$ |  $$ |$$ |  $$ |$$ |  $$ | $$$$$$\   $$$$$$$\  $$$$$$\        $$$$\ $$ | $$$$$$\ $$$$$$\   $$\  $$\  $$\  $$$$$$\   $$$$$$\  $$ |  $$\ 
$$ |$$$$\ $$$$$$$  |$$ |  $$ |$$$$$$$\ | \____$$\ $$  _____|$$  __$$\       $$ $$\$$ |$$  __$$\\_$$  _|  $$ | $$ | $$ |$$  __$$\ $$  __$$\ $$ | $$  |
$$ |\_$$ |$$  ____/ $$ |  $$ |$$  __$$\  $$$$$$$ |\$$$$$$\  $$$$$$$$ |      $$ \$$$$ |$$$$$$$$ | $$ |    $$ | $$ | $$ |$$ /  $$ |$$ |  \__|$$$$$$  / 
$$ |  $$ |$$ |      $$ |  $$ |$$ |  $$ |$$  __$$ | \____$$\ $$   ____|      $$ |\$$$ |$$   ____| $$ |$$\ $$ | $$ | $$ |$$ |  $$ |$$ |      $$  _$$<  
\$$$$$$  |$$ |      \$$$$$$  |$$$$$$$  |\$$$$$$$ |$$$$$$$  |\$$$$$$$\       $$ | \$$ |\$$$$$$$\  \$$$$  |\$$$$$\$$$$  |\$$$$$$  |$$ |      $$ | \$$\ 
 \______/ \__|       \______/ \_______/  \_______|\_______/  \_______|      \__|  \__| \_______|  \____/  \_____\____/  \______/ \__|      \__|  \__|
                                                                                                                                                                                                                                    
                        
    Website:      https://gpubase.network/
    X (Twitter):  https://x.com/GPUBaseNetwork
    Telegram:     https://t.me/GPUBaseNetworkPortal
    Staking:      https://stake.gpubase.network/
    Whitepaper:   https://gpubase.network/docs/whitepaper


    
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is zero");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        virtual
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        virtual
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "Transfer exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] + addedValue
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "Allow: decreased below zero"
        );
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: zero address");
        require(recipient != address(0), "ERC20: zero address");
        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "Exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply + amount;
        _balances[account] = _balances[account] + amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: zero address");
        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "Burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply = _totalSupply - amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: zero address");
        require(spender != address(0), "ERC20: zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

contract GPUBase is ERC20, Ownable {
    uint256 public buyFee = 5;
    uint256 public sellFee = 5;

    address private immutable marketingWallet;
    address private immutable stakingWallet;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public uniswapV2Pair;

    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private _isExcludedFromMaxWalletLimit;

    uint256 private maxWalletLimitRate = 20;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor(address _marketingWallet, address _stakingWallet)
        ERC20("GPUBase Network", "GPUBase")
    {
        marketingWallet = _marketingWallet;
        stakingWallet = _stakingWallet;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;

        _isExcludedFromMaxWalletLimit[owner()] = true;
        _isExcludedFromMaxWalletLimit[DEAD] = true;
        _isExcludedFromMaxWalletLimit[address(this)] = true;
        _isExcludedFromMaxWalletLimit[address(0)] = true;

        _mint(owner(), 33e6 * 1e18);
        swapTokensAtAmount = totalSupply() / 660;
    }

    receive() external payable {}

    function sendETH(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Send failed");
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: zero from");
        require(to != address(0), "ERC20: zero addr");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap &&
            !swapping &&
            from != uniswapV2Pair &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;

            address[] memory path = new address[](2);
            path[0] = address(this);
            path[1] = uniswapV2Router.WETH();

            uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
                contractTokenBalance,
                0, // accept any amount of ETH
                path,
                address(this),
                block.timestamp
            );

            uint256 newBalance = address(this).balance;

            if (newBalance != 0) {
                uint256 marketingAmount = (newBalance * 80) / 100;
                uint256 stakingAmount = newBalance - marketingAmount;
                sendETH(payable(marketingWallet), marketingAmount);
                sendETH(payable(stakingWallet), stakingAmount);
            }

            swapping = false;
        }

        bool takeFee = !swapping;

        if (
            (_isExcludedFromFees[from] || _isExcludedFromFees[to]) ||
            (from != uniswapV2Pair && to != uniswapV2Pair)
        ) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 _totalFees = 0;
            if (from == uniswapV2Pair) {
                _totalFees = buyFee;
            } else if (to == uniswapV2Pair) {
                _totalFees = sellFee;
            }

            if (_totalFees != 0) {
                uint256 fees = (amount * _totalFees) / 100;
                amount = amount - fees;
                super._transfer(from, address(this), fees);
            }
        }

        if (
            _isExcludedFromMaxWalletLimit[from] == false &&
            _isExcludedFromMaxWalletLimit[to] == false &&
            to != uniswapV2Pair &&
            from == uniswapV2Pair
        ) {
            uint256 balance = balanceOf(to);
            require(
                balance + amount <= (totalSupply() * maxWalletLimitRate) / 1000,
                "Max limit exceeded"
            );
        }

        super._transfer(from, to, amount);
    }
}

Read Contract

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

Write Contract 7 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address