Good day to all, I know that msg.sender is eoa if multicall delegate some function to (this), but what if we will pass in callData selector of Multicall with params of other function? So eoa->multicall->multicall->other function. Who will be msg.sender when calling other function? The same issue was in ethernaut puzzle wallet, but it was about avoid mapping addition info. Thank you!
1 Answer
As long as all the calls are delegatecalls throughout the entire execution, then msg.sender
will be the EOA that submitted the transaction.
Unless one of the multicalls or the other function calls (not delegatecalls) another contract, all execution will be performed in the context of the first contract that you called which in this case should be the multicall contract.