ETH Price: $2,519.91 (-1.38%)

Transaction Decoder

Block:
1381477 at Apr-22-2016 05:44:11 AM +UTC
Transaction Fee:
0.00243484 ETH $6.14
Gas Used:
121,742 Gas / 20 Gwei

Account State Difference:

  Address   Before After State Difference Code
(Ethpool 2)
104.091847656885990666 Eth104.094282496885990666 Eth0.00243484
0x562236C0...420ca1716
2,728.450289276572311299 Eth
Nonce: 132
2,727.497854436572311299 Eth
Nonce: 133
0.95243484
0x5AD48D89...1a0aac29c 99.205903335883685932 Eth99.255903335883685932 Eth0.05
0xB3e34298...7F44C6015 2.32716819000000001 Eth3.42716819000000001 Eth1.1
0xF4571755...008167Ae3
(PonziGovernmental)
1,099.0668 Eth1,098.8668 Eth0.2

Execution Trace

ETH 1 Government.lendGovernmentMoney( buddy=0x562236C0D4FD95E26c53aC56b7d118E420ca1716 ) => ( True )
  • ETH 0.05 0x5ad48d8917b5e3dac087f9f7bb34cfe1a0aac29c.CALL( )
  • ETH 0.05 0x562236c0d4fd95e26c53ac56b7d118e420ca1716.CALL( )
  • ETH 1.1 0xb3e3429824d31ba87edea73fac823a67f44c6015.CALL( )
    contract Government {
    
        // Global Variables
        uint32 public lastCreditorPayedOut;
        uint public lastTimeOfNewCredit;
        uint public profitFromCrash;
        address[] public creditorAddresses;
        uint[] public creditorAmounts;
        address public corruptElite;
        mapping (address => uint) buddies;
        uint constant TWELVE_HOURS = 43200;
        uint8 public round;
    
        function Government() {
            // The corrupt elite establishes a new government
            // this is the commitment of the corrupt Elite - everything that can not be saved from a crash
            profitFromCrash = msg.value;
            corruptElite = msg.sender;
            lastTimeOfNewCredit = block.timestamp;
        }
    
        function lendGovernmentMoney(address buddy) returns (bool) {
            uint amount = msg.value;
            // check if the system already broke down. If for 12h no new creditor gives new credit to the system it will brake down.
            // 12h are on average = 60*60*12/12.5 = 3456
            if (lastTimeOfNewCredit + TWELVE_HOURS < block.timestamp) {
                // Return money to sender
                msg.sender.send(amount);
                // Sends all contract money to the last creditor
                creditorAddresses[creditorAddresses.length - 1].send(profitFromCrash);
                corruptElite.send(this.balance);
                // Reset contract state
                lastCreditorPayedOut = 0;
                lastTimeOfNewCredit = block.timestamp;
                profitFromCrash = 0;
                creditorAddresses = new address[](0);
                creditorAmounts = new uint[](0);
                round += 1;
                return false;
            }
            else {
                // the system needs to collect at least 1% of the profit from a crash to stay alive
                if (amount >= 10 ** 18) {
                    // the System has received fresh money, it will survive at leat 12h more
                    lastTimeOfNewCredit = block.timestamp;
                    // register the new creditor and his amount with 10% interest rate
                    creditorAddresses.push(msg.sender);
                    creditorAmounts.push(amount * 110 / 100);
                    // now the money is distributed
                    // first the corrupt elite grabs 5% - thieves!
                    corruptElite.send(amount * 5/100);
                    // 5% are going into the economy (they will increase the value for the person seeing the crash comming)
                    if (profitFromCrash < 10000 * 10**18) {
                        profitFromCrash += amount * 5/100;
                    }
                    // if you have a buddy in the government (and he is in the creditor list) he can get 5% of your credits.
                    // Make a deal with him.
                    if(buddies[buddy] >= amount) {
                        buddy.send(amount * 5/100);
                    }
                    buddies[msg.sender] += amount * 110 / 100;
                    // 90% of the money will be used to pay out old creditors
                    if (creditorAmounts[lastCreditorPayedOut] <= address(this).balance - profitFromCrash) {
                        creditorAddresses[lastCreditorPayedOut].send(creditorAmounts[lastCreditorPayedOut]);
                        buddies[creditorAddresses[lastCreditorPayedOut]] -= creditorAmounts[lastCreditorPayedOut];
                        lastCreditorPayedOut += 1;
                    }
                    return true;
                }
                else {
                    msg.sender.send(amount);
                    return false;
                }
            }
        }
    
        // fallback function
        function() {
            lendGovernmentMoney(0);
        }
    
        function totalDebt() returns (uint debt) {
            for(uint i=lastCreditorPayedOut; i<creditorAmounts.length; i++){
                debt += creditorAmounts[i];
            }
        }
    
        function totalPayedOut() returns (uint payout) {
            for(uint i=0; i<lastCreditorPayedOut; i++){
                payout += creditorAmounts[i];
            }
        }
    
        // better don't do it (unless you are the corrupt elite and you want to establish trust in the system)
        function investInTheSystem() {
            profitFromCrash += msg.value;
        }
    
        // From time to time the corrupt elite inherits it's power to the next generation
        function inheritToNextGeneration(address nextGeneration) {
            if (msg.sender == corruptElite) {
                corruptElite = nextGeneration;
            }
        }
    
        function getCreditorAddresses() returns (address[]) {
            return creditorAddresses;
        }
    
        function getCreditorAmounts() returns (uint[]) {
            return creditorAmounts;
        }
    }