graphprotocol / graphprotocol/graph-node

[Bug] Reverted calls aren't filtered from the firehose

Offen
#5,775 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Stale
Vorherrschende Sprache
Rust
Sterne
3.2k
Forks
1.1k
Ø Merge
4 T. 1 Std.
Gemergte PRs (30 T.)
1

Beschreibung

Bug report

This is in reference to issue #3701 and the PR #3762 that was meant to address it when the firehose is used. In that PR the following is written:

In firehose, this means that we must use state_reverted field to correctly skip calls that had no effect on the chain.

That change was implemented, but then it was immediately undone to "align firehose with RPC behavior" (which previous discussions established is incorrect and potentially unfixable).

The result of that PR is that calls where only state_reverted is true are still processed as successful calls because both status_reverted and status_failed are false. This goes against the explanation for that field in the firehose proto spec.

Test case: a call from this transaction is present in the linked subgraph (in the liquidityChanges table) despite both calls to our contract having their state changes reverted (but only the second call has status_failed=true).

Is there a reason for this behavior? Shouldn't this line also have a !call.state_reverted condition?
Or is there a different way to filter out state_reverted=true calls?

Relevant log output

IPFS hash

No response

Subgraph name or link to explorer

https://thegraph.com/explorer/subgraphs/DyHaLYK1keqcv3YD3VczKGYvxQGfGgV6bGTbZLMj5xME

Some information to help us out
  • Tick this box if this bug is caused by a regression found in the latest release.
  • Tick this box if this bug is specific to the hosted service.
  • I have searched the issue tracker to make sure this issue is not a duplicate.
OS information

None

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne in chain/ethereum/src/codec.rs ungefähr bei Zeile 367 und vergleiche die dortige Aufruffilterung mit der Definition von state_reverted in chain/ethereum/proto/ethereum.proto, Zeilen 358-379. Sieh dir den Verlauf des verlinkten Issues #3701 und des PRs #3762 an, um das beabsichtigte Firehose-Verhalten zu verstehen. Die Änderung ist abgeschlossen, wenn Aufrufe mit state_reverted=true nicht mehr als erfolgreiche Aufrufe verarbeitet werden und eine Abdeckung für die gemeldete Transaktionsform vorhanden ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
blockchain
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
38/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.