package org.ripple.power.txns.btc; import java.io.EOFException; public class StoredTransaction { /** Serialized transaction */ private final byte[] txData; /** Transaction hash */ private final Sha256Hash hash; /** Parent transaction hash */ private Sha256Hash parentHash; /** Time when transaction was broadcast */ private final long txTimeStamp; /** * Creates a new stored transaction * * @param tx Transaction */ public StoredTransaction(Transaction tx) { hash = tx.getHash(); txData = tx.getBytes(); txTimeStamp = System.currentTimeMillis()/1000; } /** * Return the transaction * * @return Transaction */ public Transaction getTransaction() { SerializedBuffer txBuffer = new SerializedBuffer(txData); Transaction tx; try { tx = new Transaction(txBuffer); } catch (EOFException | VerificationException exc) { throw new RuntimeException("Unable to get transaction: "+exc.getMessage()); } return tx; } /** * Returns the transaction hash * * @return Transaction hash */ public Sha256Hash getHash() { return hash; } /** * Returns the parent transaction hash. The parent is a transaction whose output is * being spent by this transaction. This is used when tracking orphan transactions. * * @return Parent transaction hash or null if there is no parent */ public Sha256Hash getParent() { return parentHash; } /** * Sets the parent transaction hash * * @param parentHash Parent transaction hash */ public void setParent(Sha256Hash parentHash) { this.parentHash = parentHash; } /** * Returns the serialized transaction data * * @return Serialized byte stream */ public byte[] getBytes() { return txData; } /** * Returns the transaction timestamp * * @return Time when transaction was broadcast */ public long getTimeStamp() { return txTimeStamp; } }