Address Contract Partially Verified
Address
0xEB22e60a770b913EB47D6aE9A25a2C36b6876c56
Balance
0 ETH
Nonce
1
Code Size
19209 bytes
Creator
0x2b8767B5...3b87 at tx 0x0e78e002...c3e0cf
Indexed Transactions
0
Contract Bytecode
19209 bytes
0x60806040526004361061023e575f3560e01c8063715018a61161012d578063a457c2d7116100aa578063ca0701b21161006e578063ca0701b214610859578063cc274b2914610881578063dd62ed3e146108a9578063f0d20dc4146108e5578063f2fde38b1461090f57610245565b8063a457c2d714610753578063a9059cbb1461078f578063aacebbe3146107cb578063ac94151c146107f3578063ad5dff731461081d57610245565b80638da5cb5b116100f15780638da5cb5b1461069957806395d89b41146106c35780639f3f0778146106ed578063a095e8f914610703578063a404b4bf1461072b57610245565b8063715018a6146105db57806375f0a874146105f15780637da4869f1461061b5780638036d59014610645578063808a54571461066f57610245565b8063313ce567116101bb5780634ada218b1161017f5780634ada218b146104fb5780634b2f84fa146105255780635154f1361461054d5780635b00e5131461057757806370a082311461059f57610245565b8063313ce56714610409578063379ba1d914610433578063395093511461045b5780633af32abf1461049757806342e3d595146104d357610245565b806318160ddd1161020257806318160ddd14610329578063189f6438146103535780632161c7341461037b57806323b872dd146103a357806324024efd146103df57610245565b8063022723cc1461024957806306fdde03146102715780630758d9241461029b578063095ea7b3146102c55780630c4242841461030157610245565b3661024557005b5f5ffd5b348015610254575f5ffd5b5061026f600480360381019061026a91906134a8565b610937565b005b34801561027c575f5ffd5b50610285610aa5565b6040516102929190613556565b60405180910390f35b3480156102a6575f5ffd5b506102af610b35565b6040516102bc91906135f0565b60405180910390f35b3480156102d0575f5ffd5b506102eb60048036038101906102e69190613644565b610b5a565b6040516102f8919061369c565b60405180910390f35b34801561030c575f5ffd5b50610327600480360381019061032291906136df565b610b77565b005b348015610334575f5ffd5b5061033d610cb3565b60405161034a919061372c565b60405180910390f35b34801561035e575f5ffd5b5061037960048036038101906103749190613745565b610cbc565b005b348015610386575f5ffd5b506103a1600480360381019061039c91906136df565b610d70565b005b3480156103ae575f5ffd5b506103c960048036038101906103c49190613770565b610eac565b6040516103d6919061369c565b60405180910390f35b3480156103ea575f5ffd5b506103f3610f9e565b604051610400919061372c565b60405180910390f35b348015610414575f5ffd5b5061041d610fa4565b60405161042a91906137db565b60405180910390f35b34801561043e575f5ffd5b5061045960048036038101906104549190613745565b610fac565b005b348015610466575f5ffd5b50610481600480360381019061047c9190613644565b611096565b60405161048e919061369c565b60405180910390f35b3480156104a2575f5ffd5b506104bd60048036038101906104b891906137f4565b61113d565b6040516104ca919061369c565b60405180910390f35b3480156104de575f5ffd5b506104f960048036038101906104f49190613745565b61118f565b005b348015610506575f5ffd5b5061050f611255565b60405161051c919061369c565b60405180910390f35b348015610530575f5ffd5b5061054b600480360381019061054691906137f4565b611268565b005b348015610558575f5ffd5b5061056161166a565b60405161056e919061372c565b60405180910390f35b348015610582575f5ffd5b5061059d60048036038101906105989190613745565b611670565b005b3480156105aa575f5ffd5b506105c560048036038101906105c091906137f4565b61175a565b6040516105d2919061372c565b60405180910390f35b3480156105e6575f5ffd5b506105ef61179f565b005b3480156105fc575f5ffd5b506106056118f2565b604051610612919061383f565b60405180910390f35b348015610626575f5ffd5b5061062f611917565b60405161063c919061372c565b60405180910390f35b348015610650575f5ffd5b5061065961191d565b604051610666919061372c565b60405180910390f35b34801561067a575f5ffd5b50610683611923565b6040516106909190613867565b60405180910390f35b3480156106a4575f5ffd5b506106ad611947565b6040516106ba9190613867565b60405180910390f35b3480156106ce575f5ffd5b506106d761196f565b6040516106e49190613556565b60405180910390f35b3480156106f8575f5ffd5b506107016119ff565b005b34801561070e575f5ffd5b50610729600480360381019061072491906138e1565b611a9f565b005b348015610736575f5ffd5b50610751600480360381019061074c91906134a8565b611c48565b005b34801561075e575f5ffd5b5061077960048036038101906107749190613644565b611d78565b604051610786919061369c565b60405180910390f35b34801561079a575f5ffd5b506107b560048036038101906107b09190613644565b611e5e565b6040516107c2919061369c565b60405180910390f35b3480156107d6575f5ffd5b506107f160048036038101906107ec9190613968565b611e7b565b005b3480156107fe575f5ffd5b50610807611fc2565b604051610814919061369c565b60405180910390f35b348015610828575f5ffd5b50610843600480360381019061083e91906137f4565b611fd5565b604051610850919061369c565b60405180910390f35b348015610864575f5ffd5b5061087f600480360381019061087a9190613993565b612027565b005b34801561088c575f5ffd5b506108a760048036038101906108a29190613993565b612116565b005b3480156108b4575f5ffd5b506108cf60048036038101906108ca91906139be565b6121b6565b6040516108dc919061372c565b60405180910390f35b3480156108f0575f5ffd5b506108f9612238565b604051610906919061372c565b60405180910390f35b34801561091a575f5ffd5b50610935600480360381019061093091906137f4565b61223e565b005b61093f612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109c490613a46565b60405180910390fd5b6103e860056109da610cb3565b6109e49190613a91565b6109ee9190613aff565b821015610a30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2790613b9f565b60405180910390fd5b6103e86005610a3d610cb3565b610a479190613a91565b610a519190613aff565b811015610a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8a90613c2d565b60405180910390fd5b81600b8190555080600a819055505050565b606060038054610ab490613c78565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae090613c78565b8015610b2b5780601f10610b0257610100808354040283529160200191610b2b565b820191905f5260205f20905b815481529060010190602001808311610b0e57829003601f168201915b5050505050905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610b6d610b66612400565b8484612407565b6001905092915050565b610b7f612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490613a46565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d82604051610ca7919061369c565b60405180910390a25050565b5f600254905090565b610cc4612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990613a46565b60405180910390fd5b8015600660146101000a81548160ff02191690831515021790555050565b610d78612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90613a46565b60405180910390fd5b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9b8f7e0160b0b3dbd1778c94df017a106051c9cfc844b82de0b4036a967d2d2b82604051610ea0919061369c565b60405180910390a25050565b5f610eb88484846125ca565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610eff612400565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590613d18565b60405180910390fd5b610f9285610f8a612400565b858403612407565b60019150509392505050565b60085481565b5f6012905090565b610fb4612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611042576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103990613a46565b60405180910390fd5b80600660156101000a81548160ff0219169083151502179055507f63e9bb35ae90a43113bc6f999f1c6395e88ee5f59560b46bd45815fe8560efae8160405161108b919061369c565b60405180910390a150565b5f6111336110a2612400565b848460015f6110af612400565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461112e9190613d36565b612407565b6001905092915050565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611197612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90613a46565b60405180910390fd5b8061123d57611232610cb3565b600a81905550611252565b6c2d703a3487640b587e80000000600a819055505b50565b600660159054906101000a900460ff1681565b611270612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590613a46565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611464575f4790505f8111611377576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136e90613db3565b60405180910390fd5b5f611380611947565b73ffffffffffffffffffffffffffffffffffffffff16826040516113a390613dfe565b5f6040518083038185875af1925050503d805f81146113dd576040519150601f19603f3d011682016040523d82523d5f602084013e6113e2565b606091505b5050905080611426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141d90613e5c565b60405180910390fd5b7fd626025bae88be60fdc3ad9ab659cd89ac712e259db2aa71e5f0c428afc1c5b582604051611455919061372c565b60405180910390a15050611667565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c990613eea565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115109190613867565b602060405180830381865afa15801561152b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154f9190613f1c565b90505f8111611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90613f91565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115b7611947565b836040518363ffffffff1660e01b81526004016115d5929190613faf565b6020604051808303815f875af11580156115f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116159190613fea565b508273ffffffffffffffffffffffffffffffffffffffff167f46d2e6e71fc567877b817ff3d940571f989d4ee4d40f2b70806d36e738feef6f8260405161165c919061372c565b60405180910390a250505b50565b600a5481565b611678612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611706576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fd90613a46565b60405180910390fd5b80600660166101000a81548160ff0219169083151502179055507f265a32a3888279767f510f77e5a369e8e1a95af05c9ef46b77c93369dd4fea768160405161174f919061369c565b60405180910390a150565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6117a7612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611835576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182c90613a46565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b600b5481565b7f0000000000000000000000008447d78d38ddb9f7ade078d502813889f99ebb0381565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461197e90613c78565b80601f01602080910402602001604051908101604052809291908181526020018280546119aa90613c78565b80156119f55780601f106119cc576101008083540402835291602001916119f5565b820191905f5260205f20905b8154815290600101906020018083116119d857829003601f168201915b5050505050905090565b611a07612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8c90613a46565b60405180910390fd5b611a9d612d0e565b565b611aa7612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2c90613a46565b60405180910390fd5b5f5f90505b83839050811015611c425781600e5f868685818110611b5c57611b5b614015565b5b9050602002016020810190611b7191906137f4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550838382818110611bd357611bd2614015565b5b9050602002016020810190611be891906137f4565b73ffffffffffffffffffffffffffffffffffffffff167ff93f9a76c1bf3444d22400a00cb9fe990e6abe9dbb333fda48859cfee864543d83604051611c2d919061369c565b60405180910390a28080600101915050611b3a565b50505050565b611c50612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd590613a46565b60405180910390fd5b600a821115611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061408c565b60405180910390fd5b81600781905550600a811115611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d64906140f4565b60405180910390fd5b806008819055505050565b5f5f60015f611d85612400565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3690614182565b60405180910390fd5b611e53611e4a612400565b85858403612407565b600191505092915050565b5f611e71611e6a612400565b84846125ca565b6001905092915050565b611e83612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0890613a46565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f76906141ea565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600660169054906101000a900460ff1681565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61202f612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b490613a46565b60405180910390fd5b6120c63061175a565b811115612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614252565b60405180910390fd5b612113303383613022565b50565b61211e612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a390613a46565b60405180910390fd5b8060098190555050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60075481565b612246612400565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cb90613a46565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612342576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612339906142e0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246c9061436e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da906143fc565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125bd919061372c565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161262f9061448a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269d906144f2565b60405180910390fd5b5f81036126bd576126b883835f613022565b612d09565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561275b5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127745750600660159054906101000a900460ff16155b156127ba575f6127b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b09061455a565b60405180910390fd5b5b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156128585750600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156128a357600b548111156128a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612899906145e8565b60405180910390fd5b5b7f0000000000000000000000008447d78d38ddb9f7ade078d502813889f99ebb0373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129455750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129985750600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129f1575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612a54575f612a008361175a565b9050600a548282612a119190613d36565b1115612a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4990614676565b60405180910390fd5b505b5f612a5e3061175a565b90505f6009548210159050808015612a835750600660149054906101000a900460ff16155b8015612adb57507f0000000000000000000000008447d78d38ddb9f7ade078d502813889f99ebb0373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612ae957612ae8612d0e565b5b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612b875750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612cfb575f7f0000000000000000000000008447d78d38ddb9f7ade078d502813889f99ebb0373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603612c0b57612c086064612bfa6007548761329790919063ffffffff16565b61330e90919063ffffffff16565b90505b7f0000000000000000000000008447d78d38ddb9f7ade078d502813889f99ebb0373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612c8957612c866064612c786008548761329790919063ffffffff16565b61330e90919063ffffffff16565b90505b5f811115612cf957600660169054906101000a900460ff1615612cd757612cd286600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613022565b612ce3565b612ce2863083613022565b5b612cf6818561335790919063ffffffff16565b93505b505b612d06858585613022565b50505b505050565b6001600660146101000a81548160ff0219169083151502179055505f612d333061175a565b90505f8103612d425750613006565b600660169054906101000a900460ff1615612d5d5750613006565b5f600267ffffffffffffffff811115612d7957612d78614694565b5b604051908082528060200260200182016040528015612da75781602001602082028036833780820191505090505b50905030815f81518110612dbe57612dbd614015565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612e62573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e8691906146d5565b81600181518110612e9a57612e99614015565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081612f003060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166121b6565b1015612f5357612f523060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612407565b5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f84600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612fd6959493929190614810565b5f604051808303815f87803b158015612fed575f5ffd5b505af1158015612fff573d5f5f3e3d5ffd5b5050505050505b5f600660146101000a81548160ff021916908315150217905550565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613090576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613087906148d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036130fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f590614966565b60405180910390fd5b6131098383836133a0565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561318c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613183906149f4565b60405180910390fd5b8181035f5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461321a9190613d36565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161327e919061372c565b60405180910390a36132918484846133a5565b50505050565b5f5f83036132a7575f9050613308565b5f82846132b49190613a91565b90508284826132c39190613aff565b14613303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132fa90614a82565b60405180910390fd5b809150505b92915050565b5f61334f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506133aa565b905092915050565b5f61339883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061340b565b905092915050565b505050565b505050565b5f5f831182906133f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e79190613556565b60405180910390fd5b505f83856133fe9190613aff565b9050809150509392505050565b5f838311158290613452576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134499190613556565b60405180910390fd5b505f83856134609190614aa0565b9050809150509392505050565b5f5ffd5b5f5ffd5b5f819050919050565b61348781613475565b8114613491575f5ffd5b50565b5f813590506134a28161347e565b92915050565b5f5f604083850312156134be576134bd61346d565b5b5f6134cb85828601613494565b92505060206134dc85828601613494565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613528826134e6565b61353281856134f0565b9350613542818560208601613500565b61354b8161350e565b840191505092915050565b5f6020820190508181035f83015261356e818461351e565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6135b86135b36135ae84613576565b613595565b613576565b9050919050565b5f6135c98261359e565b9050919050565b5f6135da826135bf565b9050919050565b6135ea816135d0565b82525050565b5f6020820190506136035f8301846135e1565b92915050565b5f61361382613576565b9050919050565b61362381613609565b811461362d575f5ffd5b50565b5f8135905061363e8161361a565b92915050565b5f5f6040838503121561365a5761365961346d565b5b5f61366785828601613630565b925050602061367885828601613494565b9150509250929050565b5f8115159050919050565b61369681613682565b82525050565b5f6020820190506136af5f83018461368d565b92915050565b6136be81613682565b81146136c8575f5ffd5b50565b5f813590506136d9816136b5565b92915050565b5f5f604083850312156136f5576136f461346d565b5b5f61370285828601613630565b9250506020613713858286016136cb565b9150509250929050565b61372681613475565b82525050565b5f60208201905061373f5f83018461371d565b92915050565b5f6020828403121561375a5761375961346d565b5b5f613767848285016136cb565b91505092915050565b5f5f5f606084860312156137875761378661346d565b5b5f61379486828701613630565b93505060206137a586828701613630565b92505060406137b686828701613494565b9150509250925092565b5f60ff82169050919050565b6137d5816137c0565b82525050565b5f6020820190506137ee5f8301846137cc565b92915050565b5f602082840312156138095761380861346d565b5b5f61381684828501613630565b91505092915050565b5f61382982613576565b9050919050565b6138398161381f565b82525050565b5f6020820190506138525f830184613830565b92915050565b61386181613609565b82525050565b5f60208201905061387a5f830184613858565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126138a1576138a0613880565b5b8235905067ffffffffffffffff8111156138be576138bd613884565b5b6020830191508360208202830111156138da576138d9613888565b5b9250929050565b5f5f5f604084860312156138f8576138f761346d565b5b5f84013567ffffffffffffffff81111561391557613914613471565b5b6139218682870161388c565b93509350506020613934868287016136cb565b9150509250925092565b6139478161381f565b8114613951575f5ffd5b50565b5f813590506139628161393e565b92915050565b5f6020828403121561397d5761397c61346d565b5b5f61398a84828501613954565b91505092915050565b5f602082840312156139a8576139a761346d565b5b5f6139b584828501613494565b91505092915050565b5f5f604083850312156139d4576139d361346d565b5b5f6139e185828601613630565b92505060206139f285828601613630565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a306020836134f0565b9150613a3b826139fc565b602082019050919050565b5f6020820190508181035f830152613a5d81613a24565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a9b82613475565b9150613aa683613475565b9250828202613ab481613475565b91508282048414831517613acb57613aca613a64565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b0982613475565b9150613b1483613475565b925082613b2457613b23613ad2565b5b828204905092915050565b7f5472616e73616374696f6e206c696d69742063616e6e6f74206265206c6f77655f8201527f72207468616e20302e3525206f6620737570706c790000000000000000000000602082015250565b5f613b896035836134f0565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b7f57616c6c6574206c696d69742063616e6e6f74206265206c6f776572207468615f8201527f6e20302e3525206f6620737570706c7900000000000000000000000000000000602082015250565b5f613c176030836134f0565b9150613c2282613bbd565b604082019050919050565b5f6020820190508181035f830152613c4481613c0b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613c8f57607f821691505b602082108103613ca257613ca1613c4b565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613d026028836134f0565b9150613d0d82613ca8565b604082019050919050565b5f6020820190508181035f830152613d2f81613cf6565b9050919050565b5f613d4082613475565b9150613d4b83613475565b9250828201905080821115613d6357613d62613a64565b5b92915050565b7f4e6f206e617469766520746f6b656e7320746f207265636f76657200000000005f82015250565b5f613d9d601b836134f0565b9150613da882613d69565b602082019050919050565b5f6020820190508181035f830152613dca81613d91565b9050919050565b5f81905092915050565b50565b5f613de95f83613dd1565b9150613df482613ddb565b5f82019050919050565b5f613e0882613dde565b9150819050919050565b7f4e617469766520746f6b656e207265636f76657279206661696c6564000000005f82015250565b5f613e46601c836134f0565b9150613e5182613e12565b602082019050919050565b5f6020820190508181035f830152613e7381613e3a565b9050919050565b7f43616e6e6f74207265636f7665722074617820746f6b656e73207769746820745f8201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b5f613ed4602c836134f0565b9150613edf82613e7a565b604082019050919050565b5f6020820190508181035f830152613f0181613ec8565b9050919050565b5f81519050613f168161347e565b92915050565b5f60208284031215613f3157613f3061346d565b5b5f613f3e84828501613f08565b91505092915050565b7f4e6f20746f6b656e7320746f207265636f7665720000000000000000000000005f82015250565b5f613f7b6014836134f0565b9150613f8682613f47565b602082019050919050565b5f6020820190508181035f830152613fa881613f6f565b9050919050565b5f604082019050613fc25f830185613858565b613fcf602083018461371d565b9392505050565b5f81519050613fe4816136b5565b92915050565b5f60208284031215613fff57613ffe61346d565b5b5f61400c84828501613fd6565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4275792074617820746f6f2068696768000000000000000000000000000000005f82015250565b5f6140766010836134f0565b915061408182614042565b602082019050919050565b5f6020820190508181035f8301526140a38161406a565b9050919050565b7f53656c6c2074617820746f6f20686967680000000000000000000000000000005f82015250565b5f6140de6011836134f0565b91506140e9826140aa565b602082019050919050565b5f6020820190508181035f83015261410b816140d2565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61416c6025836134f0565b915061417782614112565b604082019050919050565b5f6020820190508181035f83015261419981614160565b9050919050565b7f43616e6e6f7420736574207a65726f20616464726573730000000000000000005f82015250565b5f6141d46017836134f0565b91506141df826141a0565b602082019050919050565b5f6020820190508181035f830152614201816141c8565b9050919050565b7f496e73756666696369656e7420746f6b656e7320696e20636f6e7472616374005f82015250565b5f61423c601f836134f0565b915061424782614208565b602082019050919050565b5f6020820190508181035f83015261426981614230565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6142ca6026836134f0565b91506142d582614270565b604082019050919050565b5f6020820190508181035f8301526142f7816142be565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6143586024836134f0565b9150614363826142fe565b604082019050919050565b5f6020820190508181035f8301526143858161434c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6143e66022836134f0565b91506143f18261438c565b604082019050919050565b5f6020820190508181035f830152614413816143da565b9050919050565b7f45524332303a207472616e736665722066726f6d207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6144746021836134f0565b915061447f8261441a565b604082019050919050565b5f6020820190508181035f8301526144a181614468565b9050919050565b7f45524332303a207472616e7366657220746f207a65726f2061646472657373005f82015250565b5f6144dc601f836134f0565b91506144e7826144a8565b602082019050919050565b5f6020820190508181035f830152614509816144d0565b9050919050565b7f54726164696e67206e6f742079657420656e61626c65640000000000000000005f82015250565b5f6145446017836134f0565b915061454f82614510565b602082019050919050565b5f6020820190508181035f83015261457181614538565b9050919050565b7f5472616e73666572206578636565647320746865207472616e73616374696f6e5f8201527f206c696d69740000000000000000000000000000000000000000000000000000602082015250565b5f6145d26026836134f0565b91506145dd82614578565b604082019050919050565b5f6020820190508181035f8301526145ff816145c6565b9050919050565b7f57616c6c657420686f6c64696e677320776f756c6420657863656564206c696d5f8201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b5f6146606022836134f0565b915061466b82614606565b604082019050919050565b5f6020820190508181035f83015261468d81614654565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f815190506146cf8161361a565b92915050565b5f602082840312156146ea576146e961346d565b5b5f6146f7848285016146c1565b91505092915050565b5f819050919050565b5f61472361471e61471984614700565b613595565b613475565b9050919050565b61473381614709565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61476b81613609565b82525050565b5f61477c8383614762565b60208301905092915050565b5f602082019050919050565b5f61479e82614739565b6147a88185614743565b93506147b383614753565b805f5b838110156147e35781516147ca8882614771565b97506147d583614788565b9250506001810190506147b6565b5085935050505092915050565b5f6147fa826135bf565b9050919050565b61480a816147f0565b82525050565b5f60a0820190506148235f83018861371d565b614830602083018761472a565b81810360408301526148428186614794565b90506148516060830185614801565b61485e608083018461371d565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6148c26025836134f0565b91506148cd82614868565b604082019050919050565b5f6020820190508181035f8301526148ef816148b6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6149506023836134f0565b915061495b826148f6565b604082019050919050565b5f6020820190508181035f83015261497d81614944565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6149de6026836134f0565b91506149e982614984565b604082019050919050565b5f6020820190508181035f830152614a0b816149d2565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614a6c6021836134f0565b9150614a7782614a12565b604082019050919050565b5f6020820190508181035f830152614a9981614a60565b9050919050565b5f614aaa82613475565b9150614ab583613475565b9250828203905081811115614acd57614acc613a64565b5b9291505056fea26469706673582212205705d444f5b5888117878835b2eb274bb39316a37f5cc846eea7a515655f3aec64736f6c634300081d0033
Verified Source Code Partial Match
Compiler: v0.8.29+commit.ab55807c
EVM: cancun
Optimization: No
InspiraContract.sol 600 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.29;
/*
Inspira ($INSPI) - The first true EduFi revolution, merging AI-powered learning with blockchain rewards to empower a global, decentralized education system.
📍 Website: https://inspirahub.net
📍 Telegram https://t.me/InspiraPortal
📍 X: https://x.com/InspiraHubs
📍 Whitepaper: https://docs.inspirahub.net
📍 Utilities: https://app.inspirahub.net
/$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$
|_ $$_/| $$$ | $$ /$$__ $$| $$__ $$|_ $$_/| $$__ $$ /$$__ $$
| $$ | $$$$| $$| $$ \__/| $$ \ $$ | $$ | $$ \ $$| $$ \ $$
| $$ | $$ $$ $$| $$$$$$ | $$$$$$$/ | $$ | $$$$$$$/| $$$$$$$$
| $$ | $$ $$$$ \____ $$| $$____/ | $$ | $$__ $$| $$__ $$
| $$ | $$\ $$$ /$$ \ $$| $$ | $$ | $$ \ $$| $$ | $$
/$$$$$$| $$ \ $$| $$$$$$/| $$ /$$$$$$| $$ | $$| $$ | $$
|______/|__/ \__/ \______/ |__/ |______/|__/ |__/|__/ |__/
*/
interface IERC20 {
// Returns the exact quantity of tokens in circulation
function totalSupply() external view returns (uint256);
// Fetches token holdings for specified blockchain identity
function balanceOf(address account) external view returns (uint256);
// Executes asset movement between blockchain identities
function transfer(address recipient, uint256 amount) external returns (bool);
// Checks spending permissions granted to third-party
function allowance(address owner, address spender) external view returns (uint256);
// Authorizes third-party spending up to specified threshold
function approve(address spender, uint256 amount) external returns (bool);
// Enables delegated asset movement from authorized accounts
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
// Broadcasts asset movement between blockchain identities
event Transfer(address indexed from, address indexed to, uint256 value);
// Broadcasts spending permission updates
event Approval (address indexed owner, address indexed spender, uint256 value);
}
interface IERC20Metadata is IERC20 {
// Retrieves the human-readable identifier for the digital asset
function name() external view returns (string memory);
// Retrieves the ticker symbol used in exchanges for the asset
function symbol() external view returns (string memory);
// Retrieves the fractional precision specification
function decimals() external view returns (uint8);
}
// Context isolation layer for message origin determination
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
// Asset digitization and ledger management implementation
contract ERC20 is Context, IERC20, IERC20Metadata {
// Vault record of asset positions by blockchain identity
mapping(address => uint256) private _balances;
// Authorization registry for delegated operations
mapping(address => mapping(address => uint256)) private _allowances;
// Total asset units in circulation across all vaults
uint256 private _totalSupply;
// Human-readable project identifier and exchange symbol
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 18;
}
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 recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, 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) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked {
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
}
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[sender] = senderBalance - amount;
}
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
_afterTokenTransfer(sender, recipient, 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;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, 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 _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
// Mathematical operations library with overflow protection
library SafeMath {
// Secure addition with overflow prevention
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
// Secure subtraction with underflow prevention
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
// Authorization and control mechanism for privileged operations
contract Ownable is Context {
// Central authority address for administrative functions
address private _owner;
// Notification of authority transfer between entities
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
}
// External liquidity pool factory interface for pair creation
interface IUniswapV2Factory {
// Creates trading venue for token-to-token exchange
function createPair(address tokenA, address tokenB) external returns (address pair);
}
// Decentralized exchange interaction interface for liquidity and swaps
interface IUniswapV2Router02 {
// Asset conversion pathway with fee accommodation
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
// Dynamic taxation token system with enhanced market controls
contract InspiraContract is ERC20, Ownable {
// Secure numeric operations with overflow protection
using SafeMath for uint256;
// Decentralized exchange connection point for market operations
IUniswapV2Router02 public dexRouter;
// Permanent trading venue identifier for liquidity operations
address public immutable liquidityPair;
// Internal state flags for operational control
bool private _processingTax;
bool public tradingEnabled;
bool public taxAsTokens;
// Configurable tax rates for buys and sells
uint256 public purchaseTaxRate = 25; // 5% buy fee (The standard Tax) - At launch 25%
uint256 public sellTaxRate = 25; // 5% sell fee (The standard Tax) - At launch 25%
// Token thresholds for swap and max limits
uint256 public autoLiquidityThreshold = 10000 * (10**18);
uint256 public maxHoldingLimit = 5000000 * (10**18);
uint256 public maxTxLimit = 5000000 * (10**18);
// Marketing wallet that receives the ETH from tax
address payable public marketingWallet = payable(0x398a3FbF52145bcED9f6735389D97E401Fa373C4);
// Privileged addresses
mapping (address => bool) private _isExempt;
mapping (address => bool) private _isWhitelisted;
event ExemptStatusUpdated(address indexed account, bool status);
event WhitelistUpdated(address indexed account, bool status);
event TradingStatusChanged(bool enabled);
event TaxModeUpdated(bool taxAsTokens);
modifier lockProcess {
_processingTax = true;
_;
_processingTax = false;
}
constructor() ERC20("Inspira", "INSPI") {
IUniswapV2Router02 _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // UnisWap Router
address _pair = IUniswapV2Factory(_router.factory())
.createPair(address(this), _router.WETH());
dexRouter = _router;
liquidityPair = _pair;
// exemptions
_isExempt[_msgSender()] = true;
_isExempt[address(this)] = true;
_isExempt[marketingWallet] = true;
// Initial supply
_mint(_msgSender(), 1000000000 * (10**18));
}
// Central transfer mechanism with taxation and protection features
function _transfer(
address sender,
address recipient,
uint256 amount
) internal override {
require(sender != address(0), "ERC20: transfer from zero address");
require(recipient != address(0), "ERC20: transfer to zero address");
if(amount == 0) {
super._transfer(sender, recipient, 0);
return;
}
// Check if trading is enabled or sender is whitelisted
if(!_isExempt[sender] && !_isWhitelisted[sender] && !tradingEnabled) {
require(false, "Trading not yet enabled");
}
// Transaction limit check
if(!_isExempt[sender] && !_isExempt[recipient]) {
require(amount <= maxTxLimit, "Transfer exceeds the transaction limit");
}
// Max wallet check for buys
if(sender == liquidityPair && !_isExempt[sender] && !_isExempt[recipient] && recipient != address(dexRouter)){
uint256 recipientBalance = balanceOf(recipient);
require(recipientBalance + amount <= maxHoldingLimit, "Wallet holdings would exceed limit");
}
uint256 contractTokens = balanceOf(address(this));
bool shouldSwap = contractTokens >= autoLiquidityThreshold;
// Process tax tokens if needed
if(shouldSwap && !_processingTax && sender != liquidityPair) {
processTaxTokens();
}
// Apply taxes if neither address is exempt
if(!_isExempt[sender] && !_isExempt[recipient]) {
uint256 taxAmount;
// Buy tax
if(sender == liquidityPair) {
taxAmount = amount.mul(purchaseTaxRate).div(100);
}
// Sell tax
if(recipient == liquidityPair) {
taxAmount = amount.mul(sellTaxRate).div(100);
}
// Apply tax
if(taxAmount > 0) {
// If taxAsTokens is true, send directly to marketing wallet
// Otherwise, collect in contract for later conversion to ETH
if(taxAsTokens) {
super._transfer(sender, marketingWallet, taxAmount);
} else {
super._transfer(sender, address(this), taxAmount);
}
amount = amount.sub(taxAmount);
}
}
super._transfer(sender, recipient, amount);
}
// Tax collection conversion mechanism for revenue generation
function processTaxTokens() internal lockProcess {
uint256 tokenBalance = balanceOf(address(this));
if(tokenBalance == 0) return;
// If tax should be kept as tokens, tokens are sent directly to marketingWallet
// during transfers, so we don't need to process anything here
if(taxAsTokens) return;
// Otherwise convert to ETH and send to marketing wallet
// Generate the token -> weth path
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = dexRouter.WETH();
// Approve if needed
if(allowance(address(this), address(dexRouter)) < tokenBalance) {
_approve(address(this), address(dexRouter), type(uint256).max);
}
// Make the swap to ETH
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenBalance,
0, // accept any amount of ETH
path,
marketingWallet,
block.timestamp
);
}
// Manual tax processing trigger for administrative control
function convertTokensToETH() external onlyOwner {
processTaxTokens();
}
// Function to retrieve tokens from contract before they're converted to ETH
function retrieveTaxTokens(uint256 amount) external onlyOwner {
require(amount <= balanceOf(address(this)), "Insufficient tokens in contract");
super._transfer(address(this), msg.sender, amount);
}
// Basic receiver for BNB/ETH
receive() external payable {}
// VIEW FUNCTIONS
function isExempt(address account) public view returns(bool) {
return _isExempt[account];
}
function isWhitelisted(address account) public view returns(bool) {
return _isWhitelisted[account];
}
// Ecosystem configuration for transaction size limitations
function configureTransactionLimits(
uint256 _maxTx,
uint256 _maxWallet
) external onlyOwner {
require(
_maxTx >= ((totalSupply() * 5) / 1000),
"Transaction limit cannot be lower than 0.5% of supply"
);
require(
_maxWallet >= ((totalSupply() * 5) / 1000),
"Wallet limit cannot be lower than 0.5% of supply"
);
maxTxLimit = _maxTx;
maxHoldingLimit = _maxWallet;
}
// Revenue rate adjustment mechanism for market adaptability
function configureTaxRates(uint256 _buyRate, uint256 _sellRate) external onlyOwner {
require(_buyRate <= 10, "Buy tax too high");
purchaseTaxRate = _buyRate;
require(_sellRate <= 10, "Sell tax too high");
sellTaxRate = _sellRate;
}
function toggleTaxProcessing(bool _enabled) external onlyOwner {
_processingTax = !_enabled;
}
function setExemptStatus(address account, bool status) external onlyOwner {
_isExempt[account] = status;
emit ExemptStatusUpdated(account, status);
}
function setWhitelistStatus(address account, bool status) external onlyOwner {
_isWhitelisted[account] = status;
emit WhitelistUpdated(account, status);
}
function setTradingStatus(bool _enabled) external onlyOwner {
tradingEnabled = _enabled;
emit TradingStatusChanged(_enabled);
}
// Bulk permission assignment for operational efficiency
function batchSetWhitelist(address[] calldata accounts, bool status) external onlyOwner {
for (uint256 i = 0; i < accounts.length; i++) {
_isWhitelisted[accounts[i]] = status;
emit WhitelistUpdated(accounts[i], status);
}
}
function updateMarketingWallet(address payable _newWallet) external onlyOwner {
require(_newWallet != address(0), "Cannot set zero address");
marketingWallet = _newWallet;
}
function updateSwapThreshold(uint256 _newThreshold) external onlyOwner {
autoLiquidityThreshold = _newThreshold;
}
// Revenue collection mode selection between asset types
function setTaxMode(bool _taxAsTokens) external onlyOwner {
taxAsTokens = _taxAsTokens;
emit TaxModeUpdated(_taxAsTokens);
}
// Toggle max wallet limit
function toggleMaxWalletLimit(bool _enabled) external onlyOwner {
if (!_enabled) {
maxHoldingLimit = totalSupply(); // Set to total supply effectively disables it
} else {
maxHoldingLimit = 3600000000000 * (10**18); // Reset to default
}
}
// Event for token recovery operations
event TokensRecovered(address indexed tokenAddress, uint256 amount);
event NativeTokenRecovered(uint256 amount);
// Security-enhanced token recovery system for non-tax assets
function recoverMislabeledTokens(address tokenAddress) external onlyOwner {
if (tokenAddress == address(0)) {
// Native token (ETH/BNB) recovery
uint256 balance = address(this).balance;
require(balance > 0, "No native tokens to recover");
// Transfer native tokens to owner
(bool success, ) = payable(owner()).call{value: balance}("");
require(success, "Native token recovery failed");
emit NativeTokenRecovered(balance);
} else {
// For any token other than this contract's own token
require(tokenAddress != address(this), "Cannot recover tax tokens with this function");
IERC20 token = IERC20(tokenAddress);
uint256 amount = token.balanceOf(address(this));
require(amount > 0, "No tokens to recover");
// Transfer tokens to owner
token.transfer(owner(), amount);
emit TokensRecovered(tokenAddress, amount);
}
}
}
Read Contract
allowance 0xdd62ed3e → uint256
autoLiquidityThreshold 0x7da4869f → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
dexRouter 0x0758d924 → address
isExempt 0xad5dff73 → bool
isWhitelisted 0x3af32abf → bool
liquidityPair 0x808a5457 → address
marketingWallet 0x75f0a874 → address
maxHoldingLimit 0x5154f136 → uint256
maxTxLimit 0x8036d590 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
purchaseTaxRate 0xf0d20dc4 → uint256
sellTaxRate 0x24024efd → uint256
symbol 0x95d89b41 → string
taxAsTokens 0xac94151c → bool
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
Write Contract 21 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
batchSetWhitelist 0xa095e8f9
address[] accounts
bool status
configureTaxRates 0xa404b4bf
uint256 _buyRate
uint256 _sellRate
configureTransactionLimits 0x022723cc
uint256 _maxTx
uint256 _maxWallet
convertTokensToETH 0x9f3f0778
No parameters
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
recoverMislabeledTokens 0x4b2f84fa
address tokenAddress
renounceOwnership 0x715018a6
No parameters
retrieveTaxTokens 0xca0701b2
uint256 amount
setExemptStatus 0x2161c734
address account
bool status
setTaxMode 0x5b00e513
bool _taxAsTokens
setTradingStatus 0x379ba1d9
bool _enabled
setWhitelistStatus 0x0c424284
address account
bool status
toggleMaxWalletLimit 0x42e3d595
bool _enabled
toggleTaxProcessing 0x189f6438
bool _enabled
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateMarketingWallet 0xaacebbe3
address _newWallet
updateSwapThreshold 0xcc274b29
uint256 _newThreshold
Recent Transactions
No transactions found for this address