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
* feat(relayer): persist Ethereum scan progress via checkpoints
The relayer only persisted its Ethereum scan offset as a side effect of
processing a deposit, so block ranges with no deposits never advanced the
persisted offset — on restart the poller re-scanned from the last block that
happened to contain a deposit.
The poller now emits a scan-progress checkpoint after every fully scanned
slice (including empty ones), carried on the existing handler as a
DepositEvent{Checkpoint: true}. The Ethereum source turns it into a checkpoint
relayer.Event that rides the same in-order channel behind that slice's
deposits; the processor persists the offset from it and does no transfer work.
Because the checkpoint is delivered in order after the slice's deposits — and
each deposit is durably recorded via CreateTransfer (idempotent) before submit —
the offset never advances past an unprocessed deposit, so nothing is missed or
double-processed. Carrying the signal on the existing handler keeps the
EthereumBridgeClient interface (and its mock) unchanged.
* fix(relayer): advance scan block only after checkpoint is accepted
Move currentBlock/setLastScannedBlock past the checkpoint handler call so a
failed checkpoint re-scans and re-checkpoints the same range on the next tick
instead of skipping its watermark, matching the documented intent.
* fix(e2e): retry P2 transfers on CONTRACT_NOT_FOUND contention
0 commit comments