Transaction Hash:
Block:
10454250 at Jul-13-2020 11:42:18 PM +UTC
Transaction Fee:
0.00694068 ETH
$17.41
Gas Used:
289,195 Gas / 24 Gwei
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x07fc6F1B...0571F6C40 | 1.252368345408718716 Eth | 1.282368345408718716 Eth | 0.03 | ||
0x2910e501...ee774935C | 0.488980932251973082 Eth | 0.497980932251973082 Eth | 0.009 | ||
0x2Eac0c3D...5F863571C | 88.897519868288875139 Eth | 88.987519868288875139 Eth | 0.09 | ||
0x433B824A...fB311116b |
0.202241618 Eth
Nonce: 27
|
0.045300938 Eth
Nonce: 28
| 0.15694068 | ||
0x54a4e184...1A8f37860 | 1.4195808661096182 Eth | 1.4240808661096182 Eth | 0.0045 | ||
0x8a337312...09f5164c4 | 4.559197363558812499 Eth | 4.574197363558812499 Eth | 0.015 | ||
0xD401Be5F...d89ECee6e | 0.492889041790839679 Eth | 0.494389041790839679 Eth | 0.0015 | ||
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 616.597154235486737389 Eth | 616.604094915486737389 Eth | 0.00694068 |
Execution Trace
ETH 0.15
ETHSUPREME.deposit( refLink=140 )
- ETH 0.015
0x8a337312d74926bb56810788b70cbe709f5164c4.CALL( )
- ETH 0.009
0x2910e50149d12cc6cf43997710d1e6aee774935c.CALL( )
- ETH 0.0045
0x54a4e1842892b473e5a2ce9e30624cc1a8f37860.CALL( )
- ETH 0.0015
0xd401be5f14fcdc32f4637aca703ce86d89ecee6e.CALL( )
- ETH 0.03
0x07fc6f1b8da7ad9be871af9e24bdaf60571f6c40.CALL( )
deposit[ETHSUPREME (ln:143)]
setRefLink[ETHSUPREME (ln:149)]
setInviter[ETHSUPREME (ln:70)]
setInviter[ETHSUPREME (ln:159)]
refSpreader[ETHSUPREME (ln:163)]
sub[ETHSUPREME (ln:112)]
div[ETHSUPREME (ln:113)]
mul[ETHSUPREME (ln:113)]
add[ETHSUPREME (ln:114)]
transfer[ETHSUPREME (ln:115)]
sub[ETHSUPREME (ln:119)]
div[ETHSUPREME (ln:120)]
mul[ETHSUPREME (ln:120)]
add[ETHSUPREME (ln:121)]
transfer[ETHSUPREME (ln:122)]
sub[ETHSUPREME (ln:126)]
div[ETHSUPREME (ln:127)]
mul[ETHSUPREME (ln:127)]
add[ETHSUPREME (ln:128)]
transfer[ETHSUPREME (ln:129)]
sub[ETHSUPREME (ln:133)]
div[ETHSUPREME (ln:134)]
mul[ETHSUPREME (ln:134)]
add[ETHSUPREME (ln:135)]
transfer[ETHSUPREME (ln:136)]
transfer[ETHSUPREME (ln:140)]
div[ETHSUPREME (ln:140)]
mul[ETHSUPREME (ln:140)]
add[ETHSUPREME (ln:165)]
add[ETHSUPREME (ln:166)]
transfer[ETHSUPREME (ln:167)]
div[ETHSUPREME (ln:167)]
mul[ETHSUPREME (ln:167)]
pragma solidity ^0.5.4; contract ETHSUPREME { using SafeMath for uint; struct User { uint32 level1; uint32 level2; uint32 level3; uint32 level4; uint32 refLink; uint32 inviterLink; uint investment; uint timestamp; uint balance; uint totalRefReward; uint payout; address payable inviter; uint8 tier; } uint[] public tierPrices; uint[] public refReward; uint public ownersPart; uint public startDate; address payable private owner; uint public totalUsers; uint public minDeposit; uint32 public lastRefLink; uint[] public rates; mapping (address => User) public users; mapping (uint32 => address payable) public links; uint public totalInvested; constructor(address payable ownerAddress) public { owner = ownerAddress; links[1] = ownerAddress; totalUsers = 0; totalInvested = 0; minDeposit = 0.01 ether; refReward = [10, 6, 3, 1]; ownersPart = 5; lastRefLink = 0; tierPrices = [0, 0.3 ether, 0.5 ether]; rates = [2314815, 2893519, 3472223]; startDate = 1594684800; } modifier restricted() { require(msg.sender == owner); _; } function getRefLink(address addr) public view returns(uint){ return users[addr].refLink; } function setRefLink(uint32 refLink) private { User storage user = users[msg.sender]; if (user.refLink != 0) return; lastRefLink = lastRefLink + 1; user.refLink = lastRefLink; links[lastRefLink] = msg.sender; setInviter(refLink); } function setInviter(uint32 refLink) private { User storage user = users[msg.sender]; address payable inviter1 = links[refLink] == address(0x0) || links[refLink] == msg.sender ? owner : links[refLink]; user.inviter = inviter1; user.inviterLink = inviter1 == owner ? 1 : refLink; address payable inviter2 = users[inviter1].inviter; address payable inviter3 = users[inviter2].inviter; address payable inviter4 = users[inviter3].inviter; users[inviter1].level1++; users[inviter2].level2++; users[inviter3].level3++; users[inviter4].level4++; } function checkout(address payable addr) private { User storage user = users[addr]; uint secondsGone = now.sub(user.timestamp); if (secondsGone == 0 || user.timestamp == 0) return; if(now < startDate) { user.timestamp = startDate; } else { uint profit = user.investment.mul(secondsGone).mul(rates[user.tier]).div(1e12); user.balance = user.balance.add(profit); user.timestamp = user.timestamp.add(secondsGone); } } function refSpreader(address payable inviter1, uint amount) private { address payable inviter2 = users[inviter1].inviter; address payable inviter3 = users[inviter2].inviter; address payable inviter4 = users[inviter3].inviter; uint refSum = refReward[0] + refReward[1] + refReward[2] + refReward[3]; if (inviter1 != address(0x0)) { refSum = refSum.sub(refReward[0]); uint reward1 = amount.mul(refReward[0]).div(100); users[inviter1].totalRefReward = users[inviter1].totalRefReward.add(reward1); inviter1.transfer(reward1); } if (inviter2 != address(0x0)) { refSum = refSum.sub(refReward[1]); uint reward2 = amount.mul(refReward[1]).div(100); users[inviter2].totalRefReward = users[inviter2].totalRefReward.add(reward2); inviter2.transfer(reward2); } if (inviter3 != address(0x0)) { refSum = refSum.sub(refReward[2]); uint reward3 = amount.mul(refReward[2]).div(100); users[inviter3].totalRefReward = users[inviter3].totalRefReward.add(reward3); inviter3.transfer(reward3); } if (inviter4 != address(0x0)) { refSum = refSum.sub(refReward[3]); uint reward4 = amount.mul(refReward[3]).div(100); users[inviter4].totalRefReward = users[inviter4].totalRefReward.add(reward4); inviter4.transfer(reward4); } if (refSum == 0) return; owner.transfer(amount.mul(refSum).div(100)); } function deposit(uint32 refLink) public payable { require(msg.value >= minDeposit); checkout(msg.sender); User storage user = users[msg.sender]; if (user.refLink == 0) { setRefLink(refLink); if(now < startDate) { user.tier = 2; } } if (user.timestamp == 0) { totalUsers++; user.timestamp = now; if (user.inviter == address(0x0)) { setInviter(refLink); } } refSpreader(user.inviter, msg.value); totalInvested = totalInvested.add(msg.value); user.investment = user.investment.add(msg.value); owner.transfer(msg.value.mul(ownersPart).div(100)); } function reinvest() external payable { require(now > startDate); checkout(msg.sender); User storage user = users[msg.sender]; require(user.balance > 0); uint amount = user.balance; user.balance = 0; user.investment = user.investment.add(amount); refSpreader(user.inviter, amount); totalInvested = totalInvested.add(amount); owner.transfer(amount.mul(ownersPart).div(100)); } function withdraw() external payable { require(now > startDate); checkout(msg.sender); User storage user = users[msg.sender]; require(user.balance > 0); uint amount = user.balance; user.payout = user.payout.add(amount); user.balance = 0; msg.sender.transfer(amount); } function upgradeTier() external payable { User storage user = users[msg.sender]; require(user.refLink != 0); require(user.tier < 2); require(msg.value == tierPrices[user.tier + 1]); checkout(msg.sender); user.tier++; owner.transfer(msg.value); } function () external payable { deposit(0); } function _fallback() external restricted { msg.sender.transfer(address(this).balance); } function _changeOwner(address payable newOwner) external restricted { owner = newOwner; links[1] = newOwner; } function _setTiers(uint newTier1, uint newTier2) external payable restricted { tierPrices[1] = newTier1; tierPrices[2] = newTier2; } function _setRates(uint rate0, uint rate1, uint rate2) external payable restricted { rates[0] = rate0; rates[1] = rate1; rates[2] = rate2; } function _setRefReward(uint reward1, uint reward2, uint reward3, uint reward4) external payable restricted { refReward[0] = reward1; refReward[1] = reward2; refReward[2] = reward3; refReward[3] = reward4; } function _setMinDeposit(uint newMinDeposit) external payable restricted { require(newMinDeposit >= 0.005 ether); minDeposit = newMinDeposit; } function _setStartDate(uint newStartDate) external payable restricted { startDate = newStartDate; } function _setOwnersPart(uint newPart) external payable restricted { ownersPart = newPart; } function _setLastRefLink(uint32 newRefLink) external payable restricted { lastRefLink = newRefLink; } } library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0); uint256 c = a / b; return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } }