A spendable input must reference an existing unspent output and satisfy its locking conditions.
Wallet logic chooses inputs to cover outputs and fees; selection policy is distinct from consensus validity.
The exact VTA wallet coin-selection heuristic should be pinned to the target release before claiming a specific algorithm.
| Area | Finding | Status |
|---|---|---|
| UTXO existence | The reviewed VTA validation path checks whether referenced inputs exist before accepting them. | Source path verified |
| Already-spent inputs | The reviewed path uses input-state checks and rejects already-spent inputs. | Source path verified |
| Coin selection boundary | Input selection is a wallet policy decision; it is not itself a consensus rule. | Architecture |
| Value accounting | Reviewed validation checks input/output amounts and fee-related value constraints. | Source path verified |
| Change output | Change creation is wallet behavior and should be distinguished from consensus validation. | Wallet release-specific |
| Dust / standardness | Previously reviewed VTA standardness and dust checks can affect relay acceptance without being identical to basic UTXO existence. | Source path verified |
| Exact coin-selection heuristic | No release-pinned reconstruction of the VTA wallet's complete selection heuristic is asserted here. | Needs source pin |
| Independent selection tests | No controlled wallet corpus was executed to measure input-count, change or fee behavior. | Not measured |
1. Pin exact VTA Core release / commit. 2. Create a disposable wallet with several controlled UTXOs. 3. Create a payment smaller than one UTXO. 4. Record selected inputs, fee and change. 5. Repeat with fragmented UTXOs. 6. Repeat with exact-value and near-exact-value combinations. 7. Test insufficient funds. 8. Test dust/change thresholds. 9. Decode the resulting transaction. 10. Submit to a local VTA node and compare wallet construction with node validation.