def on_message(ws, message): message_decoded = json.loads(message) global blockchain if (message_decoded['message_type'] == 'transaction'): transaction_json = message_decoded['data'] transaction = Transaction.from_json(transaction_json) if (transaction.validate_transaction() == True): block_f = Thread(target=block_fanagle, args = (ws, transaction)) block_f.start() elif (message_decoded['message_type'] == "sync_request"): print ("blockchain requested") ws.send(blockchain_upload_message()) elif (message_decoded['message_type'] == "blockchain_upload"): recieved_blockchain = BlockChain.from_json(message_decoded['blockchain']) new_blockchain = BlockChain.sync_blockchain(blockchain, recieved_blockchain) blockchain = new_blockchain blockchain.save_blockchain('./blockchain/blockchain.json') print () elif (message_decoded['message_type'] == 'new_block'): print ("new block!") block_json = message_decoded['block'] try: block = Block.from_json(block_json) if (block.valid_block() == True): temp_blocks = copy.copy(blockchain.blocks) temp_blocks.append(block) temp_block_chain = BlockChain(temp_blocks) if (temp_block_chain.validate_chain() == True): print ("valid new blockchain") blockchain.blocks.append(block) else: print("invalid chain. Not updated") else: print ("invalid block") except json.decoder.JSONDecodeError: print ("invalid block") blockchain.save_blockchain('./blockchain/blockchain.json')
def sync_blockchain(broadcast_message, payload): print("preparing for sync") global blockchain recv_blockchain_raw = json.loads(payload["data"]) recieved_blockchain = BlockChain.from_json(payload["data"]) synced_blockchain = BlockChain.sync_blockchain(blockchain, recieved_blockchain) blockchain = synced_blockchain blockchain.save_blockchain('./blockchain/blockchain.json') print("blockchain synced") print()
def on_message(ws, message): message_decoded = json.loads(message) global blockchain if (message_decoded['message_type'] == "message"): print(message_decoded['message']) elif (message_decoded['message_type'] == "blockchain_upload"): print("recieved blockchain") recieved_blockchain = BlockChain.from_json( message_decoded['blockchain']) new_blockchain = BlockChain.sync_blockchain(blockchain, recieved_blockchain) print() blockchain = new_blockchain blockchain.save_blockchain('./blockchain/blockchain.json') print() sys.stdout.write(prompt_string()) sys.stdout.flush() elif (message_decoded['message_type'] == "sync_request"): print("blockchain requested") ws.send(blockchain_upload_message()) print() sys.stdout.write(prompt_string()) sys.stdout.flush() elif (message_decoded['message_type'] == "new_block"): print() print("New Block Recieved!") block_json = message_decoded['block'] try: block = Block.from_json(block_json) if (block.valid_block() == True): temp_blocks = copy.copy(blockchain.blocks) temp_blocks.append(block) temp_block_chain = BlockChain(temp_blocks) print(temp_block_chain) if (temp_block_chain.validate_chain() == True): print("valid new blockchain") blockchain.blocks.append(block) else: print("invalid chain. Not updated") else: print("invalid block") except json.decoder.JSONDecodeError: print("invalid block") blockchain.save_blockchain('./blockchain/blockchain.json') print() sys.stdout.write(prompt_string()) sys.stdout.flush()