op-proposer: avoid claimData calls for non-matching game types #186
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.
Description
When transitioning from op-succinct games back to OP games,
HasProposedSincefails because it attempts to callclaimDataon all games including those with incompatible ABIs.Problem
During game type transitions (e.g., switching from op-succinct
OpSuccinctFaultDisputeGameback to OPPermissionedDisputeGame), the chain contains games of different types. The current implementation callsclaimDataon every game during iteration, which reverts when encountering games with incompatible ABIs, causing the proposer to fail entirely.Solution
Split the lookup into two phases:
gameBasicInfoAtIndex: Fetch onlygameTypeandtimestampfrom the factory (no game contract call)gameAtIndex: Full lookup includingclaimData(only called when game type matches)This allows the proposer to safely skip games with non-matching types during iteration.
Changes
gameBasicInfoAtIndexhelper to fetch basic game info without callingclaimDataHasProposedSinceto filter by game type first, only loading full data for matching games