Transaction Hash:
Block:
6569015 at Oct-23-2018 02:06:28 PM +UTC
Transaction Fee:
0.001857218 ETH
$4.02
Gas Used:
45,298 Gas / 41 Gwei
Emitted Events:
| 18 |
TwoHundredPercent.Withdraw( investor=[Sender] 0x3bbc2ef0838e29c39af7e05e59d889d9b210b04d, amount=30000000000000000 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x3bbc2Ef0...9b210B04D |
0.099749099 Eth
Nonce: 2
|
0.127891881 Eth
Nonce: 3
| 0.028142782 | ||
|
0x52bc44d5...b7d7bE3b5
Miner
| (Nanopool) | 8,328.127439397904030373 Eth | 8,328.129296615904030373 Eth | 0.001857218 | |
| 0xA3296436...5c9047C92 | (TwoHundredPercent) | 1,332.892449016582818088 Eth | 1,332.862449016582818088 Eth | 0.03 |
Execution Trace
TwoHundredPercent.CALL( )
- ETH 0.03
0x3bbc2ef0838e29c39af7e05e59d889d9b210b04d.CALL( )
[TwoHundredPercent (ln:94)]
deposit[TwoHundredPercent (ln:95)]add[TwoHundredPercent (ln:80)]collectPercent[TwoHundredPercent (ln:81)]add[TwoHundredPercent (ln:84)]transfer[TwoHundredPercent (ln:87)]div[TwoHundredPercent (ln:87)]mul[TwoHundredPercent (ln:87)]Invest[TwoHundredPercent (ln:88)]collectPercent[TwoHundredPercent (ln:90)]
pragma solidity ^0.4.24;
/*
* ---How to use:
* 1. Send from ETH wallet to the smart contract address
* any amount ETH.
* 2. Claim your profit by sending 0 ether transaction (1 time per hour)
* 3. If you earn more than 200%, you can withdraw only one finish time
*/
contract TwoHundredPercent {
using SafeMath for uint;
mapping(address => uint) public balance;
mapping(address => uint) public time;
mapping(address => uint) public percentWithdraw;
mapping(address => uint) public allPercentWithdraw;
uint public stepTime = 1 hours;
uint public countOfInvestors = 0;
address public ownerAddress = 0xC24ddFFaaCEB94f48D2771FE47B85b49818204Be;
uint projectPercent = 10;
event Invest(address investor, uint256 amount);
event Withdraw(address investor, uint256 amount);
modifier userExist() {
require(balance[msg.sender] > 0, "Address not found");
_;
}
modifier checkTime() {
require(now >= time[msg.sender].add(stepTime), "Too fast payout request");
_;
}
function collectPercent() userExist checkTime internal {
if ((balance[msg.sender].mul(2)) <= allPercentWithdraw[msg.sender]) {
balance[msg.sender] = 0;
time[msg.sender] = 0;
percentWithdraw[msg.sender] = 0;
} else {
uint payout = payoutAmount();
percentWithdraw[msg.sender] = percentWithdraw[msg.sender].add(payout);
allPercentWithdraw[msg.sender] = allPercentWithdraw[msg.sender].add(payout);
msg.sender.transfer(payout);
emit Withdraw(msg.sender, payout);
}
}
function percentRate() public view returns(uint) {
uint contractBalance = address(this).balance;
if (contractBalance < 1000 ether) {
return (60);
}
if (contractBalance >= 1000 ether && contractBalance < 2500 ether) {
return (72);
}
if (contractBalance >= 2500 ether && contractBalance < 5000 ether) {
return (84);
}
if (contractBalance >= 5000 ether) {
return (90);
}
}
function payoutAmount() public view returns(uint256) {
uint256 percent = percentRate();
uint256 different = now.sub(time[msg.sender]).div(stepTime);
uint256 rate = balance[msg.sender].mul(percent).div(1000);
uint256 withdrawalAmount = rate.mul(different).div(24).sub(percentWithdraw[msg.sender]);
return withdrawalAmount;
}
function deposit() private {
if (msg.value > 0) {
if (balance[msg.sender] == 0) {
countOfInvestors += 1;
}
if (balance[msg.sender] > 0 && now > time[msg.sender].add(stepTime)) {
collectPercent();
percentWithdraw[msg.sender] = 0;
}
balance[msg.sender] = balance[msg.sender].add(msg.value);
time[msg.sender] = now;
ownerAddress.transfer(msg.value.mul(projectPercent).div(100));
emit Invest(msg.sender, msg.value);
} else {
collectPercent();
}
}
function() external payable {
deposit();
}
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}