Skip to content
Draft
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update protocol/l2-forked-tests.md
Co-authored-by: AgusDuha <[email protected]>
Signed-off-by: IamFlux <[email protected]>
  • Loading branch information
0xiamflux and agusduha authored Apr 15, 2025
commit c47ae15d44cb2445a991c55f56f5220468e9f43f
2 changes: 1 addition & 1 deletion protocol/l2-forked-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ However, current limitations prevent us from implementing a truly shared approac

#### L2 `ProxyAdmin` Upgrade

It's possible to upgrade the L2 `ProxyAdmin` contract to allow limited delegated calls, enabling NUT scripts to execute within the `ProxyAdmin` context and perform contract upgrades. While this change would allow us to deploy new implementations and upgrading the proxies, configuration settings in these new implementations can be managed by verifying `tx.origin` rather than `msg.sender` as the Depositor Account. We consider this approach semantically correct as it still verifies that the Depositor Account is the originator of the transaction.
It's possible to upgrade the L2 `ProxyAdmin` contract to allow limited delegated calls, enabling NUT scripts to execute within the `ProxyAdmin` context and perform contract upgrades. While this change would allow us to deploy new implementations and upgrade the proxies, configuration settings in these new implementations can be managed by verifying `tx.origin` rather than `msg.sender` as the Depositor Account. We consider this approach semantically correct as it still verifies that the Depositor Account is the originator of the transaction.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmmm, OK, I think I see what this is trying to solve.

With L1 upgrades, the ProxyAdmin owner is a Safe, so we can just delegate call the OPCM and have the upgrade logic run in the context of the ProxyAdmin owner, which results in most calls being made through the ProxyAdmin.

But on L2, NUTs have typically impersonated the zero address so that they can make upgrade calls directly to the Proxy contracts, and we don't have any way of making a delegatecall from the ProxyAdmin owner to the ProxyAdmin (do we?). It would be nice if we could have the NUTExecutor look and feel a lot like the OPCM, and maybe even reuse a lot of the underlying logic.


```solidity
contract L2ProxyAdmin is ProxyAdmin {
Expand Down