HashString BlockDataViewer::getSenderScrAddr(TxIn & txin) const { if (txin.isCoinbase()) return HashString(0); return getPrevTxOut(txin).getScrAddressStr(); }
int64_t BlockDataViewer::getSentValue(TxIn & txin) const { if (txin.isCoinbase()) return -1; return getPrevTxOut(txin).getValue(); }
Tx BlockDataViewer::getPrevTx(TxIn & txin) const { if (txin.isCoinbase()) return Tx(); OutPoint op = txin.getOutPoint(); return getTxByHash(op.getTxHash()); }
TxOut BlockDataViewer::getPrevTxOut(TxIn & txin) const { if (txin.isCoinbase()) return TxOut(); OutPoint op = txin.getOutPoint(); Tx theTx = getTxByHash(op.getTxHash()); if (!theTx.isInitialized()) throw runtime_error("couldn't find prev tx"); uint32_t idx = op.getTxOutIndex(); return theTx.getTxOutCopy(idx); }