Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0x55EE5E71b46D9B0Bf4010C97d57526C01aA7d5CE
Balance 0.028351 ETH ($56.23)
Nonce 1
Code Size 12545 bytes
Indexed Transactions 0 (1 on-chain, 0% indexed)
External Etherscan · Sourcify

Contract Bytecode

12545 bytes
0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a8aa1b3111610095578063e01bb68811610064578063e01bb6881461064f578063e96fada214610678578063f1d5f517146106a3578063f887ea40146106cc576101cd565b8063a8aa1b3114610581578063a9059cbb146105ac578063d05b5a00146105e9578063dd62ed3e14610612576101cd565b8063893d20e8116100d1578063893d20e8146104eb57806395d89b4114610516578063960bfe0414610541578063a890d2e81461056a576101cd565b806370a082311461046e578063715018a6146104ab5780637e26d19f146104c2576101cd565b80632f54bf6e116101645780633bbac5791161013e5780633bbac5791461039e578063571ac8b0146103db5780636c0a24eb146104185780636ddd171314610443576101cd565b80632f54bf6e1461031f578063313ce5671461035c578063364333f414610387576101cd565b80630b78f9c0116101a05780630b78f9c014610265578063144eef071461028e57806318160ddd146102b757806323b872dd146102e2576101cd565b80630445b667146101d257806306fdde03146101fd578063095ea7b314610228576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e76106f7565b6040516101f491906122a5565b60405180910390f35b34801561020957600080fd5b506102126106fd565b60405161021f9190612359565b60405180910390f35b34801561023457600080fd5b5061024f600480360381019061024a9190612419565b61073a565b60405161025c9190612474565b60405180910390f35b34801561027157600080fd5b5061028c6004803603810190610287919061248f565b61082c565b005b34801561029a57600080fd5b506102b560048036038101906102b09190612643565b6108e2565b005b3480156102c357600080fd5b506102cc6109bf565b6040516102d991906122a5565b60405180910390f35b3480156102ee57600080fd5b506103096004803603810190610304919061269f565b6109c9565b6040516103169190612474565b60405180910390f35b34801561032b57600080fd5b50610346600480360381019061034191906126f2565b610bc9565b6040516103539190612474565b60405180910390f35b34801561036857600080fd5b50610371610c22565b60405161037e919061273b565b60405180910390f35b34801561039357600080fd5b5061039c610c2b565b005b3480156103aa57600080fd5b506103c560048036038101906103c091906126f2565b610c96565b6040516103d29190612474565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd91906126f2565b610cb6565b60405161040f9190612474565b60405180910390f35b34801561042457600080fd5b5061042d610ce9565b60405161043a91906122a5565b60405180910390f35b34801561044f57600080fd5b50610458610cef565b6040516104659190612474565b60405180910390f35b34801561047a57600080fd5b50610495600480360381019061049091906126f2565b610d02565b6040516104a291906122a5565b60405180910390f35b3480156104b757600080fd5b506104c0610d4b565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190612756565b610e0e565b005b3480156104f757600080fd5b50610500610e73565b60405161050d9190612792565b60405180910390f35b34801561052257600080fd5b5061052b610e9c565b6040516105389190612359565b60405180910390f35b34801561054d57600080fd5b50610568600480360381019061056391906127ad565b610ed9565b005b34801561057657600080fd5b5061057f610f2b565b005b34801561058d57600080fd5b50610596610f68565b6040516105a39190612792565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190612419565b610f8e565b6040516105e09190612474565b60405180910390f35b3480156105f557600080fd5b50610610600480360381019061060b91906127da565b610fa3565b005b34801561061e57600080fd5b506106396004803603810190610634919061281a565b611046565b60405161064691906122a5565b60405180910390f35b34801561065b57600080fd5b50610676600480360381019061067191906126f2565b6110cd565b005b34801561068457600080fd5b5061068d611159565b60405161069a9190612792565b60405180910390f35b3480156106af57600080fd5b506106ca60048036038101906106c591906127ad565b61117f565b005b3480156106d857600080fd5b506106e16111ea565b6040516106ee91906128b9565b60405180910390f35b60115481565b60606040518060400160405280600681526020017f5368696241490000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161081a91906122a5565b60405180910390a36001905092915050565b61083533610bc9565b610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086b90612920565b60405180910390fd5b81600b8190555080600a81905550600b54600a54610892919061296f565b600c81905550601e600c5411156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590612a11565b60405180910390fd5b5050565b6108eb33610bc9565b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190612920565b60405180910390fd5b60005b82518110156109ba57816009600085848151811061094e5761094d612a31565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109b290612a60565b91505061092d565b505050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610bb557610b34826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112109092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610bc0848484611274565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610c93573d6000803e3d6000fd5b50565b60096020528060005260406000206000915054906101000a900460ff1681565b6000610ce2827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61073a565b9050919050565b60045481565b601060149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610d5433610bc9565b610d93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8a90612920565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610e049190612792565b60405180910390a1565b610e1733610bc9565b610e56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4d90612920565b60405180910390fd5b80601060146101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f5341490000000000000000000000000000000000000000000000000000000000815250905090565b610ee233610bc9565b610f21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1890612920565b60405180910390fd5b8060118190555050565b674563918244f40000471015610f4057600080fd5b6000600b819055506000600a81905550600b54600a54610f60919061296f565b600c81905550565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f9b338484611274565b905092915050565b610fac33610bc9565b610feb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe290612920565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d633610bc9565b611115576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110c90612920565b60405180910390fd5b80600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61118833610bc9565b6111c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111be90612920565b60405180910390fd5b6064816003546111d79190612aa8565b6111e19190612b31565b60048190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124f9190612359565b60405180910390fd5b50600083856112679190612b62565b9050809150509392505050565b6000600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa90612be2565b60405180910390fd5b601260009054906101000a900460ff161561132a576113238484846116ca565b90506116c3565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113d65750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114bf57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061147f575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461147c919061296f565b11155b6114be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b590612c74565b60405180910390fd5b5b6114c761189d565b156114d5576114d4611974565b5b61155e826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112109092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006115ac85611f22565b6115b657826115c1565b6115c08584611f79565b5b905061161581600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bd90919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116b591906122a5565b60405180910390a360019150505b9392505050565b6000611755826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112109092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117ea82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bd90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161188a91906122a5565b60405180910390a3600190509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561190a5750601260009054906101000a900460ff16155b80156119225750601060149054906101000a900460ff165b801561196f5750601154600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060026011546119e29190612aa8565b81106119fa5760026011546119f79190612aa8565b90505b6000611a386002611a2a600c54611a1c600a548761211b90919063ffffffff16565b61219590919063ffffffff16565b61219590919063ffffffff16565b90506000611a4f82846121df90919063ffffffff16565b90506000600267ffffffffffffffff811115611a6e57611a6d6124d4565b5b604051908082528060200260200182016040528015611a9c5781602001602082028036833780820191505090505b5090503081600081518110611ab457611ab3612a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b7f9190612ca9565b81600181518110611b9357611b92612a31565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401611c36959493929190612dcf565b600060405180830381600087803b158015611c5057600080fd5b505af1158015611c64573d6000803e3d6000fd5b505050506000611c7d82476121df90919063ffffffff16565b90506000611cab611c9a6002600a5461219590919063ffffffff16565b600c546121df90919063ffffffff16565b90506000611ce96002611cdb84611ccd600a548861211b90919063ffffffff16565b61219590919063ffffffff16565b61219590919063ffffffff16565b90506000611d1483611d06600b548761211b90919063ffffffff16565b61219590919063ffffffff16565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611d6290612e5a565b600060405180830381858888f193505050503d8060008114611da0576040519150601f19603f3d011682016040523d82523d6000602084013e611da5565b606091505b5050905080611de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611de090612ebb565b60405180910390fd5b6000891115611efb57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611e7b96959493929190612edb565b60606040518083038185885af1158015611e99573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ebe9190612f51565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051611ef2929190612fa4565b60405180910390a15b505050505050505050506000601260006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080611fa5600d54611f97600c548661211b90919063ffffffff16565b61219590919063ffffffff16565b9050611ff981600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120bd90919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209991906122a5565b60405180910390a36120b481846121df90919063ffffffff16565b91505092915050565b60008082846120cc919061296f565b905083811015612111576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210890613019565b60405180910390fd5b8091505092915050565b600080830361212d576000905061218f565b6000828461213b9190612aa8565b905082848261214a9190612b31565b1461218a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612181906130ab565b60405180910390fd5b809150505b92915050565b60006121d783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612229565b905092915050565b600061222183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611210565b905092915050565b60008083118290612270576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122679190612359565b60405180910390fd5b506000838561227f9190612b31565b9050809150509392505050565b6000819050919050565b61229f8161228c565b82525050565b60006020820190506122ba6000830184612296565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122fa5780820151818401526020810190506122df565b83811115612309576000848401525b50505050565b6000601f19601f8301169050919050565b600061232b826122c0565b61233581856122cb565b93506123458185602086016122dc565b61234e8161230f565b840191505092915050565b600060208201905081810360008301526123738184612320565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006123ba8261238f565b9050919050565b6123ca816123af565b81146123d557600080fd5b50565b6000813590506123e7816123c1565b92915050565b6123f68161228c565b811461240157600080fd5b50565b600081359050612413816123ed565b92915050565b600080604083850312156124305761242f612385565b5b600061243e858286016123d8565b925050602061244f85828601612404565b9150509250929050565b60008115159050919050565b61246e81612459565b82525050565b60006020820190506124896000830184612465565b92915050565b600080604083850312156124a6576124a5612385565b5b60006124b485828601612404565b92505060206124c585828601612404565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61250c8261230f565b810181811067ffffffffffffffff8211171561252b5761252a6124d4565b5b80604052505050565b600061253e61237b565b905061254a8282612503565b919050565b600067ffffffffffffffff82111561256a576125696124d4565b5b602082029050602081019050919050565b600080fd5b600061259361258e8461254f565b612534565b905080838252602082019050602084028301858111156125b6576125b561257b565b5b835b818110156125df57806125cb88826123d8565b8452602084019350506020810190506125b8565b5050509392505050565b600082601f8301126125fe576125fd6124cf565b5b813561260e848260208601612580565b91505092915050565b61262081612459565b811461262b57600080fd5b50565b60008135905061263d81612617565b92915050565b6000806040838503121561265a57612659612385565b5b600083013567ffffffffffffffff8111156126785761267761238a565b5b612684858286016125e9565b92505060206126958582860161262e565b9150509250929050565b6000806000606084860312156126b8576126b7612385565b5b60006126c6868287016123d8565b93505060206126d7868287016123d8565b92505060406126e886828701612404565b9150509250925092565b60006020828403121561270857612707612385565b5b6000612716848285016123d8565b91505092915050565b600060ff82169050919050565b6127358161271f565b82525050565b6000602082019050612750600083018461272c565b92915050565b60006020828403121561276c5761276b612385565b5b600061277a8482850161262e565b91505092915050565b61278c816123af565b82525050565b60006020820190506127a76000830184612783565b92915050565b6000602082840312156127c3576127c2612385565b5b60006127d184828501612404565b91505092915050565b600080604083850312156127f1576127f0612385565b5b60006127ff858286016123d8565b92505060206128108582860161262e565b9150509250929050565b6000806040838503121561283157612830612385565b5b600061283f858286016123d8565b9250506020612850858286016123d8565b9150509250929050565b6000819050919050565b600061287f61287a6128758461238f565b61285a565b61238f565b9050919050565b600061289182612864565b9050919050565b60006128a382612886565b9050919050565b6128b381612898565b82525050565b60006020820190506128ce60008301846128aa565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061290a6006836122cb565b9150612915826128d4565b602082019050919050565b60006020820190508181036000830152612939816128fd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061297a8261228c565b91506129858361228c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156129ba576129b9612940565b5b828201905092915050565b7f4d757374206b656570206665657320617420313025206f72206c657373000000600082015250565b60006129fb601d836122cb565b9150612a06826129c5565b602082019050919050565b60006020820190508181036000830152612a2a816129ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612a6b8261228c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612a9d57612a9c612940565b5b600182019050919050565b6000612ab38261228c565b9150612abe8361228c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612af757612af6612940565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3c8261228c565b9150612b478361228c565b925082612b5757612b56612b02565b5b828204905092915050565b6000612b6d8261228c565b9150612b788361228c565b925082821015612b8b57612b8a612940565b5b828203905092915050565b7f426f742041646472657373000000000000000000000000000000000000000000600082015250565b6000612bcc600b836122cb565b9150612bd782612b96565b602082019050919050565b60006020820190508181036000830152612bfb81612bbf565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612c5e6025836122cb565b9150612c6982612c02565b604082019050919050565b60006020820190508181036000830152612c8d81612c51565b9050919050565b600081519050612ca3816123c1565b92915050565b600060208284031215612cbf57612cbe612385565b5b6000612ccd84828501612c94565b91505092915050565b6000819050919050565b6000612cfb612cf6612cf184612cd6565b61285a565b61228c565b9050919050565b612d0b81612ce0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d46816123af565b82525050565b6000612d588383612d3d565b60208301905092915050565b6000602082019050919050565b6000612d7c82612d11565b612d868185612d1c565b9350612d9183612d2d565b8060005b83811015612dc2578151612da98882612d4c565b9750612db483612d64565b925050600181019050612d95565b5085935050505092915050565b600060a082019050612de46000830188612296565b612df16020830187612d02565b8181036040830152612e038186612d71565b9050612e126060830185612783565b612e1f6080830184612296565b9695505050505050565b600081905092915050565b50565b6000612e44600083612e29565b9150612e4f82612e34565b600082019050919050565b6000612e6582612e37565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b6000612ea5601e836122cb565b9150612eb082612e6f565b602082019050919050565b60006020820190508181036000830152612ed481612e98565b9050919050565b600060c082019050612ef06000830189612783565b612efd6020830188612296565b612f0a6040830187612d02565b612f176060830186612d02565b612f246080830185612783565b612f3160a0830184612296565b979650505050505050565b600081519050612f4b816123ed565b92915050565b600080600060608486031215612f6a57612f69612385565b5b6000612f7886828701612f3c565b9350506020612f8986828701612f3c565b9250506040612f9a86828701612f3c565b9150509250925092565b6000604082019050612fb96000830185612296565b612fc66020830184612296565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613003601b836122cb565b915061300e82612fcd565b602082019050919050565b6000602082019050818103600083015261303281612ff6565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130956021836122cb565b91506130a082613039565b604082019050919050565b600060208201905081810360008301526130c481613088565b905091905056fea2646970667358221220fc6af539cfc3cc2d3a6b5071f49ecad081ac49ef4bfa68f1dd35d90d9be29c7a64736f6c634300080f0033

