Browse Source

stoppable and stoppablebid example

Manuel Araoz 9 years ago
parent
commit
4bfc2ba858
3 changed files with 51 additions and 2 deletions
  1. 25 0
      contracts/Stoppable.sol
  2. 26 0
      contracts/StoppableBid.sol
  3. 0 2
      migrations/2_deploy_contracts.js

+ 25 - 0
contracts/Stoppable.sol

@@ -0,0 +1,25 @@
+/*
+ * Stoppable
+ */
+contract Stoppable {
+  address public curator;
+  bool public stopped;
+
+  modifier stopInEmergency { if (!stopped) _ }
+  modifier onlyInEmergency { if (stopped) _ }
+
+  function Stoppable(address _curator) {
+		if (_curator == 0) {
+      throw;
+    }
+    curator = _curator;
+  }
+
+  function emergencyStop() external {
+    if (msg.sender != curator) {
+      throw;
+    }
+    stopped = true;
+  }
+
+}

+ 26 - 0
contracts/StoppableBid.sol

@@ -0,0 +1,26 @@
+import './PullPaymentCapable.sol';
+import './Stoppable.sol';
+
+contract StoppableBid is Stoppable, PullPaymentCapable {
+  address public highestBidder;
+  uint public highestBid;
+
+  function StoppableBid(address _curator)
+    Stoppable(_curator)
+    PullPaymentCapable() {}
+
+  function bid() external stopInEmergency {
+    if (msg.value <= highestBid) throw;
+    
+    if (highestBidder != 0) {
+      asyncSend(highestBidder, highestBid);
+    }
+    highestBidder = msg.sender;
+    highestBid = msg.value;
+  }
+
+  function withdraw() onlyInEmergency {
+    suicide(curator);
+  }
+
+}

+ 0 - 2
migrations/2_deploy_contracts.js

@@ -1,6 +1,4 @@
 module.exports = function(deployer) {
-  deployer.deploy(BadFailEarly);
-  deployer.deploy(GoodFailEarly);
   deployer.deploy(PullPaymentBid);
   deployer.deploy(BadArrayUse);
   deployer.deploy(Bounty);