mirror of
https://github.com/Xahau/xahaud.git
synced 2026-04-29 15:37:46 +00:00
Introduce shadow tickets for export replay protection: - ltSHADOW_TICKET ledger entry: account-owned, keyed by account + ticket sequence. Fields: sfAccount, sfTicketSequence, sfTransactionHash, sfLedgerSequence, sfOwnerNode. - ExportLedgerOps::createShadowTicket(): creates shadow ticket when exported tx has sfTicketSequence. Charges owner reserve. Called from both hook xport() path and Export transactor. - ExportLedgerOps::cancelShadowTicket(): deletes shadow ticket, frees reserve. Used by xport_cancel hook API. - xport_cancel(ticket_seq) hook API: allows hooks to cancel shadow tickets for exports that will never get a callback. - InvariantCheck: add ltSHADOW_TICKET to valid entry types. - Test: verify shadow ticket creation with correct fields and owner count bump via ttEXPORT with TicketSequence.