def __init__(self): self.NODE_ID = None self.NODE_NAME = None self.NODE_TYPE = None self.setup_node() # Create the blockchain instance for this node if one doesn't exist if not os.path.exists("blockchain.pickle"): self.blockchain = Blockchain.instance(node_id=self.NODE_ID, node_name=self.NODE_NAME, node_type=self.NODE_TYPE) print("First time booting! Creating genesis block...") self.blockchain.create_genesis() else: print("Successfully identified blockchain on this device. Loading into memory...") loaded_blockchain = self.load_blockchain() loaded_pending_transactions = self.load_pending_transactions() self.blockchain = Blockchain.instance(loaded_blockchain, loaded_pending_transactions, self.NODE_ID, self.NODE_NAME, self.NODE_TYPE) API.instance() Consensus.instance(self.NODE_NAME) self.node_comm = Communication.instance(self.NODE_ID, self.NODE_NAME, self.blockchain, self.NODE_TYPE) self.blockchain.set_communication(self.node_comm) print(self.NODE_ID, self.NODE_NAME) # Send a connection request to other distributor nodes in network if self.NODE_TYPE == 'DISTRIBUTOR': self.node_comm.notify_connection('connect')
def __addshipment(self, params): if len(params) == 0 or params[0] in ["?", "HELP"]: self.__show_command_help( usage="addshipment id srclocation destlocation qty", description="Enters a shipment into the network." ) elif len(params) == 3: shipment_id = params[0] src = params[1] dest = params[2] qty = params[3] confirmation = input( "Are you sure you want to add this shipment to the blockchain? This action is irreversible without the agreement of all network nodes (y/n): ").upper() if confirmation == "Y": print("\nAdding to blockchain...") blockchain = Blockchain.instance() self.node_comm = Communication.instance() transaction = blockchain.create_distributor_transaction(shipment_id, blockchain.get_node_id(), src, dest, qty, blockchain.get_node_type(), blockchain.get_node_name()) self.node_comm.broadcast_transaction(transaction) print("Shipment is now pending.\n> ", end="")
def request_shipment(): response = jsonify(success=False, status_code=500) if request.method == "POST": dest = request.form["dest-location"] qty = request.form["qty"] distributor = request.form["distributor"] print("\nAdding to blockchain...") blockchain = Blockchain.instance() node_comm = Communication.instance() transaction = blockchain.create_client_transaction( blockchain.get_node_name(), dest, qty, distributor, blockchain.get_node_type()) node_comm.broadcast_transaction(transaction) print("Request has been received and is now pending.\n> ", end="") response = jsonify(success=True, status_code=200) return response
def add_shipment(): response = jsonify(success=False, status_code=500) if request.method == "POST": shipment_id = request.form["shipment-id"] src = request.form["src-location"] dest = request.form["dest-location"] qty = request.form["qty"] print("\nAdding to blockchain...") blockchain = Blockchain.instance() node_comm = Communication.instance() transaction = blockchain.create_distributor_transaction( shipment_id, blockchain.get_node_id(), src, dest, qty, blockchain.get_node_type(), blockchain.get_node_name()) node_comm.broadcast_transaction(transaction) print("Shipment is now pending.\n> ", end="") response = jsonify(success=True, status_code=200) return response
def __requestshipment(self, params): if len(params) == 0 or params[0] in ["?", "HELP"]: self.__show_command_help( usage="requestshipment destlocation qty distributor", description="Requests a shipment of vaccines from a given distributor." ) elif len(params) == 3: dest = params[0] qty = params[1] distributor = params[2] confirmation = input( "Are you sure you want to request this shipment? This action is irreversible without the agreement of all network nodes (y/n): ").upper() if confirmation == "Y": print("\nAdding to blockchain...") blockchain = Blockchain.instance() self.node_comm = Communication.instance() transaction = blockchain.create_client_transaction(blockchain.get_node_name(), dest, qty, distributor, blockchain.get_node_type()) self.node_comm.broadcast_transaction(transaction) print("Request has been received and is now pending.\n> ", end="")