graphprotocol / graphprotocol/graph-node
[Bug] Reverted calls aren't filtered from the firehose
Dieses Issue hat noch niemand übernommen.
- 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
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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