Verified Source Code Full Match

Compiler: v0.8.15+commit.e14f2714 EVM: london Optimization: No
ShibAI.sol 348 lines
/**
https://twitter.com/ShibAI_ERC

https://t.me/ShibAI_Safe

Website: saierc.tech
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
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) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    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) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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);
}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {
        owner = _owner;
    }
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }
    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }  
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract ShibAI is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "ShibAI";
    string constant _symbol = unicode"SAI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
    uint256 public _maxWalletAmount = _totalSupply;

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

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping(address => bool) public isBot;

    uint256 liquidityFee = 1; 
    uint256 marketingFee = 4;
    uint256 totalFee = liquidityFee + marketingFee;
    uint256 feeDenominator = 100;

    address public marketingFeeReceiver = 0xC12B70cEcB2CF21fFae83DD1e5D1887bCBfbc336;

    IDEXRouter public router;
    address public pair;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 1000 * 5; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;
        isTxLimitExempt[DEAD] = true;

        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _totalSupply);
    }

    receive() external payable { }

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

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

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(!isBot[sender], "Bot Address");

        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        
        if (recipient != pair && recipient != DEAD) {
            require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
        }
        
        if(shouldSwapBack()){ swapBack(); } 

        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = _balances[address(this)];
        if (contractTokenBalance >= swapThreshold*2)
            contractTokenBalance = swapThreshold*2;
        uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);


        (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        require(MarketingSuccess, "receiver rejected ETH transfer");

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                marketingFeeReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function buyTokens(uint256 amount, address to) internal swapping {
        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(this);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
            0,
            path,
            to,
            block.timestamp
        );
    }

    function clearStuckBalance() external {
        payable(marketingFeeReceiver).transfer(address(this).balance);
    }

    function setWalletLimit(uint256 amountPercent) external onlyOwner {
        _maxWalletAmount = (_totalSupply * amountPercent ) / 100;
    }
    
     function swapStatus (bool status) external onlyOwner {
        swapEnabled = status;
    }

    function isBots(address botAddress, bool status) external onlyOwner {      
        isBot[botAddress] = status;
    }

   function areBots(address[] memory bots_, bool status) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            isBot[bots_[i]] = status;
        }
    }

    function setFees(uint256 _MarketingFee, uint256 _liquidityFee) external onlyOwner {
         marketingFee = _MarketingFee;
         liquidityFee = _liquidityFee;
         totalFee = liquidityFee + marketingFee;
         require(totalFee <= 30, "Must keep fees at 10% or less");
    }

    function setThreshold(uint256 _treshold) external onlyOwner {
         swapThreshold = _treshold;
    }

    function setFeeReceivers(address _marketingFeeReceiver) external onlyOwner {
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function Lifttax() external {
        require (address(this).balance >= 5000000000000000000);
         marketingFee = 0;
         liquidityFee = 0;
         totalFee = liquidityFee + marketingFee;
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}

Read Contract

_maxWalletAmount 0x6c0a24eb → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getOwner 0x893d20e8 → address
isBot 0x3bbac579 → bool
isOwner 0x2f54bf6e → bool
marketingFeeReceiver 0xe96fada2 → address
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 14 functions

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

Lifttax 0xa890d2e8
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
areBots 0x144eef07
address[] bots_
bool status
clearStuckBalance 0x364333f4
No parameters
isBots 0xd05b5a00
address botAddress
bool status
renounceOwnership 0x715018a6
No parameters
setFeeReceivers 0xe01bb688
address _marketingFeeReceiver
setFees 0x0b78f9c0
uint256 _MarketingFee
uint256 _liquidityFee
setThreshold 0x960bfe04
uint256 _treshold
setWalletLimit 0xf1d5f517
uint256 amountPercent
swapStatus 0x7e26d19f
bool status
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

Recent Transactions

This address has 1 on-chain transactions, but only 0% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →