Add a RelayedCall abstract contract #5630
Open
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.
Some contract are required to perform arbitrary action controlled by user input. This is dangerous if the contract has special permissions, or holds assets. In such cases, using a relay contract can be useful to change the msg.sender of the outgoing call. This pattern is used in the ERC-4337 entrypoint that relies on a helper called the "senderCreator" when calling account factories. Similarly ERC-6942 does factory calls that could be dangerous if performed directly.
This contract provides a
_relayedCall
that can be used to perform dangerous calls. These calls are relayed through a minimal relayer. This relayer is deployed at construction and its address is stored in immutable storage.PR Checklist
npx changeset add
)