Address Contract Partially Verified
Address
0xc0A86bDDb6cf1930FF05B6B153F501704a90373C
Balance
0 ETH
Nonce
1
Code Size
4244 bytes
Creator
0x915c517c...7d18 at tx 0x0df92bd9...6833bc
Last Active
Indexed Transactions
109 (10,632,357 → 10,652,782)
Value (indexed)
↓ 0.500000 ETH
Gas Used (indexed)
3,716,236
Contract Bytecode
4244 bytes
0x60806040526004361061008a5760003560e01c8063b2596a6711610059578063b2596a67146101ff578063b879a7e014610242578063eb3549a314610284578063ebf0c717146102bd578063f207564e146102d2576100a9565b8063085bea3c146100f35780638fafac081461013957806394e8d28414610172578063a87430ba14610199576100a9565b366100a9576000546100a79033906001600160a01b0316346102ef565b005b6100a7336100ed6000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506104ab92505050565b346102ef565b3480156100ff57600080fd5b5061011d6004803603602081101561011657600080fd5b50356104b2565b604080516001600160a01b039092168252519081900360200190f35b34801561014557600080fd5b5061011d6004803603604081101561015c57600080fd5b506001600160a01b0381351690602001356104cd565b34801561017e57600080fd5b50610187610855565b60408051918252519081900360200190f35b3480156101a557600080fd5b506101cc600480360360208110156101bc57600080fd5b50356001600160a01b031661085b565b604080519586526001600160a01b0390941660208601528484019290925260608401526080830152519081900360a00190f35b34801561020b57600080fd5b506102296004803603602081101561022257600080fd5b5035610895565b6040805192835260208301919091528051918290030190f35b34801561024e57600080fd5b5061011d6004803603606081101561026557600080fd5b5080356001600160a01b0316906020810135906040013560ff166108c0565b34801561029057600080fd5b5061011d600480360360408110156102a757600080fd5b506001600160a01b038135169060200135610996565b3480156102c957600080fd5b5061011d610a76565b6100a7600480360360208110156102e857600080fd5b5035610a85565b6001600160a01b03831660009081526003602052604090205415610352576040805162461bcd60e51b81526020600482015260156024820152742ab9b2b91030b93632b0b23c903932b3b4b9ba32b960591b604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020546103b2576040805162461bcd60e51b81526020600482015260136024820152722ab83634b732903737ba103932b3b4b9ba32b960691b604482015290519081900360640190fd5b60026000815481106103c057fe5b9060005260206000209060020201600001548114610412576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b604080516311f5f58160e31b81526001600160a01b038416600482015260006024820181905291513091638fafac08916044808301926020929190829003018186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b5051905061049a848483610aac565b6104a5818584610b48565b50505050565b6014015190565b6004602052600090815260409020546001600160a01b031681565b6001600160a01b03821660009081526003602090815260408083208484526006019091528120546002111561050357508161084f565b60408051610400808252618020820190925260609160208201618000803683375050506001600160a01b0385166000908152600360209081526040808320878452600601909152812080549293509161055857fe5b600091825260208220015482516001600160a01b0390911691839161057957fe5b6001600160a01b03928316602091820292909201810191909152908516600090815260038252604080822086835260060190925220805460019081106105bb57fe5b9060005260206000200160009054906101000a90046001600160a01b0316816001815181106105e657fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060005b6104008161ffff16101561080e57600260036000848461ffff168151811061062d57fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600601600086815260200190815260200160002080549050101561069457818161ffff168151811061068357fe5b60200260200101519250505061084f565b6101ff8161ffff16101561080657600081600101600202905060036000848461ffff16815181106106c157fe5b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020600601600086815260200190815260200160002060008154811061070957fe5b9060005260206000200160009054906101000a90046001600160a01b0316838261ffff168151811061073757fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060036000848461ffff168151811061076b57fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060060160008681526020019081526020016000206001815481106107b357fe5b9060005260206000200160009054906101000a90046001600160a01b0316838260010161ffff16815181106107e457fe5b60200260200101906001600160a01b031690816001600160a01b031681525050505b600101610609565b506040805162461bcd60e51b815260206004820152601060248201526f273790333932b2903932b332b93932b960811b604482015290519081900360640190fd5b92915050565b60015481565b60036020819052600091825260409091208054600182015460028301549383015460049093015491936001600160a01b0390911692909185565b600281815481106108a257fe5b60009182526020909120600290910201805460019091015490915082565b600080546001600160a01b03858116911614806108de575060ff8216155b156108ea57508261098f565b6001600160a01b0384811660009081526003602090815260408083208784526005018252918290205482516305c3cd3f60e51b8152931660048401526024830186905260ff60001986011660448401529051309263b879a7e0926064808301939192829003018186803b15801561096057600080fd5b505afa158015610974573d6000803e3d6000fd5b505050506040513d602081101561098a57600080fd5b505190505b9392505050565b600080546001600160a01b03848116911614806109ce57506001600160a01b0383166000908152600360205260409020600201548211155b156109da57508161084f565b6001600160a01b03838116600090815260036020908152604080832083805260050182529182902054825163eb3549a360e01b815293166004840152602483018590529051309263eb3549a3926044808301939192829003018186803b158015610a4357600080fd5b505afa158015610a57573d6000803e3d6000fd5b505050506040513d6020811015610a6d57600080fd5b50519392505050565b6000546001600160a01b031681565b600081815260046020526040902054610aa99033906001600160a01b0316346102ef565b50565b6001805481018082556001600160a01b03808616600081815260036020908152604080832095865594860180549489166001600160a01b031995861681179091558654835260048252918590208054909416831790935593548351908152925190927fcc0bec1447060c88cdc5a739cf29cfa26c453574dd3f5b9e4dcc317d6401cb1c92908290030190a3610b4383826000610f1e565b505050565b600280546001600160a01b038516600090815260036020526040902082015481610b6e57fe5b0681548110610b7957fe5b90600052602060002090600202016001015460036000856001600160a01b03166001600160a01b03168152602001908152602001600020600301541015610c36576001600160a01b038316600090815260036020819052604090912001805482019055610be68382610fe4565b816001600160a01b0316836001600160a01b03167f927ca72beeafa042127c9b97483d6b6f5ada2790237a7b3310232cab8888ac27836040518082815260200191505060405180910390a3610b43565b6001600160a01b0380841660008181526003602090815260409182902060040180548601905581518581529151938616937fc71fdc08141260a443e043c12977cd79f38a483a5d699fb3cf26d392b6c5538f9281900390910190a36001600160a01b03831660009081526003602052604090206002908101548154600190910191908281610cc057fe5b0681548110610ccb57fe5b600091825260208083206002909202909101546001600160a01b0387168352600390915260409091206004015410610ee6576001600160a01b038085166000818152600360205260408120600481018290556002018490555490911614610eda576001600160a01b038481166000908152600360209081526040808320838052600501825280832054815163eb3549a360e01b815294166004850152602484018590525191923092638fafac0892849263b879a7e092849263eb3549a39260448082019391829003018186803b158015610da457600080fd5b505afa158015610db8573d6000803e3d6000fd5b505050506040513d6020811015610dce57600080fd5b505186600281066040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018260ff168152602001935050505060206040518083038186803b158015610e2357600080fd5b505afa158015610e37573d6000803e3d6000fd5b505050506040513d6020811015610e4d57600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201869052516044808301926020929190829003018186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d6020811015610ec557600080fd5b50519050610ed4858284610f1e565b50610ee6565b610ee684600083610f1e565b6001600160a01b038085166000908152600360209081526040808320600281015484526005019091529020546104a591168484610b48565b6001600160a01b03821615610f94576001600160a01b038084166000818152600360208181526040808420878552600501825280842080549689166001600160a01b0319978816811790915584529181528183208684526006018152908220805460018101825590835291200180549092161790555b816001600160a01b0316836001600160a01b03167fed7c6f00c100d721b62778a73df8df01560fed8f5597b85b62e6e0150bd20d91836040518082815260200191505060405180910390a3505050565b6001600160a01b038216158061101c57506040516001600160a01b0383169082156108fc029083906000818181858888f19350505050155b1561105a57600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610b43573d6000803e3d6000fd5b505056fea26469706673582212201a61edf078ea26e1d2be2368331b1a515afdb97a7eded59e34b0899dd172e29864736f6c634300060c0033
Verified Source Code Partial Match
Compiler: v0.6.12+commit.27d51765
EVM: istanbul
Optimization: Yes (200 runs)
AbsGoldenMatrix.sol 190 lines
/*! absgoldenmatrix.sol | (c) 2020 Develop by BelovITLab LLC (smartcontract.ru), author @stupidlovejoy | SPDX-License-Identifier: MIT License */
pragma solidity 0.6.12;
contract AbsGoldenMatrix {
struct Level {
uint256 price;
uint256 profit;
}
struct User {
uint256 id;
address inviter;
uint256 level;
uint256 profit;
uint256 hold;
mapping(uint256 => address) uplines;
mapping(uint256 => address[]) referrals;
}
address payable public root;
uint256 public last_id;
Level[] public levels;
mapping(address => User) public users;
mapping(uint256 => address) public users_ids;
event Register(address indexed addr, address indexed inviter, uint256 id);
event LevelUp(address indexed addr, address indexed upline, uint256 level);
event Profit(address indexed addr, address indexed referral, uint256 value);
event Hold(address indexed addr, address indexed referral, uint256 value);
constructor() public {
levels.push(Level(0.05 ether, 0.05 ether));
levels.push(Level(0.05 ether, 0.05 ether));
levels.push(Level(0.15 ether, 0.15 ether));
levels.push(Level(0.15 ether, 0.15 ether));
levels.push(Level(0.45 ether, 0.45 ether));
levels.push(Level(0.45 ether, 0.45 ether));
levels.push(Level(1.35 ether, 1.35 ether));
levels.push(Level(1.35 ether, 1.35 ether));
levels.push(Level(4.05 ether, 4.05 ether));
levels.push(Level(4.05 ether, 4.05 ether));
levels.push(Level(12.15 ether, 12.15 ether));
levels.push(Level(12.15 ether, 12.15 ether));
levels.push(Level(36.45 ether, 36.45 ether));
levels.push(Level(36.45 ether, 145.75 ether));
root = 0xcC16f3dcE95cC295741c2f638c22a43C23a8e009;
_newUser(root, address(0), address(0));
}
receive() payable external {
_register(msg.sender, root, msg.value);
}
fallback() payable external {
_register(msg.sender, _bytesToAddress(msg.data), msg.value);
}
function _send(address _addr, uint256 _value) private {
if(_addr == address(0) || !payable(_addr).send(_value)) {
root.transfer(_value);
}
}
function _newUser(address _addr, address _inviter, address _upline) private {
users[_addr].id = ++last_id;
users[_addr].inviter = _inviter;
users_ids[last_id] = _addr;
emit Register(_addr, _inviter, last_id);
_levelUp(_addr, _upline, 0);
}
function _levelUp(address _addr, address _upline, uint256 _level) private {
if(_upline != address(0)) {
users[_addr].uplines[_level] = _upline;
users[_upline].referrals[_level].push(_addr);
}
emit LevelUp(_addr, _upline, _level);
}
function _transferFunds(address _user, address _from, uint256 _amount) private {
if(users[_user].profit < levels[users[_user].level % levels.length].profit) {
users[_user].profit += _amount;
_send(_user, _amount);
emit Profit(_user, _from, _amount);
}
else {
users[_user].hold += _amount;
emit Hold(_user, _from, _amount);
uint256 next_level = users[_user].level + 1;
if(users[_user].hold >= levels[next_level % levels.length].price) {
users[_user].hold = 0;
users[_user].level = next_level;
if(_user != root) {
address upline = this.findFreeReferrer(
this.findUplineOffset(
this.findUplineHasLevel(
users[_user].uplines[0],
next_level
),
next_level,
uint8(next_level % 2)
),
next_level
);
_levelUp(_user, upline, next_level);
}
else _levelUp(_user, address(0), next_level);
}
_transferFunds(users[_user].uplines[users[_user].level], _from, _amount);
}
}
function _register(address _user, address _inviter, uint256 _value) private {
require(users[_user].id == 0, "User arleady register");
require(users[_inviter].id != 0, "Upline not register");
require(_value == levels[0].price, "Bad amount");
address upline = this.findFreeReferrer(_inviter, 0);
_newUser(_user, _inviter, upline);
_transferFunds(upline, _user, _value);
}
function register(uint256 _upline_id) payable external {
_register(msg.sender, users_ids[_upline_id], msg.value);
}
function findUplineHasLevel(address _user, uint256 _level) external view returns(address) {
if(_user == root || users[_user].level >= _level) return _user;
return this.findUplineHasLevel(users[_user].uplines[0], _level);
}
function findUplineOffset(address _user, uint256 _level, uint8 _offset) external view returns(address) {
if(_user == root || _offset == 0) return _user;
return this.findUplineOffset(users[_user].uplines[_level], _level, _offset - 1);
}
function findFreeReferrer(address _user, uint256 _level) external view returns(address) {
if(users[_user].referrals[_level].length < 2) return _user;
address[] memory refs = new address[](1024);
refs[0] = users[_user].referrals[_level][0];
refs[1] = users[_user].referrals[_level][1];
for(uint16 i = 0; i < 1024; i++) {
if(users[refs[i]].referrals[_level].length < 2) {
return refs[i];
}
if(i < 511) {
uint16 n = (i + 1) * 2;
refs[n] = users[refs[i]].referrals[_level][0];
refs[n + 1] = users[refs[i]].referrals[_level][1];
}
}
revert("No free referrer");
}
function _bytesToAddress(bytes memory _data) private pure returns(address addr) {
assembly {
addr := mload(add(_data, 20))
}
}
}
Read Contract
findFreeReferrer 0x8fafac08 → address
findUplineHasLevel 0xeb3549a3 → address
findUplineOffset 0xb879a7e0 → address
last_id 0x94e8d284 → uint256
levels 0xb2596a67 → uint256, uint256
root 0xebf0c717 → address
users 0xa87430ba → uint256, address, uint256, uint256, uint256
users_ids 0x085bea3c → address
Write Contract 1 functions
These functions modify contract state and require a wallet transaction to execute.
register 0xf207564e
uint256 _upline_id
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0x40D0C8d4...5876 | 4 | 4 | |
| 0xeA5b1165...a711 | 1 | 1 | |
| 0xFAD78524...dc03 | 1 | 1 | |
| 0xB2933d5b...C14D | 1 | 1 | |
| 0x5291832b...F34c | 1 | 1 | |
| 0x48F2B27d...10C2 | 1 | 1 | |
| 0x3d153938...A8F9 | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0x0e5920f3...54f7f3 Fail | 10,652,782 | IN | 0x40D0C8d4...5876 | 0.050000 ETH | |
| 0x7b006019...2b56bb Fail | 10,652,782 | IN | 0x40D0C8d4...5876 | 0.050000 ETH | |
| 0xc7d5401b...87dc94 Fail | 10,634,846 | IN | 0x40D0C8d4...5876 | 0.050000 ETH | |
| 0x7a51ef06...ed63f3 | 10,634,846 | IN | 0x40D0C8d4...5876 | 0.050000 ETH | |
| 0xcbe5743d...862d5a | 10,634,340 | IN | 0xFAD78524...dc03 | 0.050000 ETH | |
| 0xea4b7df4...a1f53d | 10,634,080 | IN | 0x48F2B27d...10C2 | 0.050000 ETH | |
| 0x73fe0eda...e48fae Fail | 10,632,525 | IN | 0xB2933d5b...C14D | 0.050000 ETH | |
| 0x00dfbf1d...92334c Fail | 10,632,512 | IN | 0x5291832b...F34c | 0.050000 ETH | |
| 0x0b970bc0...0b05dd Fail | 10,632,362 | IN | 0xeA5b1165...a711 | 0.050000 ETH | |
| 0xcd2c65de...d2bc7f | 10,632,357 | IN | 0x3d153938...A8F9 | 0.050000 ETH |