def deserialize_tx(tx_hash, tx_height, raw_tx): vds = deserialize.BCDataStream() vds.write(raw_tx.decode('hex')) tx = deserialize.parse_Transaction(vds) tx['height'] = tx_height tx['tx_hash'] = tx_hash return tx
def parse_block(raw_block): vds = deserialize.BCDataStream() vds.write(raw_block) block = deserialize.parse_BlockHeader(vds) block["transactions"] = [] number_tx = vds.read_compact_size() for i in xrange(number_tx): tx = deserialize.parse_Transaction(vds) block["transactions"].append(tx) return block
def get_mempool_transaction(self, txid): try: raw_tx = self.quebecoind('getrawtransaction', (txid, 0)) except: return None vds = deserialize.BCDataStream() vds.write(raw_tx.decode('hex')) try: return deserialize.parse_Transaction(vds, is_coinbase=False) except: print_log("ERROR: cannot parse", txid) return None
def deserialize_block(block): txlist = block.get('tx') tx_hashes = [] # ordered txids txdict = {} # deserialized tx is_coinbase = True for raw_tx in txlist: tx_hash = hash_encode(Hash(raw_tx.decode('hex'))) vds = deserialize.BCDataStream() vds.write(raw_tx.decode('hex')) try: tx = deserialize.parse_Transaction(vds, is_coinbase) except: print_log("ERROR: cannot parse", tx_hash) continue tx_hashes.append(tx_hash) txdict[tx_hash] = tx is_coinbase = False return tx_hashes, txdict
def deserialize(self): import deserialize vds = deserialize.BCDataStream() vds.write(self.raw.decode('hex')) self.d = deserialize.parse_Transaction(vds) return self.d
def parse_transaction(raw_tx): vds = deserialize.BCDataStream() vds.write(raw_tx) tx = deserialize.parse_Transaction(vds) tx["hash"] = deserialize.Hash(raw_tx)[::-1] return tx