Author

Topic: [ETH] Geometric Ponzi - designed to restart, restart to last. (Jr. Member) (Read 398 times)

newbie
Activity: 42
Merit: 0
It's still functional... it's just that the jackpot winner has to provide more gas, because that one has to calculate the square root of a number.
member
Activity: 70
Merit: 10
How long do we have to wait?  i want my pictures to show too :p

Too bad you have to create a new one, but just an advice : ponzis are not working with low ether popularity, and input should be limited to few ethers, not 10 eth, everything has to be faster to work, otherwise it is a failure before it starts.
newbie
Activity: 42
Merit: 0
My picture can now be shown.  Cheesy

And I'm making a second version that has cleaner code ( ~200 lines of code less), hopefully one that CAN be verified by etherscan and all rounds have the same round limit (100 ether) and input limit (10 ether), so it doesn't have to consume a lot of gas at the beginning of the round. Although the above code is working and has been tested in morden a lot. I can see now how a lot of code could be neater.
newbie
Activity: 42
Merit: 0
PLEASE WATCH THIS CONTRACT IN MIST GUI, ALL INFORMATION IS PROVIDED THERE.
Code:
[{
        "constant": true,
        "inputs": [],
        "name": "Transparancy",
        "outputs": [{
                "name": "Deployer",
                "type": "address"
        }, {
                "name": "FeeAddress",
                "type": "address"
        }, {
                "name": "GasAmountToFeeAddress",
                "type": "uint256"
        }, {
                "name": "UnprocessedDividend",
                "type": "uint256"
        }, {
                "name": "info",
                "type": "string"
        }, {
                "name": "UncollectedFees",
                "type": "uint256"
        }, {
                "name": "TotalInput",
                "type": "uint256"
        }, {
                "name": "TotalOutput",
                "type": "uint256"
        }, {
                "name": "info2",
                "type": "string"
        }],
        "type": "function"
}, {
        "constant": true,
        "inputs": [{
                "name": "id",
                "type": "uint256"
        }],
        "name": "InvestorList",
        "outputs": [{
                "name": "TotalInvestors",
                "type": "uint256"
        }, {
                "name": "NextPayoutToId",
                "type": "uint256"
        }, {
                "name": "EthereumAddress",
                "type": "address"
        }, {
                "name": "Payout",
                "type": "uint256"
        }, {
                "name": "Paid",
                "type": "bool"
        }, {
                "name": "info",
                "type": "string"
        }],
        "type": "function"
}, {
        "constant": false,
        "inputs": [{
                "name": "Ether",
                "type": "bool"
        }, {
                "name": "Finney",
                "type": "bool"
        }, {
                "name": "Szabo",
                "type": "bool"
        }, {
                "name": "Wei",
                "type": "bool"
        }],
        "name": "ChangeShownDenomination",
        "outputs": [],
        "type": "function"
}, {
        "constant": true,
        "inputs": [{
                "name": "id",
                "type": "uint256"
        }],
        "name": "ContributorList",
        "outputs": [{
                "name": "ActiveContributors",
                "type": "uint256"
        }, {
                "name": "TotalShare",
                "type": "uint256"
        }, {
                "name": "Name",
                "type": "string"
        }, {
                "name": "EthereumAddress",
                "type": "address"
        }, {
                "name": "Dividend",
                "type": "uint256"
        }, {
                "name": "info",
                "type": "string"
        }, {
                "name": "DividendLeft",
                "type": "uint256"
        }, {
                "name": "info2",
                "type": "string"
        }],
        "type": "function"
}, {
        "constant": true,
        "inputs": [],
        "name": "RoundInfo",
        "outputs": [{
                "name": "Round",
                "type": "uint256"
        }, {
                "name": "RoundBalance",
                "type": "uint256"
        }, {
                "name": "InvestmentBalance",
                "type": "uint256"
        }, {
                "name": "RoundLimit",
                "type": "uint256"
        }, {
                "name": "ShortLimit",
                "type": "uint256"
        }, {
                "name": "Jackpot",
                "type": "uint256"
        }, {
                "name": "info",
                "type": "string"
        }],
        "type": "function"
}, {
        "constant": false,
        "inputs": [{
                "name": "Name",
                "type": "string"
        }],
        "name": "ChangeName",
        "outputs": [],
        "type": "function"
}, {
        "constant": false,
        "inputs": [{
                "name": "amountInCurrentDenomination",
                "type": "uint256"
        }, {
                "name": "all",
                "type": "bool"
        }],
        "name": "PayoutDividendEarly",
        "outputs": [],
        "type": "function"
}, {
        "constant": false,
        "inputs": [{
                "name": "NewDeployer",
                "type": "address"
        }, {
                "name": "NewFeeAddress",
                "type": "address"
        }, {
                "name": "NewGasAmount",
                "type": "uint256"
        }],
        "name": "__DeployerFunctions",
        "outputs": [],
        "type": "function"
}, {
        "inputs": [],
        "type": "constructor"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "info",
                "type": "string"
        }, {
                "indexed": false,
                "name": "ByWho",
                "type": "address"
        }],
        "name": "DenominationChanged",
        "type": "event"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "round",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "info",
                "type": "string"
        }],
        "name": "ShortLimitReached",
        "type": "event"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "info",
                "type": "string"
        }, {
                "indexed": false,
                "name": "round",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "RoundLimit",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "ShortLimit",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "TotalInputSinceDeployment",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "TotalOutputSinceDeployment",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "info2",
                "type": "string"
        }],
        "name": "NewRound",
        "type": "event"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "round",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "info",
                "type": "string"
        }, {
                "indexed": false,
                "name": "amountleft",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "info2",
                "type": "string"
        }],
        "name": "Last10PercentOfRound",
        "type": "event"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "Jackpot",
                "type": "address"
        }, {
                "indexed": false,
                "name": "JackpotClaimedBy",
                "type": "string"
        }, {
                "indexed": false,
                "name": "JackpotAmount",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "AmountInvestors",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "NewContributors",
                "type": "uint256"
        }, {
                "indexed": false,
                "name": "info",
                "type": "string"
        }],
        "name": "LastRound",
        "type": "event"
}, {
        "anonymous": false,
        "inputs": [{
                "indexed": false,
                "name": "info",
                "type": "string"
        }, {
                "indexed": false,
                "name": "amountInWei",
                "type": "uint256"
        }],
        "name": "TiedUpLooseEnds",
        "type": "event"
}]

