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"]
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
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)
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)
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"]
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
def verify_tx_integrity(self,tHash,transaction): if util.gen_tx_hash(transaction) != tHash: raise IntegrityException('False transaction: ' + tHash) return True
def verify_tx_integrity(self, tHash, transaction): if util.gen_tx_hash(transaction) != tHash: raise IntegrityException('False transaction: ' + tHash) return True