Skip to content

v5.6.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 22:33
· 387 commits to main since this release
ecb2c3f

Nuthatch 5.6.0 serves account history for several chains at one address, so rotki, which takes one
indexer endpoint, can ask a single nuthatch dev about Ethereum, Base and Gnosis at once. There is no
storage migration.

One endpoint for several chains (RFC-0063 §14)

Point nuthatch dev --dir at a directory with no nuthatch.toml of its own and one subdirectory per
chain, each an ordinary address-history nest (#2055):

  • /api answers as the nest chainid names. A chainid no nest serves answers
    NUTHATCH_UNSUPPORTED, which rotki reads as "ask another indexer for this chain".
  • Each chain keeps its own cursor, store and RPCs, so one chain's stall or reorg touches no other.
    RPCs come from NUTHATCH_RPC_<chain id> and NUTHATCH_TRACE_RPC_<chain id>, else the nest's
    rpc_urls; --rpc, --trace-rpc and --rpc-fallback are refused there, because each names one
    chain's.
  • Watching reaches every chain. POST /api/watch and /api/unwatch go to each chain and report
    each chain's answer, so one refusal does not stop the others. GET /api/watch lists the union and
    each chain's own list. /ready lists chain_ids and each chain's state; /metrics labels samples
    with chain_id.

Checked with Gnosis and Base in one directory: every Gnosis answer through the shared endpoint was the
solo nest's, byte for byte apart from the per-store generation, and Base matched the S0 spike. rotki
still registers accounts on Ethereum only, so a Base or Gnosis nest lists its accounts in addresses
until rotki learns /ready's chain_ids.

Fixed

  • A backfill from block 0 against a GraphOps RPC crawled, because the empty-trace probe asked
    eth_getBlockTransactionCountByNumber, which that RPC takes about 12 s to answer. It now reads the
    block's hash list instead: 196,671 blocks in 92 s, against 255 in 150 s (#2059).
  • getblocknobytime searched by bisection, about 30 reads a lookup, and rotki's Gnosis lookups ran out
    of time and were refused. It now interpolates and falls back to bisection when a guess does not
    halve the range: a mean of 10 reads and a maximum of 19 (#2060).

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. A 5.5 store is used as it is, and a single-chain nest behaves as before.