You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(compressed-token): validate stale ATA decompress replays
When the input bloom filter detects an already-spent compressed ATA
input, the idempotent path returned Ok(()) without re-checking the
compression entry. A wallet owner could replay the spent input under a
different mint or destination and have it succeed as a no-op, leaving
indexers with a fake decompress event.
Add validate_idempotent_ata_decompress_replay, called only on the
bloom-filter-hit branch, which enforces:
- compression amount equals input amount
- compression mint pubkey equals input mint pubkey
- destination is the canonical ATA derived from (recorded wallet,
program id, mint, recorded bump)
- destination CToken's stored mint equals the compression mint
(loaded via Token::from_account_info_checked)
A failing replay now returns the matching TokenError variant instead of
a silent Ok(()). Honest replays with identical fields still succeed.
0 commit comments