Skip to content

feat(indexers): add a nuthatch nest as an EVM indexer for transactions - #13375

Open
cargopete wants to merge 6 commits into
rotki:developfrom
cargopete:pete/nuthatch-transactions
Open

cargopete wants to merge 6 commits into
rotki:developfrom
cargopete:pete/nuthatch-transactions

Conversation

@cargopete

@cargopete cargopete commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

I closed #13342 after @LefterisJP suggested a smaller first step, and this is that step. It adds a self-hosted nuthatch nest as an EVM indexer for transactions only: normal, internal and token transactions, plus the block lookups the sync already makes. It is built on the existing EtherscanLikeApi the way Routescan is, offered on every EVM chain, and asked only where a chain's indexer order names it.

A nest answers only what it has fully indexed and refuses everything else by name. Every refusal falls through to the next indexer for that query, and the nest is never dropped from a chain. The one change outside the adapter is two lines in node_inquirer.py, so a nest that cannot look up blocks by timestamp is not treated as stale for that chain's transactions. rotki registers the accounts it tracks with the nest in the background; it does not unwatch removed ones yet.

Against a real nest with Nuthatch alone for Gnosis, rotki produced the same 82 history events as with Blockscout and Etherscan.

Validators, withdrawals, unwatching and the general range fixes are left out on purpose. #13372 sketches the indexer abstraction; if you take it, I will move this onto it.

@cargopete

Copy link
Copy Markdown
Contributor Author

ethereum parity done too. my own wallet backfilled from genesis, rotki with only the nest in the indexer order decoded the same events as rotki with etherscan, every field identical. same check on gnosis against blockscout and etherscan matched as well.

@codecov

codecov Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.50%. Comparing base (41b9ccc) to head (6b1f826).
⚠️ Report is 65 commits behind head on develop.

Additional details and impacted files

Impacted file tree graph

@@           Coverage Diff            @@
##           develop   #13375   +/-   ##
========================================
  Coverage    81.49%   81.50%           
========================================
  Files         3702     3703    +1     
  Lines       155772   155751   -21     
  Branches     23905    23905           
========================================
- Hits        126953   126943   -10     
+ Misses       22082    22076    -6     
+ Partials      6737     6732    -5     
Flag Coverage Δ
frontend_integration 58.72% <100.00%> (+0.09%) ⬆️
frontend_unit 76.29% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
frontend/app/src/modules/core/common/defaults.ts 100.00% <ø> (ø)
.../app/src/modules/settings/evm/evm-indexer-utils.ts 100.00% <100.00%> (ø)
frontend/app/src/modules/settings/factories.ts 100.00% <ø> (ø)
...ttings/general/rpc/simple/SimpleRpcNodeManager.vue 72.72% <ø> (ø)
...ules/settings/general/rpc/use-rpc-settings-tabs.ts 95.23% <ø> (ø)
.../src/modules/settings/settings-registry-general.ts 100.00% <ø> (ø)
...tend/app/src/modules/settings/types/evm-indexer.ts 100.00% <100.00%> (ø)
.../src/modules/settings/types/prioritized-list-id.ts 100.00% <100.00%> (ø)
...nd/app/src/modules/settings/types/user-settings.ts 100.00% <ø> (ø)
.../modules/shell/components/PrioritizedListEntry.vue 100.00% <ø> (ø)
... and 9 more

... and 11 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@cargopete
cargopete force-pushed the pete/nuthatch-transactions branch 2 times, most recently from 783c61f to 6b1f826 Compare October 27, 2026 09:25
@rotki rotki deleted a comment from rotki-cla Bot Oct 28, 2026
@cargopete

Copy link
Copy Markdown
Contributor Author

@LefterisJP small nudge on this one, it's the transactions only adapter we talked about, nothing in eth2. the validators PR can wait if you'd rather take this first. anything you'd want changed before you go through it?

@cargopete
cargopete force-pushed the pete/nuthatch-transactions branch from ae694c3 to 5158c1d Compare November 11, 2026 20:25

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant