|
@@ -12,7 +12,7 @@ class Miner:
|
|
|
def __init__(self, proto, reward_pubkey):
|
|
def __init__(self, proto, reward_pubkey):
|
|
|
self.proto = proto
|
|
self.proto = proto
|
|
|
self.chainbuilder = ChainBuilder(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.is_mining = False
|
|
|
self.cur_miner = None
|
|
self.cur_miner = None
|
|
|
self.reward_pubkey = reward_pubkey
|
|
self.reward_pubkey = reward_pubkey
|
|
@@ -29,10 +29,13 @@ class Miner:
|
|
|
if block is not None:
|
|
if block is not None:
|
|
|
self.proto.broadcast_primary_block(block)
|
|
self.proto.broadcast_primary_block(block)
|
|
|
|
|
|
|
|
- def start_mining(self, block):
|
|
|
|
|
|
|
+ def start_mining(self):
|
|
|
""" Start mining on a new block. """
|
|
""" 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)
|
|
self.cur_miner = ProofOfWork(block)
|
|
|
|
|
|
|
|
def stop_mining(self):
|
|
def stop_mining(self):
|
|
@@ -40,13 +43,3 @@ class Miner:
|
|
|
if self.cur_miner:
|
|
if self.cur_miner:
|
|
|
self.cur_miner.abort()
|
|
self.cur_miner.abort()
|
|
|
self.cur_miner = None
|
|
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)
|
|
|