示例#1
0
 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
示例#2
0
 def initiateGenesisBlock(self):
     genesisTransaction = Transaction("demosender", "demoreciever", 0,
                                      "genesis")
     genesisBlock = Block(
         1, 1526100000.50, [genesisTransaction.getTransactionData()],
         "e86cf0c857ac5554b16gkc1751c80da0za5c48d9e47463bd0f71f26438fd32fe",
         161616)
     self.blockchain.append(genesisBlock)
示例#3
0
    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
示例#4
0
    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