Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0x9a8E6729B49C4e239687143Ec4D1175A32EaE551
Balance 0 ETH
Nonce 1
Code Size 10637 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10637 bytes
0x60806040526004361061010d5760003560e01c806370b7b80c1161009557806395d89b411161006457806395d89b411461037a578063a9059cbb146103a5578063c9567bf9146103e2578063dd62ed3e146103f9578063f2fde38b1461043657610114565b806370b7b80c146102e4578063715018a61461030f5780637f649783146103265780638da5cb5b1461034f57610114565b806323b872dd116100dc57806323b872dd146101d7578063313ce567146102145780633af32abf1461023f57806351fb012d1461027c57806370a08231146102a757610114565b806306fdde0314610119578063095ea7b3146101445780630faee56f1461018157806318160ddd146101ac57610114565b3661011457005b600080fd5b34801561012557600080fd5b5061012e61045f565b60405161013b9190611ba1565b60405180910390f35b34801561015057600080fd5b5061016b60048036038101906101669190611c61565b6104f1565b6040516101789190611cbc565b60405180910390f35b34801561018d57600080fd5b506101966105f1565b6040516101a39190611ce6565b60405180910390f35b3480156101b857600080fd5b506101c16105f7565b6040516101ce9190611ce6565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190611d01565b61061b565b60405161020b9190611cbc565b60405180910390f35b34801561022057600080fd5b50610229610750565b6040516102369190611d70565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190611d8b565b610759565b6040516102739190611cbc565b60405180910390f35b34801561028857600080fd5b50610291610779565b60405161029e9190611cbc565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c99190611d8b565b61078c565b6040516102db9190611ce6565b60405180910390f35b3480156102f057600080fd5b506102f96107d5565b6040516103069190611ce6565b60405180910390f35b34801561031b57600080fd5b506103246107db565b005b34801561033257600080fd5b5061034d60048036038101906103489190611e1d565b610915565b005b34801561035b57600080fd5b50610364610a30565b6040516103719190611e79565b60405180910390f35b34801561038657600080fd5b5061038f610a59565b60405161039c9190611ba1565b60405180910390f35b3480156103b157600080fd5b506103cc60048036038101906103c79190611c61565b610aeb565b6040516103d99190611cbc565b60405180910390f35b3480156103ee57600080fd5b506103f7610b09565b005b34801561040557600080fd5b50610420600480360381019061041b9190611e94565b610d2e565b60405161042d9190611ce6565b60405180910390f35b34801561044257600080fd5b5061045d60048036038101906104589190611d8b565b610db5565b005b60606001805461046e90611f03565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90611f03565b80156104e75780601f106104bc576101008083540402835291602001916104e7565b820191906000526020600020905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b60008160046000610500610f5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff1661059a610f5d565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105df9190611ce6565b60405180910390a36001905092915050565b60065481565b60006009600a6106079190612096565b6305f5e10061061691906120e1565b905090565b6000610628848484610f65565b6106be82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610675610f5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162090919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610707610f5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600190509392505050565b60006009905090565b60156020528060005260406000206000915054906101000a900460ff1681565b601460159054906101000a900460ff1681565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60165481565b6107e3610f5d565b73ffffffffffffffffffffffffffffffffffffffff16610801610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610857576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084e9061216f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61091d610f5d565b73ffffffffffffffffffffffffffffffffffffffff1661093b610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109889061216f565b60405180910390fd5b60005b82829050811015610a2b576001601560008585858181106109b8576109b761218f565b5b90506020020160208101906109cd9190611d8b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610994565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054610a6890611f03565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9490611f03565b8015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b5050505050905090565b6000610aff610af8610f5d565b8484610f65565b6001905092915050565b610b11610f5d565b73ffffffffffffffffffffffffffffffffffffffff16610b2f610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610b85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7c9061216f565b60405180910390fd5b60148054906101000a900460ff1615610bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bca9061220a565b60405180910390fd5b6000610c426064610c34605f60036000610beb610f5d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461167990919063ffffffff16565b6116f390919063ffffffff16565b9050610c56610c4f610f5d565b3083610f65565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610ca2610a30565b426040518863ffffffff1660e01b8152600401610cc49695949392919061226f565b60606040518083038185885af1158015610ce2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d0791906122e5565b50505060016014806101000a81548160ff0219169083151502179055504260168190555050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610dbd610f5d565b73ffffffffffffffffffffffffffffffffffffffff16610ddb610a30565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061216f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ea0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9790612384565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610fcf5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015610fdb5750600081115b61101a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611011906123f0565b60405180910390fd5b6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156110c05750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113635760148054906101000a900460ff16611112576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111099061245c565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361127e57601460159054906101000a900460ff168015611191575060b460165461118d919061247c565b4211155b1561122357601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611219906124fc565b60405180910390fd5b5b61125f6064611251600e546011541161123e57600a54611242565b600f545b8561167990919063ffffffff16565b6116f390919063ffffffff16565b9050601160008154809291906112749061251c565b9190505550611362565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156112e85750601760009054906101000a900460ff16155b15611361576000600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060065481111561134b5761134660065461174b565b61135f565b600081111561135e5761135d8161174b565b5b5b505b5b5b6000811115611467576113be81600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab390919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161145e9190611ce6565b60405180910390a35b6114b982600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461162090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611560611512828461162090919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab390919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611605848661162090919063ffffffff16565b6040516116129190611ce6565b60405180910390a350505050565b600082821115611665576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165c906125b0565b60405180910390fd5b818361167191906125d0565b905092915050565b600080830361168b57600090506116ed565b6000828461169991906120e1565b90508284826116a89190612633565b146116e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116df906126d6565b60405180910390fd5b809150505b92915050565b6000808211611737576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172e90612742565b60405180910390fd5b81836117439190612633565b905092915050565b6001601760006101000a81548160ff02191690831515021790555080600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600267ffffffffffffffff81111561182657611825612762565b5b6040519080825280602002602001820160405280156118545781602001602082028036833780820191505090505b509050308160008151811061186c5761186b61218f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611913573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193791906127a6565b8160018151811061194b5761194a61218f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016119e9959493929190612891565b600060405180830381600087803b158015611a0357600080fd5b505af1158015611a17573d6000803e3d6000fd5b5050505060004790506000811115611a9357601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a91573d6000803e3d6000fd5b505b50506000601760006101000a81548160ff02191690831515021790555050565b6000808284611ac2919061247c565b905083811015611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90612937565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611b4b578082015181840152602081019050611b30565b60008484015250505050565b6000601f19601f8301169050919050565b6000611b7382611b11565b611b7d8185611b1c565b9350611b8d818560208601611b2d565b611b9681611b57565b840191505092915050565b60006020820190508181036000830152611bbb8184611b68565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611bf882611bcd565b9050919050565b611c0881611bed565b8114611c1357600080fd5b50565b600081359050611c2581611bff565b92915050565b6000819050919050565b611c3e81611c2b565b8114611c4957600080fd5b50565b600081359050611c5b81611c35565b92915050565b60008060408385031215611c7857611c77611bc3565b5b6000611c8685828601611c16565b9250506020611c9785828601611c4c565b9150509250929050565b60008115159050919050565b611cb681611ca1565b82525050565b6000602082019050611cd16000830184611cad565b92915050565b611ce081611c2b565b82525050565b6000602082019050611cfb6000830184611cd7565b92915050565b600080600060608486031215611d1a57611d19611bc3565b5b6000611d2886828701611c16565b9350506020611d3986828701611c16565b9250506040611d4a86828701611c4c565b9150509250925092565b600060ff82169050919050565b611d6a81611d54565b82525050565b6000602082019050611d856000830184611d61565b92915050565b600060208284031215611da157611da0611bc3565b5b6000611daf84828501611c16565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112611ddd57611ddc611db8565b5b8235905067ffffffffffffffff811115611dfa57611df9611dbd565b5b602083019150836020820283011115611e1657611e15611dc2565b5b9250929050565b60008060208385031215611e3457611e33611bc3565b5b600083013567ffffffffffffffff811115611e5257611e51611bc8565b5b611e5e85828601611dc7565b92509250509250929050565b611e7381611bed565b82525050565b6000602082019050611e8e6000830184611e6a565b92915050565b60008060408385031215611eab57611eaa611bc3565b5b6000611eb985828601611c16565b9250506020611eca85828601611c16565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611f1b57607f821691505b602082108103611f2e57611f2d611ed4565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115611fba57808604811115611f9657611f95611f34565b5b6001851615611fa55780820291505b8081029050611fb385611f63565b9450611f7a565b94509492505050565b600082611fd3576001905061208f565b81611fe1576000905061208f565b8160018114611ff7576002811461200157612030565b600191505061208f565b60ff84111561201357612012611f34565b5b8360020a91508482111561202a57612029611f34565b5b5061208f565b5060208310610133831016604e8410600b84101617156120655782820a9050838111156120605761205f611f34565b5b61208f565b6120728484846001611f70565b9250905081840481111561208957612088611f34565b5b81810290505b9392505050565b60006120a182611c2b565b91506120ac83611d54565b92506120d97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611fc3565b905092915050565b60006120ec82611c2b565b91506120f783611c2b565b925082820261210581611c2b565b9150828204841483151761211c5761211b611f34565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612159602083611b1c565b915061216482612123565b602082019050919050565b600060208201905081810360008301526121888161214c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f54726164696e6720616c7265616479206f70656e000000000000000000000000600082015250565b60006121f4601483611b1c565b91506121ff826121be565b602082019050919050565b60006020820190508181036000830152612223816121e7565b9050919050565b6000819050919050565b6000819050919050565b600061225961225461224f8461222a565b612234565b611c2b565b9050919050565b6122698161223e565b82525050565b600060c0820190506122846000830189611e6a565b6122916020830188611cd7565b61229e6040830187612260565b6122ab6060830186612260565b6122b86080830185611e6a565b6122c560a0830184611cd7565b979650505050505050565b6000815190506122df81611c35565b92915050565b6000806000606084860312156122fe576122fd611bc3565b5b600061230c868287016122d0565b935050602061231d868287016122d0565b925050604061232e868287016122d0565b9150509250925092565b7f4f776e61626c653a206e6577206f776e6572206973207a65726f000000000000600082015250565b600061236e601a83611b1c565b915061237982612338565b602082019050919050565b6000602082019050818103600083015261239d81612361565b9050919050565b7f496e76616c6964207472616e7366657200000000000000000000000000000000600082015250565b60006123da601083611b1c565b91506123e5826123a4565b602082019050919050565b60006020820190508181036000830152612409816123cd565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612446601083611b1c565b915061245182612410565b602082019050919050565b6000602082019050818103600083015261247581612439565b9050919050565b600061248782611c2b565b915061249283611c2b565b92508282019050808211156124aa576124a9611f34565b5b92915050565b7f4e6f742077686974656c69737465640000000000000000000000000000000000600082015250565b60006124e6600f83611b1c565b91506124f1826124b0565b602082019050919050565b60006020820190508181036000830152612515816124d9565b9050919050565b600061252782611c2b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361255957612558611f34565b5b600182019050919050565b7f536166654d6174683a207375627472616374696f6e206f766572666c6f770000600082015250565b600061259a601e83611b1c565b91506125a582612564565b602082019050919050565b600060208201905081810360008301526125c98161258d565b9050919050565b60006125db82611c2b565b91506125e683611c2b565b92508282039050818111156125fe576125fd611f34565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061263e82611c2b565b915061264983611c2b565b92508261265957612658612604565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006126c0602183611b1c565b91506126cb82612664565b604082019050919050565b600060208201905081810360008301526126ef816126b3565b9050919050565b7f536166654d6174683a206469766973696f6e206279207a65726f000000000000600082015250565b600061272c601a83611b1c565b9150612737826126f6565b602082019050919050565b6000602082019050818103600083015261275b8161271f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506127a081611bff565b92915050565b6000602082840312156127bc576127bb611bc3565b5b60006127ca84828501612791565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61280881611bed565b82525050565b600061281a83836127ff565b60208301905092915050565b6000602082019050919050565b600061283e826127d3565b61284881856127de565b9350612853836127ef565b8060005b8381101561288457815161286b888261280e565b975061287683612826565b925050600181019050612857565b5085935050505092915050565b600060a0820190506128a66000830188611cd7565b6128b36020830187612260565b81810360408301526128c58186612833565b90506128d46060830185611e6a565b6128e16080830184611cd7565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612921601b83611b1c565b915061292c826128eb565b602082019050919050565b6000602082019050818103600083015261295081612914565b905091905056fea26469706673582212205c2997cfebb5833d7c8f0ea38f61db2a98cfe64262edccda249b4f344d1ff9cf64736f6c63430008170033

