Skip to content

Add ability to initiate an L2 upgrade on L1 #706

@karlfloersch

Description

@karlfloersch

Is your feature request related to a problem? Please describe.
We would like the ability to use a contract on L1 to authenticate upgrades to L2 for security & stability reasons.

Describe the solution you'd like
In order for us to do this, we will need to send a message from L1 into L2 that starts an upgrade. Once an upgrade is started, the L2 ExecutionManager must pause transactions to any account that is not the upgrade contract.

One side-effect of pausing transactions on L2 is that all deposits will fail to be executed until the upgrade is complete. This is unfortunate but it's hard to avoid. However, thankfully we can replay all deposits by using: #705 !

The mechanics of this is as follows:

  1. Create a transaction on L1 which submits an enqueue which initiates the L2 upgrade.
  2. Wait until the enqueue which initiates the upgrade is processed. This will change the ExecutionManager to only forward transactions along to the upgrade contract.
  3. Submit a bunch of off-chain transactions to the sequencer which carry out the upgrade.
  4. Once the upgrade on L2 is done, run the deposit replayer and make sure that any enqueue messages that failed because of the upgrade are included!

Blockers
#705

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions