Пример #1
0
 def __init__(self, blockchain, prev_hash, miner_address):
     '''
         Class for the current work block.
         Functions such as "output_used" search both this AND the passed blockchain object.
     '''
     self.BLOCKCHAIN = blockchain.blockchain
     self.hash = ""
     self.block = {}  #TODO get from IRC
     self.block['nonce'] = ""
     self.block['prev'] = prev_hash
     self.block['start_time'] = str(int(time()))
     self.block['solve_time'] = ""
     self.block['transactions'] = {
         "0000": {  # Temp value
             "time":
             str(int(time())),
             'ins': [],
             'outs': [{
                 "address": miner_address,
                 "amount": util.padint(REWARD_AMOUNT)
             }]
         }
     }
     # Set reward transaction hash
     self.block['transactions'][util.gen_tx_hash(
         self.block['transactions']
         ["0000"])] = self.block['transactions']["0000"]
     del self.block['transactions']["0000"]
Пример #2
0
 def output_used(self, block, hash, i):
     for tHash, transaction in block['transactions'].items():
         for input in transaction['ins']:
             if input['tx'] == hash and input['tx_i'] == i and (
                     util.gen_tx_hash(transaction) != tHash):
                 return (tHash, i)
     return False
Пример #3
0
 def add_tx(self, tx):
     hash = util.gen_tx_hash(tx)
     if self.get_tx_h(hash):
         raise TransactionExistsException("TransactionExistsException")
     self.tx_inputs_usable(tx)
     self.tx_inputs_signed(tx)
     change = self.tx_amounts_valid(tx)
     assert change != -1  # not a coinbase transaction
     for address, amount in change.items():
         tx['outs'].append({"address": address, "amount": amount})
     print("DEBUG")
     print(tx)
Пример #4
0
 def add_tx(self,tx):
     hash = util.gen_tx_hash(tx)
     if self.get_tx_h(hash):
         raise TransactionExistsException("TransactionExistsException")
     self.tx_inputs_usable(tx)
     self.tx_inputs_signed(tx)
     change = self.tx_amounts_valid(tx)
     assert change != -1 # not a coinbase transaction
     for address,amount in change.items():
         tx['outs'].append({
                             "address":address,
                             "amount":amount
                           })
     print("DEBUG")
     print(tx)
Пример #5
0
 def __init__(self,blockchain,prev_hash,miner_address):
     '''
         Class for the current work block.
         Functions such as "output_used" search both this AND the passed blockchain object.
     '''
     self.BLOCKCHAIN = blockchain.blockchain
     self.hash = ""
     self.block = {} #TODO get from IRC
     self.block['nonce'] = ""
     self.block['prev'] = prev_hash
     self.block['start_time'] = str(int(time()))
     self.block['solve_time'] = ""
     self.block['transactions'] = {"0000":{ # Temp value
             "time":str(int(time())),
             'ins':[],
             'outs':[{
             "address":miner_address,
             "amount":util.padint(REWARD_AMOUNT)
             }]
         }
     }
     # Set reward transaction hash
     self.block['transactions'][util.gen_tx_hash(self.block['transactions']["0000"])] = self.block['transactions']["0000"]
     del self.block['transactions']["0000"]
Пример #6
0
 def output_used(self,block,hash,i):
     for tHash,transaction in block['transactions'].items():
         for input in transaction['ins']:
             if input['tx'] == hash and input['tx_i'] == i and (util.gen_tx_hash(transaction) != tHash):
                 return (tHash,i)
     return False
Пример #7
0
 def verify_tx_integrity(self,tHash,transaction):
     if util.gen_tx_hash(transaction) != tHash:
         raise IntegrityException('False transaction: ' + tHash)
     return True
Пример #8
0
 def verify_tx_integrity(self, tHash, transaction):
     if util.gen_tx_hash(transaction) != tHash:
         raise IntegrityException('False transaction: ' + tHash)
     return True