Beispiel #1
0
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')
Beispiel #2
0
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()
Beispiel #3
0
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()