[bug] validator: late dest-tip snapshot rejects honest fulfillment after RPC retry
Component: allways/validator/chain_verification.py
Summary
observe_initiation() records the dest-chain tip on first successful RPC. If the first snapshot fails and the miner fulfills before a retry succeeds, the snapshot can be taken after the payout block. is_dest_tx_fresh() then rejects the honest tx as a replay, blocking confirm_swap and risking timeout/slash.
Suggested fix
When swap.to_tx_block > 0, cap the stored tip with min(tip, swap.to_tx_block).
[bug] validator: late dest-tip snapshot rejects honest fulfillment after RPC retry
Component:
allways/validator/chain_verification.pySummary
observe_initiation()records the dest-chain tip on first successful RPC. If the first snapshot fails and the miner fulfills before a retry succeeds, the snapshot can be taken after the payout block.is_dest_tx_fresh()then rejects the honest tx as a replay, blockingconfirm_swapand risking timeout/slash.Suggested fix
When
swap.to_tx_block > 0, cap the stored tip withmin(tip, swap.to_tx_block).