def handle(self): server_interface.send_log('[%s] is connected\n' % self.client_address[0]) global save save = [] try: username = self.registerUsername() for user in self.userman.users: if user is not username: self.request.send(("[%s] has joined." % user).encode()) msg = self.request.recv(1024) while msg: data = msg.decode('utf-8') print(data) data_list = data.split(" ") if data_list[0] == username and data_list[ 1] in self.userman.users: conn, addr = self.userman.users[data_list[1]] #conn.send(data.encode()) save.append(data) if len(save) % 10 == 0: for name in self.minerman.users: conn, addr = self.minerman.users[name] for i in range(0, 10): tx = save[i] print(tx) conn.send(tx.encode()) time.sleep(0.01) for i in range(10): save.pop(0) time.sleep(3) server_interface.send_log('Block Received\n') fr = open('block.txt', 'r') server_interface.send_log( 'Successfully Opened Block\n') last_dict = fr.readlines()[-1].rstrip() hash, signature, public_key = Block.brick_hash( last_dict) server_interface.send_log('Validation Process: ') server_interface.send_log( str( KeyGenerator.validation( last_dict.encode('utf-8'), signature, KeyGenerator.readKey())) + " ") server_interface.send_log( 'Send Block to Participants\n') self.userman.sendMessageToAll( 'Validated Block Sent\n') break else: conn.send(data.encode()) else: conn, addr = self.userman.users[username] conn.send("Invalid transaction".encode()) msg = self.request.recv(1024) except Exception as e: server_interface.send_log('in error\n') server_interface.send_log(str(e) + "\n") server_interface.send_log('[%s] Termination\n' % self.client_address[0]) self.userman.removeUser(username)