Author

Topic: [ETHEREUM][TRUSTLESS][VERIFIED][2000+ ETHER PAID] Pyramid Contracts (Read 1580 times)

newbie
Activity: 7
Merit: 0
There are currently 24 investors on the new 100 ether pyramid:
> var c = myschemeContract.at("0x020522bf9b8ed6ff41e2fa6765a17e20e2767d64")
> c.getNumInvestors()
'24'


Just got another payment! join today! Cheesy

eth.sendTransaction({from:eth.accounts[0], to:"0x020522bf9b8ed6ff41e2fa6765a17e20e2767d64",value:web3.toWei(100,"ether"),gas:400000});[/b]

legendary
Activity: 1241
Merit: 1005
..like bright metal on a sullen ground.
These are the first ever verifiable pyramid schemes with provably known rules!

This is a momentous day in pyramid scheme history! Satoshi would be proud  Grin

Maybe 5 years from now a million people will have "invested" and we can live off the profits. Although if, after the 2 preceding levels, the rest is distributed to all the other preceding levels above those 2, it would seem like the profits would get very diluted over time. Oh well so much for that idea.

Seriously though this is pretty f'ing interesting.
hero member
Activity: 574
Merit: 500
MAKE SURE YOU KNOW EXACTLY HOW MUCH YOU ARE SENDING.

People have reported copy and pasting and sending much more than they intended.
hero member
Activity: 756
Merit: 500
I don't bite.
Sounds like a good idea.
I might invest some, but I don't have Ether at the moment. Tongue
newbie
Activity: 7
Merit: 0
Trustless Ethereum Triangular Number Pyramid Contracts
https://i.imgur.com/0KP7LVC.jpg

These are the first ever verifiable pyramid schemes with provably known rules!

How it works: Each level has one more member than the previous one. Once a level fills up, each member in the preceding two layers gets half of their investment back. The remaining funds are distributed between all members in all of the preceding layers so that the members in the upper layers get a slightly larger amount.

In a geth console, type one of the four following commands

1 Ether https://explorer.etherapps.info/address/0x109c4f2ccc82c4d77bde15f306707320294aea3f
eth.sendTransaction({from:eth.accounts[0], to:"0x109c4f2ccc82c4d77bde15f306707320294aea3f", value:web3.toWei(1,"ether"),gas:500000})

10 Ether https://explorer.etherapps.info/address/0xa327075af2a223a1c83a36ada1126afe7430f955
eth.sendTransaction({from:eth.accounts[0], to:"0xa327075af2a223a1c83a36ada1126afe7430f955", value:web3.toWei(10,"ether"),gas:500000})

0.10 Ether https://explorer.etherapps.info/address/0xbaa54d6e90c3f4d7ebec11bd180134c7ed8ebb52
eth.sendTransaction({from:eth.accounts[0], to:"0xbaa54d6e90c3f4d7ebec11bd180134c7ed8ebb52", value:web3.toWei(0.1,"ether"),gas:500000})

100 Ether https://explorer.etherapps.info/address/0x020522bf9b8ed6ff41e2fa6765a17e20e2767d64
eth.sendTransaction({from:eth.accounts[0], to:"0x020522bf9b8ed6ff41e2fa6765a17e20e2767d64", value:web3.toWei(100,"ether"),gas:400000});

That's it! Make sure the amounts are precisely as written. Simply wait for other people to do the same, and watch your investment grow.

In order to see the current number of investors, type the following commands in the geth console:
 
Code:
var myschemeContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"getNumInvestors","outputs":[{"name":"a","type":"uint256"}],"type":"function"},{"inputs":[],"type":"constructor"}]);
      
var c = myschemeContract.at("0x109c4f2ccc82c4d77bde15f306707320294aea3f")
      
c.getNumInvestors()

At the time of this posting, there are over 100 investors!

Anyone can verify that the code provided below is identical to the one in the Ethereum blockchain, by compiling it (with optimizations enabled), for example at: https://chriseth.github.io/browser-solidity/ and comparing the data with the output of:
eth.getCode("0x109c4f2ccc82c4d77bde15f306707320294aea3f")
 
SOLIDITY CODE:
Code:
contract MyScheme {
 
    uint treeBalance;
    uint numInvestorsMinusOne;
    uint treeDepth;
    address[] myTree;
 
    function MyScheme() {
        treeBalance = 0;
        myTree.length = 6;
        myTree[0] = msg.sender;
        numInvestorsMinusOne = 0;
    }
  
        function getNumInvestors() constant returns (uint a){
                a = numInvestorsMinusOne+1;
        }
  
        function() {
        uint amount = msg.value;
        if (amount>=1000000000000000000){
            numInvestorsMinusOne+=1;
            myTree[numInvestorsMinusOne]=msg.sender;
            amount-=1000000000000000000;
            treeBalance+=1000000000000000000;
            if (numInvestorsMinusOne<=2){
                myTree[0].send(treeBalance);
                treeBalance=0;
                treeDepth=1;
            }
            else if (numInvestorsMinusOne+1==myTree.length){
                    for(uint i=myTree.length-3*(treeDepth+1);i                        myTree[i].send(500000000000000000);
                        treeBalance-=500000000000000000;
                    }
                    uint eachLevelGets = treeBalance/(treeDepth+1)-1;
                    uint numInLevel = 1;
                    for(i=0;i                        myTree[i].send(eachLevelGets/numInLevel-1);
                        treeBalance -= eachLevelGets/numInLevel-1;
                        if (numInLevel*(numInLevel+1)/2 -1== i){
                            numInLevel+=1;
                        }
                    }
                    myTree.length+=treeDepth+3;
                    treeDepth+=1;
            }
        }
                treeBalance+=amount;
    }
}

Jump to: