Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ChugSplash needs a contract that authenticates and executes upgrades as internal transactions #703

Closed
karlfloersch opened this issue Apr 29, 2021 · 0 comments
Assignees

Comments

@karlfloersch
Copy link
Contributor

karlfloersch commented Apr 29, 2021

Is your feature request related to a problem? Please describe.
Deployments at our level of complexity require multiple transactions spaced out over multiple blocks. This introduces annoyances around ensuring that all deployments are carried out to completion before operation of the chain continues.

Additionally, authenticating a deployment should be extremely high security & therefore it is extremely expensive to perform a deployment where you need to authenticate every transaction in a deployment that requires, say, 20 transactions. It's just unreasonable to sign 20 multisig txs!

Describe the solution you'd like
In order to solve this we propose a deployment system which:

  1. Can authenticate a very large deployment in 1 transaction and allow anyone to actually execute the deployment.
  2. Locks the entire contract system while a deployment is in progress, ensuring that no transactions are executed against a partial deployment.
  3. Can perform deployments across L1 and L2 (the deployment pauses both L1 and L2 contracts so that we can upgrade any component of our system)
  4. Will never get stuck in the middle of a deployment.
  5. Tracks the version of the deployment.

To create this we need to create a DeploymentManager contract which handles initiating a new upgrade, shutting down the system, performing upgrades, updating the upgrade if needed, resuming the system, and emitting useful information which describes what the upgrade did.

There is a WIP implementation here:

This issue is specifically scoped to implementing the DeploymentManager contract. Note that we will need to extend the functionality when we want to implement the specific pausing & resuming logic for L1 and L2 as they differ per environment.

Blockers
#697
#696

@snario snario changed the title Add ChugSplashDeployer contract supporting L1 & L2 ChugSplash needs a contract that authenticates and executes upgrades as internal transactions May 3, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants