diff --git a/contracts/bounties/SimpleTokenBounty.sol b/contracts/bounties/SimpleTokenBounty.sol new file mode 100644 index 000000000..3f8bf8d4a --- /dev/null +++ b/contracts/bounties/SimpleTokenBounty.sol @@ -0,0 +1,38 @@ +pragma solidity ^0.4.0; +import './PullPayment.sol'; +import './token/SimpleToken.sol'; + +/* + * Bounty + * This bounty will pay out if you can cause a SimpleToken's balance + * to be lower than its totalSupply, which would mean that it doesn't + * have sufficient ether for everyone to withdraw. + */ +contract Bounty is PullPayment { + + bool public claimed; + mapping(address => address) public researchers; + + function() { + if (claimed) throw; + } + + function createTarget() returns(SimpleToken) { + SimpleToken target = new SimpleToken(); + researchers[target] = msg.sender; + return target; + } + + function claim(SimpleToken target) { + address researcher = researchers[target]; + if (researcher == 0) throw; + // Check SimpleToken contract invariants + // Customize this to the specifics of your contract + if (target.totalSupply() == target.balance) { + throw; + } + asyncSend(researcher, this.balance); + claimed = true; + } + +}