Home / TxPipe / dolos
May 16, 12-1 PM (0)
May 16, 1-2 PM (0)
May 16, 2-3 PM (0)
May 16, 3-4 PM (0)
May 16, 4-5 PM (0)
May 16, 5-6 PM (0)
May 16, 6-7 PM (0)
May 16, 7-8 PM (0)
May 16, 8-9 PM (0)
May 16, 9-10 PM (0)
May 16, 10-11 PM (0)
May 16, 11-12 AM (0)
May 17, 12-1 AM (0)
May 17, 1-2 AM (0)
May 17, 2-3 AM (0)
May 17, 3-4 AM (0)
May 17, 4-5 AM (0)
May 17, 5-6 AM (0)
May 17, 6-7 AM (0)
May 17, 7-8 AM (0)
May 17, 8-9 AM (0)
May 17, 9-10 AM (0)
May 17, 10-11 AM (0)
May 17, 11-12 PM (0)
May 17, 12-1 PM (0)
May 17, 1-2 PM (0)
May 17, 2-3 PM (0)
May 17, 3-4 PM (0)
May 17, 4-5 PM (0)
May 17, 5-6 PM (0)
May 17, 6-7 PM (0)
May 17, 7-8 PM (0)
May 17, 8-9 PM (0)
May 17, 9-10 PM (0)
May 17, 10-11 PM (0)
May 17, 11-12 AM (0)
May 18, 12-1 AM (0)
May 18, 1-2 AM (0)
May 18, 2-3 AM (0)
May 18, 3-4 AM (0)
May 18, 4-5 AM (0)
May 18, 5-6 AM (0)
May 18, 6-7 AM (0)
May 18, 7-8 AM (0)
May 18, 8-9 AM (0)
May 18, 9-10 AM (0)
May 18, 10-11 AM (0)
May 18, 11-12 PM (0)
May 18, 12-1 PM (0)
May 18, 1-2 PM (0)
May 18, 2-3 PM (0)
May 18, 3-4 PM (0)
May 18, 4-5 PM (0)
May 18, 5-6 PM (0)
May 18, 6-7 PM (0)
May 18, 7-8 PM (0)
May 18, 8-9 PM (0)
May 18, 9-10 PM (0)
May 18, 10-11 PM (0)
May 18, 11-12 AM (0)
May 19, 12-1 AM (0)
May 19, 1-2 AM (0)
May 19, 2-3 AM (0)
May 19, 3-4 AM (0)
May 19, 4-5 AM (0)
May 19, 5-6 AM (0)
May 19, 6-7 AM (0)
May 19, 7-8 AM (0)
May 19, 8-9 AM (0)
May 19, 9-10 AM (0)
May 19, 10-11 AM (0)
May 19, 11-12 PM (0)
May 19, 12-1 PM (0)
May 19, 1-2 PM (0)
May 19, 2-3 PM (0)
May 19, 3-4 PM (0)
May 19, 4-5 PM (0)
May 19, 5-6 PM (0)
May 19, 6-7 PM (0)
May 19, 7-8 PM (0)
May 19, 8-9 PM (0)
May 19, 9-10 PM (0)
May 19, 10-11 PM (0)
May 19, 11-12 AM (0)
May 20, 12-1 AM (0)
May 20, 1-2 AM (0)
May 20, 2-3 AM (0)
May 20, 3-4 AM (0)
May 20, 4-5 AM (0)
May 20, 5-6 AM (0)
May 20, 6-7 AM (0)
May 20, 7-8 AM (0)
May 20, 8-9 AM (0)
May 20, 9-10 AM (0)
May 20, 10-11 AM (0)
May 20, 11-12 PM (0)
May 20, 12-1 PM (0)
May 20, 1-2 PM (0)
May 20, 2-3 PM (0)
May 20, 3-4 PM (0)
May 20, 4-5 PM (0)
May 20, 5-6 PM (0)
May 20, 6-7 PM (0)
May 20, 7-8 PM (0)
May 20, 8-9 PM (0)
May 20, 9-10 PM (0)
May 20, 10-11 PM (0)
May 20, 11-12 AM (0)
May 21, 12-1 AM (0)
May 21, 1-2 AM (0)
May 21, 2-3 AM (0)
May 21, 3-4 AM (0)
May 21, 4-5 AM (0)
May 21, 5-6 AM (0)
May 21, 6-7 AM (0)
May 21, 7-8 AM (0)
May 21, 8-9 AM (0)
May 21, 9-10 AM (0)
May 21, 10-11 AM (0)
May 21, 11-12 PM (0)
May 21, 12-1 PM (1)
May 21, 1-2 PM (1)
May 21, 2-3 PM (0)
May 21, 3-4 PM (0)
May 21, 4-5 PM (0)
May 21, 5-6 PM (0)
May 21, 6-7 PM (2)
May 21, 7-8 PM (0)
May 21, 8-9 PM (0)
May 21, 9-10 PM (0)
May 21, 10-11 PM (0)
May 21, 11-12 AM (0)
May 22, 12-1 AM (0)
May 22, 1-2 AM (0)
May 22, 2-3 AM (0)
May 22, 3-4 AM (0)
May 22, 4-5 AM (0)
May 22, 5-6 AM (0)
May 22, 6-7 AM (0)
May 22, 7-8 AM (0)
May 22, 8-9 AM (0)
May 22, 9-10 AM (0)
May 22, 10-11 AM (0)
May 22, 11-12 PM (0)
May 22, 12-1 PM (0)
May 22, 1-2 PM (0)
May 22, 2-3 PM (1)
May 22, 3-4 PM (0)
May 22, 4-5 PM (0)
May 22, 5-6 PM (0)
May 22, 6-7 PM (0)
May 22, 7-8 PM (1)
May 22, 8-9 PM (0)
May 22, 9-10 PM (0)
May 22, 10-11 PM (0)
May 22, 11-12 AM (0)
May 23, 12-1 AM (0)
May 23, 1-2 AM (0)
May 23, 2-3 AM (0)
May 23, 3-4 AM (0)
May 23, 4-5 AM (0)
May 23, 5-6 AM (0)
May 23, 6-7 AM (0)
May 23, 7-8 AM (0)
May 23, 8-9 AM (0)
May 23, 9-10 AM (0)
May 23, 10-11 AM (0)
May 23, 11-12 PM (0)
May 23, 12-1 PM (0)
6 commits this week May 16, 2026 - May 23, 2026
refactor(grpc): dedupe block_ref lookup, hoist era summary, fix double decode
Addresses review feedback on the per-UTxO block_ref population added in the
previous commit:

