Address Contract Partially Verified
Address
0xca84274bC592F234C90aa9731a321f78fc1693Cd
Balance
0 ETH
Nonce
1
Code Size
5111 bytes
Creator
0xcC16f3dc...e009 at tx 0x39e4c124...1bf9e3
Last Active
Indexed Transactions
845 (10,729,000 → 10,729,822)
Value (indexed)
↓ 0.500000 ETH
Gas Used (indexed)
2,497,703
Contract Bytecode
5111 bytes
0x6080604052600436106100c65760003560e01c806394e8d2841161007f578063b879a7e011610059578063b879a7e0146103a0578063eb3549a3146103e2578063ebf0c7171461041b578063f207564e14610430576100e5565b806394e8d284146102d0578063a87430ba146102f7578063b2596a671461035d576100e5565b8063085bea3c1461012f5780632b546601146101755780636a1d8ce21461018a5780637c78008f146102595780638da5cb5b146102825780638fafac0814610297576100e5565b366100e5576001546100e39033906001600160a01b03163461044d565b005b6100e3336101296000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061060992505050565b3461044d565b34801561013b57600080fd5b506101596004803603602081101561015257600080fd5b5035610610565b604080516001600160a01b039092168252519081900360200190f35b34801561018157600080fd5b506100e361062b565b34801561019657600080fd5b506100e3600480360360408110156101ad57600080fd5b8101906020810181356401000000008111156101c857600080fd5b8201836020820111156101da57600080fd5b803590602001918460208302840111640100000000831117156101fc57600080fd5b91939092909160208101903564010000000081111561021a57600080fd5b82018360208201111561022c57600080fd5b8035906020019184602083028401116401000000008311171561024e57600080fd5b5090925090506106e0565b34801561026557600080fd5b5061026e6107e2565b604080519115158252519081900360200190f35b34801561028e57600080fd5b506101596107f2565b3480156102a357600080fd5b50610159600480360360408110156102ba57600080fd5b506001600160a01b038135169060200135610801565b3480156102dc57600080fd5b506102e5610b89565b60408051918252519081900360200190f35b34801561030357600080fd5b5061032a6004803603602081101561031a57600080fd5b50356001600160a01b0316610b8f565b604080519586526001600160a01b0390941660208601528484019290925260608401526080830152519081900360a00190f35b34801561036957600080fd5b506103876004803603602081101561038057600080fd5b5035610bc9565b6040805192835260208301919091528051918290030190f35b3480156103ac57600080fd5b50610159600480360360608110156103c357600080fd5b5080356001600160a01b0316906020810135906040013560ff16610bf4565b3480156103ee57600080fd5b506101596004803603604081101561040557600080fd5b506001600160a01b038135169060200135610cce565b34801561042757600080fd5b50610159610db2565b6100e36004803603602081101561044657600080fd5b5035610dc1565b6001600160a01b038316600090815260046020526040902054156104b0576040805162461bcd60e51b81526020600482015260156024820152742ab9b2b91030b93632b0b23c903932b3b4b9ba32b960591b604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054610510576040805162461bcd60e51b81526020600482015260136024820152722ab83634b732903737ba103932b3b4b9ba32b960691b604482015290519081900360640190fd5b600360008154811061051e57fe5b9060005260206000209060020201600001548114610570576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b604080516311f5f58160e31b81526001600160a01b038416600482015260006024820181905291513091638fafac08916044808301926020929190829003018186803b1580156105bf57600080fd5b505afa1580156105d3573d6000803e3d6000fd5b505050506040513d60208110156105e957600080fd5b505190506105f8848483610de8565b610603818584610e88565b50505050565b6014015190565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b03163314610677576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054600160a01b900460ff16156106cb576040805162461bcd60e51b815260206004820152601260248201527153796e6320616c726561647920636c6f736560701b604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b179055565b6000546001600160a01b0316331461072c576040805162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b604482015290519081900360640190fd5b600054600160a01b900460ff1615610780576040805162461bcd60e51b815260206004820152601260248201527153796e6320616c726561647920636c6f736560701b604482015290519081900360640190fd5b60005b838110156107db576107d385858381811061079a57fe5b905060200201356001600160a01b03168484848181106107b657fe5b905060200201356001600160a01b031666b1a2bc2ec5000061044d565b600101610783565b5050505050565b600054600160a01b900460ff1681565b6000546001600160a01b031681565b6001600160a01b038216600090815260046020908152604080832084845260060190915281205460021115610837575081610b83565b60408051610400808252618020820190925260609160208201618000803683375050506001600160a01b0385166000908152600460209081526040808320878452600601909152812080549293509161088c57fe5b600091825260208220015482516001600160a01b039091169183916108ad57fe5b6001600160a01b03928316602091820292909201810191909152908516600090815260048252604080822086835260060190925220805460019081106108ef57fe5b9060005260206000200160009054906101000a90046001600160a01b03168160018151811061091a57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060005b6104008161ffff161015610b4257600260046000848461ffff168151811061096157fe5b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060060160008681526020019081526020016000208054905010156109c857818161ffff16815181106109b757fe5b602002602001015192505050610b83565b6101ff8161ffff161015610b3a57600081600101600202905060046000848461ffff16815181106109f557fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206006016000868152602001908152602001600020600081548110610a3d57fe5b9060005260206000200160009054906101000a90046001600160a01b0316838261ffff1681518110610a6b57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060046000848461ffff1681518110610a9f57fe5b60200260200101516001600160a01b03166001600160a01b031681526020019081526020016000206006016000868152602001908152602001600020600181548110610ae757fe5b9060005260206000200160009054906101000a90046001600160a01b0316838260010161ffff1681518110610b1857fe5b60200260200101906001600160a01b031690816001600160a01b031681525050505b60010161093d565b506040805162461bcd60e51b815260206004820152601060248201526f273790333932b2903932b332b93932b960811b604482015290519081900360640190fd5b92915050565b60025481565b60046020819052600091825260409091208054600182015460028301546003840154939094015491936001600160a01b0390911692909185565b60038181548110610bd657fe5b60009182526020909120600290910201805460019091015490915082565b6001546000906001600160a01b0385811691161480610c14575060ff8216155b15610c20575082610cc7565b6001600160a01b0384811660009081526004602081815260408084208885526005018252928390205483516305c3cd3f60e51b81529416918401919091526024830186905260ff60001986011660448401529051309263b879a7e0926064808301939192829003018186803b158015610c9857600080fd5b505afa158015610cac573d6000803e3d6000fd5b505050506040513d6020811015610cc257600080fd5b505190505b9392505050565b6001546000906001600160a01b0384811691161480610d0857506001600160a01b0383166000908152600460205260409020600201548211155b15610d14575081610b83565b6001600160a01b03838116600090815260046020818152604080842084805260050182529283902054835163eb3549a360e01b8152941691840191909152602483018590529051309263eb3549a3926044808301939192829003018186803b158015610d7f57600080fd5b505afa158015610d93573d6000803e3d6000fd5b505050506040513d6020811015610da957600080fd5b50519392505050565b6001546001600160a01b031681565b600081815260056020526040902054610de59033906001600160a01b03163461044d565b50565b6002805460019081018083556001600160a01b0380871660008181526004602090815260408083209586559490950180549389166001600160a01b03199485168117909155865482526005865290849020805490931682179092559354825190815291519093927fcc0bec1447060c88cdc5a739cf29cfa26c453574dd3f5b9e4dcc317d6401cb1c928290030190a3610e838382600061126a565b505050565b600380546001600160a01b03851660009081526004602052604090206002015481610eaf57fe5b0681548110610eba57fe5b90600052602060002090600202016001015460046000856001600160a01b03166001600160a01b03168152602001908152602001600020600301541015610f76576001600160a01b0383166000908152600460205260409020600301805482019055610f268382611330565b816001600160a01b0316836001600160a01b03167f927ca72beeafa042127c9b97483d6b6f5ada2790237a7b3310232cab8888ac27836040518082815260200191505060405180910390a3610e83565b6001600160a01b0380841660008181526004602081815260409283902090910180548601905581518581529151938616937fc71fdc08141260a443e043c12977cd79f38a483a5d699fb3cf26d392b6c5538f9281900390910190a36001600160a01b038316600090815260046020526040902060020154600380546001909201918281610fff57fe5b068154811061100a57fe5b600091825260208083206002909202909101546001600160a01b03871683526004918290526040909220015410611232576001600160a01b0380851660008181526004602081905260408220600381018390559081019190915560020183905560015490911614611226576001600160a01b038481166000908152600460208181526040808420848052600501825280842054815163eb3549a360e01b815295169285019290925260248401859052905191923092638fafac0892849263b879a7e092849263eb3549a39260448082019391829003018186803b1580156110f057600080fd5b505afa158015611104573d6000803e3d6000fd5b505050506040513d602081101561111a57600080fd5b505186600281066040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018260ff168152602001935050505060206040518083038186803b15801561116f57600080fd5b505afa158015611183573d6000803e3d6000fd5b505050506040513d602081101561119957600080fd5b5051604080516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201869052516044808301926020929190829003018186803b1580156111e757600080fd5b505afa1580156111fb573d6000803e3d6000fd5b505050506040513d602081101561121157600080fd5b5051905061122085828461126a565b50611232565b6112328460008361126a565b6001600160a01b0380851660009081526004602090815260408083206002810154845260050190915290205461060391168484610e88565b6001600160a01b038216156112e0576001600160a01b038084166000818152600460208181526040808420878552600501825280842080549689166001600160a01b0319978816811790915584529181528183208684526006018152908220805460018101825590835291200180549092161790555b816001600160a01b0316836001600160a01b03167fed7c6f00c100d721b62778a73df8df01560fed8f5597b85b62e6e0150bd20d91836040518082815260200191505060405180910390a3505050565b600054600160a01b900460ff16611346576113bd565b6001600160a01b038216158061137e57506040516001600160a01b0383169082156108fc029083906000818181858888f19350505050155b156113bd576001546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610e83573d6000803e3d6000fd5b505056fea2646970667358221220afaec4b713073ce2cc52a792588a4b12db8d8ef5e4fc5db19b3425733b07ea7664736f6c634300060c0033
Verified Source Code Partial Match
Compiler: v0.6.12+commit.27d51765
EVM: istanbul
Optimization: Yes (200 runs)
AbsGoldenMatrix1.sol 215 lines
pragma solidity 0.6.12;
contract AbsGoldenMatrix1{
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 public owner;
bool public sync_close;
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 {
owner = msg.sender;
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(!sync_close) return;
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].profit = 0;
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))
}
}
/*
Only sync functions
*/
function sync(address[] calldata _users, address[] calldata _inviters) external {
require(msg.sender == owner, "Only owner");
require(!sync_close, "Sync already close");
for(uint256 i = 0; i < _users.length; i++) {
_register(_users[i], _inviters[i], 0.05 ether);
}
}
function syncClose() external {
require(msg.sender == owner, "Only owner");
require(!sync_close, "Sync already close");
sync_close = true;
}
}
Read Contract
findFreeReferrer 0x8fafac08 → address
findUplineHasLevel 0xeb3549a3 → address
findUplineOffset 0xb879a7e0 → address
last_id 0x94e8d284 → uint256
levels 0xb2596a67 → uint256, uint256
owner 0x8da5cb5b → address
root 0xebf0c717 → address
sync_close 0x7c78008f → bool
users 0xa87430ba → uint256, address, uint256, uint256, uint256
users_ids 0x085bea3c → address
Write Contract 3 functions
These functions modify contract state and require a wallet transaction to execute.
register 0xf207564e
uint256 _upline_id
sync 0x6a1d8ce2
address[] _users
address[] _inviters
syncClose 0x2b546601
No parameters
Top Interactions
| Address | Txns | Sent | Received |
|---|---|---|---|
| 0x5fcCa6BD...78F3 | 1 | 1 | |
| 0x5D335388...DF95 | 1 | 1 | |
| 0x5dA49339...8eb4 | 1 | 1 | |
| 0xd551e68d...392F | 1 | 1 | |
| 0xE9b73ca7...30a2 | 1 | 1 | |
| 0x91cd2750...545D | 1 | 1 | |
| 0x086a8438...E993 | 1 | 1 | |
| 0x222Ca22a...aCf5 | 1 | 1 |
Recent Transactions
|
| Hash | Block | Age | From/To | Value | |
|---|---|---|---|---|---|
| 0x7cb06f96...25b6dd | 10,729,822 | IN | 0x5D335388...DF95 | 0.050000 ETH | |
| 0x385d5d82...be88a3 | 10,729,805 | IN | 0x222Ca22a...aCf5 | 0.050000 ETH | |
| 0x1cda9d5c...6c5b71 | 10,729,628 | IN | 0x086a8438...E993 | 0.050000 ETH | |
| 0x4f5c34c1...7f3004 | 10,729,628 | IN | 0x5dA49339...8eb4 | 0.050000 ETH | |
| 0xd5e7c4e8...cdf48e | 10,729,451 | IN | 0xd551e68d...392F | 0.050000 ETH | |
| 0xa5029aa2...3cab16 | 10,729,378 | IN | 0x2d8f6F23...Ecb2 | 0.050000 ETH | |
| 0x3b0cafb0...a8082f | 10,729,244 | IN | 0x5fcCa6BD...78F3 | 0.050000 ETH | |
| 0x137a0d08...ab29c8 | 10,729,109 | IN | 0xE9b73ca7...30a2 | 0.050000 ETH | |
| 0xc87b428b...7308aa | 10,729,011 | IN | 0x02097490...8091 | 0.050000 ETH | |
| 0x2ffe49d9...13477f | 10,729,000 | IN | 0x91cd2750...545D | 0.050000 ETH |