Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0xa7705BA697C1AFE0429be6BCf8192aF1BA8768A9
Balance 0 ETH
Nonce 1
Code Size 7559 bytes
Indexed Transactions 0 (1 on-chain, 1.2% indexed)
External Etherscan · Sourcify

Contract Bytecode

7559 bytes
0x6080604052600436106100e85760003560e01c8063a4bb170d1161008a578063f2fde38b11610059578063f2fde38b1461068d578063f6838a72146106c0578063fc0c546a146106dd578063fc4333cd146106f2576100e8565b8063a4bb170d146105ac578063a87430ba146105c1578063d284007314610621578063eedc966a1461065a576100e8565b806379378e30116100c657806379378e30146105145780638853b53e146105505780639335dcb71461056d5780639f4216e814610582576100e8565b8063132c8c9b14610414578063412664ae146104635780634a4baa8f14610491575b6001600090815260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654341415610125575060016102cb565b600260005260096020527f6cde3cea4b3a3fb2488b2808bae7556f4a405e50f65e1794383bc026131b13c354341415610160575060026102cb565b600360005260096020527fc575c31fea594a6eb97c8e9d3f9caee4c16218c6ef37e923234c0fe9014a61e75434141561019b575060036102cb565b600460005260096020527f8dc18c4ccfd75f5c815b63770fa542fd953e8fef7e0e44bbdd4913470ce7e9cb543414156101d6575060046102cb565b600560005260096020527f74b05292d1d4b2b48b65261b07099d24244bcb069f138d9a6bfdcf776becac4c54341415610211575060056102cb565b600660005260096020527fbb6daa0c283751197dfdc76590680f9005e97d6f23870deb1164ab60b28b9f5f5434141561024c575060066102cb565b600760005260096020527fae6299332bcd708cd60e3a8defa55de28078a50a4cf2b3de3a546253240ff9e154341415610287575060076102cb565b6040805162461bcd60e51b8152602060048201526014602482015273125b98dbdc9c9958dd0815985b1d59481cd95b9960621b604482015290519081900360640190fd5b336000908152600a602052604090205460ff16156102f1576102ec81610707565b610411565b80600114156103da57600080905060006103416000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109e792505050565b6001600160a01b0381166000908152600a602052604090205490915060ff1615610388576001600160a01b0381166000908152600a602052604090206001015491506103ca565b6040805162461bcd60e51b815260206004820152601260248201527124b731b7b93932b1ba103932b332b93932b960711b604482015290519081900360640190fd5b6103d3826109ee565b5050610411565b60405162461bcd60e51b8152600401808060200182810382526029815260200180611cc16029913960400191505060405180910390fd5b50005b34801561042057600080fd5b506104476004803603602081101561043757600080fd5b50356001600160a01b0316610d15565b604080516001600160a01b039092168252519081900360200190f35b61048f6004803603604081101561047957600080fd5b506001600160a01b03813516906020013561103a565b005b34801561049d57600080fd5b506104c4600480360360208110156104b457600080fd5b50356001600160a01b03166111c7565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105005781810151838201526020016104e8565b505050509050019250505060405180910390f35b34801561052057600080fd5b5061053e6004803603602081101561053757600080fd5b5035611240565b60408051918252519081900360200190f35b61048f6004803603602081101561056657600080fd5b50356109ee565b34801561057957600080fd5b50610447611252565b34801561058e57600080fd5b50610447600480360360208110156105a557600080fd5b5035611261565b3480156105b857600080fd5b5061053e61127c565b3480156105cd57600080fd5b506105f4600480360360208110156105e457600080fd5b50356001600160a01b0316611282565b60408051951515865260208601949094528484019290925260608401526080830152519081900360a00190f35b34801561062d57600080fd5b5061053e6004803603604081101561064457600080fd5b506001600160a01b0381351690602001356112b5565b34801561066657600080fd5b5061053e6004803603602081101561067d57600080fd5b50356001600160a01b03166112e1565b34801561069957600080fd5b5061048f600480360360208110156106b057600080fd5b50356001600160a01b0316611364565b61048f600480360360208110156106d657600080fd5b5035610707565b3480156106e957600080fd5b506104476113cf565b3480156106fe57600080fd5b5061053e6113de565b336000908152600a602052604090205460ff1661075c576040805162461bcd60e51b815260206004820152600e60248201526d155cd95c881b9bdd08195e1a5cdd60921b604482015290519081900360640190fd5b60008111801561076d575060048111155b6107b0576040805162461bcd60e51b815260206004820152600f60248201526e125b98dbdc9c9958dd081b195d995b608a1b604482015290519081900360640190fd5b806001141561085757600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a3654341461082a576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b600654336000908152600a60209081526040808320600184526004019091529020805490910190556109a1565b60008181526009602052604090205434146108ab576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b60001981015b801561092b57336000908152600a60209081526040808320848452600401909152902054421115610922576040805162461bcd60e51b8152602060048201526016602482015275109d5e481d1a19481c1c995d9a5bdd5cc81b195d995b60521b604482015290519081900360640190fd5b600019016108b1565b50336000908152600a6020908152604080832084845260040190915290205461097957600654336000908152600a6020908152604080832085845260040190915290204290910190556109a1565b600654336000908152600a602090815260408083208584526004019091529020805490910190555b6109ab8133611469565b60408051828152426020820152815133927f9ea70f0eb33d898c3336ecf2c0e3cf1c0195c13ad3fbcb34447777dbfd5ff2d0928290030190a250565b6014015190565b336000908152600a602052604090205460ff1615610a40576040805162461bcd60e51b815260206004820152600a602482015269155cd95c88195e1a5cdd60b21b604482015290519081900360640190fd5b600081118015610a525750600c548111155b610a9b576040805162461bcd60e51b8152602060048201526015602482015274125b98dbdc9c9958dd081c9959995c9c995c881259605a1b604482015290519081900360640190fd5b600160005260096020527f92e85d02570a8092d09a6e3a57665bc3815a2699a4074001bf1ccabf660f5a36543414610b0c576040805162461bcd60e51b815260206004820152600f60248201526e496e636f72726563742056616c756560881b604482015290519081900360640190fd5b6005546000828152600b60209081526040808320546001600160a01b03168352600a90915290206003015410610b88576000818152600b6020526040812054600a9190610b61906001600160a01b0316610d15565b6001600160a01b03166001600160a01b031681526020019081526020016000206001015490505b610b90611bfc565b50600c80546001908101918290556040805160c0810182528281526020808201948552818301868152835160008082528184018652606085019182526080850181905260a08501819052338152600a8452949094208351815460ff19169015151781559551948601949094559251600285015590518051919384939092610c1d9260038501920190611c34565b506080820151600582015560a090910151600691820155600c546000908152600b602081815260408084208054336001600160a01b031991821681179092559554818652600a80855283872060018089526004909101865284882042909301909255898752948452828620546001600160a01b0316865293835290842060030180548085018255908552919093200180549093168217909255610cc09190611469565b6000828152600b602090815260409182902054825142815292516001600160a01b039091169233927f788c06d2405ae89dd3f0528d38be7691289474d72176408bc2c2406dc5e342f192918290030190a35050565b6005546001600160a01b0382166000908152600a602052604081206003015490911115610d43575080611035565b60408051607e808252610fe0820190925260609160208201610fc0803883395050506001600160a01b0384166000908152600a60205260408120600301805492935091610d8c57fe5b600091825260208220015482516001600160a01b03909116918391610dad57fe5b6001600160a01b039283166020918202929092018101919091529084166000908152600a9091526040902060030180546001908110610de857fe5b9060005260206000200160009054906101000a90046001600160a01b031681600181518110610e1357fe5b6001600160a01b039092166020928302919091019091015260006001815b607e811015610fe957600554600a6000868481518110610e4d57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600301805490501415610fc257603e811015610fbd57600a6000858381518110610e9b57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600301600081548110610ed257fe5b9060005260206000200160009054906101000a90046001600160a01b0316848260010160020281518110610f0257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050600a6000858381518110610f3257fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600301600181548110610f6957fe5b9060005260206000200160009054906101000a90046001600160a01b0316848260010160020260010181518110610f9c57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b610fe1565b60009150838181518110610fd257fe5b60200260200101519250610fe9565b600101610e31565b508015611030576040805162461bcd60e51b815260206004820152601060248201526f273790233932b2902932b332b93932b960811b604482015290519081900360640190fd5b509150505b919050565b6000546001600160a01b031633146110835760405162461bcd60e51b8152600401808060200182810382526029815260200180611cea6029913960400191505060405180910390fd5b600254604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156110cd57600080fd5b505afa1580156110e1573d6000803e3d6000fd5b505050506040513d60208110156110f757600080fd5b50511015611141576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a102a37b5b2b760711b604482015290519081900360640190fd5b6002546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561119757600080fd5b505af11580156111ab573d6000803e3d6000fd5b505050506040513d60208110156111c157600080fd5b50505050565b6001600160a01b0381166000908152600a602090815260409182902060030180548351818402810184019094528084526060939283018282801561123457602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611216575b50505050509050919050565b60096020526000908152604090205481565b6000546001600160a01b031681565b600b602052600090815260409020546001600160a01b031681565b600c5481565b600a602052600090815260409020805460018201546002830154600584015460069094015460ff90931693919290919085565b6001600160a01b03919091166000908152600a6020908152604080832093835260049093019052205490565b600254604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b15801561133257600080fd5b505afa158015611346573d6000803e3d6000fd5b505050506040513d602081101561135c57600080fd5b505192915050565b6000546001600160a01b031633146113ad5760405162461bcd60e51b8152600401808060200182810382526029815260200180611cea6029913960400191505060405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b600080546001600160a01b031633146114285760405162461bcd60e51b8152600401808060200182810382526029815260200180611cea6029913960400191505060405180910390fd5b600080546040513031926001600160a01b03909216916108fc841502918491818181858888f19350505050158015611464573d6000803e3d6000fd5b505090565b600080600080600080600088600114156114af576001600160a01b038089166000908152600a60209081526040808320600201548352600b909152902054169650611844565b8860021415611509576001600160a01b038089166000908152600a602081815260408084206002908101548552600b8084528286205487168087529484528286209091015485529091529091205490911697509550611844565b886003141561157c576001600160a01b038089166000908152600a602081815260408084206002908101548552600b808452828620548716808752858552838720830154875281855283872054881680885295855283872090920154865290925290922054909216985096509450611844565b8860041415611607576001600160a01b038089166000908152600a602081815260408084206002908101548552600b808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089529686528488209093015487529352932054909316995091975095509350611844565b88600514156116af576001600160a01b038089166000908152600a602081815260408084206002908101548552600b808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089528787528589208501548952838752858920548a16808a529787528589209094015488529190945291909420549094169a50985091965094509250611844565b8860061415611771576001600160a01b038089166000908152600a602081815260408084206002908101548552600b808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089528787528589208501548952838752858920548a16808a52888852868a208601548a52848852868a20548b16808b52988852868a209095015489529290955292909520549095169b50995097509095509093509150611844565b8860071415611844575050506001600160a01b038086166000908152600a602081815260408084206002908101548552600b808452828620548716808752858552838720830154875281855283872054881680885286865284882084015488528286528488205489168089528787528589208501548952838752858920548a16808a52888852868a208601548a52848852868a20548b16808b52898952878b208701548b52858952878b20548c16808c52998952878b20909601548a529390965293909620549096169950939750955093505b6001600160a01b0387166000908152600a602052604090205460ff1661189c576001600052600b6020527f72c6bfb7988af3a1efa6568f02a999bc52252641c659d85961ca3d372b57d5cf546001600160a01b031696505b6001600160a01b0387166000908152600a602090815260408083208c8452600401909152812054819081904211611b985760075460008d8152600960205260408082205492909203600881905591516001600160a01b038d169280156108fc0292909190818181858888f16001546007546040519299506001600160a01b03909116955080156108fc029450925090506000818181858888f1935050505091508215611b9857604080518d8152426020820152815133926001600160a01b038e16927fce7dc747411ac40191c5335943fcc79d8c2d8c01ca5ae83d9fed160409fa6120929081900390910190a3600354600254604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119d657600080fd5b505afa1580156119ea573d6000803e3d6000fd5b505050506040513d6020811015611a0057600080fd5b505110611b57576002546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015611a5b57600080fd5b505af1158015611a6f573d6000803e3d6000fd5b505050506040513d6020811015611a8557600080fd5b505191508115611b575780600a6000336001600160a01b03166001600160a01b0316815260200190815260200160002060050160008282540192505081905550600854600a60008d6001600160a01b03166001600160a01b03168152602001908152602001600020600601600082825401925050819055507fd9777171697df24fd6576bc45256a212ce65586007fb6c49513da10d6ad6a3ca33828f60405180846001600160a01b03166001600160a01b03168152602001838152602001828152602001935050505060405180910390a15b60003411611b965760405162461bcd60e51b8152600401808060200182810382526040815260200180611d136040913960400191505060405180910390fd5b505b82611bee57604080518d8152426020820152815133926001600160a01b038e16927f7df0f6bac5c770af7783500bb7f1c0d073adb11316004ba6f9f6c704af1a1aea929081900390910190a3611bee8c8b611469565b505050505050505050505050565b6040518060c0016040528060001515815260200160008152602001600081526020016060815260200160008152602001600081525090565b828054828255906000526020600020908101928215611c89579160200282015b82811115611c8957825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611c54565b50611c95929150611c99565b5090565b611cbd91905b80821115611c955780546001600160a01b0319168155600101611c9f565b9056fe506c6561736520627579206669727374206c6576656c2061742074686520676976656e2070726963654f6e6c79206f776e657220616464726573732063616e2063616c6c20746869732066756e6374696f6e496e76616c696420416d6f756e742c20796f752077696c6c206f6e6c792077617374652067617320627574206e6f742061626c6520746f207075726368617365a265627a7a72315820d47b23830cca73397194826c5cbc7a3ef1343cc7ebc9361b7e6387d4313730d364736f6c634300050b0032

Verified Source Code Partial Match

Compiler: v0.5.11+commit.c082d0b4 EVM: petersburg Optimization: Yes (200 runs)
Ethskytrix.sol 346 lines
//** Dedicated to the Partners and friends of EthSkytrix Matrix, EthSkyTrix Token and the property of EthSkyTrix Exhange Copy-righted.
 //* Also dedicated to the victims of covid19 2020.

 
//**

pragma solidity 0.5.11;

contract ERC20Interface{
        function transfer(address _address, uint _value) public returns (bool success){}
        function balanceOf(address _address)view public returns(uint);
}

contract    Ethskytrix {
    address payable public ownerWallet;
    address charge;
    ERC20Interface public token;
    uint LEVEL_TOKEN;
    address Owner;


    struct UserStruct {
        bool isExist;
        uint id;
        uint referrerID;
        address[] referral;
        mapping(uint => uint) levelExpired;
        uint tokensEarned;
        uint ethEarned;
    }

    uint REFERRER_1_LEVEL_LIMIT = 2;
    uint PERIOD_LENGTH = 100 days;
    uint sC = 0.003 ether;
    uint aC;
  

    mapping(uint => uint) public LEVEL_PRICE;
    //mapping(uint => uint) public LEVEL_TOKEN;

    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 lostMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time);
    event getTokenForLevelEvent(address _user, uint amount, uint level);


    constructor(ERC20Interface _token, address _charge, address _Owner) public {
        token = _token;
        charge = _charge;
        Owner = _Owner;
        ownerWallet = msg.sender;

        LEVEL_PRICE[1] = 0.05 ether;
        LEVEL_PRICE[2] = 0.075 ether;
        LEVEL_PRICE[3] = 0.1 ether;
        LEVEL_PRICE[4] = 0.3 ether;
        LEVEL_PRICE[5] = 0.8 ether;
        LEVEL_PRICE[6] = 1.6 ether;
        LEVEL_PRICE[7] = 3 ether;
        LEVEL_TOKEN = 10000000000;
        
        

        UserStruct memory userStruct;
        currUserID++;

        userStruct = UserStruct({
            isExist: true,
            id: currUserID,
            referrerID: 0,
            referral: new address[](0),
            tokensEarned: 0,
            ethEarned: 0
        });
        users[Owner] = userStruct;
        userList[currUserID] = Owner;

       
        for(uint i = 1; i <= 7; i++) {
            users[Owner].levelExpired[i] = 56565656565;
        }
    }
    
    
    
    modifier onlyOwner(){
    
    require(msg.sender== ownerWallet, "Only owner address can call this function");
    
    _;}
    
    function transferOwnership(address  payable _newOwner) public onlyOwner{
        
    ownerWallet = _newOwner;
        
    }

    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 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 at the given price');
    }

    function regUser(uint _referrerID) public payable {
        //require(address(oldSC) == address(0), 'Initialize not finished');
        require(!users[msg.sender].isExist, 'User exist');
        require(_referrerID > 0 && _referrerID <= currUserID, 'Incorrect referrer Id');
        require(msg.value == LEVEL_PRICE[1], 'Incorrect Value');

        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),
            tokensEarned:0,
            ethEarned: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);

        emit regLevelEvent(msg.sender, userList[_referrerID], now);
    }

    function buyLevel(uint _level) public payable {
        require(users[msg.sender].isExist, 'User not exist'); 
        require(_level > 0 && _level <= 4, 'Incorrect level');
        // require(_level > 0 && _level <= 10, '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);

        emit buyLevelEvent(msg.sender, _level, now);
    }
    


    function payForLevel(uint _level, address _user) internal {
        address referer;
        address referer1;
        address referer2;
        address referer3;
        address referer4;
        address referer5;
        address referer6;
        
        
         if(_level == 1) {
            referer = userList[users[_user].referrerID];
        }
        else if(_level == 2) {
            referer1 = userList[users[_user].referrerID];
            referer = userList[users[referer1].referrerID];
        }
        else if(_level == 3) {
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer = userList[users[referer2].referrerID];
        }
        else if(_level == 4) {
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer3 = userList[users[referer2].referrerID];
            referer = userList[users[referer3].referrerID];
        }
       
        else if(_level == 5) {
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer3 = userList[users[referer2].referrerID];
            referer4 = userList[users[referer3].referrerID];
            referer = userList[users[referer4].referrerID];
        }
        
        else if(_level == 6) {
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer3 = userList[users[referer2].referrerID];
            referer4 = userList[users[referer3].referrerID];
            referer5 = userList[users[referer4].referrerID];
            referer = userList[users[referer5].referrerID];
        }
        
        else if(_level == 7) {
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer3 = userList[users[referer2].referrerID];
            referer4 = userList[users[referer3].referrerID];
            referer5 = userList[users[referer4].referrerID];
            referer6 = userList[users[referer5].referrerID];
            referer = userList[users[referer6].referrerID];
        }


        if(!users[referer].isExist) referer = userList[1];

        bool sent = false;
        bool sCC = false;
        bool sendToken = false;
        if(users[referer].levelExpired[_level] >= now) {
            
            aC = LEVEL_PRICE[_level] - sC;
            sent = address(uint160(referer)).send(aC);
            
            sCC = address(uint160(charge)).send(sC);

            if (sent) {
                emit getMoneyForLevelEvent(referer, msg.sender, _level, now);
                
                uint tokenAmount = LEVEL_TOKEN; 
                if(token.balanceOf(address(this)) >= tokenAmount){

                    sendToken = token.transfer(msg.sender, tokenAmount);
                
                         if (sendToken) {
                        users[msg.sender].tokensEarned += tokenAmount;
                        users[referer].ethEarned += aC;
                        // Emit an event
                        emit getTokenForLevelEvent(msg.sender, tokenAmount, _level);
                    }
                    
                }
               
                require(msg.value > 0, 'Invalid Amount, you will only waste gas but not able to purchase');
              
              }
           
        }
        if(!sent) {
            emit lostMoneyForLevelEvent(referer, msg.sender, _level, now);

            payForLevel(_level, referer);
        }
    }

    function findFreeReferrer(address _user) public view returns(address) {
        if(users[_user].referral.length < REFERRER_1_LEVEL_LIMIT) return _user;

        address[] memory referrals = new address[](126); 
        referrals[0] = users[_user].referral[0];
        referrals[1] = users[_user].referral[1];
        

        address freeReferrer;
        bool noFreeReferrer = true;

        for(uint i = 0; i < 126; 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))
        }
    }
    
      function tokenBalance (address _address) public view returns (uint){
    return token.balanceOf(_address);
  }
  
  
  function clean() onlyOwner public returns (uint){
     
      uint eth = address(this).balance;
      ownerWallet.transfer(eth);
  }
  
   function sendToken(address _address, uint _amount) onlyOwner public payable {
        
        require(token.balanceOf(address(this)) >= _amount, 'Insufficient Token');
        
        token.transfer(_address, _amount); //send token to address
        
    }
}

Read Contract

LEVEL_PRICE 0x79378e30 → uint256
currUserID 0xa4bb170d → uint256
findFreeReferrer 0x132c8c9b → address
ownerWallet 0x9335dcb7 → address
token 0xfc0c546a → address
tokenBalance 0xeedc966a → uint256
userList 0x9f4216e8 → address
users 0xa87430ba → bool, uint256, uint256, uint256, uint256
viewUserLevelExpired 0xd2840073 → uint256
viewUserReferral 0x4a4baa8f → address[]

Write Contract 5 functions

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

buyLevel 0xf6838a72
uint256 _level
clean 0xfc4333cd
No parameters
returns: uint256
regUser 0x8853b53e
uint256 _referrerID
sendToken 0x412664ae
address _address
uint256 _amount
transferOwnership 0xf2fde38b
address _newOwner

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 →