ETH Price: $2,536.25 (+1.62%)

Transaction Decoder

Block:
6593877 at Oct-27-2018 03:27:34 PM +UTC
Transaction Fee:
0.00052272 ETH $1.33
Gas Used:
47,520 Gas / 11 Gwei

Emitted Events:

61 Project424.LogPayment( _addr=[Sender] 0x51371e39bce591a1a91cd1eae5f874bf5022090d, _value=3443319662199081 )

Account State Difference:

  Address   Before After State Difference Code
0x36D57482...1CE624585
0x51371E39...F5022090D
0.00709 Eth
Nonce: 116
0.010010599662199081 Eth
Nonce: 117
0.002920599662199081
118.79604730447433659 Eth118.79657002447433659 Eth0.00052272
0xbEa72B7d...16Ba2EDEf
(project424.us)
445.160364511867435989 Eth445.156921192205236908 Eth0.003443319662199081

Execution Trace

Project424.CALL( )
  • 0x36d57482f85bcb2b993d6a4652c56111ce624585.7aaa3470( )
  • 0x36d57482f85bcb2b993d6a4652c56111ce624585.d573a003( )
  • 0x36d57482f85bcb2b993d6a4652c56111ce624585.04ee65c0( )
  • 0x36d57482f85bcb2b993d6a4652c56111ce624585.702f5e19( )
  • ETH 0.003443319662199081 0x51371e39bce591a1a91cd1eae5f874bf5022090d.CALL( )
    pragma solidity ^0.4.24;
    
    /**
     * Website: www.project424.us
     *
     * Telegram: https://t.me/joinchat/HtqvCxCb_B0jVIJyq3Tdgg
     *
     * RECOMMENDED GAS LIMIT: 200000
     * RECOMMENDED GAS PRICE: https://ethgasstation.info/
     */
    
    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;
        }
    }
    
    contract InvestorsStorage {
        address private owner;
    
        mapping (address => Investor) private investors;
    
        struct Investor {
            uint deposit;
            uint checkpoint;
        }
    
        constructor() public {
            owner = msg.sender;
        }
    
        modifier onlyOwner() {
            require(msg.sender == owner);
            _;
        }
    
        function updateInfo(address _address, uint _value) external onlyOwner {
            investors[_address].deposit += _value;
            investors[_address].checkpoint = block.timestamp;
        }
    
        function updateCheckpoint(address _address) external onlyOwner {
            investors[_address].checkpoint = block.timestamp;
        }
    
        function d(address _address) external view onlyOwner returns(uint) {
            return investors[_address].deposit;
        }
    
        function c(address _address) external view onlyOwner returns(uint) {
            return investors[_address].checkpoint;
        }
    
        function getInterest(address _address) external view onlyOwner returns(uint) {
            if (investors[_address].deposit < 4240000000000000000) {
                return 424;
            } else {
                return 600;
            }
        }
    }
    
    contract Project424 {
        using SafeMath for uint;
    
        address public owner;
        address admin;
        address marketing;
    
        uint waveStartUp;
        uint nextPayDay;
    
        event LogInvestment(address indexed _addr, uint _value);
        event LogPayment(address indexed _addr, uint _value);
        event LogReferralInvestment(address indexed _referral, address indexed _referrer, uint _value);
        event LogNewWave(uint _waveStartUp);
    
        InvestorsStorage private x;
    
        modifier notOnPause() {
            require(waveStartUp <= block.timestamp);
            _;
        }
    
        function renounceOwnership() external {
            require(msg.sender == owner);
            owner = 0x0;
        }
    
        function bytesToAddress(bytes _source) internal pure returns(address parsedReferrer) {
            assembly {
                parsedReferrer := mload(add(_source,0x14))
            }
            return parsedReferrer;
        }
    
        function toReferrer(uint _value) internal {
            address _referrer = bytesToAddress(bytes(msg.data));
            if (_referrer != msg.sender) {
                _referrer.transfer(_value / 20);
                emit LogReferralInvestment(msg.sender, _referrer, _value);
            }
        }
    
        constructor(address _admin, address _marketing) public {
            owner = msg.sender;
            admin = _admin;
            marketing = _marketing;
            x = new InvestorsStorage();
        }
    
        function getInfo(address _address) external view returns(uint deposit, uint amountToWithdraw) {
            deposit = x.d(_address);
            amountToWithdraw = block.timestamp.sub(x.c(_address)).div(1 days).mul(x.d(_address).mul(x.getInterest(_address)).div(10000));
        }
    
        function() external payable {
            if (msg.value == 0) {
                withdraw();
            } else {
                invest();
            }
        }
    
        function invest() notOnPause public payable {
    
            admin.transfer(msg.value * 5 / 100);
            marketing.transfer(msg.value / 10);
    
            if (x.d(msg.sender) > 0) {
                withdraw();
            }
    
            x.updateInfo(msg.sender, msg.value);
    
            if (msg.data.length == 20) {
                toReferrer(msg.value);
            }
    
            emit LogInvestment(msg.sender, msg.value);
        }
    
        function withdraw() notOnPause public {
    
            if (address(this).balance < 100000000000000000) {
                nextWave();
                return;
            }
    
            uint _payout = block.timestamp.sub(x.c(msg.sender)).div(1 days).mul(x.d(msg.sender).mul(x.getInterest(msg.sender)).div(10000));
            x.updateCheckpoint(msg.sender);
    
            if (_payout > 0) {
                msg.sender.transfer(_payout);
                emit LogPayment(msg.sender, _payout);
            }
        }
    
        function nextWave() private {
            x = new InvestorsStorage();
            waveStartUp = block.timestamp + 7 days;
            emit LogNewWave(waveStartUp);
        }
    }