예제 #1
0
파일: network.py 프로젝트: flatfly/electrum
 def on_notify_header(self, interface, header):
     height = header.get('block_height')
     if not height:
         return
     interface.tip_header = header
     interface.tip = height
     if interface.mode != 'default':
         return
     b = blockchain.check_header(header)
     if b:
         interface.blockchain = b
         self.switch_lagging_interface()
         self.notify('interfaces')
         return
     b = blockchain.can_connect(header)
     if b:
         interface.blockchain = b
         b.save_header(header)
         self.switch_lagging_interface()
         self.notify('updated')
         self.notify('interfaces')
         return
     tip = max([x.height() for x in self.blockchains.values()])
     if tip >=0:
         interface.mode = 'backward'
         interface.bad = height
         interface.bad_header = header
         self.request_header(interface, min(tip, height - 1))
     else:
         chain = self.blockchains[0]
         if chain.catch_up is None:
             chain.catch_up = interface
             interface.mode = 'catch_up'
             interface.blockchain = chain
             self.request_header(interface, 0)
예제 #2
0
 def on_notify_header(self, interface, header):
     height = header.get('block_height')
     if not height:
         return
     interface.tip_header = header
     interface.tip = height
     if interface.mode != 'default':
         return
     b = blockchain.check_header(header)
     if b:
         interface.blockchain = b
         self.switch_lagging_interface()
         self.notify('interfaces')
         return
     b = blockchain.can_connect(header)
     if b:
         interface.blockchain = b
         b.save_header(header)
         self.switch_lagging_interface()
         self.notify('updated')
         self.notify('interfaces')
         return
     tip = max([x.height() for x in self.blockchains.values()])
     if tip >=0:
         interface.mode = 'backward'
         interface.bad = height
         interface.bad_header = header
         self.request_header(interface, min(tip, height - 1))
     else:
         chain = self.blockchains[0]
         if chain.catch_up is None:
             chain.catch_up = interface
             interface.mode = 'catch_up'
             interface.blockchain = chain
             self.request_header(interface, 0)
예제 #3
0
 def on_notify_header(self, interface, header):
     height = header.get('block_height')
     if not height:
         return
     interface.tip_header = header
     interface.tip = height
     if interface.mode != 'default':
         return
     b = blockchain.check_header(header)
     if b:
         interface.blockchain = b
         self.notify('interfaces')
         self.switch_lagging_interface()
         return
     b = blockchain.can_connect(header)
     if b:
         interface.blockchain = b
         b.save_header(header)
         self.notify('updated')
         self.notify('interfaces')
         self.switch_lagging_interface()
         return
     interface.mode = 'backward'
     interface.bad = height
     interface.bad_header = header
     self.request_header(interface, height - 1) # should be max(heights)