Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What I did
Store event ABI data and decode events on a per-deployment basis, to avoid issues when different contracts have events with the same signature but different indexed elements.
Fixes #511
How I did it
network/events.py
, event ABIs for specific addresses are held in_deployment_topics
. When decoding an event, if the originating address has an event ABI, it is used. If not, the global event ABI (_topics
) is used._topics
, if an ABI already exists it is only replaced if the previous record had no indexed values and the new one has indexed values. So far, every occurrence of this bug that has been reported has been a result of no indexing, when the existing record does use indexing. Upstream ineth_event
, providing an indexed ABI will now decode an unindexed event log.How to verify it
Run the tests. I added a test case for this specific issue.