pallet-revive: add mechanism to manipulate caller and delegate_calls #9909
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.
Needed for: paritytech/foundry-polkadot#334.
In foundry-polkadot we need the ability to be able to manipulate the
msg.sender
and thetx.origin
that a solidity contract sees cheatcode documentation.Currently all create/call methods use the
bare_instantiate
/bare_call
to run things in pallet-revive, the caller then normally gets set automatically, based on what is the call stack, but forforge test
we need to be able to manipulate, so that we can set it to custom values.Additionally, for delegate_call, bare_call is used, so there is no way to specify we are dealing with a delegate call, so the call is not working correcly.
For both this paths, we need a way to inject this information into the execution environment, hence I added an optional structure that we can populate from foundry. I'm open to other better ideas.