Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x77497Fe9d24c7AddB90f247102A0A9fa9599a3b8
Balance 0 ETH
Nonce 1
Code Size 11242 bytes
Last Active
Indexed Transactions 91 (10,633,11510,655,881)
Value (indexed) ↓ 0.600000 ETH
Gas Used (indexed) 2,726,940
External Etherscan · Sourcify

Contract Bytecode

11242 bytes
0x6080604052600436106100fe5760003560e01c8063797eee2411610095578063be389d5711610064578063be389d571461045b578063ce4e0b2214610483578063ecabdf79146104bf578063edf5ea79146104ec578063f029b53d146105e5576100fe565b8063797eee241461038b5780638da5cb5b146103b157806390f63ea0146103c6578063a87430ba14610402576100fe565b8063348d4487116100d1578063348d4487146102c95780634635fd68146102de57806349a4c55c14610308578063509222cd14610358576100fe565b806327e235e31461016a57806329c70400146101af5780632a2d0c47146101da5780632c49664e14610220575b3661011f5760055461011a9033906001600160a01b0316610621565b610168565b610168336101636000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091392505050565b610621565b005b34801561017657600080fd5b5061019d6004803603602081101561018d57600080fd5b50356001600160a01b031661091a565b60408051918252519081900360200190f35b3480156101bb57600080fd5b506101c461092c565b6040805160ff9092168252519081900360200190f35b3480156101e657600080fd5b50610204600480360360208110156101fd57600080fd5b5035610931565b604080516001600160a01b039092168252519081900360200190f35b34801561022c57600080fd5b5061025c6004803603604081101561024357600080fd5b5080356001600160a01b0316906020013560ff1661094c565b604080516001600160a01b0385168152821515918101919091526060602080830182815285519284019290925284516080840191868101910280838360005b838110156102b357818101518382015260200161029b565b5050505090500194505050505060405180910390f35b3480156102d557600080fd5b5061019d6109f9565b3480156102ea57600080fd5b506102046004803603602081101561030157600080fd5b50356109ff565b34801561031457600080fd5b506103446004803603604081101561032b57600080fd5b5080356001600160a01b0316906020013560ff16610a1a565b604080519115158252519081900360200190f35b34801561036457600080fd5b506103446004803603602081101561037b57600080fd5b50356001600160a01b0316610a4e565b610168600480360360208110156103a157600080fd5b50356001600160a01b0316610a6b565b3480156103bd57600080fd5b50610204610a78565b3480156103d257600080fd5b50610204600480360360408110156103e957600080fd5b5080356001600160a01b0316906020013560ff16610a87565b34801561040e57600080fd5b506104356004803603602081101561042557600080fd5b50356001600160a01b0316610b13565b604080519384526001600160a01b03909216602084015282820152519081900360600190f35b6101686004803603604081101561047157600080fd5b5060ff81358116916020013516610b3d565b34801561048f57600080fd5b50610344600480360360408110156104a657600080fd5b5080356001600160a01b0316906020013560ff16610f78565b3480156104cb57600080fd5b5061019d600480360360208110156104e257600080fd5b503560ff16610fa7565b3480156104f857600080fd5b506105286004803603604081101561050f57600080fd5b5080356001600160a01b0316906020013560ff16610fb9565b604080516001600160a01b03808816825284151560608301528316608082015260a060208083018281528851928401929092528751929391929184019160c0850191898101910280838360005b8381101561058d578181015183820152602001610575565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156105cc5781810151838201526020016105b4565b5050505090500197505050505050505060405180910390f35b3480156105f157600080fd5b506102046004803603604081101561060857600080fd5b5080356001600160a01b0316906020013560ff166110d8565b3466b1a2bc2ec5000014610675576040805162461bcd60e51b8152602060048201526016602482015275726567697374726174696f6e20636f737420302e303560501b604482015290519081900360640190fd5b61067e82610a4e565b156106be576040805162461bcd60e51b815260206004820152600b60248201526a757365722065786973747360a81b604482015290519081900360640190fd5b6106c781610a4e565b61070e576040805162461bcd60e51b81526020600482015260136024820152727265666572726572206e6f742065786973747360681b604482015290519081900360640190fd5b813b63ffffffff811615610760576040805162461bcd60e51b815260206004820152601460248201527318d85b9b9bdd08189948184818dbdb9d1c9858dd60621b604482015290519081900360640190fd5b610768612a9c565b50604080516060810182526004805482526001600160a01b03808616602080850182815260008688018181528b861680835282855289832089518155935160018086018054929099166001600160a01b03199283161789559251600280870191909155895485528387528b852080548316841790558854821688179098558284526003850186528a8420805460ff19908116851790915583855294890186528a842080549095168317909455875483528685528983208054909416179092558554820190955591845283905293822001805484019055909161084b9086906110d8565b6001600160a01b038681166000908152602081815260408083206001808552600590910190925290912080546001600160a01b0319169284169290921790915590915061089b9086908390611164565b6108b1856108aa876001610a87565b60016114d3565b6001600160a01b03808616600081815260208181526040808320549489168084529281902054815190815290519293927f309bb360e8b69c23937ccc5fb01f9aeeead1c95a99604e175113ff82f2b1723a929181900390910190a45050505050565b6014015190565b60036020526000908152604090205481565b600c81565b6001602052600090815260409020546001600160a01b031681565b6001600160a01b0382811660009081526020818152604080832060ff86811685526005909101835281842080546002820154600190920180548551818802810188019096528086529697606097899793909116959194939093169290918491908301828280156109e557602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116109c7575b505050505091509250925092509250925092565b60045481565b6002602052600090815260409020546001600160a01b031681565b6001600160a01b03821660009081526020818152604080832060ff8086168552600490910190925290912054165b92915050565b6001600160a01b0316600090815260208190526040902054151590565b610a753382610621565b50565b6005546001600160a01b031681565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff80871684526004909101909152919020541615610aed57506001600160a01b0380831660009081526020819052604090206001015416610a48565b6001600160a01b0392831660009081526020819052604090206001015490921691610a8a565b60006020819052908152604090208054600182015460029092015490916001600160a01b03169083565b610b4633610a4e565b610b815760405162461bcd60e51b8152600401808060200182810382526023815260200180612b936023913960400191505060405180910390fd5b8160ff1660011480610b9657508160ff166002145b610bd8576040805162461bcd60e51b815260206004820152600e60248201526d0d2dcecc2d8d2c840dac2e8e4d2f60931b604482015290519081900360640190fd5b60ff81166000908152600660205260409020543414610c2e576040805162461bcd60e51b815260206004820152600d60248201526c696e76616c696420707269636560981b604482015290519081900360640190fd5b60018160ff16118015610c455750600c60ff821611155b610c86576040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a59081b195d995b609a1b604482015290519081900360640190fd5b8160ff1660011415610e16573360009081526020818152604080832060ff80861685526003909101909252909120541615610d02576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198601811685526005909101909252909120600201541615610d60573360009081526020818152604080832060ff60001986011684526005019091529020600201805460ff191690555b6000610d6c33836110d8565b3360008181526020818152604080832060ff8816845260058101835281842080546001600160a01b0319166001600160a01b0388161790556003019091529020805460ff19166001179055909150610dc5908284611164565b604080516001815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a350610f74565b3360009081526020818152604080832060ff80861685526004909101909252909120541615610e86576040805162461bcd60e51b81526020600482015260176024820152761b195d995b08185b1c9958591e481858dd1a5d985d1959604a1b604482015290519081900360640190fd5b3360009081526020818152604080832060ff6000198601811685526006909101909252909120600301541615610ee4573360009081526020818152604080832060ff60001986011684526006019091529020600301805460ff191690555b6000610ef03383610a87565b3360008181526020818152604080832060ff881684526004019091529020805460ff19166001179055909150610f279082846114d3565b604080516002815260ff8416602082015281516001600160a01b0384169233927f18a92df19fd94d6cfff209966673a5ca05a1c8e2bb68e097fce2bdc2ed811119929081900390910190a3505b5050565b6001600160a01b039190911660009081526020818152604080832060ff94851684526003019091529020541690565b60066020526000908152604090205481565b6001600160a01b0382811660009081526020818152604080832060ff8681168552600690910183528184208054600382015460058301546001840180548751818a0281018a0190985280885298996060998a998c998a9997841698949760029095019690941694909216929186919083018282801561106157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611043575b50505050509350828054806020026020016040519081016040528092919081815260200182805480156110bd57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161109f575b50505050509250945094509450945094509295509295909350565b60005b6001600160a01b0380841660009081526020818152604080832060010154909316825282822060ff8087168452600390910190915291902054161561113e57506001600160a01b0380831660009081526020819052604090206001015416610a48565b6001600160a01b03928316600090815260208190526040902060010154909216916110db565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600590910183529083206001908101805491820181558085529284200180546001600160a01b03191694881694909417909355919052546003111561123c576001600160a01b0380831660008181526020818152604080832060ff8088168086526005909201845293829020600190810154835191825293810191909152919092168183015290519192861691600080516020612b538339815191529181900360600190a36112378284600184611e69565b6114ce565b604080516001815260ff8316602082015260038183015290516001600160a01b038085169290861691600080516020612b538339815191529181900360600190a360408051600080825260208083018085526001600160a01b038716835282825284832060ff8716845260050190915292902090516112c19260019092019190612ac6565b506001600160a01b03821660009081526020818152604080832060ff600186018116855260039091019092529091205416158015611303575060ff8116600c14155b1561133e576001600160a01b03821660009081526020818152604080832060ff851684526005019091529020600201805460ff191660011790555b6005546001600160a01b0383811691161461144957600061135f83836110d8565b6001600160a01b0384811660009081526020818152604080832060ff881684526005019091529020549192508281169116146113d3576001600160a01b0383811660009081526020818152604080832060ff87168452600501909152902080546001600160a01b0319169183169190911790555b6001600160a01b0380841660008181526020818152604080832060ff881680855260059091018352928190206003018054600190810190915581519081529182019290925281518885169486169392600080516020612b73833981519152928290030190a4611443838284611164565b506114ce565b600554611462906001600160a01b031684600184611e69565b600580546001600160a01b0390811660009081526020818152604080832060ff8716808552908601835281842060030180546001908101909155955482519687529286015280518885169593949290921692600080516020612b73833981519152929081900390910190a45b505050565b6001600160a01b03821660009081526020818152604080832060ff808616855260049091019092529091205416611551576040805162461bcd60e51b815260206004820152601f60248201527f3530302e205265666572726572206c6576656c20697320696e61637469766500604482015290519081900360640190fd5b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206001015460021115611ab6576001600160a01b0382811660008181526020818152604080832060ff8781168086526006909201845282852060019081018054918201815580875285872090910180546001600160a01b031916988c16988917905594829052935482516002815293840191909152909216818301529051919291600080516020612b53833981519152916060908290030190a36001600160a01b0383811660009081526020818152604080832060ff86168452600601909152902080546001600160a01b0319168483169081179091556005549091161415611667576112378284600284611e69565b6001600160a01b0382811660009081526020818152604080832060ff8616808552600691820184528285205486168086528585528386208287529092018452918420600280820180546001808201835591885295872090950180546001600160a01b031916978b169790971790965591909352015490918114801561173857506001600160a01b0382811660009081526020818152604080832060ff88168452600601909152812060010180549287169290919061172157fe5b6000918252602090912001546001600160a01b0316145b801561179457506001600160a01b0382811660009081526020818152604080832060ff8816845260060190915290206001908101805492871692909190811061177d57fe5b6000918252602090912001546001600160a01b0316145b15611859576001600160a01b03841660009081526020818152604080832060ff871684526006019091529020600190810154141561181257604080516002815260ff8516602082015260058183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a3611854565b604080516002815260ff8516602082015260068183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a35b611aa4565b80600114806118685750806002145b80156118c057506001600160a01b0382811660009081526020818152604080832060ff8816845260060190915281206001018054928716929091906118a957fe5b6000918252602090912001546001600160a01b0316145b15611984576001600160a01b03841660009081526020818152604080832060ff871684526006019091529020600190810154141561193e57604080516002815260ff8516602082015260038183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a3611854565b604080516002815260ff8516602082015260048183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a3611aa4565b8060021480156119e457506001600160a01b0382811660009081526020818152604080832060ff881684526006019091529020600190810180549287169290919081106119cd57fe5b6000918252602090912001546001600160a01b0316145b15611aa4576001600160a01b03841660009081526020818152604080832060ff8716845260060190915290206001908101541415611a6257604080516002815260ff8516602082015260058183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a3611aa4565b604080516002815260ff8516602082015260068183015290516001600160a01b038085169290881691600080516020612b538339815191529181900360600190a35b611aaf858385611f53565b50506114ce565b6001600160a01b0382811660009081526020818152604080832060ff86168085526006909101835290832060028101805460018101825590855292842090920180546001600160a01b031916888616179055909152600501541615611c9a576001600160a01b03821660009081526020818152604080832060ff851684526006019091529020600190810180549091908110611b4e57fe5b60009182526020808320909101546001600160a01b038581168452838352604080852060ff87168652600601909352918320600101805492909116929091611b9257fe5b6000918252602090912001546001600160a01b0316148015611c0757506001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611bf057fe5b6000918252602090912001546001600160a01b0316145b15611c2457611c19838383600161239f565b611237838383611f53565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152812060058101546001909101805491909316929190611c6557fe5b6000918252602090912001546001600160a01b03161415611c8d57611c19838383600161239f565b611c19838383600061239f565b6001600160a01b0382811660009081526020818152604080832060ff86168452600601909152902060019081018054928616929091908110611cd857fe5b6000918252602090912001546001600160a01b03161415611d0057611c19838383600061239f565b6001600160a01b0382811660009081526020818152604080832060ff861684526006019091528120600101805492861692909190611d3a57fe5b6000918252602090912001546001600160a01b03161415611d6257611c19838383600161239f565b6001600160a01b03821660009081526020818152604080832060ff851684526006019091528120600190810180548392908110611d9b57fe5b60009182526020808320909101546001600160a01b039081168452838201949094526040928301822060ff8616808452600691820183528484206001908101549689168552848452858520918552910190915291812090910180548291908290611e0157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff8616825260060190925290206001015411611e5157611e4c838383600061239f565b611e5e565b611e5e838383600161239f565b6114ce838383611f53565b600080611e7886868686612908565b60ff85166000908152600660205260408082205490519395509193506001600160a01b0385169282156108fc029291818181858888f19350505050611ef4576040516001600160a01b038316904780156108fc02916000818181858888f19350505050158015611eec573d6000803e3d6000fd5b505050611f4d565b8015611f4a576040805160ff80871682528516602082015281516001600160a01b0380861693908916927ff0ddc65c0d411f042f723dcfa1b7d13e85a35b7b70761d447c6500411cacf328929081900390910190a35b50505b50505050565b6001600160a01b03821660009081526020818152604080832060ff8516845260060190915290206002015460041115611f93576112378284600284611e69565b6001600160a01b0380831660009081526020818152604080832060ff8616808552600691820184528285205490951684528383528184209484529390930181529082902060010180548351818402810184019094528084526060939283018282801561202857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161200a575b5050505050905080516002141561218557826001600160a01b03168160008151811061205057fe5b60200260200101516001600160a01b031614806120925750826001600160a01b03168160018151811061207f57fe5b60200260200101516001600160a01b0316145b156120f4576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b0319169091179055612185565b80516001141561218557826001600160a01b03168160008151811061211557fe5b60200260200101516001600160a01b03161415612185576001600160a01b0380841660008181526020818152604080832060ff8816808552600691820184528285205490961684528383528184209584529490940190529190912060050180546001600160a01b03191690911790555b60408051600080825260208083018085526001600160a01b038816835282825284832060ff8816845260060190915292902090516121c99260019092019190612ac6565b5060408051600080825260208083018085526001600160a01b038816835282825284832060ff88168452600601909152929020905161220e9260029092019190612ac6565b506001600160a01b03831660009081526020818152604080832060ff808716855260068201845282852060050180546001600160a01b031916905560018701811685526004909101909252909120541615801561226f575060ff8216600c14155b156122aa576001600160a01b03831660009081526020818152604080832060ff861684526006019091529020600301805460ff191660011790555b6001600160a01b0380841660008181526020818152604080832060ff88168452600601909152902060040180546001019055600554909116146123455760006122f38484610a87565b604080516002815260ff8616602082015281519293506001600160a01b03808916938186169391891692600080516020612b7383398151915292908290030190a461233f8482856114d3565b50611f4d565b600554604080516002815260ff8516602082015281516001600160a01b0380891694600094911692600080516020612b73833981519152929081900390910190a4600554611f4d906001600160a01b031685600285611e69565b8061264f576001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600101805482919082906123db57fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c89161790559589168452838352848420908452019052908120909101805490919061245d57fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff8816865260060190935291832060010180549183169392881692600080516020612b538339815191529260029288929182919082906124bd57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff88168452600601909152812060010180549293881692600080516020612b53833981519152926002928892829190829061256d57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260029092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff861684526006019091528120600101805490919061260457fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b03191691909216179055611f4d565b6001600160a01b03831660009081526020818152604080832060ff86168452600601909152812060019081018054839290811061268857fe5b6000918252602080832091909101546001600160a01b039081168452838201949094526040928301822060ff8716808452600691820183528484206001908101805480830182559086528486200180546001600160a01b0319168c891617905595891684528383528484209084520190522081018054909190811061270957fe5b60009182526020808320909101546001600160a01b038681168452838352604080852060ff88168652600601909352918320600190810180549284169493891693600080516020612b538339815191529360029389938392909190811061276c57fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c1683526006909101845290829020600101548251958216865293811692850192909252911682820152519081900360600190a36001600160a01b0380841660008181526020818152604080832060ff881684526006019091528120600190810180549394891693600080516020612b53833981519152936002938993919283929190811061282157fe5b60009182526020808320909101546001600160a01b03168352828101939093526040918201812060ff808c168352600690910184529082902060010154825195821686529381169285019290925260049092011682820152519081900360600190a36001600160a01b03831660009081526020818152604080832060ff8616845260060190915290206001908101805490919081106128bc57fe5b60009182526020808320909101546001600160a01b038781168452838352604080852060ff881686526006019093529190922080546001600160a01b0319169190921617905550505050565b6000808581600160ff871614156129de575b6001600160a01b03821660009081526020818152604080832060ff808a16855260059091019092529091206002015416156129cf57604080516001815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526005019091529020541660016129d9565b9092509050612a93565b61291a565b6001600160a01b03821660009081526020818152604080832060ff808a16855260069091019092529091206003015416156129cf57604080516002815260ff8716602082015281516001600160a01b03808b1693908616927ffc0cb63f8dbd6b20ceb84a3c5358a41576a1479e6ecd040b4b985525dc09a709929081900390910190a3506001600160a01b0390811660009081526020818152604080832060ff881684526006019091529020541660016129de565b94509492505050565b60405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b828054828255906000526020600020908101928215612b1b579160200282015b82811115612b1b57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612ae6565b50612b27929150612b2b565b5090565b612b4f91905b80821115612b275780546001600160a01b0319168155600101612b31565b9056fe68062c5925c4317adf3a7095478d28b33fd8b41458bc7620b61bc46bf1b24d82a00c953eff38ec1b71e7fe060b2ab8df0bbe5354319fbdde4fbdafd6324386a675736572206973206e6f74206578697374732e2052656769737465722066697273742ea265627a7a72315820afdbe1cf26e5037ab8f0580b6a9fbd94cff624f2c9e8099bd09c234e1e22664264736f6c63430005100032

