Skip to content
Chris Prinz
Share
Explore
Writing

icon picker
How Ethereum Can Make Ponzi Schemes A Force for Social Good

Blockchain has been prevalent in the news lately as Bitcoin and Ethereum prices rise at unprecedented rates. Touted by some as the , there is definitely validation to the hype. Blockchain technology enables decentralized systems at a worldwide scale, creating opportunities for secure global systems for finance, supply chain, file sharing, and more. Smart contracts, or contracts written in code that execute on the Ethereum Virtual Machine, remove the need to trust third parties to deliver on promises. This has the power to bring rural communities into the global economy by removing the need for centralized banking systems, mitigate censorship in areas with oppressive regimes using peer to peer networking, and create lasting records of ownership that are irrefutable by malicious third parties.

So naturally, I used this technology to create a Ponzi scheme (for charity).

Here’s why it makes sense: Blockchain applications are most valuable in scenarios where you cannot trust a central authority to deliver on a promise. For example, a kind man named Charles Ponzi comes to you in the street. He tells you that if you give him $1000 (or about 3.33 ether), he’ll give you a 20% return on your investment every month. What a deal! That money could sit in a bank collecting a measly 3%, or if you’re feeling risky, you could invest it in the stock market. Surely you would be a fool to turn down Mr. Ponzi on a 20% guaranteed ROI.
So you give him the money. A month passes, and you get your $200, and of course you reinvest. Meanwhile, he’s delivering his pitch to many others, and distributing their investments to previous investors. However, it’s still a lucrative opportunity for all involved, provided they’re not the last ones to join. Months pass, wealth accrues, and Mr. Ponzi runs into a problem: there are simply too many people involved to keep delivering returns. So of course, he takes the money still invested in the fund and runs.
Now let’s apply blockchain technology to this scenario.
You’re walking down the street and a kind man named Mr. Ponzi.sol taps you on the shoulder. Ponzi.sol looks like this:
pragma solidity ^0.4.10;
contract Ponzi
{
address public owner;
mapping (address => uint) public investments;
mapping (address => uint) public balanceOf;
address[] public contributors;
uint public totalInvestments;
uint public totalPool;
uint public numInvestments;
function Campaign(address _charity, string _charityName, uint _percent) payable
{
require(_percent >= 20 && _percent <= 99);
owner = msg.sender;
totalInvestments += investment;
totalPool += msg.value;
numInvestments += 1;
contributors.push(owner);
donations[owner] = msg.value;
}
function getBalance(address _address) returns (uint)
{
require(validAddress(_address));
return balanceOf[_address];
}
function getContributors() returns (address[])
{
return contributors;
}
function validAddress(address _address) returns (bool)
{
for(uint i = 0; i < contributors.length; i++)
{
if(_address == contributors[i])
{
return true;
}
}
return false;
}
function invest()
payable
returns (uint)
{
//process gains to addresses
for (uint i = 0; i < contributors.length; i++)
{
balanceOf[contributors[i]] += msg.value * investments[contributors[i]] / totalPool;
}
//add new contributor to array
if (investments[msg.sender] == 0)
{
contributors.push(msg.sender);
investments[msg.sender] = msg.value;
}
else
{
investments[msg.sender] += msg.value;
}
totalPool += msg.value;
}
function withdraw(uint _amount)
{
require(validAddress(msg.sender));
require(_amount < balanceOf[msg.sender]);
balanceOf[msg.sender] -= _amount;
msg.sender.transfer(_amount);
}
function() { throw; }
}
Looks legit. You buy in, and sure enough after a month, you get paid. And again, this is because other people were roped in by Mr. Ponzi. And again, you’ll make money as long as you’re not the last one to invest. But this time, Mr. Ponzi can’t walk away with the money. All of the ether deposited into the contract is held by the contract and paid out according to the code above. There’s no way to cheat the system, as the contract is publicly available for anyone to scrutinize.

All of a sudden, a ponzi scheme sounds like a pretty rational thing to invest in.


I created GoodFund with the same principles in mind: provide a financial incentive for people to attract other contributors. The code above is actually taken directly from GoodFund.sol, but I replaced “donation” with “investment” and removed the part where 20% of every donation is immediately sent to a charity. The rest of the donation is in the pool and determines your equity in the pool, so that you get x% of the next donation that comes in (after the 20%, of course). This incentivizes people to attract others to donate to the same cause or organization. If it’s a more popular organization, it becomes a more lucrative investment as more people are going to contribute to the pool.
I’m not saying that this is the way charities should raise funds, but I think it’s an interesting way to examine economic incentives in relation to charity. As the code determines the behavior of the contract, it’s completely transparent and trustless. One Ponzi scheme at a time, blockchain technology is going to revolutionize the way do business.
The contract is currently deployed on the Ethereum test net, and I’m working on a demo web application so that people can invest real Ether into the fund. If you’re especially interested in this lucrative opportunity (or if you want to talk blockchain), please feel free to reach out. The code and concept above was inspired by .
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.