fix: Strict ABI Validation to Resolve Ambiguity (Fixes #1824) #2020
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.
Summary
I have addressed the critical "Silent Failure" and ambiguity issues highlighted in the discussion of #1824 (specifically the distinction between Scenario A, B, and C).
The previous manual parsing logic was fragile because it treated "valid empty strings" and "corrupted/truncated bytes" exactly the same (returning
"").Changes
eth-abi>=4.0.0torequirements.txt.decode_eth_responseinsrc/inputs/plugins/ethereum_governance.pyto useeth_abi.decodeinstead of manual slicing.How it handles the Scenarios (Fixing the Ambiguity)
Unlike the manual slicing approach, this implementation strictly validates the input:
"0x"and returns an empty string as a valid result.None(RPC failure) and logs a specific error, distinguishing it from an empty rule.eth_abi.decoderaises aDecodingError. I catch and log this error specifically to aid debugging.This ensures the system is robust against data format changes and provides clear logs for debugging silent failures.