managed-oracle: add partial-success SignedProposer batching - #72
Open
chrismaree wants to merge 4 commits into
Open
managed-oracle: add partial-success SignedProposer batching#72chrismaree wants to merge 4 commits into
chrismaree wants to merge 4 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 Changed
tryMulticall(bytes[]), gated byDELEGATED_PROPOSER_ROLE, for partial-success proposal batches.SignedProposer.proposebefore execution and enforces bounds of 8 calls, 96 KiB combined inner calldata, and 1,500,000 gas per child.delegatecall, preserving the original relayer asmsg.senderand each proposal's existing Permit2 spender, funding, whitelist, refund, payment,nonReentrant,ProposalExecuted, and Managed OOProposePricebehavior.bool[]and emits boundedProposalCallFailed(index, callHash, errorSelector, revertDataHash)evidence for each failure without logging full calldata, signatures, or revert data.multicall(bytes[])unchanged and does not modify the execution worker, ManagedOptimisticOracleV2, or existing oracle interfaces.Why
Impact
tryMulticall; existing directproposeand atomicmulticallintegrations remain compatible.ProposalExecutedand Managed OOProposePriceevents.ProposalCallFailedevent.chrismaree/signed-proposerand depends on the SignedProposer introduction in PR managed-oracle: add audited SignedProposer #69.High risk Sections to review with detail
delegatecall; review that the outer relayer remainsmsg.sender, only theproposeselector is accepted, and the existing per-proposalnonReentrantmodifier still enters and exits independently.keccak256(revertData); no unbounded bytes are returned or logged.index,keccak256(calls[index]), selector fallback tobytes4(0), event order, and continuation after emission.multicallremains atomic.Validation
forge buildforge test --match-contract 'SignedProposer(Test|Permit2Test)' -vv— 54 passedforge test --no-match-contract '.*Fork.*' -vv— 127 passedtryMulticall,ProposalCallFailed, bounds, and custom errors.81683818with canonical Permit2; it was not executed locally becauseNODE_URL_137is unavailable in this shell and is expected to run in CI.