Verified Source Code Partial Match

Compiler: v0.5.16+commit.9c3226ce EVM: istanbul Optimization: Yes (200 runs)
OneCoinEther.sol 443 lines
/**
* 
*   ██╗ ██████╗ ██████╗ ██╗███╗   ██╗███████╗████████╗██╗  ██╗███████╗██████╗ 
*  ███║██╔════╝██╔═══██╗██║████╗  ██║██╔════╝╚══██╔══╝██║  ██║██╔════╝██╔══██╗
*  ╚██║██║     ██║   ██║██║██╔██╗ ██║█████╗     ██║   ███████║█████╗  ██████╔╝
*   ██║██║     ██║   ██║██║██║╚██╗██║██╔══╝     ██║   ██╔══██║██╔══╝  ██╔══██╗
*   ██║╚██████╗╚██████╔╝██║██║ ╚████║███████╗   ██║   ██║  ██║███████╗██║  ██║
*   ╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚═╝  ╚═══╝╚══════╝   ╚═╝   ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝
* 
* 1CoinEther
* https://1coinether.io
* 
* 
**/


pragma solidity >=0.4.23 <0.6.0;

contract OneCoinEther {
    
    struct User {
        uint id;
        address referrer;
        uint partnersCount;
        
        mapping(uint8 => bool) activeE3Levels;
        mapping(uint8 => bool) activeE6Levels;
        
        mapping(uint8 => E3) e3Matrix;
        mapping(uint8 => E6) e6Matrix;
    }
    
    struct E3 {
        address currentReferrer;
        address[] referrals;
        bool blocked;
        uint reinvestCount;
    }
    
    struct E6 {
        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 => uint) public balances; 

    uint public lastUserId = 2;
    address public owner;
    
    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].activeE3Levels[i] = true;
            users[ownerAddress].activeE6Levels[i] = true;
        }
        
        userIds[1] = ownerAddress;
    }
    
    function() external payable {
        if(msg.data.length == 0) {
            return registration(msg.sender, owner);
        }
        
        registration(msg.sender, bytesToAddress(msg.data));
    }

    function registrationExt(address referrerAddress) external payable {
        registration(msg.sender, referrerAddress);
    }
    
    function buyNewLevel(uint8 matrix, uint8 level) 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].activeE3Levels[level], "level already activated");

            if (users[msg.sender].e3Matrix[level-1].blocked) {
                users[msg.sender].e3Matrix[level-1].blocked = false;
            }
    
            address freeE3Referrer = findFreeE3Referrer(msg.sender, level);
            users[msg.sender].e3Matrix[level].currentReferrer = freeE3Referrer;
            users[msg.sender].activeE3Levels[level] = true;
            updateE3Referrer(msg.sender, freeE3Referrer, level);
            
            emit Upgrade(msg.sender, freeE3Referrer, 1, level);

        } else {
            require(!users[msg.sender].activeE6Levels[level], "level already activated"); 

            if (users[msg.sender].e6Matrix[level-1].blocked) {
                users[msg.sender].e6Matrix[level-1].blocked = false;
            }

            address freeE6Referrer = findFreeE6Referrer(msg.sender, level);
            
            users[msg.sender].activeE6Levels[level] = true;
            updateE6Referrer(msg.sender, freeE6Referrer, level);
            
            emit Upgrade(msg.sender, freeE6Referrer, 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].activeE3Levels[1] = true; 
        users[userAddress].activeE6Levels[1] = true;
        
        
        userIds[lastUserId] = userAddress;
        lastUserId++;
        
        users[referrerAddress].partnersCount++;

        address freeE3Referrer = findFreeE3Referrer(userAddress, 1);
        users[userAddress].e3Matrix[1].currentReferrer = freeE3Referrer;
        updateE3Referrer(userAddress, freeE3Referrer, 1);

        updateE6Referrer(userAddress, findFreeE6Referrer(userAddress, 1), 1);
        
        emit Registration(userAddress, referrerAddress, users[userAddress].id, users[referrerAddress].id);
    }
    
    function updateE3Referrer(address userAddress, address referrerAddress, uint8 level) private {
        users[referrerAddress].e3Matrix[level].referrals.push(userAddress);

        if (users[referrerAddress].e3Matrix[level].referrals.length < 3) {
            emit NewUserPlace(userAddress, referrerAddress, 1, level, uint8(users[referrerAddress].e3Matrix[level].referrals.length));
            return sendETHDividends(referrerAddress, userAddress, 1, level);
        }
        
        emit NewUserPlace(userAddress, referrerAddress, 1, level, 3);
        //close matrix
        users[referrerAddress].e3Matrix[level].referrals = new address[](0);
        if (!users[referrerAddress].activeE3Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].e3Matrix[level].blocked = true;
        }

        //create new one by recursion
        if (referrerAddress != owner) {
            //check referrer active level
            address freeReferrerAddress = findFreeE3Referrer(referrerAddress, level);
            if (users[referrerAddress].e3Matrix[level].currentReferrer != freeReferrerAddress) {
                users[referrerAddress].e3Matrix[level].currentReferrer = freeReferrerAddress;
            }
            
            users[referrerAddress].e3Matrix[level].reinvestCount++;
            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 1, level);
            updateE3Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            sendETHDividends(owner, userAddress, 1, level);
            users[owner].e3Matrix[level].reinvestCount++;
            emit Reinvest(owner, address(0), userAddress, 1, level);
        }
    }

    function updateE6Referrer(address userAddress, address referrerAddress, uint8 level) private {
        require(users[referrerAddress].activeE6Levels[level], "500. Referrer level is inactive");
        
        if (users[referrerAddress].e6Matrix[level].firstLevelReferrals.length < 2) {
            users[referrerAddress].e6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, referrerAddress, 2, level, uint8(users[referrerAddress].e6Matrix[level].firstLevelReferrals.length));
            
            //set current level
            users[userAddress].e6Matrix[level].currentReferrer = referrerAddress;

            if (referrerAddress == owner) {
                return sendETHDividends(referrerAddress, userAddress, 2, level);
            }
            
            address ref = users[referrerAddress].e6Matrix[level].currentReferrer;            
            users[ref].e6Matrix[level].secondLevelReferrals.push(userAddress); 
            
            uint len = users[ref].e6Matrix[level].firstLevelReferrals.length;
            
            if ((len == 2) && 
                (users[ref].e6Matrix[level].firstLevelReferrals[0] == referrerAddress) &&
                (users[ref].e6Matrix[level].firstLevelReferrals[1] == referrerAddress)) {
                if (users[referrerAddress].e6Matrix[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].e6Matrix[level].firstLevelReferrals[0] == referrerAddress) {
                if (users[referrerAddress].e6Matrix[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].e6Matrix[level].firstLevelReferrals[1] == referrerAddress) {
                if (users[referrerAddress].e6Matrix[level].firstLevelReferrals.length == 1) {
                    emit NewUserPlace(userAddress, ref, 2, level, 5);
                } else {
                    emit NewUserPlace(userAddress, ref, 2, level, 6);
                }
            }

            return updateE6ReferrerSecondLevel(userAddress, ref, level);
        }
        
        users[referrerAddress].e6Matrix[level].secondLevelReferrals.push(userAddress);

        if (users[referrerAddress].e6Matrix[level].closedPart != address(0)) {
            if ((users[referrerAddress].e6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].e6Matrix[level].firstLevelReferrals[1]) &&
                (users[referrerAddress].e6Matrix[level].firstLevelReferrals[0] ==
                users[referrerAddress].e6Matrix[level].closedPart)) {

                updateE6(userAddress, referrerAddress, level, true);
                return updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else if (users[referrerAddress].e6Matrix[level].firstLevelReferrals[0] == 
                users[referrerAddress].e6Matrix[level].closedPart) {
                updateE6(userAddress, referrerAddress, level, true);
                return updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
            } else {
                updateE6(userAddress, referrerAddress, level, false);
                return updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
            }
        }

        if (users[referrerAddress].e6Matrix[level].firstLevelReferrals[1] == userAddress) {
            updateE6(userAddress, referrerAddress, level, false);
            return updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
        } else if (users[referrerAddress].e6Matrix[level].firstLevelReferrals[0] == userAddress) {
            updateE6(userAddress, referrerAddress, level, true);
            return updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
        }
        
        if (users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[0]].e6Matrix[level].firstLevelReferrals.length <= 
            users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[1]].e6Matrix[level].firstLevelReferrals.length) {
            updateE6(userAddress, referrerAddress, level, false);
        } else {
            updateE6(userAddress, referrerAddress, level, true);
        }
        
        updateE6ReferrerSecondLevel(userAddress, referrerAddress, level);
    }

    function updateE6(address userAddress, address referrerAddress, uint8 level, bool e2) private {
        if (!e2) {
            users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[0]].e6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].e6Matrix[level].firstLevelReferrals[0], 2, level, uint8(users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[0]].e6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 2 + uint8(users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[0]].e6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].e6Matrix[level].currentReferrer = users[referrerAddress].e6Matrix[level].firstLevelReferrals[0];
        } else {
            users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[1]].e6Matrix[level].firstLevelReferrals.push(userAddress);
            emit NewUserPlace(userAddress, users[referrerAddress].e6Matrix[level].firstLevelReferrals[1], 2, level, uint8(users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[1]].e6Matrix[level].firstLevelReferrals.length));
            emit NewUserPlace(userAddress, referrerAddress, 2, level, 4 + uint8(users[users[referrerAddress].e6Matrix[level].firstLevelReferrals[1]].e6Matrix[level].firstLevelReferrals.length));
            //set current level
            users[userAddress].e6Matrix[level].currentReferrer = users[referrerAddress].e6Matrix[level].firstLevelReferrals[1];
        }
    }
    
    function updateE6ReferrerSecondLevel(address userAddress, address referrerAddress, uint8 level) private {
        if (users[referrerAddress].e6Matrix[level].secondLevelReferrals.length < 4) {
            return sendETHDividends(referrerAddress, userAddress, 2, level);
        }
        
        address[] memory e6 = users[users[referrerAddress].e6Matrix[level].currentReferrer].e6Matrix[level].firstLevelReferrals;
        
        if (e6.length == 2) {
            if (e6[0] == referrerAddress ||
                e6[1] == referrerAddress) {
                users[users[referrerAddress].e6Matrix[level].currentReferrer].e6Matrix[level].closedPart = referrerAddress;
            } else if (e6.length == 1) {
                if (e6[0] == referrerAddress) {
                    users[users[referrerAddress].e6Matrix[level].currentReferrer].e6Matrix[level].closedPart = referrerAddress;
                }
            }
        }
        
        users[referrerAddress].e6Matrix[level].firstLevelReferrals = new address[](0);
        users[referrerAddress].e6Matrix[level].secondLevelReferrals = new address[](0);
        users[referrerAddress].e6Matrix[level].closedPart = address(0);

        if (!users[referrerAddress].activeE6Levels[level+1] && level != LAST_LEVEL) {
            users[referrerAddress].e6Matrix[level].blocked = true;
        }

        users[referrerAddress].e6Matrix[level].reinvestCount++;
        
        if (referrerAddress != owner) {
            address freeReferrerAddress = findFreeE6Referrer(referrerAddress, level);

            emit Reinvest(referrerAddress, freeReferrerAddress, userAddress, 2, level);
            updateE6Referrer(referrerAddress, freeReferrerAddress, level);
        } else {
            emit Reinvest(owner, address(0), userAddress, 2, level);
            sendETHDividends(owner, userAddress, 2, level);
        }
    }
    
    function findFreeE3Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeE3Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
    
    function findFreeE6Referrer(address userAddress, uint8 level) public view returns(address) {
        while (true) {
            if (users[users[userAddress].referrer].activeE6Levels[level]) {
                return users[userAddress].referrer;
            }
            
            userAddress = users[userAddress].referrer;
        }
    }
        
    function usersActiveE3Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeE3Levels[level];
    }

    function usersActiveE6Levels(address userAddress, uint8 level) public view returns(bool) {
        return users[userAddress].activeE6Levels[level];
    }

    function usersE3Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, bool) {
        return (users[userAddress].e3Matrix[level].currentReferrer,
                users[userAddress].e3Matrix[level].referrals,
                users[userAddress].e3Matrix[level].blocked);
    }

    function usersE6Matrix(address userAddress, uint8 level) public view returns(address, address[] memory, address[] memory, bool, address) {
        return (users[userAddress].e6Matrix[level].currentReferrer,
                users[userAddress].e6Matrix[level].firstLevelReferrals,
                users[userAddress].e6Matrix[level].secondLevelReferrals,
                users[userAddress].e6Matrix[level].blocked,
                users[userAddress].e6Matrix[level].closedPart);
    }
    
    function isUserExists(address user) public view returns (bool) {
        return (users[user].id != 0);
    }

    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].e3Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 1, level);
                    isExtraDividends = true;
                    receiver = users[receiver].e3Matrix[level].currentReferrer;
                } else {
                    return (receiver, isExtraDividends);
                }
            }
        } else {
            while (true) {
                if (users[receiver].e6Matrix[level].blocked) {
                    emit MissedEthReceive(receiver, _from, 2, level);
                    isExtraDividends = true;
                    receiver = users[receiver].e6Matrix[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])) {
            return address(uint160(receiver)).transfer(address(this).balance);
        }
        
        if (isExtraDividends) {
            emit SentExtraEthDividends(_from, receiver, matrix, level);
        }
    }
    
    function bytesToAddress(bytes memory bys) private pure returns (address addr) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
}

Read Contract

LAST_LEVEL 0x29c70400 → uint8
balances 0x27e235e3 → uint256
findFreeE3Referrer 0xf029b53d → address
findFreeE6Referrer 0x90f63ea0 → address
idToAddress 0x2a2d0c47 → address
isUserExists 0x509222cd → bool
lastUserId 0x348d4487 → uint256
levelPrice 0xecabdf79 → uint256
owner 0x8da5cb5b → address
userIds 0x4635fd68 → address
users 0xa87430ba → uint256, address, uint256
usersActiveE3Levels 0xce4e0b22 → bool
usersActiveE6Levels 0x49a4c55c → bool
usersE3Matrix 0x2c49664e → address, address[], bool
usersE6Matrix 0xedf5ea79 → address, address[], address[], bool, address

Write Contract 2 functions

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

buyNewLevel 0xbe389d57
uint8 matrix
uint8 level
registrationExt 0x797eee24
address referrerAddress

Recent Transactions

CSV View All 91 Transactions →
|
Hash Method Block Age From/To Value Txn Fee Type
0x4a6c9a6a...a1ee31 0x797eee24 10,655,881 IN 0x0a270F9f...407e 0.050000 ETH 0.07883406 ETH Legacy
0xae20151a...f141f3 0xbe389d57 10,654,326 IN 0x72b4dc52...fE74 0.100000 ETH 0.02363583 ETH Legacy
0x8b39ad04...08e9e6 0xbe389d57 10,653,295 IN 0x2125f358...c129 0.050000 ETH 0.01229159 ETH Legacy
0xd4737648...d51a15 0xbe389d57 10,653,261 IN 0x2125f358...c129 0.100000 ETH 0.02038208 ETH Legacy
0x19f5dd86...bc3a0d 0xbe389d57 10,653,230 IN 0x2125f358...c129 0.050000 ETH 0.02218244 ETH Legacy
0x42aadda4...03ab1e 0x797eee24 10,653,174 IN 0x2125f358...c129 0.050000 ETH 0.04128685 ETH Legacy
0x50fad9f3...9aa5e2 0x797eee24 10,652,008 IN 0x92322116...417A 0.050000 ETH 0.05181179 ETH Legacy
0x995c8ee6...bbee10 0x797eee24 10,649,043 IN 0xAEF4c563...D2F2 0.050000 ETH 0.10373969 ETH Legacy
0x60bb233c...adc054 0x797eee24 10,634,571 IN 0xcfBdAA77...fe46 0.050000 ETH 0.02072004 ETH Legacy
0x51919059...866a68 0x797eee24 10,633,115 IN 0x2cDDE6AD...32dA 0.050000 ETH 0.04501623 ETH Legacy