Procházet zdrojové kódy

have start_mining figure out which block to mine itself

Malte Kraus před 8 roky
rodič
revize
a773570b04
2 změnil soubory, kde provedl 9 přidání a 16 odebrání
  1. 7 14
      src/mining.py
  2. 2 2
      tests/test_proto.py

+ 7 - 14
src/mining.py

@@ -12,7 +12,7 @@ class Miner:
     def __init__(self, proto, reward_pubkey):
         self.proto = proto
         self.chainbuilder = ChainBuilder(proto)
-        self.chainbuilder.chain_change_handlers.append(self.chain_changed)
+        self.chainbuilder.chain_change_handlers.append(self.start_mining)
         self.is_mining = False
         self.cur_miner = None
         self.reward_pubkey = reward_pubkey
@@ -29,10 +29,13 @@ class Miner:
                 if block is not None:
                     self.proto.broadcast_primary_block(block)
 
-    def start_mining(self, block):
+    def start_mining(self):
         """ Start mining on a new block. """
-        if self.cur_miner:
-            self.cur_miner.abort()
+        self.stop_mining()
+
+        chain = self.chainbuilder.primary_block_chain
+        transactions = self.chainbuilder.unconfirmed_transactions
+        block = mining_strategy.create_block(chain, transactions, self.reward_pubkey)
         self.cur_miner = ProofOfWork(block)
 
     def stop_mining(self):
@@ -40,13 +43,3 @@ class Miner:
         if self.cur_miner:
             self.cur_miner.abort()
             self.cur_miner = None
-
-    def chain_changed(self):
-        """
-        Used as a event handler on the chainbuilder. It is called when the
-        primary chain changes.
-        """
-        chain = self.chainbuilder.primary_block_chain
-        transactions = self.chainbuilder.unconfirmed_transactions
-        block = mining_strategy.create_block(chain, transactions, self.reward_pubkey)
-        self.start_mining(block)

+ 2 - 2
tests/test_proto.py

@@ -12,8 +12,8 @@ proto1 = Protocol(("127.0.0.1", 1337), GENESIS_BLOCK, 1337)
 proto2 = Protocol(("127.0.0.1", 1337), GENESIS_BLOCK, 1338)
 miner1 = Miner(proto1, reward_key)
 miner2 = Miner(proto2, reward_key)
-miner2.chain_changed()
-miner1.chain_changed()
+miner2.start_mining()
+miner1.start_mining()