def loadBlockchainInMemoryFromJSON(self, bchain, length): """ Loads blockchain JSON into blockchain data strucutre in memory :return: blockchain list """ idx = 0 bchainList = [] while length > idx: block = bchain[idx] prevBlockHash = block["block"]["previousBlockHash"] blocknumber = int(block["block"]["blocknumber"]) proof = int(block["block"]["proof"]) timestamp = float(block["block"]["timestamp"]) transactions = block["block"]["transactions"] tranLen = len(transactions) tranListObj = [] for i in range(0, tranLen): trx = transactions[i]["transactiondetail"] trxMsg = trx["message"] trxQ = int(trx["quantity"]) trxRec = trx["recipient"] trxSender = trx["sender"] trxObj = Transaction(trxSender, trxRec, trxQ, trxMsg) tranListObj.append(trxObj.getTransactionData()) block = Block(blocknumber, timestamp, tranListObj, prevBlockHash, proof) bchainList.append(block) idx = idx + 1 return bchainList
def initiateGenesisBlock(self): genesisTransaction = Transaction("demosender", "demoreciever", 0, "genesis") genesisBlock = Block( 1, 1526100000.50, [genesisTransaction.getTransactionData()], "e86cf0c857ac5554b16gkc1751c80da0za5c48d9e47463bd0f71f26438fd32fe", 161616) self.blockchain.append(genesisBlock)
def addUnconfirmedTransaction(self, senderAddress, recieverAddress, quantity, message): """ Creates a new transaction to go into the next mined Block :param senderAddress: Address of the Sender :param recieverAddress: Address of the Recipient :param quantity: quantity to get exchanged from sender to reciever :return: The index of the Future Block which will hold this transaction """ transaction = Transaction(senderAddress, recieverAddress, int(quantity), message) self.unConfirmedTransactionList.append( transaction.getTransactionData()) #Future block index = length of blockchain + 1 return len(self.blockchain) + 1
def addTransactionInConfirmedBlock(self, senderAddress, recieverAddress, quantity, message, blocknumber): """ Creates a new transaction to go into the next mined Block :param senderAddress: Address of the Sender :param recieverAddress: Address of the Recipient :param quantity: quantity to get exchanged from sender to reciever :param message: message in text :blocknumber: block in which new transaction is going to be added :return: True """ transaction = Transaction(senderAddress, recieverAddress, int(quantity), message) listt = self.blockchain[blocknumber - 1].transactionList listt.append(transaction.getTransactionData()) self.blockchain[blocknumber - 1].transactionList = listt return True