Skip to content

v5.1.1

Choose a tag to compare

@github-actions github-actions released this 11 Oct 01:03
· 107 commits to main since this release
355a6cc

Nuthatch 5.1.1 fixes address history (RFC-0063) off Ethereum and makes its backfill workable on
providers that cap a call's block range. Nothing outside an [address_history] nest changes. There is
no storage migration.

Fixes

  • Optimism before Bedrock was served as an empty history (#2023). Its RPC answers trace_filter
    there with an empty success, so a pre-Bedrock range read as an address with no transactions. It now
    answers NUTHATCH_UNSUPPORTED and is never scanned. A 5.1.0 nest on Optimism that started before
    block 105,235,063 should be pointed at a fresh directory, since its stored coverage for that range is
    wrong.
  • Timestamp to block off Ethereum (#2023). getblocknobytime was never answered on other chains;
    it now is, from the RPC or from headers-only partitions.
  • Partitions for OP-stack chains (#2023). nuthatch partitions failed on Optimism and Base after
    Isthmus, where the header's withdrawals root is not a withdrawals commitment. Off Ethereum a
    partition now carries verified headers only.
  • A timed-out RPC call reads as a timeout (#2023), so discovery narrows its span instead of
    retrying the same range for good.
  • Discovery's span size (#2024). Several filters sharing one window each halved it on the same
    stale refusal, and a provider whose stated limit changes from call to call (Alchemy on Optimism) had
    its latest figure taken as a permanent ceiling. The window now proves a size before using it, a retry
    never shrinks below what a refusal named, and the ceiling is the largest limit the provider has
    stated.

Faster backfill on capped providers

Once the window has proved a size, discovery sends that many spans at once, eight at a time, and runs
both trace sides and the four log filters together (#2024). Answers are the same bytes. On Optimism,
vitalik.eth over 50,000 blocks on Alchemy went from 396-452 s and 654-1,002 trace_filter calls to
95-105 s and 245-292 calls. Gnosis, where hydration dominates, made the same 282-283 eth_getLogs
calls in the same time.

Checked

Optimism and Gnosis against Blockscout, and Base against Alchemy's transfer API, on vitalik.eth: every
action exact (Optimism 119 transactions, Gnosis 444, with their transfers and 20 of 20 timestamps
each). Base has one internal row Alchemy omits, a failed call Etherscan also lists.

Gated on Lodestar's data

Every change is in the address-history path, which no production nest declares, so this release changes
no query path the release gate measures.

Compatibility and upgrade

Replace the binary and restart. No re-index, except the Optimism case above.