123456789101112131415161718192021222324252627282930313233343536 |
- import './PullPaymentCapable.sol';
- import './Token.sol';
- /*
- * Bounty
- * This bounty will pay out if you can cause a Token'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 PullPaymentCapable {
- bool public claimed;
- mapping(address => address) public researchers;
- function() {
- if (claimed) throw;
- }
- function createTarget() returns(Token) {
- Token target = new Token(0);
- researchers[target] = msg.sender;
- return target;
- }
- function claim(Token target) {
- address researcher = researchers[target];
- if (researcher == 0) throw;
- // check Token contract invariants
- if (target.totalSupply() == target.balance) {
- throw;
- }
- asyncSend(researcher, this.balance);
- claimed = true;
- }
- }
|