Address Contract Partially Verified
Address
0x1bc5fc0e86c55cfFd99a5694ED8Be2312DD0Ad5d
Balance
0 ETH
Nonce
1
Code Size
12436 bytes
Creator
0x63E39D90...11f6 at tx 0xcbf0b30c...b5b68f
Indexed Transactions
0 (1 on-chain, 1.2% indexed)
Contract Bytecode
12436 bytes
0x60806040526004361061013f5760003560e01c8063797eee24116100b6578063a87430ba1161006f578063a87430ba146105e9578063b2f7543a14610642578063be389d571461067e578063e06e8dbd146106a6578063ecabdf79146106e2578063fa45323d1461070f5761013f565b8063797eee24146103a757806383ba31b2146103cd5780638da5cb5b146104765780639cc102fc1461048b578063a478656b14610584578063a7839224146105b05761013f565b8063348d448711610108578063348d4487146102d25780633e89340f146102e75780634635fd68146102fc5780634cb026f014610326578063509222cd1461033b57806352fd9f131461036e5761013f565b8062412a4f146101ab57806307279e2a146101d257806329c70400146102225780632a2d0c471461024d5780633320a0db14610293575b366101605760065461015b9033906001600160a01b031661074b565b6101a9565b6101a9336101a46000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a3f92505050565b61074b565b005b3480156101b757600080fd5b506101c0610a46565b60408051918252519081900360200190f35b3480156101de57600080fd5b5061020e600480360360408110156101f557600080fd5b5080356001600160a01b0316906020013560ff16610a96565b604080519115158252519081900360200190f35b34801561022e57600080fd5b50610237610aca565b6040805160ff9092168252519081900360200190f35b34801561025957600080fd5b506102776004803603602081101561027057600080fd5b5035610acf565b604080516001600160a01b039092168252519081900360200190f35b34801561029f57600080fd5b506101c0600480360360608110156102b657600080fd5b506001600160a01b038135169060208101359060400135610aea565b3480156102de57600080fd5b506101c0610b0d565b3480156102f357600080fd5b5061020e610b13565b34801561030857600080fd5b506102776004803603602081101561031f57600080fd5b5035610b23565b34801561033257600080fd5b506101c0610b3e565b34801561034757600080fd5b5061020e6004803603602081101561035e57600080fd5b50356001600160a01b0316610b87565b34801561037a57600080fd5b5061020e6004803603604081101561039157600080fd5b506001600160a01b038135169060200135610ba4565b6101a9600480360360208110156103bd57600080fd5b50356001600160a01b0316610cd0565b3480156103d957600080fd5b50610409600480360360408110156103f057600080fd5b5080356001600160a01b0316906020013560ff16610d2e565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b83811015610460578181015183820152602001610448565b5050505090500194505050505060405180910390f35b34801561048257600080fd5b50610277610ddb565b34801561049757600080fd5b506104c7600480360360408110156104ae57600080fd5b5080356001600160a01b0316906020013560ff16610dea565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b8381101561052c578181015183820152602001610514565b50505050905001838103825286818151815260200191508051906020019060200280838360005b8381101561056b578181015183820152602001610553565b5050505090500197505050505050505060405180910390f35b34801561059057600080fd5b5061020e600480360360208110156105a757600080fd5b50351515610f09565b3480156105bc57600080fd5b506101c0600480360360408110156105d357600080fd5b506001600160a01b038135169060200135610f7d565b3480156105f557600080fd5b5061061c6004803603602081101561060c57600080fd5b50356001600160a01b0316610f9a565b604080519384526001600160a01b03909216602084015282820152519081900360600190f35b34801561064e57600080fd5b5061020e6004803603604081101561066557600080fd5b5080356001600160a01b0316906020013560ff16610fc4565b6101a96004803603604081101561069457600080fd5b5060ff81358116916020013516610ff3565b3480156106b257600080fd5b50610277600480360360408110156106c957600080fd5b5080356001600160a01b0316906020013560ff1661147f565b3480156106ee57600080fd5b506101c06004803603602081101561070557600080fd5b503560ff1661150b565b34801561071b57600080fd5b506102776004803603604081101561073257600080fd5b5080356001600160a01b0316906020013560ff1661151d565b3466b1a2bc2ec500001461079f576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b6107a882610b87565b156107e8576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6107f181610b87565b610838576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff81161561088a576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610892612f49565b50604080516060810182526005805482526001600160a01b03808616602080850182815260008688018181528b861680835282855289832089518155935160018086018054929099166001600160a01b03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff199081168517909155838552600490950186528a842080549095168317909455875483528685528983208054909416179092558554820190955591845283905293822001805484019055909161097790869061151d565b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b031916928416929092179091559091506109c790869083906115a9565b6109dd856109d687600161147f565b600161191a565b6001600160a01b03808616600081815260208181526040808320549489168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a45050505050565b6014015190565b60008060015b6005548111610a8f576000818152600260208181526040808420546001600160a01b03168452600482528084209284529190529020549190910190600101610a4c565b5090505b90565b6001600160a01b03821660009081526020818152604080832060ff8086168552600390910190925290912054165b92915050565b600c81565b6001602052600090815260409020546001600160a01b031681565b600360209081526000938452604080852082529284528284209052825290205481565b60055481565b600654600160a01b900460ff1681565b6002602052600090815260409020546001600160a01b031681565b60008060015b6005548111610a8f576000818152600260209081526040808320546001600160a01b03168352600482528083206001808552925290912054929092019101610b44565b6001600160a01b0316600090815260208190526040902054151590565b6006546000906001600160a01b03163314610bf7576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b6001600160a01b038316610c44576040805162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b604482015290519081900360640190fd5b81471015610c90576040805162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b604482015290519081900360640190fd5b6040516001600160a01b0384169083156108fc029084906000818181858888f19350505050158015610cc6573d6000803e3d6000fd5b5060019392505050565b600654600160a01b900460ff1615610d21576040805162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd08131bd8dad959608a1b604482015290519081900360640190fd5b610d2b338261074b565b50565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600590910183528184208054600282015460019092018054855181880281018801909652808652969760609789979390911695919493909316929091849190830182828015610dc757602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610da9575b505050505091509250925092509250925092565b6006546001600160a01b031681565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a99978416989497600290950196909416949092169291869190830182828015610e9257602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e74575b5050505050935082805480602002602001604051908101604052809291908181526020018280548015610eee57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610ed0575b50505050509250945094509450945094509295509295909350565b6006546000906001600160a01b03163314610f5c576040805162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b604482015290519081900360640190fd5b5060068054821515600160a01b0260ff60a01b199091161790556001919050565b600460209081526000928352604080842090915290825290205481565b60006020819052908152604090208054600182015460029092015490916001600160a01b03169083565b6001600160a01b039190911660009081526020818152604080832060ff94851684526004019091529020541690565b600654600160a01b900460ff1615611044576040805162461bcd60e51b815260206004820152600f60248201526e10dbdb9d1c9858dd08131bd8dad959608a1b604482015290519081900360640190fd5b61104d33610b87565b6110885760405162461bcd60e51b815260040180806020018281038252602381526020018061303d6023913960400191505060405180910390fd5b8160ff166001148061109d57508160ff166002145b6110df576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600760205260409020543414611135576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff1611801561114c5750600c60ff821611155b61118d576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b8160ff166001141561131d573360009081526020818152604080832060ff80861685526003909101909252909120541615611209576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198601811685526005909101909252909120600201541615611267573360009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b6000611273338361151d565b3360008181526020818152604080832060ff8816845260058101835281842080546001600160a01b0319166001600160a01b0388161790556003019091529020805460ff191660011790559091506112cc9082846115a9565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a35061147b565b3360009081526020818152604080832060ff8086168552600490910190925290912054161561138d576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff60001986018116855260069091019092529091206003015416156113eb573360009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b60006113f7338361147f565b3360008181526020818152604080832060ff881684526004019091529020805460ff1916600117905590915061142e90828461191a565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff808716845260049091019091529190205416156114e557506001600160a01b0380831660009081526020819052604090206001015416610ac4565b6001600160a01b0392831660009081526020819052604090206001015490921691611482565b60076020526000908152604090205481565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600390910190915291902054161561158357506001600160a01b0380831660009081526020819052604090206001015416610ac4565b6001600160a01b0392831660009081526020819052604090206001015490921691611520565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b031916948816949094179093559190525460031115611681576001600160a01b0380831660008181526020818152604080832060ff8088168086526005909201845293829020600190810154835191825293810191909152919092168183015290519192861691600080516020612ffd8339815191529181900360600190a361167c82846001846122b2565b611915565b604080516001815260ff8316602082015260038183015290516001600160a01b038085169290861691600080516020612ffd8339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff8716845260050190915292902090516117069260019092019190612f73565b506001600160a01b03821660009081526020818152604080832060ff600186018116855260039091019092529091205416158015611748575060ff8116600c14155b15611783576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6006546001600160a01b0383811691161461188e5760006117a4838361151d565b6001600160a01b0384811660009081526020818152604080832060ff88168452600501909152902054919250828116911614611818576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff88168085526005909101835292819020600301805460019081019091558151908152918201929092528151888516948616939260008051602061301d833981519152928290030190a46118888382846115a9565b50611915565b6006546118a7906001600160a01b0316846001846122b2565b600680546001600160a01b0390811660009081526020818152604080832060ff8716808552600590910183528184206003018054600190810190915595548251968752928601528051888516959394929092169260008051602061301d833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff808616855260049091019092529091205416611998576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001015460021115611eff576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c16988917905594829052935482516002815293840191909152909216818301529051919291600080516020612ffd833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600690810190925290912080546001600160a01b03191685841690811790915590549091161415611ab05761167c82846002846122b2565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b1697909717909655919093520154909181148015611b8157506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611b6a57fe5b6000918252602090912001546001600160a01b0316145b8015611bdd57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611bc657fe5b6000918252602090912001546001600160a01b0316145b15611ca2576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611c5b57604080516002815260ff8516602082015260058183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a3611c9d565b604080516002815260ff8516602082015260068183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a35b611eed565b8060011480611cb15750806002145b8015611d0957506001600160a01b0382811660009081526020818152604080832060ff881684526006019091528120600101805492871692909190611cf257fe5b6000918252602090912001546001600160a01b0316145b15611dcd576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611d8757604080516002815260ff8516602082015260038183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a3611c9d565b604080516002815260ff8516602082015260048183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a3611eed565b806002148015611e2d57506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152902060019081018054928716929091908110611e1657fe5b6000918252602090912001546001600160a01b0316145b15611eed576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611eab57604080516002815260ff8516602082015260058183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a3611eed565b604080516002815260ff8516602082015260068183015290516001600160a01b038085169290881691600080516020612ffd8339815191529181900360600190a35b611ef88583856123f9565b5050611915565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b0319168886161790559091526005015416156120e3576001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600190810180549091908110611f9757fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff87168652600601909352918320600101805492909116929091611fdb57fe5b6000918252602090912001546001600160a01b031614801561205057506001600160a01b0382811660009081526020818152604080832060ff8616845260060190915281206005810154600190910180549190931692919061203957fe5b6000918252602090912001546001600160a01b0316145b1561206d57612062838383600161284c565b61167c8383836123f9565b6001600160a01b0382811660009081526020818152604080832060ff861684526006019091528120600581015460019091018054919093169291906120ae57fe5b6000918252602090912001546001600160a01b031614156120d657612062838383600161284c565b612062838383600061284c565b6001600160a01b0382811660009081526020818152604080832060ff8616845260060190915290206001908101805492861692909190811061212157fe5b6000918252602090912001546001600160a01b0316141561214957612062838383600061284c565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060010180549286169290919061218357fe5b6000918252602090912001546001600160a01b031614156121ab57612062838383600161284c565b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915281206001908101805483929081106121e457fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff861680845260069182018352848420600190810154968916855284845285852091855291019091529181209091018054829190829061224a57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff861682526006019092529020600101541161229a57612295838383600061284c565b6122a7565b6122a7838383600161284c565b6119158383836123f9565b6000806122c186868686612db5565b60ff85166000908152600760205260408082205490519395509193506001600160a01b0385169282156108fc029291818181858888f19350505050612337576040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015612335573d6000803e3d6000fd5b505b801561238d576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b5060ff918216600081815260076020908152604080832080546001600160a01b0390961680855260038452828520989097168085529783528184209484529382528083208054909501909455915493815260048252828120948152939052909120805490910190555050565b6001600160a01b03821660009081526020818152604080832060ff85168452600601909152902060020154600411156124395761167c82846002846122b2565b6001600160a01b0380831660009081526020818152604080832060ff861680855260069182018452828520549095168452838352818420948452939093018152908290206001018054835181840281018401909452808452606093928301828280156124ce57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116124b0575b5050505050905080516002141561262b57826001600160a01b0316816000815181106124f657fe5b60200260200101516001600160a01b031614806125385750826001600160a01b03168160018151811061252557fe5b60200260200101516001600160a01b0316145b1561259a576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b031916909117905561262b565b80516001141561262b57826001600160a01b0316816000815181106125bb57fe5b60200260200101516001600160a01b0316141561262b576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff88168452600601909152929020905161266f9260019092019190612f73565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff8816845260060190915292902090516126b49260029092019190612f73565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b0319169055600187018116855260049091019092529091205416158015612715575060ff8216600c14155b15612750576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff8816845260069081019092529091206004018054600101905554909116146127ec57600061279a848461147f565b604080516002815260ff8616602082015281519293506001600160a01b0380891693818616939189169260008051602061301d83398151915292908290030190a46127e684828561191a565b50612846565b600654604080516002815260ff8516602082015281516001600160a01b038089169460009491169260008051602061301d833981519152929081900390910190a4600654612846906001600160a01b0316856002856122b2565b50505050565b80612afc576001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054829190829061288857fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452838352848420908452019052908120909101805490919061290a57fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020612ffd83398151915292600292889291829190829061296a57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff88168452600601909152812060010180549293881692600080516020612ffd8339815191529260029288928291908290612a1a57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915281206001018054909190612ab157fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b03191691909216179055612846565b6001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600190810180548392908110612b3557fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c8916179055958916845283835284842090845201905220810180549091908110612bb657fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff88168652600601909352918320600190810180549284169493891693600080516020612ffd83398151915293600293899383929091908110612c1957fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600190810180549394891693600080516020612ffd8339815191529360029389939192839291908110612cce57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600190810180549091908110612d6957fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff87161415612e8b575b6001600160a01b03821660009081526020818152604080832060ff808a1685526005909101909252909120600201541615612e7c57604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff88168452600501909152902054166001612e86565b9092509050612f40565b612dc7565b6001600160a01b03821660009081526020818152604080832060ff808a1685526006909101909252909120600301541615612e7c57604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff88168452600601909152902054166001612e8b565b94509492505050565b60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b828054828255906000526020600020908101928215612fc8579160200282015b82811115612fc857825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612f93565b50612fd4929150612fd8565b5090565b610a9391905b80821115612fd45780546001600160a01b0319168155600101612fde56fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a723158204cfcbd8789b3f65f21a5715958e09784f88eb68f16533db171dfbd91057d29ba64736f6c634300050e0032
Verified Source Code Partial Match
Compiler: v0.5.14+commit.01f1aaa4
EVM: istanbul
Optimization: Yes (200 runs)
ETHKING.sol 473 lines
pragma solidity 0.5.14;
contract ETHKING {
struct User {
uint id;
address referrer;
uint partnersCount;
mapping(uint8 => bool) activeX3Levels;
mapping(uint8 => bool) activeX6Levels;
mapping(uint8 => X3) x3Matrix;
mapping(uint8 => X6) x6Matrix;
}
struct X3 {
address currentReferrer;
address[] referrals;
bool blocked;
uint reinvestCount;
}
struct X6 {
address currentReferrer;
address[] firstLevelReferrals;
address[] secondLevelReferrals;
bool blocked;
uint reinvestCount;
address closedPart;
}
uint8 public constant LAST_LEVEL = 12;
mapping (address => User) public users;
mapping (uint => address) public idToAddress;
mapping (uint => address) public userIds;
mapping(address => mapping(uint=> mapping(uint => uint))) public earnedEth;
mapping(address=> mapping (uint => uint)) public totalEarnedEth;
uint public lastUserId = 2;
address public owner;
bool public lockStatus;
mapping(uint8 => uint) public levelPrice;
event Registration(address indexed user, address indexed referrer, uint indexed userId, uint referrerId);
event Reinvest(address indexed user, address indexed currentReferrer, address indexed caller, uint8 matrix, uint8 level);
event Upgrade(address indexed user, address indexed referrer, uint8 matrix, uint8 level);
event NewUserPlace(address indexed user, address indexed referrer, uint8 matrix, uint8 level, uint8 place);
event MissedEthReceive(address indexed receiver, address indexed from, uint8 matrix, uint8 level);
event SentExtraEthDividends(address indexed from, address indexed receiver, uint8 matrix, uint8 level);
constructor(address ownerAddress) public {
levelPrice[1] = 0.025 ether;
for (uint8 i = 2; i <= LAST_LEVEL; i++) {
levelPrice[i] = levelPrice[i-1] * 2;
}
owner = ownerAddress;
User memory user = User({
id: 1,
referrer: address(0),
partnersCount: uint(0)
});
users[ownerAddress] = user;
idToAddress[1] = ownerAddress;
for (uint8 i = 1; i <= LAST_LEVEL; i++) {
users[ownerAddress].activeX3Levels[i] = true;
users[ownerAddress].activeX6Levels[i] = true;
}
userIds[1] = ownerAddress;
}
modifier isLock() {
require(lockStatus == false,"Contract Locked");
_;
}
function() external payable {
if(msg.data.length == 0) {
return registration(msg.sender, owner);
}
registration(msg.sender, bytesToAddress(msg.data));
}
function registrationExt(address referrerAddress) isLock external payable {
registration(msg.sender, referrerAddress);
}
function buyNewLevel(uint8 matrix, uint8 level) isLock external payable {
require(isUserExists(msg.sender), "user is not exists. Register first.");
require(matrix == 1 || matrix == 2, "invalid matrix");
require(msg.value == levelPrice[level], "invalid price");
require(level > 1 && level <= LAST_LEVEL, "invalid level");
if (matrix == 1) {
require(!users[msg.sender].activeX3Levels[level], "level already activated");
if (users[msg.sender].x3Matrix[level-1].blocked) {
users[msg.sender].x3Matrix[level-1].blocked = false;
}
address freeX3Referrer = findFreeX3Referrer(msg.sender, level);
users[msg.sender].x3Matrix[level].currentReferrer = freeX3Referrer;
users[msg.sender].activeX3Levels[level] = true;
updateX3Referrer(msg.sender, freeX3Referrer, level);
emit Upgrade(msg.sender, freeX3Referrer, 1, level);
} else {
require(!users[msg.sender].activeX6Levels[level], "level already activated");
if (users[msg.sender].x6Matrix[level-1].blocked) {
users[msg.sender].x6Matrix[level-1].blocked = false;
}
address freeX6Referrer = findFreeX6Referrer(msg.sender, level);
users[msg.sender].activeX6Levels[level] = true;
updateX6Referrer(msg.sender, freeX6Referrer, level);
emit Upgrade(msg.sender, freeX6Referrer, 2, level);
}
}
function registration(address userAddress, address referrerAddress) private {
require(msg.value == 0.05 ether, "registration cost 0.05");
require(!isUserExists(userAddress), "user exists");
require(isUserExists(referrerAddress), "referrer not exists");
uint32 size;
assembly {
size := extcodesize(userAddress)
}
require(size == 0, "cannot be a contract");
User memory user = User({
id: lastUserId,
referrer: referrerAddress,
partnersCount: 0
});
users[userAddress] = user;
idToAddress[lastUserId] = userAddress;
users[userAddress].referrer = referrerAddress;
users[userAddress].activeX3Levels[1] = true;
users[userAddress].activeX6Levels[1] = true;
userIds[lastUserId] = userAddress;
lastUserId++;
users[referrerAddress].partnersCount++;
address freeX3Referrer = findFreeX3Referrer(userAddress, 1);
users[userAddress].x3Matrix[1].currentReferrer = freeX3Referrer;
updateX3Referrer(userAddress, freeX3Referrer, 1);
updateX6Referrer(userAddress, findFreeX6Referrer(userAddress, 1), 1);
emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
}
function updateX3Referrer(address userAddress, address referrerAddress, uint8 level) private {
users[referrerAddress].x3Matrix[level].referrals.push(userAddress);
if (users[referrerAddress].x3Matrix[level].referrals.length < 3) {
emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].x3Matrix[level].referrals.length));
return sendETHDividends(referrerAddress, userAddress, 1, level);
}
emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
//close matrix
users[referrerAddress].x3Matrix[level].referrals = new address[](0);
if (!users[referrerAddress].activeX3Levels[level+1] && level != LAST_LEVEL) {
users[referrerAddress].x3Matrix[level].blocked = true;
}
//create new one by recursion
if (referrerAddress != owner) {
//check referrer active level
address freeReferrerAddress = findFreeX3Referrer(referrerAddress, level);
if (users[referrerAddress].x3Matrix[level].currentReferrer != freeReferrerAddress) {
users[referrerAddress].x3Matrix[level].currentReferrer = freeReferrerAddress;
}
users[referrerAddress].x3Matrix[level].reinvestCount++;
emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
updateX3Referrer(referrerAddress, freeReferrerAddress, level);
} else {
sendETHDividends(owner, userAddress, 1, level);
users[owner].x3Matrix[level].reinvestCount++;
emit Reinvest(owner, address(0), userAddress, 1, level);
}
}
function updateX6Referrer(address userAddress, address referrerAddress, uint8 level) private {
require(users[referrerAddress].activeX6Levels[level], "500. Referrer level is inactive");
if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length < 2) {
users[referrerAddress].x6Matrix[level].firstLevelReferrals.push(userAddress);
emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].x6Matrix[level].firstLevelReferrals.length));
//set current level
users[userAddress].x6Matrix[level].currentReferrer = referrerAddress;
if (referrerAddress == owner) {
return sendETHDividends(referrerAddress, userAddress, 2, level);
}
address ref = users[referrerAddress].x6Matrix[level].currentReferrer;
users[ref].x6Matrix[level].secondLevelReferrals.push(userAddress);
uint len = users[ref].x6Matrix[level].firstLevelReferrals.length;
if ((len == 2) &&
(users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
(users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
emit NewUserPlace(userAddress, ref, 2, level, 5);
} else {
emit NewUserPlace(userAddress, ref, 2, level, 6);
}
} else if ((len == 1 || len == 2) &&
users[ref].x6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
emit NewUserPlace(userAddress, ref, 2, level, 3);
} else {
emit NewUserPlace(userAddress, ref, 2, level, 4);
}
} else if (len == 2 && users[ref].x6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
if (users[referrerAddress].x6Matrix[level].firstLevelReferrals.length == 1) {
emit NewUserPlace(userAddress, ref, 2, level, 5);
} else {
emit NewUserPlace(userAddress, ref, 2, level, 6);
}
}
return updateX6ReferrerSecondLevel(userAddress, ref, level);
}
users[referrerAddress].x6Matrix[level].secondLevelReferrals.push(userAddress);
if (users[referrerAddress].x6Matrix[level].closedPart != address(0)) {
if ((users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]) &&
(users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
users[referrerAddress].x6Matrix[level].closedPart)) {
updateX6(userAddress, referrerAddress, level, true);
return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
} else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] ==
users[referrerAddress].x6Matrix[level].closedPart) {
updateX6(userAddress, referrerAddress, level, true);
return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
} else {
updateX6(userAddress, referrerAddress, level, false);
return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
}
}
if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[1] == userAddress) {
updateX6(userAddress, referrerAddress, level, false);
return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
} else if (users[referrerAddress].x6Matrix[level].firstLevelReferrals[0] == userAddress) {
updateX6(userAddress, referrerAddress, level, true);
return updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
}
if (users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length <=
users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length) {
updateX6(userAddress, referrerAddress, level, false);
} else {
updateX6(userAddress, referrerAddress, level, true);
}
updateX6ReferrerSecondLevel(userAddress, referrerAddress, level);
}
function updateX6(address userAddress, address referrerAddress, uint8 level, bool x2) private {
if (!x2) {
users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.push(userAddress);
emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[0]].x6Matrix[level].firstLevelReferrals.length));
//set current level
users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[0];
} else {
users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.push(userAddress);
emit NewUserPlace(userAddress, users[referrerAddress].x6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].x6Matrix[level].firstLevelReferrals[1]].x6Matrix[level].firstLevelReferrals.length));
//set current level
users[userAddress].x6Matrix[level].currentReferrer = users[referrerAddress].x6Matrix[level].firstLevelReferrals[1];
}
}
function updateX6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
if (users[referrerAddress].x6Matrix[level].secondLevelReferrals.length < 4) {
return sendETHDividends(referrerAddress, userAddress, 2, level);
}
address[] memory x6 = users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].firstLevelReferrals;
if (x6.length == 2) {
if (x6[0] == referrerAddress ||
x6[1] == referrerAddress) {
users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
} else if (x6.length == 1) {
if (x6[0] == referrerAddress) {
users[users[referrerAddress].x6Matrix[level].currentReferrer].x6Matrix[level].closedPart = referrerAddress;
}
}
}
users[referrerAddress].x6Matrix[level].firstLevelReferrals = new address[](0);
users[referrerAddress].x6Matrix[level].secondLevelReferrals = new address[](0);
users[referrerAddress].x6Matrix[level].closedPart = address(0);
if (!users[referrerAddress].activeX6Levels[level+1] && level != LAST_LEVEL) {
users[referrerAddress].x6Matrix[level].blocked = true;
}
users[referrerAddress].x6Matrix[level].reinvestCount++;
if (referrerAddress != owner) {
address freeReferrerAddress = findFreeX6Referrer(referrerAddress, level);
emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
updateX6Referrer(referrerAddress, freeReferrerAddress, level);
} else {
emit Reinvest(owner, address(0), userAddress, 2, level);
sendETHDividends(owner, userAddress, 2, level);
}
}
function findFreeX3Referrer(address userAddress, uint8 level) public view returns(address) {
while (true) {
if (users[users[userAddress].referrer].activeX3Levels[level]) {
return users[userAddress].referrer;
}
userAddress = users[userAddress].referrer;
}
}
function findFreeX6Referrer(address userAddress, uint8 level) public view returns(address) {
while (true) {
if (users[users[userAddress].referrer].activeX6Levels[level]) {
return users[userAddress].referrer;
}
userAddress = users[userAddress].referrer;
}
}
function usersActiveX3Levels(address userAddress, uint8 level) public view returns(bool) {
return users[userAddress].activeX3Levels[level];
}
function usersActiveX6Levels(address userAddress, uint8 level) public view returns(bool) {
return users[userAddress].activeX6Levels[level];
}
function usersX3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
return (users[userAddress].x3Matrix[level].currentReferrer,
users[userAddress].x3Matrix[level].referrals,
users[userAddress].x3Matrix[level].blocked);
}
function usersX6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
return (users[userAddress].x6Matrix[level].currentReferrer,
users[userAddress].x6Matrix[level].firstLevelReferrals,
users[userAddress].x6Matrix[level].secondLevelReferrals,
users[userAddress].x6Matrix[level].blocked,
users[userAddress].x6Matrix[level].closedPart);
}
function isUserExists(address user) public view returns (bool) {
return (users[user].id != 0);
}
function getX3TotalEarnedEth() public view returns(uint) {
uint256 X3TotalEarn;
for(uint i=1; i<=lastUserId;i++) {
X3TotalEarn += totalEarnedEth[userIds[i]][1];
}
return X3TotalEarn;
}
function getX6TotalEarnedEth() public view returns(uint) {
uint256 X4TotalEarn;
for(uint i=1; i<=lastUserId;i++) {
X4TotalEarn += totalEarnedEth[userIds[i]][2];
}
return X4TotalEarn;
}
// public functions
function failSafe(address payable _toUser, uint _amount) public returns (bool) {
require(msg.sender == owner, "Not authorized");
require(_toUser != address(0), "Invalid Address");
require(address(this).balance >= _amount, "Insufficient balance");
(_toUser).transfer(_amount);
return true;
}
function contractLock(bool _lockStatus) public returns(bool) {
require(msg.sender == owner, "Not authorized");
lockStatus = _lockStatus;
return true;
}
function findEthReceiver(address userAddress, address _from, uint8 matrix, uint8 level) private returns(address, bool) {
address receiver = userAddress;
bool isExtraDividends;
if (matrix == 1) {
while (true) {
if (users[receiver].x3Matrix[level].blocked) {
emit MissedEthReceive(receiver, _from, 1, level);
isExtraDividends = true;
receiver = users[receiver].x3Matrix[level].currentReferrer;
} else {
return (receiver, isExtraDividends);
}
}
} else {
while (true) {
if (users[receiver].x6Matrix[level].blocked) {
emit MissedEthReceive(receiver, _from, 2, level);
isExtraDividends = true;
receiver = users[receiver].x6Matrix[level].currentReferrer;
} else {
return (receiver, isExtraDividends);
}
}
}
}
function sendETHDividends(address userAddress, address _from, uint8 matrix, uint8 level) private {
(address receiver, bool isExtraDividends) = findEthReceiver(userAddress, _from, matrix, level);
if (!address(uint160(receiver)).send(levelPrice[level])) {
address(uint160(receiver)).transfer(address(this).balance);
}
if (isExtraDividends) {
emit SentExtraEthDividends(_from, receiver, matrix, level);
}
earnedEth[receiver][matrix][level] += levelPrice[level];
totalEarnedEth[receiver][matrix] += (levelPrice[level]);
}
function bytesToAddress(bytes memory bys) private pure returns (address addr) {
assembly {
addr := mload(add(bys, 20))
}
}
}
Read Contract
LAST_LEVEL 0x29c70400 → uint8
earnedEth 0x3320a0db → uint256
findFreeX3Referrer 0xfa45323d → address
findFreeX6Referrer 0xe06e8dbd → address
getX3TotalEarnedEth 0x4cb026f0 → uint256
getX6TotalEarnedEth 0x00412a4f → uint256
idToAddress 0x2a2d0c47 → address
isUserExists 0x509222cd → bool
lastUserId 0x348d4487 → uint256
levelPrice 0xecabdf79 → uint256
lockStatus 0x3e89340f → bool
owner 0x8da5cb5b → address
totalEarnedEth 0xa7839224 → uint256
userIds 0x4635fd68 → address
users 0xa87430ba → uint256, address, uint256
usersActiveX3Levels 0x07279e2a → bool
usersActiveX6Levels 0xb2f7543a → bool
usersX3Matrix 0x83ba31b2 → address, address[], bool
usersX6Matrix 0x9cc102fc → address, address[], address[], bool, address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
buyNewLevel 0xbe389d57
uint8 matrix
uint8 level
contractLock 0xa478656b
bool _lockStatus
returns: bool
failSafe 0x52fd9f13
address _toUser
uint256 _amount
returns: bool
registrationExt 0x797eee24
address referrerAddress
Recent Transactions
This address has 1 on-chain transactions, but only 1.2% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →