Browse Source

Create CrowdsaleTokenBounty

Bill Gleim 9 years ago
parent
commit
27b156dbc0
1 changed files with 38 additions and 0 deletions
  1. 38 0
      contracts/bounties/CrowdsaleTokenBounty.sol

+ 38 - 0
contracts/bounties/CrowdsaleTokenBounty.sol

@@ -0,0 +1,38 @@
+pragma solidity ^0.4.0;
+import './PullPayment.sol';
+import './token/CrowdsaleToken.sol';
+
+/*
+ * Bounty
+ * This bounty will pay out if you can cause a CrowdsaleToken'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(CrowdsaleToken) {
+    CrowdsaleToken target = new CrowdsaleToken();
+    researchers[target] = msg.sender;
+    return target;
+  }
+
+  function claim(CrowdsaleToken target) {
+    address researcher = researchers[target];
+    if (researcher == 0) throw;
+    // Check CrowdsaleToken contract invariants
+    // Customize this to the specifics of your contract
+    if (target.totalSupply() == target.balance) {
+      throw;
+    }
+    asyncSend(researcher, this.balance);
+    claimed = true;
+  }
+
+}