Address Contract Verified
Address
0x045237AB09D18e09077B9E1790fF1498e5379133
Balance
0 ETH
Nonce
1
Code Size
10067 bytes
Creator
0x4bA60f35...3F47 at tx 0x8a203f68...6ff3f1
Indexed Transactions
0
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