Address Contract Partially Verified
Address
0xC44C22fbF9386cd90f02FF5418f3E01b2F3086E5
Balance
0 ETH
Nonce
1
Code Size
8927 bytes
Creator
0xf63997ef...301c at tx 0x4f1c8375...7b5d5f
Last Active
Indexed Transactions
1729 (10,630,846 → 10,630,932)
Value (indexed)
↓ 1.1000 ETH
Gas Used (indexed)
2,261,055
Contract Bytecode
8927 bytes
0x6080604052600436106100dd5760003560e01c806393a7e7b01161007f578063a87430ba11610059578063a87430ba1461078b578063d2840073146107eb578063f2fde38b14610824578063f6838a7214610857576100dd565b806393a7e7b01461069c5780639f4216e81461074c578063a4bb170d14610776576100dd565b80634a4baa8f116100bb5780634a4baa8f146105a957806379378e301461062c5780638853b53e146106685780639335dcb714610687576100dd565b80630b8d0a2814610530578063132c8c9b146105615780631a026c9614610594575b6001600090815260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f5434141561011a575060016103e7565b600260005260086020527f6add646517a5b0f6793cd5891b7937d28a5b2981a5d88ebc7cd776088fea904154341415610155575060026103e7565b600360005260086020527f625b35f5e76f098dd7c3a05b10e2e5e78a4a01228d60c3b143426cdf36d2645554341415610190575060036103e7565b600460005260086020527f9321edea6e3be4df59a344b401fab4f888b556fda1f954244cff9204bad624b8543414156101cb575060046103e7565b600560005260086020527f91238f30f286c9a1c6e901c4eda3b214c381c846e3dbe48df95c21488e8e1fdb54341415610206575060056103e7565b600660005260086020527f13acf3fc7bed94759963f076d5d3443d88732026bffc8253bdf4a6e65f21ecc554341415610241575060066103e7565b600760005260086020527f24cd397636bedc6cf9b490d0edd57c769c19b367fb7d5c2344ae1ddc7d21c1445434141561027c575060076103e7565b600860008190526020527fe4c2e8be66af8dd2d277000f4f830a10546f8b14e45cd850b875c98ba0f0d2cd543414156102b7575060086103e7565b600960005260086020527f82c9e868e45873bb5a4f47c09e14a12f6a6314e13aabd611e4374762bb4e8b36543414156102f2575060096103e7565b600a60005260086020527f586689db7536874b78a6eac0f58556a56a106985743f7c16a699b27bb02f88bd5434141561032d5750600a6103e7565b600b60005260086020527fcb250a1a60f48f70f08c912424f39071fd9a8b7099a72dffd251fce0294f3749543414156103685750600b6103e7565b600c60005260086020527faba08fc86a199da17c4b45fa0fb586714474d27e5e1f0220658b6275561b2e18543414156103a35750600c6103e7565b6040805162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0815985b1d59481cd95b9960621b604482015290519081900360640190fd5b3360009081526009602052604090205460ff161561040d5761040881610870565b61052d565b80600114156104f6576000809050600061045d6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610b7a92505050565b6001600160a01b03811660009081526009602052604090205490915060ff16156104a4576001600160a01b03811660009081526009602052604090206001015491506104e6565b6040805162461bcd60e51b815260206004820152601260248201527124b731b7b93932b1ba103932b332b93932b960711b604482015290519081900360640190fd5b6104ef82610b81565b505061052d565b60405162461bcd60e51b81526004018080602001828103825260238152602001806122646023913960400191505060405180910390fd5b50005b34801561053c57600080fd5b50610545610ed9565b604080516001600160a01b039092168252519081900360200190f35b34801561056d57600080fd5b506105456004803603602081101561058457600080fd5b50356001600160a01b0316610ee8565b3480156105a057600080fd5b5061054561120e565b3480156105b557600080fd5b506105dc600480360360208110156105cc57600080fd5b50356001600160a01b031661121d565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610618578181015183820152602001610600565b505050509050019250505060405180910390f35b34801561063857600080fd5b506106566004803603602081101561064f57600080fd5b5035611296565b60408051918252519081900360200190f35b6106856004803603602081101561067e57600080fd5b5035610b81565b005b34801561069357600080fd5b506105456112a8565b3480156106a857600080fd5b50610685600480360360208110156106bf57600080fd5b8101906020810181356401000000008111156106da57600080fd5b8201836020820111156106ec57600080fd5b8035906020019184602083028401116401000000008311171561070e57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506112b7945050505050565b34801561075857600080fd5b506105456004803603602081101561076f57600080fd5b503561168c565b34801561078257600080fd5b506106566116a7565b34801561079757600080fd5b506107be600480360360208110156107ae57600080fd5b50356001600160a01b03166116ad565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156107f757600080fd5b506106566004803603604081101561080e57600080fd5b506001600160a01b0381351690602001356116e0565b34801561083057600080fd5b506106856004803603602081101561084757600080fd5b50356001600160a01b031661170e565b6106856004803603602081101561086d57600080fd5b50355b3360009081526009602052604090205460ff166108c5576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b6000811180156108d65750600c8111155b610919576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b80600114156109c057600160005260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f543414610993576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60045433600090815260096020908152604080832060018452600601909152902080549091019055610b0a565b6000818152600860205260409020543414610a14576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b8015610a9457336000908152600960209081526040808320848452600601909152902054421115610a8b576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b60001901610a1a565b50336000908152600960209081526040808320848452600601909152902054610ae2576004543360009081526009602090815260408083208584526006019091529020429091019055610b0a565b6004543360009081526009602090815260408083208584526006019091529020805490910190555b336000818152600960209081526040808320600401548352600a909152902054610b3e9183916001600160a01b0316611772565b60408051828152426020820152815133927f9ea70f0eb33d898c3336ecf2c0e3cf1c0195c13ad3fbcb34447777dbfd5ff2d0928290030190a250565b6014015190565b3360009081526009602052604090205460ff1615610bd3576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b600081118015610be55750600b548111155b610c2e576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881259605a1b604482015290519081900360640190fd5b600160005260086020527fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f543414610c9f576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b600380546000838152600a60209081526040808320546001600160a01b031683526009909152902090910154829111610d1e576000828152600a602052604081205460099190610cf7906001600160a01b0316610ee8565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015491505b610d2661217e565b50600b80546001908101918290556040805160c0810182528281526020808201948552818301878152835160008082528184018652606085019182526080850189905260a0850181905233815260098452949094208351815460ff19169015151781559551948601949094559251600285015590518051919384939092610db392600385019201906121b6565b50608082015160048281019190915560a090920151600590910155600b546000908152600a602081815260408084208054336001600160a01b0319918216811790925595548186526009808552838720600180895260069091018652848820429093019092558a875285855283872080546001600160a01b039081168952918652938720600301805480840182559088528588200180549098168317909755948990529290915254610e659316611772565b6000828152600a6020818152604080842080546001600160a01b03908116865260098452828620600501805460010190559487905292825291548251428152925193169233927f788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f192908290030190a3505050565b6002546001600160a01b031681565b600380546001600160a01b0383166000908152600960205260408120909201541015610f15575080611209565b604080516103fe808252617fe0820190925260609160208201617fc0803883395050506001600160a01b0384166000908152600960205260408120600301805492935091610f5f57fe5b600091825260208220015482516001600160a01b03909116918391610f8057fe5b6001600160a01b03928316602091820292909201810191909152908416600090815260099091526040902060030180546001908110610fbb57fe5b9060005260206000200160009054906101000a90046001600160a01b031681600181518110610fe657fe5b6001600160a01b039092166020928302919091019091015260006001815b6103fe8110156111bd576003546009600086848151811061102157fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060030180549050141561119657603e811015611191576009600085838151811061106f57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206003016000815481106110a657fe5b9060005260206000200160009054906101000a90046001600160a01b03168482600101600202815181106110d657fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506009600085838151811061110657fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060030160018154811061113d57fe5b9060005260206000200160009054906101000a90046001600160a01b031684826001016002026001018151811061117057fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b6111b5565b600091508381815181106111a657fe5b602002602001015192506111bd565b600101611004565b508015611204576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509150505b919050565b6001546001600160a01b031681565b6001600160a01b03811660009081526009602090815260409182902060030180548351818402810184019094528084526060939283018282801561128a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161126c575b50505050509050919050565b60086020526000908152604090205481565b6000546001600160a01b031681565b6000546001600160a01b0316331461130f576040805162461bcd60e51b8152602060048201526016602482015275165bdd48185c99481b9bdd08185d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b6008600b541115611367576040805162461bcd60e51b815260206004820181905260248201527f4e6f206d6f72652061646d696e732063616e2062652072656769737465726564604482015290519081900360640190fd5b61136f61217e565b60005b825181101561168757600b80546001908101909155600380547fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc7546001600160a01b031660009081526009602052604090209091015482911161141b576000828152600a6020526040812054600991906113f4906001600160a01b0316610ee8565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015491505b6040518060c00160405280600115158152602001600b5481526020018381526020016000604051908082528060200260200182016040528015611468578160200160208202803883390190505b50815260200182815260200160008152509350836009600087868151811061148c57fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000208351815460ff19169015151781558383015160018201559083015160028201556060830151805191926114ed926003850192909101906121b6565b506080820151816004015560a0820151816005015590505084838151811061151157fe5b602090810291909101810151600b546000908152600a909252604090912080546001600160a01b0319166001600160a01b0390921691909117905560015b600c81116115a957640cef5e80e36009600088878151811061156d57fe5b6020908102919091018101516001600160a01b03168252818101929092526040908101600090812085825260060190925290205560010161154f565b506000828152600a60209081526040808320546001600160a01b031683526009909152902085516003909101908690859081106115e257fe5b602090810291909101810151825460018082018555600094855283852090910180546001600160a01b0319166001600160a01b03938416179055848452600a8084526040808620805485168752600986528187206005018054909401909355948690528352548351428152935191169233927f788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f192918290030190a35050600101611372565b505050565b600a602052600090815260409020546001600160a01b031681565b600b5481565b6009602052600090815260409020805460018201546002830154600484015460059094015460ff90931693919290919085565b6001600160a01b03821660009081526009602090815260408083208484526006019091529020545b92915050565b6000546001600160a01b03163314611766576040805162461bcd60e51b8152602060048201526016602482015275165bdd48185c99481b9bdd08185d5d1a1bdc9a5e995960521b604482015290519081900360640190fd5b61176f81611f9f565b50565b600080600085600114156117b2576001600160a01b038086166000908152600960209081526040808320600401548352600a909152902054169250611ac4565b85600714156117ed576001600160a01b038086166000908152600960209081526040808320600201548352600a909152902054169250611ac4565b85600214806117fc5750856008145b15611852576001600160a01b0380861660009081526009602081815260408084206002908101548552600a8084528286205487168087529484528286209091015485529091529091205490911693509150611ac4565b85600314806118615750856009145b156118ce575050506001600160a01b0380831660009081526009602081815260408084206002908101548552600a80845282862054871680875285855283872083015487528185528387205488168088529585528387209092015486529092529092205490921691611ac4565b85600414806118dd575085600a145b15611961575050506001600160a01b0380831660009081526009602081815260408084206002908101548552600a808452828620548716865284845282862082015486528084528286205487168087528585528387208301548752818552838720548816808852958552838720909201548652909252909220549092169190611ac4565b8560051480611970575085600b145b15611a09575050506001600160a01b0380831660009081526009602081815260408084206002908101548552600a808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088529585528387209092015486529092529092205490921691611ac4565b8560061480611a18575085600c145b15611ac4575050506001600160a01b0380831660009081526009602081815260408084206002908101548552600a80845282862054871686528484528286208201548652808452828620548716865284845282862082015486528084528286205487168652848452828620820154865280845282862054871680875285855283872083015487528185528387205488168088529585528387209092015486529092529092205490921691905b6001600160a01b03831660009081526009602052604090205460ff16611b1c576001600052600a6020527fbbc70db1b6c7afd11e79c0fb0051300458f1a3acb8ee9789d9b6b26c61ad9bc7546001600160a01b031692505b60006001871415611c73576001600160a01b03841660009081526009602090815260408083208a84526006019091529020544211611bdb576000878152600860205260408082205490516001600160a01b0387169282156108fc02929190818181858888f1935050505090508015611bd65760408051888152426020820152815133926001600160a01b038816927f7a1e253554d0e91f48feec0d195e1965bbcd28feeddc456f1a8481f71dfd3e11929081900390910190a35b611c6e565b6002546000888152600860205260408082205490516001600160a01b039093169281156108fc0292818181858888f19350505050158015611c20573d6000803e3d6000fd5b5060408051888152426020820152600181830152905133916001600160a01b038716917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a35b611f96565b6001600160a01b03841660009081526009602090815260408083208a84526006019091529020544211611f3a576007546000888152600860205260409020546001600160a01b038616916108fc91611ce391606491611cd79163ffffffff61203f16565b9063ffffffff61209f16565b6040518115909202916000818181858888f1935050505090508015611f3a576001600160a01b03851660009081526009602090815260408083208a84526006019091529020544211611ddb576006546000888152600860205260409020546001600160a01b038716916108fc91611d6691606491611cd79163ffffffff61203f16565b6040518115909202916000818181858888f19350505050158015611d8e573d6000803e3d6000fd5b5060408051888152426020820152815133926001600160a01b038916927f7a1e253554d0e91f48feec0d195e1965bbcd28feeddc456f1a8481f71dfd3e11929081900390910190a3611e8d565b6002546006546000898152600860205260409020546001600160a01b03909216916108fc91611e1791606491611cd7919063ffffffff61203f16565b6040518115909202916000818181858888f19350505050158015611e3f573d6000803e3d6000fd5b5060408051888152426020820152600181830152905133916001600160a01b038816917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a35b6001546005546000898152600860205260409020546001600160a01b03909216916108fc91611ec991606491611cd7919063ffffffff61203f16565b6040518115909202916000818181858888f19350505050158015611ef1573d6000803e3d6000fd5b5060408051888152426020820152815133926001600160a01b038816927fce7dc747411ac40191c5335943fcc79d8c2d8c01ca5ae83d9fed160409fa6120929081900390910190a35b80611f965760408051888152426020820152600281830152905133916001600160a01b038716917f42d2b895e7a01667b487e3e39f184c2583eaf835084d248fc5c9591c0a820f739181900360600190a3611f96878587611772565b50505050505050565b6001600160a01b038116611fe45760405162461bcd60e51b81526004018080602001828103825260248152602001806122876024913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008261204e57506000611708565b8282028284828161205b57fe5b04146120985760405162461bcd60e51b81526004018080602001828103825260218152602001806122436021913960400191505060405180910390fd5b9392505050565b600061209883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250600081836121685760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561212d578181015183820152602001612115565b50505050905090810190601f16801561215a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161217457fe5b0495945050505050565b6040518060c0016040528060001515815260200160008152602001600081526020016060815260200160008152602001600081525090565b82805482825590600052602060002090810192821561220b579160200282015b8281111561220b57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906121d6565b5061221792915061221b565b5090565b61223f91905b808211156122175780546001600160a01b0319168155600101612221565b9056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77506c6561736520627579206669727374206c6576656c20666f7220302e3033204554484e6577206f776e65722063616e6e6f7420626520746865207a65726f2061646472657373a265627a7a723158208c54dc2e8e81c0816c1d02a3cd1b2cafd6be5dede2bebf610b3187b6fb43d39d64736f6c634300050b0032
Verified Source Code Partial Match
Compiler: v0.5.11+commit.c082d0b4
EVM: petersburg
Optimization: Yes (200 runs)
Crowdsharing.sol 474 lines
pragma solidity 0.5.11;
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*
* NOTE: This is a feature of the next version of OpenZeppelin Contracts.
* @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
* NOTE: This is a feature of the next version of OpenZeppelin Contracts.
* @dev Get it via `npm install @openzeppelin/contracts@next`.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
}
contract Crowdsharing {
using SafeMath for *;
address public ownerWallet;
address public wallet1; //3%
address public wallet2; //15%
struct UserStruct {
bool isExist;
uint id;
uint referrerID;
address[] referral;
uint directSponsor;
uint referralCounter;
mapping(uint => uint) levelExpired;
}
uint REFERRER_1_LEVEL_LIMIT = 2;
uint PERIOD_LENGTH = 60 days;
uint private adminFees = 3;
uint private directSponsorFees = 15;
uint private earnings = 82;
mapping(uint => uint) public LEVEL_PRICE;
mapping (address => UserStruct) public users;
mapping (uint => address) public userList;
uint public currUserID = 0;
event regLevelEvent(address indexed _user, address indexed _referrer, uint _time);
event buyLevelEvent(address indexed _user, uint _level, uint _time);
event getMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time);
event getSponsorBonusEvent(address indexed _sponsor, address indexed _user, uint _level, uint _time);
event lostMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time, uint number);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor(address _owner, address _wallet1, address _wallet2) public {
ownerWallet = msg.sender;
wallet1 = _wallet1;
wallet2 = _wallet2;
LEVEL_PRICE[1] = 0.1 ether;
LEVEL_PRICE[2] = 0.2 ether;
LEVEL_PRICE[3] = 0.5 ether;
LEVEL_PRICE[4] = 3 ether;
LEVEL_PRICE[5] = 10 ether;
LEVEL_PRICE[6] = 30 ether;
LEVEL_PRICE[7] = 15 ether;
LEVEL_PRICE[8] = 35 ether;
LEVEL_PRICE[9] = 100 ether;
LEVEL_PRICE[10] = 250 ether;
LEVEL_PRICE[11] = 500 ether;
LEVEL_PRICE[12] = 1000 ether;
UserStruct memory userStruct;
currUserID++;
userStruct = UserStruct({
isExist: true,
id: currUserID,
referrerID: 0,
referral: new address[](0),
directSponsor: 0,
referralCounter: 0
});
users[_owner] = userStruct;
userList[currUserID] = _owner;
for(uint i = 1; i <= 12; i++) {
users[_owner].levelExpired[i] = 55555555555;
}
}
function () external payable {
uint level;
if(msg.value == LEVEL_PRICE[1]) level = 1;
else if(msg.value == LEVEL_PRICE[2]) level = 2;
else if(msg.value == LEVEL_PRICE[3]) level = 3;
else if(msg.value == LEVEL_PRICE[4]) level = 4;
else if(msg.value == LEVEL_PRICE[5]) level = 5;
else if(msg.value == LEVEL_PRICE[6]) level = 6;
else if(msg.value == LEVEL_PRICE[7]) level = 7;
else if(msg.value == LEVEL_PRICE[8]) level = 8;
else if(msg.value == LEVEL_PRICE[9]) level = 9;
else if(msg.value == LEVEL_PRICE[10]) level = 10;
else if(msg.value == LEVEL_PRICE[11]) level = 11;
else if(msg.value == LEVEL_PRICE[12]) level = 12;
else revert('Incorrect Value send');
if(users[msg.sender].isExist) buyLevel(level);
else if(level == 1) {
uint refId = 0;
address referrer = bytesToAddress(msg.data);
if(users[referrer].isExist) refId = users[referrer].id;
else revert('Incorrect referrer');
regUser(refId);
}
else revert('Please buy first level for 0.03 ETH');
}
function regUser(uint _referrerID) public payable {
require(!users[msg.sender].isExist, 'User exist');
require(_referrerID > 0 && _referrerID <= currUserID, 'Incorrect referrer Id');
require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');
uint tempReferrerID = _referrerID;
if(users[userList[_referrerID]].referral.length >= REFERRER_1_LEVEL_LIMIT)
_referrerID = users[findFreeReferrer(userList[_referrerID])].id;
UserStruct memory userStruct;
currUserID++;
userStruct = UserStruct({
isExist: true,
id: currUserID,
referrerID: _referrerID,
referral: new address[](0),
directSponsor: tempReferrerID,
referralCounter: 0
});
users[msg.sender] = userStruct;
userList[currUserID] = msg.sender;
users[msg.sender].levelExpired[1] = now + PERIOD_LENGTH;
users[userList[_referrerID]].referral.push(msg.sender);
payForLevel(1, msg.sender,userList[_referrerID]);
//increase the referral counter;
users[userList[tempReferrerID]].referralCounter++;
emit regLevelEvent(msg.sender, userList[tempReferrerID], now);
}
function regAdmins(address [] memory _adminAddress) public {
require(msg.sender == ownerWallet,"You are not authorized");
require(currUserID <= 8, "No more admins can be registered");
UserStruct memory userStruct;
for(uint i = 0; i < _adminAddress.length; i++){
currUserID++;
uint _referrerID = 1;
uint tempReferrerID = _referrerID;
if(users[userList[_referrerID]].referral.length >= REFERRER_1_LEVEL_LIMIT)
_referrerID = users[findFreeReferrer(userList[_referrerID])].id;
userStruct = UserStruct({
isExist: true,
id: currUserID,
referrerID: _referrerID,
referral: new address[](0),
directSponsor: tempReferrerID,
referralCounter: 0
});
users[_adminAddress[i]] = userStruct;
userList[currUserID] = _adminAddress[i];
for(uint j = 1; j <= 12; j++) {
users[_adminAddress[i]].levelExpired[j] = 55555555555;
}
users[userList[_referrerID]].referral.push(_adminAddress[i]);
//increase the referral counter;
users[userList[tempReferrerID]].referralCounter++;
emit regLevelEvent(msg.sender, userList[tempReferrerID], now);
}
}
function buyLevel(uint _level) public payable {
require(users[msg.sender].isExist, 'User not exist');
require(_level > 0 && _level <= 12, 'Incorrect level');
if(_level == 1) {
require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');
users[msg.sender].levelExpired[1] += PERIOD_LENGTH;
}
else {
require(msg.value == LEVEL_PRICE[_level], 'Incorrect Value');
for(uint l =_level - 1; l > 0; l--) require(users[msg.sender].levelExpired[l] >= now, 'Buy the previous level');
if(users[msg.sender].levelExpired[_level] == 0) users[msg.sender].levelExpired[_level] = now + PERIOD_LENGTH;
else users[msg.sender].levelExpired[_level] += PERIOD_LENGTH;
}
payForLevel(_level, msg.sender, userList[users[msg.sender].directSponsor]);
emit buyLevelEvent(msg.sender, _level, now);
}
function payForLevel(uint _level, address _user, address _sponsor) internal {
address actualReferer;
address referer1;
address referer2;
if(_level == 1)
actualReferer = userList[users[_user].directSponsor];
else if(_level == 7) {
actualReferer = userList[users[_user].referrerID];
}
else if(_level == 2 || _level == 8) {
referer1 = userList[users[_user].referrerID];
actualReferer = userList[users[referer1].referrerID];
}
else if(_level == 3 || _level == 9) {
referer1 = userList[users[_user].referrerID];
referer2 = userList[users[referer1].referrerID];
actualReferer = userList[users[referer2].referrerID];
}
else if(_level == 4 || _level == 10) {
referer1 = userList[users[_user].referrerID];
referer2 = userList[users[referer1].referrerID];
referer1 = userList[users[referer2].referrerID];
actualReferer = userList[users[referer1].referrerID];
}
else if(_level == 5 || _level == 11) {
referer1 = userList[users[_user].referrerID];
referer2 = userList[users[referer1].referrerID];
referer1 = userList[users[referer2].referrerID];
referer2 = userList[users[referer1].referrerID];
actualReferer = userList[users[referer2].referrerID];
}
else if(_level == 6 || _level == 12) {
referer1 = userList[users[_user].referrerID];
referer2 = userList[users[referer1].referrerID];
referer1 = userList[users[referer2].referrerID];
referer2 = userList[users[referer1].referrerID];
referer1 = userList[users[referer2].referrerID];
actualReferer = userList[users[referer1].referrerID];
}
if(!users[actualReferer].isExist) actualReferer = userList[1];
bool sent = false;
if(_level == 1) {
if(users[actualReferer].levelExpired[_level] >= now) {
sent = address(uint160(actualReferer)).send(LEVEL_PRICE[_level]);
if (sent) {
emit getSponsorBonusEvent(actualReferer, msg.sender, _level, now);
}
}
else {
address(uint160(wallet2)).transfer(LEVEL_PRICE[_level]);
emit lostMoneyForLevelEvent(actualReferer, msg.sender, _level, now,1);
}
}
else {
if(users[actualReferer].levelExpired[_level] >= now) {
sent = address(uint160(actualReferer)).send(LEVEL_PRICE[_level].mul(earnings).div(100));
if (sent) {
if(users[_sponsor].levelExpired[_level] >= now) {
address(uint160(_sponsor)).transfer(LEVEL_PRICE [_level].mul(directSponsorFees).div(100));
emit getSponsorBonusEvent(_sponsor, msg.sender, _level, now);
}
else{
address(uint160(wallet2)).transfer(LEVEL_PRICE [_level].mul(directSponsorFees).div(100));
emit lostMoneyForLevelEvent(_sponsor, msg.sender, _level, now, 1);
}
address(uint160(wallet1)).transfer(LEVEL_PRICE[_level].mul(adminFees).div(100));
emit getMoneyForLevelEvent(actualReferer, msg.sender, _level, now);
}
}
if(!sent) {
emit lostMoneyForLevelEvent(actualReferer, msg.sender, _level, now, 2);
payForLevel(_level, actualReferer, _sponsor);
}
}
}
function findFreeReferrer(address _user) public view returns(address) {
if(users[_user].referral.length < REFERRER_1_LEVEL_LIMIT) return _user;
address[] memory referrals = new address[](1022);
referrals[0] = users[_user].referral[0];
referrals[1] = users[_user].referral[1];
address freeReferrer;
bool noFreeReferrer = true;
for(uint i = 0; i < 1022; i++) {
if(users[referrals[i]].referral.length == REFERRER_1_LEVEL_LIMIT) {
if(i < 62) {
referrals[(i+1)*2] = users[referrals[i]].referral[0];
referrals[(i+1)*2+1] = users[referrals[i]].referral[1];
}
}
else {
noFreeReferrer = false;
freeReferrer = referrals[i];
break;
}
}
require(!noFreeReferrer, 'No Free Referrer');
return freeReferrer;
}
function viewUserReferral(address _user) public view returns(address[] memory) {
return users[_user].referral;
}
function viewUserLevelExpired(address _user, uint _level) public view returns(uint) {
return users[_user].levelExpired[_level];
}
function bytesToAddress(bytes memory bys) private pure returns (address addr) {
assembly {
addr := mload(add(bys, 20))
}
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) external {
require(msg.sender == ownerWallet,"You are not authorized");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "New owner cannot be the zero address");
emit OwnershipTransferred(ownerWallet, newOwner);
ownerWallet = newOwner;
}
}
Read Contract
LEVEL_PRICE 0x79378e30 → uint256
currUserID 0xa4bb170d → uint256
findFreeReferrer 0x132c8c9b → address
ownerWallet 0x9335dcb7 → address
userList 0x9f4216e8 → address
users 0xa87430ba → bool, uint256, uint256, uint256, uint256
viewUserLevelExpired 0xd2840073 → uint256
viewUserReferral 0x4a4baa8f → address[]
wallet1 0x1a026c96 → address
wallet2 0x0b8d0a28 → address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
buyLevel 0xf6838a72
uint256 _level
regAdmins 0x93a7e7b0
address[] _adminAddress
regUser 0x8853b53e
uint256 _referrerID
transferOwnership 0xf2fde38b
address newOwner
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0xc766347f...2d1d | 1 | 1 | |
| 0x737D4dD6...7770 | 1 | 1 | |
| 0xd0E49Aa3...E277 | 1 | 1 | |
| 0x80Ac0A68...0687 | 1 | 1 | |
| 0x9882bA21...47F2 | 1 | 1 | |
| 0x09fBe59c...840c | 1 | 1 | |
| 0xA4bF4F41...c556 | 1 | 1 | |
| 0xA9aB6412...ecf3 | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0x344eb30c...f6f46d | 10,630,932 | IN | 0xc766347f...2d1d | 0.200000 ETH | |
| 0x1fdf2e17...eb2148 | 10,630,932 | IN | 0xd0E49Aa3...E277 | 0.100000 ETH | |
| 0xe9d2ed58...9373c5 | 10,630,912 | IN | 0xA4bF4F41...c556 | 0.100000 ETH | |
| 0x596ffca9...c0c3e5 | 10,630,894 | IN | 0x79E4CA80...5b12 | 0.100000 ETH | |
| 0x14f79098...aa6f1b | 10,630,894 | IN | 0xA9aB6412...ecf3 | 0.100000 ETH | |
| 0x25959cb1...4ce762 | 10,630,893 | IN | 0x80Ac0A68...0687 | 0.100000 ETH | |
| 0xe7cb54d7...fb1b8c | 10,630,893 | IN | 0x9882bA21...47F2 | 0.100000 ETH | |
| 0x969ced3f...316720 | 10,630,867 | IN | 0x09fBe59c...840c | 0.100000 ETH | |
| 0x7773d12b...56aabe | 10,630,866 | IN | 0x737D4dD6...7770 | 0.100000 ETH | |
| 0x073de8b1...02e1df | 10,630,846 | IN | 0xBc079914...bA8B | 0.100000 ETH |