Home /
TxPipe /
dolos
May 05, 2-3 PM (1)
May 05, 3-4 PM (3)
May 05, 4-5 PM (0)
May 05, 5-6 PM (1)
May 05, 6-7 PM (0)
May 05, 7-8 PM (0)
May 05, 8-9 PM (0)
May 05, 9-10 PM (0)
May 05, 10-11 PM (0)
May 05, 11-12 AM (0)
May 06, 12-1 AM (0)
May 06, 1-2 AM (0)
May 06, 2-3 AM (0)
May 06, 3-4 AM (0)
May 06, 4-5 AM (0)
May 06, 5-6 AM (0)
May 06, 6-7 AM (0)
May 06, 7-8 AM (0)
May 06, 8-9 AM (0)
May 06, 9-10 AM (0)
May 06, 10-11 AM (0)
May 06, 11-12 PM (0)
May 06, 12-1 PM (0)
May 06, 1-2 PM (0)
May 06, 2-3 PM (0)
May 06, 3-4 PM (0)
May 06, 4-5 PM (0)
May 06, 5-6 PM (0)
May 06, 6-7 PM (0)
May 06, 7-8 PM (0)
May 06, 8-9 PM (0)
May 06, 9-10 PM (0)
May 06, 10-11 PM (0)
May 06, 11-12 AM (0)
May 07, 12-1 AM (0)
May 07, 1-2 AM (0)
May 07, 2-3 AM (0)
May 07, 3-4 AM (0)
May 07, 4-5 AM (0)
May 07, 5-6 AM (0)
May 07, 6-7 AM (0)
May 07, 7-8 AM (0)
May 07, 8-9 AM (0)
May 07, 9-10 AM (0)
May 07, 10-11 AM (0)
May 07, 11-12 PM (0)
May 07, 12-1 PM (0)
May 07, 1-2 PM (0)
May 07, 2-3 PM (0)
May 07, 3-4 PM (0)
May 07, 4-5 PM (0)
May 07, 5-6 PM (1)
May 07, 6-7 PM (1)
May 07, 7-8 PM (1)
May 07, 8-9 PM (0)
May 07, 9-10 PM (0)
May 07, 10-11 PM (0)
May 07, 11-12 AM (0)
May 08, 12-1 AM (0)
May 08, 1-2 AM (0)
May 08, 2-3 AM (0)
May 08, 3-4 AM (0)
May 08, 4-5 AM (0)
May 08, 5-6 AM (0)
May 08, 6-7 AM (0)
May 08, 7-8 AM (0)
May 08, 8-9 AM (0)
May 08, 9-10 AM (0)
May 08, 10-11 AM (0)
May 08, 11-12 PM (0)
May 08, 12-1 PM (0)
May 08, 1-2 PM (0)
May 08, 2-3 PM (0)
May 08, 3-4 PM (0)
May 08, 4-5 PM (0)
May 08, 5-6 PM (0)
May 08, 6-7 PM (0)
May 08, 7-8 PM (0)
May 08, 8-9 PM (0)
May 08, 9-10 PM (0)
May 08, 10-11 PM (0)
May 08, 11-12 AM (0)
May 09, 12-1 AM (0)
May 09, 1-2 AM (0)
May 09, 2-3 AM (0)
May 09, 3-4 AM (0)
May 09, 4-5 AM (0)
May 09, 5-6 AM (0)
May 09, 6-7 AM (0)
May 09, 7-8 AM (0)
May 09, 8-9 AM (0)
May 09, 9-10 AM (0)
May 09, 10-11 AM (0)
May 09, 11-12 PM (0)
May 09, 12-1 PM (0)
May 09, 1-2 PM (0)
May 09, 2-3 PM (0)
May 09, 3-4 PM (0)
May 09, 4-5 PM (0)
May 09, 5-6 PM (0)
May 09, 6-7 PM (0)
May 09, 7-8 PM (0)
May 09, 8-9 PM (0)
May 09, 9-10 PM (0)
May 09, 10-11 PM (0)
May 09, 11-12 AM (0)
May 10, 12-1 AM (0)
May 10, 1-2 AM (0)
May 10, 2-3 AM (0)
May 10, 3-4 AM (0)
May 10, 4-5 AM (0)
May 10, 5-6 AM (0)
May 10, 6-7 AM (0)
May 10, 7-8 AM (0)
May 10, 8-9 AM (0)
May 10, 9-10 AM (0)
May 10, 10-11 AM (0)
May 10, 11-12 PM (0)
May 10, 12-1 PM (0)
May 10, 1-2 PM (0)
May 10, 2-3 PM (0)
May 10, 3-4 PM (0)
May 10, 4-5 PM (0)
May 10, 5-6 PM (0)
May 10, 6-7 PM (0)
May 10, 7-8 PM (0)
May 10, 8-9 PM (0)
May 10, 9-10 PM (0)
May 10, 10-11 PM (0)
May 10, 11-12 AM (0)
May 11, 12-1 AM (0)
May 11, 1-2 AM (0)
May 11, 2-3 AM (0)
May 11, 3-4 AM (0)
May 11, 4-5 AM (0)
May 11, 5-6 AM (0)
May 11, 6-7 AM (0)
May 11, 7-8 AM (0)
May 11, 8-9 AM (0)
May 11, 9-10 AM (0)
May 11, 10-11 AM (0)
May 11, 11-12 PM (0)
May 11, 12-1 PM (0)
May 11, 1-2 PM (0)
May 11, 2-3 PM (0)
May 11, 3-4 PM (0)
May 11, 4-5 PM (0)
May 11, 5-6 PM (0)
May 11, 6-7 PM (0)
May 11, 7-8 PM (0)
May 11, 8-9 PM (0)
May 11, 9-10 PM (0)
May 11, 10-11 PM (1)
May 11, 11-12 AM (0)
May 12, 12-1 AM (0)
May 12, 1-2 AM (0)
May 12, 2-3 AM (0)
May 12, 3-4 AM (0)
May 12, 4-5 AM (0)
May 12, 5-6 AM (0)
May 12, 6-7 AM (0)
May 12, 7-8 AM (0)
May 12, 8-9 AM (0)
May 12, 9-10 AM (0)
May 12, 10-11 AM (0)
May 12, 11-12 PM (0)
May 12, 12-1 PM (0)
May 12, 1-2 PM (1)
May 12, 2-3 PM (0)
10 commits this week
May 05, 2026
-
May 12, 2026
fix: Add Van Rossen preview hardfork
feat(watch): implement has_certificate pattern matching
Add certificate-based filtering to the watch module, enabling clients to monitor transactions containing specific certificate types (stake registration, delegation, pool registration, DRep, etc). Includes tests using real mainnet delegation tx CBOR data.
feat: dump history can handle height and hash as start_token too
fix: improve search of utxo by full asset & fail on missing policy id
fix(cardano): short-circuit ewrap replay between boundary phases (#991)
refactor(cardano): rename is_replay_noop to is_complete, share with initialize
The predicate was already derived from start_shard >= total_shards but
its name described the consequence in finalize ("replay no-op") rather
than the state ("shard work is complete"). With the state framing, the
same predicate is meaningful in initialize too: assign the fields
unconditionally from progress, then check is_complete() for the
short-circuit. Removes the special-cased branch that previously set
start_shard = p.total inline.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
docs(cardano): address coderabbit review on PR #991
- Fix EpochWrapUpV2 docstring: variant index is 42, not 40 (counting
past EWrapProgress=39, EStartProgress=40, RupdProgress=41).
- Add TODO(wal-compat) block above EpochWrapUpV2 mirroring the V1
block, so the V3 cutover has the same documented removal trigger
("no on-disk WAL row references variant index 42").
- Document is_replay_noop() precondition: must be called after
initialize(); a freshly-new()'d unit would spuriously report true.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
fix(cardano): short-circuit ewrap replay between boundary phases
EpochState had no flag distinguishing "EWRAP not started" from "EWRAP done, ESTART pending finalize" — both showed `ewrap_progress = None`. A crash between EWRAP finalize and ESTART finalize left the cursor behind the boundary block (cursor only advances at ESTART finalize), so the next live block re-triggered EWRAP for the same boundary. The replay ran visitors over partially-rotated accounts and panicked at `PoolDelegatorRetire::apply`'s `unreachable!`. Add `EpochWrapUpV3` that no longer clears `ewrap_progress` on apply — the field stays at `Some(total, total)` after EWRAP finalize and is cleared only by `EpochTransitionV2` at ESTART finalize. That single- writer invariant makes `committed == total` the unambiguous "EWRAP done, ESTART pending" marker. `EwrapWorkUnit::initialize` reads it, sets `start_shard = total_shards` to skip the shard loop, and a new `is_replay_noop()` accessor lets `finalize` no-op too. The next boundary trigger falls through to ESTART, which resumes from `estart_progress.committed` via the existing per-shard path. V2 stays around `#[deprecated]` for WAL replay of historical rows, mirroring the V1 → V2 cutover pattern. Follow-up TODOs left at `PoolDelegatorRetire::apply` and `DRepDelegatorDrop::apply` for the deeper hardening (read via `snapshot_at(self.epoch)`; guard schedule on `entity.epoch() == Some(self.epoch)`) — the recovery short-circuit removes the known trigger but the visitor/delta read divergence is still fragile. Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>