- Introduce `AsyncQueryFacade::block_meta_by_tx_hash` returning chain-point
  metadata (`BlockRefMeta`) decoded once inside the blocking task. Eliminates
  the redundant `MultiEraBlock::decode` previously performed in the gRPC
  caller. (review A-01)

- Hoist `load_era_summary` to the request handler scope via a new shared
  `serve::grpc::block_refs` module. Previously `get_slot_timestamp` reloaded
  the era summary from state on every UTxO; now it runs once per request.
  (review A-02)

- Deduplicate block lookups by source tx hash. A `search_utxos` page whose
  UTxOs cluster on M unique txs now does M lookups instead of N. (review A-03)

- Propagate storage failures as `Status::internal` instead of swallowing
  them. Block-decode failures (indicating archive corruption) degrade to
  `debug!` rather than per-UTxO `warn!` log spam. (review A-04, A-05)

- Extract the entire flow into `serve::grpc::block_refs::fetch_block_refs`,
  shared by both v1alpha and v1beta. Each version maps the chain-agnostic
  `BlockRefData` to its own proto-specific `ChainPoint` via a tiny
  `to_chain_point` helper. (review A-06)

`into_u5c_utxo` now takes the pre-resolved `Option<ChainPoint>` as a
parameter rather than performing its own lookup, keeping the per-UTxO path
cheap.

Tests deferred: no harness exists for `read_utxos`/`search_utxos`. The
`minibf::TestDomainBuilder` pattern can seed a `ToyDomain` via
`import_blocks`, and `FaultyToyDomain` covers error branches — happy to add
unit tests if maintainers prefer them in-PR.
fix(grpc): populate block_ref in AnyUtxoData via block_by_tx_hash
`into_u5c_utxo` returned `block_ref: None` for every UTxO surfaced by
`read_utxos` / `search_utxos`, leaving downstream consumers unable to
associate UTxOs with the blocks that created them. The field was added
as a placeholder in #813 (u5c 0.18.1 upgrade) but the reverse lookup
was never wired up.

Mirror the pattern already used by `read_tx`: call
`AsyncQueryFacade::block_by_tx_hash`, decode the block, and build a
`ChainPoint { slot, hash, height, timestamp }`. Lookup failures
(missing tx in archive, decode error) `warn!` with the tx hash and
fall back to `None` — matching the existing posture for datum-decode
errors in the same function.

Applied to both v1alpha and v1beta. No new indexing is needed;
`slot_by_tx_hash` already exists across redb3 and fjall.
chore(deps): bump pallas to 1.0.0
Point the pallas dependency at the crates.io 1.0.0 release and migrate
to the relocated module paths:

- `pallas::ledger::configs::*` → `pallas::interop::hardano::configs::*`
- `pallas::storage::hardano::*`  → `pallas::interop::hardano::storage::*`

Also bump tx3-cardano/tx3-resolver to 0.18.1.

Known blocker: the `trp` feature does not build against pallas 1.0.0.
tx3-cardano 0.18.1 still calls the removed `primitives::LanguageView`
tuple constructor (renamed to `LanguageViews` in pallas 1.0.0). All
other dolos crates compile cleanly; build with
`--no-default-features --features "mithril,utils,grpc,minibf,minikupo"`
in the meantime. Draft until tx3-cardano ships a pallas 1.0.0 fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>