Address Contract Partially Verified
Address
0xCD4Ee6c8052Df6742e4B342cF720FF3ac74F415e
Balance
0 ETH
Nonce
1
Code Size
18728 bytes
Creator
0x40Dbf397...d9Eb at tx 0xdd6eb451...5fe6e3
Indexed Transactions
0
Contract Bytecode
18728 bytes
0x60806040526004361061028c5760003560e01c8063768dc7101161015a578063af8af690116100c1578063df1d099e1161007a578063df1d099e14610a67578063df8408fe14610a92578063f1b2b3d914610abb578063f2fde38b14610af8578063f345bd8514610b21578063fbee93ba14610b4c57610293565b8063af8af6901461091d578063b5c78e8a1461095a578063bb85c6d114610997578063c0fdea57146109d4578063d12a7688146109ff578063dd62ed3e14610a2a57610293565b8063a2330d9711610113578063a2330d97146107f6578063a3996f7b14610836578063a457c2d71461084d578063a9059cbb1461088a578063aa4bde28146108c7578063ad16a0cf146108f257610293565b8063768dc710146106d05780637930ef691461070d57806381bfdcca146107385780638c0b5e22146107755780638da5cb5b146107a057806395d89b41146107cb57610293565b806330b63d80116101fe57806363cdf60f116101b757806363cdf60f146105ab578063677daa57146105eb57806370a0823114610628578063715018a61461066557806373c503b31461067c57806375f0a874146106a557610293565b806330b63d8014610473578063313ce567146104b057806339509351146104db57806349bd5a5e146105185780634fa74c4d14610543578063527ffabd1461058057610293565b80631694505e116102505780631694505e1461037257806316a7b1601461039d57806318160ddd146103b957806318bc47f6146103e45780631b56bbf91461040d57806323b872dd1461043657610293565b806303fd2a4514610298578063054dee0f146102c357806306fdde03146102ee578063095ea7b3146103195780630f1d7ad91461035657610293565b3661029357005b600080fd5b3480156102a457600080fd5b506102ad610b77565b6040516102ba9190612f1d565b60405180910390f35b3480156102cf57600080fd5b506102d8610b9d565b6040516102e59190612f51565b60405180910390f35b3480156102fa57600080fd5b50610303610ba3565b6040516103109190612ffc565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b919061308a565b610c35565b60405161034d91906130e5565b60405180910390f35b610370600480360381019061036b9190613235565b610c58565b005b34801561037e57600080fd5b50610387610e38565b60405161039491906132dd565b60405180910390f35b6103b760048036038101906103b29190613235565b610e5c565b005b3480156103c557600080fd5b506103ce61103c565b6040516103db9190612f51565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190613324565b611046565b005b34801561041957600080fd5b50610434600480360381019061042f91906133bb565b6111bc565b005b34801561044257600080fd5b5061045d600480360381019061045891906133e8565b61133e565b60405161046a91906130e5565b60405180910390f35b34801561047f57600080fd5b5061049a6004803603810190610495919061343b565b61136d565b6040516104a791906130e5565b60405180910390f35b3480156104bc57600080fd5b506104c561147b565b6040516104d29190613497565b60405180910390f35b3480156104e757600080fd5b5061050260048036038101906104fd919061308a565b611484565b60405161050f91906130e5565b60405180910390f35b34801561052457600080fd5b5061052d6114bb565b60405161053a9190612f1d565b60405180910390f35b34801561054f57600080fd5b5061056a600480360381019061056591906134b2565b6114e1565b60405161057791906130e5565b60405180910390f35b34801561058c57600080fd5b50610595611557565b6040516105a29190612f51565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613235565b61155d565b6040516105e2949392919061350e565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d919061355a565b611638565b60405161061f91906130e5565b60405180910390f35b34801561063457600080fd5b5061064f600480360381019061064a91906133bb565b611652565b60405161065c9190612f51565b60405180910390f35b34801561067157600080fd5b5061067a61169a565b005b34801561068857600080fd5b506106a3600480360381019061069e9190613587565b6116ae565b005b3480156106b157600080fd5b506106ba611782565b6040516106c79190612f1d565b60405180910390f35b3480156106dc57600080fd5b506106f760048036038101906106f291906133bb565b6117a8565b60405161070491906130e5565b60405180910390f35b34801561071957600080fd5b506107226117c8565b60405161072f9190612f51565b60405180910390f35b34801561074457600080fd5b5061075f600480360381019061075a919061355a565b6117ce565b60405161076c91906130e5565b60405180910390f35b34801561078157600080fd5b5061078a6117e8565b6040516107979190612f51565b60405180910390f35b3480156107ac57600080fd5b506107b56117ee565b6040516107c29190612f1d565b60405180910390f35b3480156107d757600080fd5b506107e0611818565b6040516107ed9190612ffc565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190613235565b6118aa565b60405161082d949392919061350e565b60405180910390f35b34801561084257600080fd5b5061084b611985565b005b34801561085957600080fd5b50610874600480360381019061086f919061308a565b6119ff565b60405161088191906130e5565b60405180910390f35b34801561089657600080fd5b506108b160048036038101906108ac919061308a565b611a76565b6040516108be91906130e5565b60405180910390f35b3480156108d357600080fd5b506108dc611a99565b6040516108e99190612f51565b60405180910390f35b3480156108fe57600080fd5b50610907611a9f565b6040516109149190612f51565b60405180910390f35b34801561092957600080fd5b50610944600480360381019061093f919061343b565b611aa5565b60405161095191906130e5565b60405180910390f35b34801561096657600080fd5b50610981600480360381019061097c91906134b2565b611b16565b60405161098e9190612f51565b60405180910390f35b3480156109a357600080fd5b506109be60048036038101906109b991906133bb565b611b72565b6040516109cb91906130e5565b60405180910390f35b3480156109e057600080fd5b506109e9611cc5565b6040516109f69190612f51565b60405180910390f35b348015610a0b57600080fd5b50610a14611ccb565b604051610a219190612f51565b60405180910390f35b348015610a3657600080fd5b50610a516004803603810190610a4c91906135da565b611cd1565b604051610a5e9190612f51565b60405180910390f35b348015610a7357600080fd5b50610a7c611d58565b604051610a899190612f51565b60405180910390f35b348015610a9e57600080fd5b50610ab96004803603810190610ab4919061361a565b611d5e565b005b348015610ac757600080fd5b50610ae26004803603810190610add91906134b2565b611dfa565b604051610aef9190612f51565b60405180910390f35b348015610b0457600080fd5b50610b1f6004803603810190610b1a91906133bb565b611e56565b005b348015610b2d57600080fd5b50610b36611ed9565b604051610b439190612f51565b60405180910390f35b348015610b5857600080fd5b50610b61611edf565b604051610b6e9190612f51565b60405180910390f35b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b606060038054610bb290613689565b80601f0160208091040260200160405190810160405280929190818152602001828054610bde90613689565b8015610c2b5780601f10610c0057610100808354040283529160200191610c2b565b820191906000526020600020905b815481529060010190602001808311610c0e57829003601f168201915b5050505050905090565b600080610c40611ee5565b9050610c4d818585611eed565b600191505092915050565b601654341015610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490613706565b60405180910390fd5b6017543373ffffffffffffffffffffffffffffffffffffffff16311015610cf9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf090613772565b60405180910390fd5b3460106000828254610d0b91906137c1565b92505081905550610d4133600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166017546120b6565b604051806080016040528082815260200160011515815260200142815260200134601584604051610d729190613831565b908152602001604051809103902060030154610d8e91906137c1565b815250601582604051610da19190613831565b90815260200160405180910390206000820151816000019081610dc491906139ea565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301559050507f8382dfeb92e23123a91d983e4f179a9fbe329ff91e14e11cd3c3b5252f1151228142604051610e2d929190613abc565b60405180910390a150565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b601654341015610ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9890613706565b60405180910390fd5b6017543373ffffffffffffffffffffffffffffffffffffffff16311015610efd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef490613772565b60405180910390fd5b3460106000828254610f0f91906137c1565b92505081905550610f4533600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166017546120b6565b604051806080016040528082815260200160011515815260200142815260200134601484604051610f769190613831565b908152602001604051809103902060030154610f9291906137c1565b815250601482604051610fa59190613831565b90815260200160405180910390206000820151816000019081610fc891906139ea565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301559050507f892c7b6af36dc1cd7c78d56ead1e536ddf81fe5688e6b3f631cdfadf7ad4c5088142604051611031929190613abc565b60405180910390a150565b6000600254905090565b61104e612646565b83156110e75760405180608001604052808681526020018415158152602001838152602001828152506015866040516110879190613831565b908152602001604051809103902060008201518160000190816110aa91906139ea565b5060208201518160010160006101000a81548160ff0219169083151502179055506040820151816002015560608201518160030155905050611176565b604051806080016040528086815260200184151581526020018381526020018281525060148660405161111a9190613831565b9081526020016040518091039020600082015181600001908161113d91906139ea565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155606082015181600301559050505b7fc7da2a9b77928245e263afcf4e639fd44ae7d1970e45b7c6ff1a952442938caf85858585856040516111ad959493929190613aec565b60405180910390a15050505050565b6111c4612646565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90613bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036112c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ba90613bb8565b60405180910390fd5b80601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1d288f7aba265e8b154b112bbb631ceca5df5fe93a750b2fe042fd1cc826647f816040516113339190612f1d565b60405180910390a150565b600080611349611ee5565b90506113568582856126c4565b6113618585856120b6565b60019150509392505050565b6000611377612646565b60626009546113869190613c07565b83106113c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113be90613caa565b60405180910390fd5b60626009546113d69190613c07565b8210611417576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140e90613caa565b60405180910390fd5b600860009054906101000a900460ff16600a6114339190613dfd565b8361143e9190613e48565b601281905550600860009054906101000a900460ff16600a6114609190613dfd565b8261146b9190613e48565b6013819055506001905092915050565b60006009905090565b60008061148f611ee5565b90506114b08185856114a18589611cd1565b6114ab91906137c1565b611eed565b600191505092915050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000811561151f576015836040516114f99190613831565b908152602001604051809103902060010160009054906101000a900460ff169050611551565b60148360405161152f9190613831565b908152602001604051809103902060010160009054906101000a900460ff1690505b92915050565b600b5481565b60148180516020810182018051848252602083016020850120818352809550505050505060009150905080600001805461159690613689565b80601f01602080910402602001604051908101604052809291908181526020018280546115c290613689565b801561160f5780601f106115e45761010080835404028352916020019161160f565b820191906000526020600020905b8154815290600101906020018083116115f257829003601f168201915b5050505050908060010160009054906101000a900460ff16908060020154908060030154905084565b6000611642612646565b81600c8190555060019050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6116a2612646565b6116ac6000612750565b565b6116b6612646565b82156116db5781156116ce57806018819055506116d6565b806016819055505b611742565b811561171357600860009054906101000a900460ff16600a6116fd9190613dfd565b816117089190613e48565b601981905550611741565b600860009054906101000a900460ff16600a61172f9190613dfd565b8161173a9190613e48565b6017819055505b5b7fb87a29e1f0734b57d95308af5a136440c194441ac49edd417a1ed26aa78ceda283838360405161177593929190613ea2565b60405180910390a1505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60116020528060005260406000206000915054906101000a900460ff1681565b60185481565b60006117d8612646565b81600d8190555060019050919050565b600c5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461182790613689565b80601f016020809104026020016040519081016040528092919081815260200182805461185390613689565b80156118a05780601f10611875576101008083540402835291602001916118a0565b820191906000526020600020905b81548152906001019060200180831161188357829003601f168201915b5050505050905090565b6015818051602081018201805184825260208301602085012081835280955050505050506000915090508060000180546118e390613689565b80601f016020809104026020016040519081016040528092919081815260200182805461190f90613689565b801561195c5780601f106119315761010080835404028352916020019161195c565b820191906000526020600020905b81548152906001019060200180831161193f57829003601f168201915b5050505050908060010160009054906101000a900460ff16908060020154908060030154905084565b61198d612646565b6001600a819055506003600b81905550600860009054906101000a900460ff16600a6119b99190613dfd565b629896816119c79190613e48565b600c81905550600860009054906101000a900460ff16600a6119e99190613dfd565b629896816119f79190613e48565b600d81905550565b600080611a0a611ee5565b90506000611a188286611cd1565b905083811015611a5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5490613f4b565b60405180910390fd5b611a6a8286868403611eed565b60019250505092915050565b600080611a81611ee5565b9050611a8e8185856120b6565b600191505092915050565b600d5481565b60135481565b6000611aaf612646565b600a8284611abd91906137c1565b1115611afe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af590613fdd565b60405180910390fd5b82600a8190555081600b819055506001905092915050565b60008115611b4757601583604051611b2e9190613831565b9081526020016040518091039020600301549050611b6c565b601483604051611b579190613831565b90815260200160405180910390206003015490505b92915050565b6000611b7c612646565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613bb8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7290613bb8565b60405180910390fd5b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60105481565b60125481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60195481565b611d66612646565b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f318c131114339c004fff0a22fcdbbc0566bb2a7cd3aa1660e636ec5a66784ff28282604051611dee929190613ffd565b60405180910390a15050565b60008115611e2b57601583604051611e129190613831565b9081526020016040518091039020600201549050611e50565b601483604051611e3b9190613831565b90815260200160405180910390206002015490505b92915050565b611e5e612646565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ecd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec490614098565b60405180910390fd5b611ed681612750565b50565b600a5481565b60175481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f539061412a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc2906141bc565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120a99190612f51565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211c9061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218b906142e0565b60405180910390fd5b8061219e84611652565b10156121df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d690614372565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806122885750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80156122a15750601a60149054906101000a900460ff16155b1561263557601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146123fa57600060105461230930611652565b6123139190614392565b9050601254811061232a57612329601254612816565b5b601354601054106123f8576123406013546128d7565b601354601060008282546123549190614392565b925050819055506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050509050806123f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ed90614412565b60405180910390fd5b505b505b6000601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061249d5750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124aa57819050612624565b600c548211156124ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e6906144a4565b60405180910390fd5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259d57600d5461255084611652565b8361255b91906137c1565b111561259c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161259390614536565b60405180910390fd5b5b60006064600b54846125af9190613e48565b6125b99190613c07565b905060006064600a54856125cd9190613e48565b6125d79190613c07565b905080826125e591906137c1565b846125f09190614392565b9250816010600082825461260491906137c1565b925050819055506126218630838561261c91906137c1565b612b4a565b50505b61262f848483612b4a565b50612641565b612640838383612b4a565b5b505050565b61264e611ee5565b73ffffffffffffffffffffffffffffffffffffffff1661266c6117ee565b73ffffffffffffffffffffffffffffffffffffffff16146126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b9906145a2565b60405180910390fd5b565b60006126d08484611cd1565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461274a578181101561273c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127339061460e565b60405180910390fd5b6127498484848403611eed565b5b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601a60146101000a81548160ff02191690831515021790555060006002826128409190613c07565b9050600081836128509190614392565b90506000479050612860836128d7565b6000814761286e9190614392565b905061287a8382612daa565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516128ad9392919061462e565b60405180910390a1505050506000601a60146101000a81548160ff02191690831515021790555050565b6001601a60146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561290f5761290e61310a565b5b60405190808252806020026020018201604052801561293d5781602001602082028036833780820191505090505b509050308160008151811061295557612954614665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1e91906146a9565b81600181518110612a3257612a31614665565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a97307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611eed565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612af99594939291906147cf565b600060405180830381600087803b158015612b1357600080fd5b505af1158015612b27573d6000803e3d6000fd5b50505050506000601a60146101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bb09061424e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c1f906142e0565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612cae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca590614372565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d9c9190612f51565b60405180910390a350505050565b6001601a60146101000a81548160ff021916908315150217905550612df0307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611eed565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e7796959493929190614829565b60606040518083038185885af1158015612e95573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612eba919061489f565b5050506000601a60146101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f0782612edc565b9050919050565b612f1781612efc565b82525050565b6000602082019050612f326000830184612f0e565b92915050565b6000819050919050565b612f4b81612f38565b82525050565b6000602082019050612f666000830184612f42565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612fa6578082015181840152602081019050612f8b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612fce82612f6c565b612fd88185612f77565b9350612fe8818560208601612f88565b612ff181612fb2565b840191505092915050565b600060208201905081810360008301526130168184612fc3565b905092915050565b6000604051905090565b600080fd5b600080fd5b61303b81612efc565b811461304657600080fd5b50565b60008135905061305881613032565b92915050565b61306781612f38565b811461307257600080fd5b50565b6000813590506130848161305e565b92915050565b600080604083850312156130a1576130a0613028565b5b60006130af85828601613049565b92505060206130c085828601613075565b9150509250929050565b60008115159050919050565b6130df816130ca565b82525050565b60006020820190506130fa60008301846130d6565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61314282612fb2565b810181811067ffffffffffffffff821117156131615761316061310a565b5b80604052505050565b600061317461301e565b90506131808282613139565b919050565b600067ffffffffffffffff8211156131a05761319f61310a565b5b6131a982612fb2565b9050602081019050919050565b82818337600083830152505050565b60006131d86131d384613185565b61316a565b9050828152602081018484840111156131f4576131f3613105565b5b6131ff8482856131b6565b509392505050565b600082601f83011261321c5761321b613100565b5b813561322c8482602086016131c5565b91505092915050565b60006020828403121561324b5761324a613028565b5b600082013567ffffffffffffffff8111156132695761326861302d565b5b61327584828501613207565b91505092915050565b6000819050919050565b60006132a361329e61329984612edc565b61327e565b612edc565b9050919050565b60006132b582613288565b9050919050565b60006132c7826132aa565b9050919050565b6132d7816132bc565b82525050565b60006020820190506132f260008301846132ce565b92915050565b613301816130ca565b811461330c57600080fd5b50565b60008135905061331e816132f8565b92915050565b600080600080600060a086880312156133405761333f613028565b5b600086013567ffffffffffffffff81111561335e5761335d61302d565b5b61336a88828901613207565b955050602061337b8882890161330f565b945050604061338c8882890161330f565b935050606061339d88828901613075565b92505060806133ae88828901613075565b9150509295509295909350565b6000602082840312156133d1576133d0613028565b5b60006133df84828501613049565b91505092915050565b60008060006060848603121561340157613400613028565b5b600061340f86828701613049565b935050602061342086828701613049565b925050604061343186828701613075565b9150509250925092565b6000806040838503121561345257613451613028565b5b600061346085828601613075565b925050602061347185828601613075565b9150509250929050565b600060ff82169050919050565b6134918161347b565b82525050565b60006020820190506134ac6000830184613488565b92915050565b600080604083850312156134c9576134c8613028565b5b600083013567ffffffffffffffff8111156134e7576134e661302d565b5b6134f385828601613207565b92505060206135048582860161330f565b9150509250929050565b600060808201905081810360008301526135288187612fc3565b905061353760208301866130d6565b6135446040830185612f42565b6135516060830184612f42565b95945050505050565b6000602082840312156135705761356f613028565b5b600061357e84828501613075565b91505092915050565b6000806000606084860312156135a05761359f613028565b5b60006135ae8682870161330f565b93505060206135bf8682870161330f565b92505060406135d086828701613075565b9150509250925092565b600080604083850312156135f1576135f0613028565b5b60006135ff85828601613049565b925050602061361085828601613049565b9150509250929050565b6000806040838503121561363157613630613028565b5b600061363f85828601613049565b92505060206136508582860161330f565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806136a157607f821691505b6020821081036136b4576136b361365a565b5b50919050565b7f4e6f7420656e6f756768204554482073656e7421000000000000000000000000600082015250565b60006136f0601483612f77565b91506136fb826136ba565b602082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73210000000000000000000000000000600082015250565b600061375c601283612f77565b915061376782613726565b602082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006137cc82612f38565b91506137d783612f38565b92508282019050808211156137ef576137ee613792565b5b92915050565b600081905092915050565b600061380b82612f6c565b61381581856137f5565b9350613825818560208601612f88565b80840191505092915050565b600061383d8284613800565b915081905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026138aa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261386d565b6138b4868361386d565b95508019841693508086168417925050509392505050565b60006138e76138e26138dd84612f38565b61327e565b612f38565b9050919050565b6000819050919050565b613901836138cc565b61391561390d826138ee565b84845461387a565b825550505050565b600090565b61392a61391d565b6139358184846138f8565b505050565b5b818110156139595761394e600082613922565b60018101905061393b565b5050565b601f82111561399e5761396f81613848565b6139788461385d565b81016020851015613987578190505b61399b6139938561385d565b83018261393a565b50505b505050565b600082821c905092915050565b60006139c1600019846008026139a3565b1980831691505092915050565b60006139da83836139b0565b9150826002028217905092915050565b6139f382612f6c565b67ffffffffffffffff811115613a0c57613a0b61310a565b5b613a168254613689565b613a2182828561395d565b600060209050601f831160018114613a545760008415613a42578287015190505b613a4c85826139ce565b865550613ab4565b601f198416613a6286613848565b60005b82811015613a8a57848901518255600182019150602085019450602081019050613a65565b86831015613aa75784890151613aa3601f8916826139b0565b8355505b6001600288020188555050505b505050505050565b60006040820190508181036000830152613ad68185612fc3565b9050613ae56020830184612f42565b9392505050565b600060a0820190508181036000830152613b068188612fc3565b9050613b1560208301876130d6565b613b2260408301866130d6565b613b2f6060830185612f42565b613b3c6080830184612f42565b9695505050505050565b7f4c5020506169722063616e6e6f742062652074686520446561642077616c6c6560008201527f742c206f72203021000000000000000000000000000000000000000000000000602082015250565b6000613ba2602883612f77565b9150613bad82613b46565b604082019050919050565b60006020820190508181036000830152613bd181613b95565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c1282612f38565b9150613c1d83612f38565b925082613c2d57613c2c613bd8565b5b828204905092915050565b7f43616e6e6f74206c6971756964617465206d6f7265207468616e203225206f6660008201527f2074686520737570706c79206174206f6e636521000000000000000000000000602082015250565b6000613c94603483612f77565b9150613c9f82613c38565b604082019050919050565b60006020820190508181036000830152613cc381613c87565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115613d2157808604811115613cfd57613cfc613792565b5b6001851615613d0c5780820291505b8081029050613d1a85613cca565b9450613ce1565b94509492505050565b600082613d3a5760019050613df6565b81613d485760009050613df6565b8160018114613d5e5760028114613d6857613d97565b6001915050613df6565b60ff841115613d7a57613d79613792565b5b8360020a915084821115613d9157613d90613792565b5b50613df6565b5060208310610133831016604e8410600b8410161715613dcc5782820a905083811115613dc757613dc6613792565b5b613df6565b613dd98484846001613cd7565b92509050818404811115613df057613def613792565b5b81810290505b9392505050565b6000613e0882612f38565b9150613e138361347b565b9250613e407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613d2a565b905092915050565b6000613e5382612f38565b9150613e5e83612f38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e9757613e96613792565b5b828202905092915050565b6000606082019050613eb760008301866130d6565b613ec460208301856130d6565b613ed16040830184612f42565b949350505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f35602583612f77565b9150613f4082613ed9565b604082019050919050565b60006020820190508181036000830152613f6481613f28565b9050919050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2031302500000000000000000000000000000000000000602082015250565b6000613fc7602d83612f77565b9150613fd282613f6b565b604082019050919050565b60006020820190508181036000830152613ff681613fba565b9050919050565b60006040820190506140126000830185612f0e565b61401f60208301846130d6565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614082602683612f77565b915061408d82614026565b604082019050919050565b600060208201905081810360008301526140b181614075565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614114602483612f77565b915061411f826140b8565b604082019050919050565b6000602082019050818103600083015261414381614107565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141a6602283612f77565b91506141b18261414a565b604082019050919050565b600060208201905081810360008301526141d581614199565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614238602583612f77565b9150614243826141dc565b604082019050919050565b600060208201905081810360008301526142678161422b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006142ca602383612f77565b91506142d58261426e565b604082019050919050565b600060208201905081810360008301526142f9816142bd565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b600061435c602683612f77565b915061436782614300565b604082019050919050565b6000602082019050818103600083015261438b8161434f565b9050919050565b600061439d82612f38565b91506143a883612f38565b92508282039050818111156143c0576143bf613792565b5b92915050565b7f4661696c656420746f2073656e64204554480000000000000000000000000000600082015250565b60006143fc601283612f77565b9150614407826143c6565b602082019050919050565b6000602082019050818103600083015261442b816143ef565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b600061448e603983612f77565b915061449982614432565b604082019050919050565b600060208201905081810360008301526144bd81614481565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000614520603683612f77565b915061452b826144c4565b604082019050919050565b6000602082019050818103600083015261454f81614513565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061458c602083612f77565b915061459782614556565b602082019050919050565b600060208201905081810360008301526145bb8161457f565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006145f8601d83612f77565b9150614603826145c2565b602082019050919050565b60006020820190508181036000830152614627816145eb565b9050919050565b60006060820190506146436000830186612f42565b6146506020830185612f42565b61465d6040830184612f42565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506146a381613032565b92915050565b6000602082840312156146bf576146be613028565b5b60006146cd84828501614694565b91505092915050565b6000819050919050565b60006146fb6146f66146f1846146d6565b61327e565b612f38565b9050919050565b61470b816146e0565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61474681612efc565b82525050565b6000614758838361473d565b60208301905092915050565b6000602082019050919050565b600061477c82614711565b614786818561471c565b93506147918361472d565b8060005b838110156147c25781516147a9888261474c565b97506147b483614764565b925050600181019050614795565b5085935050505092915050565b600060a0820190506147e46000830188612f42565b6147f16020830187614702565b81810360408301526148038186614771565b90506148126060830185612f0e565b61481f6080830184612f42565b9695505050505050565b600060c08201905061483e6000830189612f0e565b61484b6020830188612f42565b6148586040830187614702565b6148656060830186614702565b6148726080830185612f0e565b61487f60a0830184612f42565b979650505050505050565b6000815190506148998161305e565b92915050565b6000806000606084860312156148b8576148b7613028565b5b60006148c68682870161488a565b93505060206148d78682870161488a565b92505060406148e88682870161488a565b915050925092509256fea2646970667358221220a5080f79a00d365a6765d7583ff8bbbdb85b3a4bac6bb905fcbf2803df067bba64736f6c63430008100033
Verified Source Code Partial Match
Compiler: v0.8.16+commit.07a7930e
EVM: london
Optimization: No
StellaryAI.sol 1309 lines
/**
* ## ## #### ## ### ### #### #### ## ### ## ## ## ## ####
* ## ## # ## ## ## ## ## ## ## ## ## ## ## ## ##
* #### ## ## ## ## ## ## ## ## ## ## ## ## ##
* ##### ## ## ## ## ## ## ## ## ## ## ## ## ## ##
* ### ## ## ## ## ## ### ## ## ## ## ### ##
* ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ##
* ## ## #### ### ### ### ### ### ### ### ## #### ## ## ### ## ####
*
* StellaryAI : The Aggregator of AI Creativity | Every Thought, Every Sound, Every Vision - Endlessly Created
*
* Twitter: twitter.com/StellaryAI
* Homepage: https://stellaryai.com
* APP: https://app.stellaryai.com
*
*
* 4% Buy Tax | 4% Sell Tax
*
* Set slippage to 4-5% : 1% to LP, 3% tax for Marketing & Development Costs.
*
* MAX WALLET - 10 Million
* Single MAX Transaction - 10 Million
*/
// SPDX-License-Identifier: MIT
pragma solidity 0.8.16;
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function allPairsLength() external view returns (uint256);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint256 amountADesired,
uint256 amountBDesired,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
)
external
returns (
uint256 amountA,
uint256 amountB,
uint256 liquidity
);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
function removeLiquidity(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETH(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountToken, uint256 amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint256 liquidity,
uint256 amountAMin,
uint256 amountBMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountA, uint256 amountB);
function removeLiquidityETHWithPermit(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountToken, uint256 amountETH);
function swapExactTokensForTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapTokensForExactTokens(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactETHForTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function swapTokensForExactETH(
uint256 amountOut,
uint256 amountInMax,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapExactTokensForETH(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external returns (uint256[] memory amounts);
function swapETHForExactTokens(
uint256 amountOut,
address[] calldata path,
address to,
uint256 deadline
) external payable returns (uint256[] memory amounts);
function quote(
uint256 amountA,
uint256 reserveA,
uint256 reserveB
) external pure returns (uint256 amountB);
function getAmountOut(
uint256 amountIn,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountOut);
function getAmountIn(
uint256 amountOut,
uint256 reserveIn,
uint256 reserveOut
) external pure returns (uint256 amountIn);
function getAmountsOut(uint256 amountIn, address[] calldata path)
external
view
returns (uint256[] memory amounts);
function getAmountsIn(uint256 amountOut, address[] calldata path)
external
view
returns (uint256[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01 {
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
) external returns (uint256 amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint256 liquidity,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline,
bool approveMax,
uint8 v,
bytes32 r,
bytes32 s
) external returns (uint256 amountETH);
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external payable;
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender)
external
view
returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
}
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() external view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the name of the token.
*/
function name() external view virtual override returns (string memory) {
return _name;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account)
public
view
virtual
override
returns (uint256)
{
return _balances[account];
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 9;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() external view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender)
public
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount)
external
virtual
override
returns (bool)
{
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount)
external
virtual
override
returns (bool)
{
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue)
external
virtual
returns (bool)
{
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(
currentAllowance >= subtractedValue,
"ERC20: decreased allowance below zero"
);
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue)
external
virtual
returns (bool)
{
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
unchecked {
// Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
// Overflow not possible: amount <= accountBalance <= totalSupply.
_totalSupply -= amount;
}
emit Transfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
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);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
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 _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");
uint256 fromBalance = _balances[from];
require(
fromBalance >= amount,
"ERC20: transfer amount exceeds balance"
);
unchecked {
_balances[from] = fromBalance - amount;
// Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
// decrementing then incrementing.
_balances[to] += amount;
}
emit Transfer(from, to, amount);
}
}
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract StellaryAI is ERC20, Ownable {
// TOKENOMICS START ==========================================================>
string private _name = "StellaryAI";
string private _symbol = "stelAI";
uint8 private _decimals = 9;
uint256 private _supply = 1000000000;
uint256 public taxForLiquidity = 47; //sniper protection, to be lowered to 1% after launch
uint256 public taxForMarketing = 47; //sniper protection, to be lowered to 2% after launch
uint256 public maxTxAmount = 10000001 * 10**_decimals;
uint256 public maxWalletAmount = 10000001 * 10**_decimals;
address public marketingWallet = 0x008597D4Af900e4BD5dEd7fFe82d3A24b43E3E87;
address public DEAD = 0x000000000000000000000000000000000000dEaD;
uint256 public _marketingReserves = 0;
mapping(address => bool) public _isExcludedFromFee;
uint256 public numTokensSellToAddToLiquidity = 200000 * 10**_decimals;
uint256 public numTokensSellToAddToETH = 100000 * 10**_decimals;
function postLaunch() external onlyOwner {
taxForLiquidity = 1;
taxForMarketing = 3;
maxTxAmount = 10000001 * 10**_decimals;
maxWalletAmount = 10000001 * 10**_decimals;
}
// TOKENOMICS END ============================================================>
struct userUnlock {
string tgUserName;
bool unlocked;
uint256 unlockedAt;
uint256 totalEthPaid;
}
struct channelUnlock {
string tgChannel;
bool unlocked;
uint256 unlockedAt;
uint256 totalEthPaid;
}
mapping(string => userUnlock) public unlockedUsers;
mapping(string => channelUnlock) public unlockedChannels;
uint public userCostEth = 0.01 ether;
uint public userCostTokens = 10000 * 10**_decimals;
uint public channelCostEth = 0.1 ether;
uint public channelCostTokens = 100000 * 10**_decimals;
event UserUnlocked(string tg_username, uint256 unlockTime);
event ChannelUnlocked(string tg_channel, uint256 unlockTime);
event CostUpdated(bool _isEth, bool _isChannel, uint _cost);
event ExcludedFromFeeUpdated(address _address, bool _status);
event AdminModifierSet(string tg_user_chan, bool _isChannel, bool _isUnlocked,
uint _unlockBlock, uint _amtPaid);
event PairUpdated(address _address);
//with all eth payments, reserve is held on the contract until the sending threshold is reached.
function unlockUser(string memory tg_username) external payable {
require(msg.value >= userCostEth, "Not enough ETH sent!");
require(msg.sender.balance >= userCostTokens, "Not enough tokens!");
_marketingReserves += msg.value;
_transfer(msg.sender, DEAD, userCostTokens);
unlockedUsers[tg_username] = userUnlock(
tg_username,
true,
block.timestamp,
unlockedUsers[tg_username].totalEthPaid + msg.value
);
emit UserUnlocked(tg_username, block.timestamp);
}
function unlockChannel(string memory tg_channel) external payable {
require(msg.value >= userCostEth, "Not enough ETH sent!");
require(msg.sender.balance >= userCostTokens, "Not enough tokens!");
_marketingReserves += msg.value;
_transfer(msg.sender, DEAD, userCostTokens);
unlockedChannels[tg_channel] = channelUnlock(
tg_channel,
true,
block.timestamp,
unlockedChannels[tg_channel].totalEthPaid + msg.value
);
emit ChannelUnlocked(tg_channel, block.timestamp);
}
//Some simple ABIv1 getters below
function isUnlocked(string memory tg_user_chan, bool _isChannel) external view returns(bool) {
if (_isChannel) {
return unlockedChannels[tg_user_chan].unlocked;
}
return unlockedUsers[tg_user_chan].unlocked;
}
function getAmtPaid(string memory tg_user_chan, bool _isChannel) external view returns(uint) {
if (_isChannel) {
return unlockedChannels[tg_user_chan].totalEthPaid;
}
return unlockedUsers[tg_user_chan].totalEthPaid;
}
function getUnlockBlock(string memory tg_user_chan, bool _isChannel) external view returns(uint) {
if (_isChannel) {
return unlockedChannels[tg_user_chan].unlockedAt;
}
return unlockedUsers[tg_user_chan].unlockedAt;
}
//Admin modifier function
function setUnlockStatus(string memory tg_user_chan, bool _isChannel,
bool _isUnlocked, uint _unlockBlock, uint _amtPaid) external onlyOwner {
if (_isChannel) {
unlockedChannels[tg_user_chan] = channelUnlock(
tg_user_chan,
_isUnlocked,
_unlockBlock,
_amtPaid
);
} else {
unlockedUsers[tg_user_chan] = userUnlock(
tg_user_chan,
_isUnlocked,
_unlockBlock,
_amtPaid
);
}
emit AdminModifierSet(tg_user_chan, _isChannel, _isUnlocked, _unlockBlock, _amtPaid);
}
function setCost(bool _isEth, bool _isChannel, uint _cost) external onlyOwner {
if (_isEth) {
if (_isChannel) {
channelCostEth = _cost;
} else {
userCostEth = _cost;
}
} else {
if (_isChannel) {
channelCostTokens = _cost * 10**_decimals;
} else {
userCostTokens = _cost * 10**_decimals;
}
}
emit CostUpdated(_isEth, _isChannel, _cost);
}
IUniswapV2Router02 public immutable uniswapV2Router;
address public uniswapV2Pair;
bool inSwapAndLiquify;
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
modifier lockTheSwap() {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor() ERC20(_name, _symbol) {
_mint(msg.sender, (_supply * 10**_decimals));
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //eth mainnet
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
_isExcludedFromFee[address(uniswapV2Router)] = true;
_isExcludedFromFee[msg.sender] = true;
_isExcludedFromFee[marketingWallet] = true;
}
function updatePair(address _pair) external onlyOwner {
require(_pair != DEAD, "LP Pair cannot be the Dead wallet, or 0!");
require(_pair != address(0), "LP Pair cannot be the Dead wallet, or 0!");
uniswapV2Pair = _pair;
emit PairUpdated(_pair);
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(address from, address to, uint256 amount) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(balanceOf(from) >= amount, "ERC20: transfer amount exceeds balance");
if ((from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify) {
if (from != uniswapV2Pair) {
uint256 contractLiquidityBalance = balanceOf(address(this)) - _marketingReserves;
if (contractLiquidityBalance >= numTokensSellToAddToLiquidity) {
_swapAndLiquify(numTokensSellToAddToLiquidity);
}
if ((_marketingReserves) >= numTokensSellToAddToETH) {
_swapTokensForEth(numTokensSellToAddToETH);
_marketingReserves -= numTokensSellToAddToETH;
bool sent = payable(marketingWallet).send(address(this).balance);
require(sent, "Failed to send ETH");
}
}
uint256 transferAmount;
if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
transferAmount = amount;
}
else {
require(amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount");
if(from == uniswapV2Pair){
require((amount + balanceOf(to)) <= maxWalletAmount, "ERC20: balance amount exceeded max wallet amount limit");
}
uint256 marketingShare = ((amount * taxForMarketing) / 100);
uint256 liquidityShare = ((amount * taxForLiquidity) / 100);
transferAmount = amount - (marketingShare + liquidityShare);
_marketingReserves += marketingShare;
super._transfer(from, address(this), (marketingShare + liquidityShare));
}
super._transfer(from, to, transferAmount);
}
else {
super._transfer(from, to, amount);
}
}
function excludeFromFee(address _address, bool _status) external onlyOwner {
_isExcludedFromFee[_address] = _status;
emit ExcludedFromFeeUpdated(_address, _status);
}
function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
uint256 half = (contractTokenBalance / 2);
uint256 otherHalf = (contractTokenBalance - half);
uint256 initialBalance = address(this).balance;
_swapTokensForEth(half);
uint256 newBalance = (address(this).balance - initialBalance);
_addLiquidity(otherHalf, newBalance);
emit SwapAndLiquify(half, newBalance, otherHalf);
}
function _swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
function _addLiquidity(uint256 tokenAmount, uint256 ethAmount)
private
lockTheSwap
{
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
marketingWallet,
block.timestamp
);
}
function changeMarketingWallet(address newWallet)
public
onlyOwner
returns (bool)
{
require(newWallet != DEAD, "LP Pair cannot be the Dead wallet, or 0!");
require(newWallet != address(0), "LP Pair cannot be the Dead wallet, or 0!");
marketingWallet = newWallet;
return true;
}
function changeTaxForLiquidityAndMarketing(uint256 _taxForLiquidity, uint256 _taxForMarketing)
public
onlyOwner
returns (bool)
{
require((_taxForLiquidity+_taxForMarketing) <= 10, "ERC20: total tax must not be greater than 10%");
taxForLiquidity = _taxForLiquidity;
taxForMarketing = _taxForMarketing;
return true;
}
function changeSwapThresholds(uint256 _numTokensSellToAddToLiquidity, uint256 _numTokensSellToAddToETH)
public
onlyOwner
returns (bool)
{
require(_numTokensSellToAddToLiquidity < _supply / 98, "Cannot liquidate more than 2% of the supply at once!");
require(_numTokensSellToAddToETH < _supply / 98, "Cannot liquidate more than 2% of the supply at once!");
numTokensSellToAddToLiquidity = _numTokensSellToAddToLiquidity * 10**_decimals;
numTokensSellToAddToETH = _numTokensSellToAddToETH * 10**_decimals;
return true;
}
function changeMaxTxAmount(uint256 _maxTxAmount)
public
onlyOwner
returns (bool)
{
maxTxAmount = _maxTxAmount;
return true;
}
function changeMaxWalletAmount(uint256 _maxWalletAmount)
public
onlyOwner
returns (bool)
{
maxWalletAmount = _maxWalletAmount;
return true;
}
receive() external payable {}
}
Read Contract
DEAD 0x03fd2a45 → address
_isExcludedFromFee 0x768dc710 → bool
_marketingReserves 0xc0fdea57 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
channelCostEth 0x7930ef69 → uint256
channelCostTokens 0xdf1d099e → uint256
decimals 0x313ce567 → uint8
getAmtPaid 0xb5c78e8a → uint256
getUnlockBlock 0xf1b2b3d9 → uint256
isUnlocked 0x4fa74c4d → bool
marketingWallet 0x75f0a874 → address
maxTxAmount 0x8c0b5e22 → uint256
maxWalletAmount 0xaa4bde28 → uint256
name 0x06fdde03 → string
numTokensSellToAddToETH 0xad16a0cf → uint256
numTokensSellToAddToLiquidity 0xd12a7688 → uint256
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
taxForLiquidity 0xf345bd85 → uint256
taxForMarketing 0x527ffabd → uint256
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
unlockedChannels 0xa2330d97 → string, bool, uint256, uint256
unlockedUsers 0x63cdf60f → string, bool, uint256, uint256
userCostEth 0x054dee0f → uint256
userCostTokens 0xfbee93ba → uint256
Write Contract 19 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
changeMarketingWallet 0xbb85c6d1
address newWallet
returns: bool
changeMaxTxAmount 0x677daa57
uint256 _maxTxAmount
returns: bool
changeMaxWalletAmount 0x81bfdcca
uint256 _maxWalletAmount
returns: bool
changeSwapThresholds 0x30b63d80
uint256 _numTokensSellToAddToLiquidity
uint256 _numTokensSellToAddToETH
returns: bool
changeTaxForLiquidityAndMarketing 0xaf8af690
uint256 _taxForLiquidity
uint256 _taxForMarketing
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFee 0xdf8408fe
address _address
bool _status
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
postLaunch 0xa3996f7b
No parameters
renounceOwnership 0x715018a6
No parameters
setCost 0x73c503b3
bool _isEth
bool _isChannel
uint256 _cost
setUnlockStatus 0x18bc47f6
string tg_user_chan
bool _isChannel
bool _isUnlocked
uint256 _unlockBlock
uint256 _amtPaid
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
unlockChannel 0x0f1d7ad9
string tg_channel
unlockUser 0x16a7b160
string tg_username
updatePair 0x1b56bbf9
address _pair
Recent Transactions
No transactions found for this address