Empty anon-input witness stack triggers an out-of-bounds read that crashes `CheckTxInputs` on a synced node
`Consensus::CheckTxInputs` binds a reference to `stack[0]` of a RingCT (anon) input's `scriptWitness.stack` (and `scriptData.stack`) with no non-empty check, so a serialized anon input carrying a valid 33-byte `scriptData` key-image blob but an empty `scriptWitness.stack` survives the wire format and passes every earlier gate — `CheckTransaction`, `IsStandardTx`, and `CheckAnonInputMempoolConflicts`, which guards only `scriptData` — before the ring loop dereferences the garbage reference and the node dies with SIGSEGV. Anon relay is on by default, so any unauthenticated peer can crash a synced mainnet node via the mempool path (`PreChecks`), and a staker can embed the same tx in a valid PoS block to crash every node that validates it (`ConnectBlock`). The matching guard (`bad-anonin-wstack-size`) already existed in `VerifyMLSAG` but ran after `CheckTxInputs`; fixed by hoisting the stack-size guards to the top of the anon branch, before any `stack[0]` read.