Noticed something in the method Part 4: FindUnspentTransactions. Maybe I'm missing something obvious but can someone please correct me if I'm wrong.
In the block of code below, shouldn't we get the spent outputs before we loop through tx.Vout? Otherwise spentTXOs[txID] will always be nil?
for _, tx := range block.Transactions {
txID := hex.EncodeToString(tx.ID)
Outputs:
for outIdx, out := range tx.Vout {
// Was the output spent?
if spentTXOs[txID] != nil {
for _, spentOut := range spentTXOs[txID] {
if spentOut == outIdx {
continue Outputs
}
}
}
if out.CanBeUnlockedWith(address) {
unspentTXs = append(unspentTXs, *tx)
}
}
if tx.IsCoinbase() == false {
for _, in := range tx.Vin {
if in.CanUnlockOutputWith(address) {
inTxID := hex.EncodeToString(in.Txid)
spentTXOs[inTxID] = append(spentTXOs[inTxID], in.Vout)
}
}
}
}
Noticed something in the method
Part 4: FindUnspentTransactions
. Maybe I'm missing something obvious but can someone please correct me if I'm wrong.In the block of code below, shouldn't we get the spent outputs before we loop through
tx.Vout
? OtherwisespentTXOs[txID]
will always benil
?