def start(self): # start network thread self.bitcoin_network = BitcoinNetwork(self) self.bitcoin_network.start() def update_status_bar(): nonlocal self self.connection_status.setText('Connected to {}/{} nodes'.format(self.bitcoin_network.count_fully_connected_peers(), self.bitcoin_network.num_peer_goal)) with self.transactions_per_second_deque_lock: now = time.time() while len(self.transactions_per_second_deque): if (now - self.transactions_per_second_deque[0]) >= BitmsgMainWindow.TRANSACTIONS_PER_SECOND_WINDOW: self.transactions_per_second_deque.popleft() continue break if len(self.transactions_per_second_deque) == 0: self.transactions_per_second.setText("Network is idle") else: self.transactions_per_second.setText("{:.2f} tx/sec".format(round(len(self.transactions_per_second_deque)/BitmsgMainWindow.TRANSACTIONS_PER_SECOND_WINDOW, 2))) self.connection_status_timer = core.QTimer() self.connection_status_timer.timeout.connect(update_status_bar) self.connection_status_timer.start(2333)
def main(): cb = Callbacks() # Handle some simple command-line arguments # -w Key : watch an RC4-encrypted channel # -p : watch the Public unencrypted channel # -t tx : try decoding and processing transaction 'tx' (hex) i = 1 done = False while i < len(sys.argv): c = sys.argv[i] if c == '-w': i += 1 cb.watch_rc4(sys.argv[i].encode('utf8')) elif c == '-a': i += 1 cb.watch_aes128(sys.argv[i].encode('utf8')) elif c == '-b': i += 1 cb.watch_aes256(sys.argv[i].encode('utf8')) elif c == '-p': cb.watch_public() elif c == '-r': i += 1 private_key = load_private_key( open(sys.argv[i], 'rb').read().decode('ascii')) cb.watch_rsa(private_key) elif c == '-t': i += 1 cb.got_transaction( Transaction.unserialize( Bitcoin.hexstring_to_bytes(sys.argv[i], reverse=False))[0]) done = True else: print('invalid command line argument: {}'.format(c)) return i += 1 if done: return # start network thread bitcoin_network = BitcoinNetwork(cb) bitcoin_network.start() try: while True: time.sleep(1) except KeyboardInterrupt: bitcoin_network.stop() bitcoin_network.join() raise