Verified Source Code Full Match

Compiler: v0.8.23+commit.f704f362 EVM: paris Optimization: No
project.sol 220 lines
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.23;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }
}

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }
    function owner() public view returns (address) {
        return _owner;
    }
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is zero");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

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 addLiquidityETH(address token,uint amountTokenDesired,uint amountTokenMin,uint amountETHMin,address to,uint deadline)
        external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn,uint amountOutMin,address[] calldata path,address to,uint deadline) external;
}

contract project is Context, IERC20, Ownable {
    using SafeMath for uint256;

    string private _name;
    string private _symbol;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals;

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

    

    // tax swap limits
    uint256 public _maxTaxSwap = _tTotal.div(100);
    uint256 private _minSwap = _tTotal.div(100);

    // original tax variables
    mapping(address => bool) private bots;
    mapping(address => bool) private initialBuyers;
    uint256 private _2HZIPPYFAN1 = 18;
    uint256 private _x1NIFTYTAP9 = 18;
    uint256 private _0xBOLDYAK8 = 0;
    uint256 private _x8QUIRKYOWL2 = 0;
    uint256 private _4MSWIRLYCUP5 = 18;
    uint256 private _x0BRISKBUG6 = 18;
    uint256 private _0xJAZZYCOW4 = 18;
    uint256 private _buyCount = 0;

    address payable private _taxWallet;

    IUniswapV2Router02 private router;
    address private pair;
    bool private tradingOpen;

    // Whitelist
    bool public whitelistEnabled = true;
    mapping(address => bool) public isWhitelisted;
    uint256 public tradingStartTime;
    bool private inSwap;
    modifier lockSwap() { inSwap = true; _; inSwap = false; }

    constructor(string memory name_, string memory symbol_) payable {
        _name = name_;
        _symbol = symbol_;
        _taxWallet = payable(_msgSender());

        // mint all to owner
        _balances[_msgSender()] = _tTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);

        // exclude from fees & bots
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        // setup Uniswap
        router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IUniswapV2Factory(router.factory()).createPair(address(this), router.WETH());

        // approve router
        _allowances[address(this)][address(router)] = type(uint256).max;
        emit Approval(address(this), address(router), type(uint256).max);
    }

    // ERC20 interfaces
    function name() public view returns (string memory) { return _name; }
    function symbol() public view returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public pure override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address owner_, address spender) public view override returns (uint256) { return _allowances[owner_][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) { _allowances[_msgSender()][spender] = amount; emit Approval(_msgSender(), spender, amount); return true; }
    function transfer(address to, uint256 amount) public override returns (bool) { _transfer(_msgSender(), to, amount); return true; }
    function transferFrom(address from, address to, uint256 amount) public override returns (bool) { _transfer(from, to, amount); _allowances[from][_msgSender()] = _allowances[from][_msgSender()].sub(amount); return true; }

    // Whitelist management
    function addToWhitelist(address[] calldata list) external onlyOwner {
        for (uint i = 0; i < list.length; i++) {
            isWhitelisted[list[i]] = true;
        }
    }

    // Open trading: transfer 95% + liquidity, then start timer
    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading already open");
        uint256 tokensForLiquidity = _balances[_msgSender()].mul(95).div(100);
        _transfer(_msgSender(), address(this), tokensForLiquidity);
        router.addLiquidityETH{value: address(this).balance}(address(this), tokensForLiquidity, 0, 0, owner(), block.timestamp);
        tradingOpen = true;
        tradingStartTime = block.timestamp;
    }

    // Core transfer logic: taxes & whitelist
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0) && to != address(0) && amount > 0, "Invalid transfer");
        uint256 taxAmount = 0;

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradingOpen, "Trading not open");
            if (from == pair) {
                // whitelist only within 3-minute window
                if (whitelistEnabled && block.timestamp <= tradingStartTime + 180) {
                    require(isWhitelisted[to], "Not whitelisted");
                }
                // apply original buy tax tiers
                taxAmount = amount.mul(_buyCount > _4MSWIRLYCUP5 ? _x0BRISKBUG6 : _2HZIPPYFAN1).div(100);
                _buyCount++;
            } else if (to == pair && !inSwap) {
                uint256 bal = _balances[address(this)];
                if (bal > _maxTaxSwap) {
                    swapTokensForEth(_maxTaxSwap);
                } else if (bal > 0) {
                    swapTokensForEth(bal);
                }
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function swapTokensForEth(uint256 amount) private lockSwap {
        _allowances[address(this)][address(router)] = amount;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(amount, 0, path, address(this), block.timestamp);
        uint256 ethBal = address(this).balance;
        if (ethBal > 0) {
            _taxWallet.transfer(ethBal);
        }
    }

    receive() external payable {}
}

Read Contract

_maxTaxSwap 0x0faee56f → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
isWhitelisted 0x3af32abf → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingStartTime 0x70b7b80c → uint256
whitelistEnabled 0x51fb012d → bool

Write Contract 7 functions

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

addToWhitelist 0x7f649783
address[] list
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
openTrading 0xc9567bf9
No parameters
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address