CONTRACT CODE: 0x97afa00f26e66bf96a7338e67ee945d1f3080b78
DEPOSIT: MIN: 1 finney - MAX: 10% of round limit (100 finney in round 1 - 10 ether in round 100)
MULTIPLIER: 1.1X - ~1,7X


Geometric Ponzi is designed to pay out all investments at the end of the round. It does so by splitting up the deposits into two categories: Investments and Contributions. At the end of a round, 25% of deposits has become contributions. All contributions receive dividend until twice of initial contribution is reached. Not only does the contributor get more back over time. The last contributor of the round gets a jackpot that is 5% of all deposits of that round. Of all deposits, 5% goes to fill the jackpot, 10% becomes dividend for contributors and 2,5% fees.

Investments:
  • Multiplier: 1.1x
  • Guaranteed pay-out in the same round.

Contributions:
  • Multiplier: 2x
  • Get paid out in dividend over multiple rounds until completely paid out.
  • It is possible to payout dividend early, although it will lower your share and decreases the rate of dividend.

NO RANDOM, NO CHANCE OR LUCK INVOLVED.

Extensively tested in Morden: http://testnet.etherscan.io/address/0x81627a70cc3b1dcafe0b75a4af8379a268d146cf#internaltx (look at the contract creator to see how much I've redeployed this contract to fix all possible bugs, reduce gas costs and simplify usability.)

NOTICE: Last person in round have to pay more gas then that the MIST UI suggests. You might have won the jackpot, but you ALSO have to calculate the short limit for the next round.
https://i.imgur.com/LAoKuFr.png

FAQ:

How much of my deposit will be contribution?
Depends on how far the game is in the round. If you deposit before the short limit then all your deposit will be turned into investment and your deposit will be paid back in the same round. If you deposit after the short limit then contribution will be calculated. Which you can see below.

Round limit: The first round has a round limit of 1 ether (maximum deposit = 10% of round limit = 100 finney in round 1). After every round the round limit increases with 1 ether, until a cap of 100 ether has been reached.
Round balance: The amount of deposits in this round.
Short limit:
Code:
short limit = round limit - squareroot(squared(round limit) / 2)
Contribution:
Code:
b = round balance - short limit;
contribution = (((b + b + deposit) / 2) * deposit) / roundLimit;

Geometric Ponzi is the sequal to 'Nice Guy Tax': https://bitcointalksearch.org/topic/eth-nice-guy-tax-rounds-based-ponzi-with-guaranteed-pay-out-in-same-round-1430910
Nice Guy Tax began with the idea that ponzi's can restart if the gap between payout and balance is repaid.
Jump to: