Skip to content

[review] MIP-18 Stage 0 Upgradeability and Multisigs - #29

Open
Primata wants to merge 2 commits into
mainfrom
primata/mip-18
Open

Primata wants to merge 2 commits into
mainfrom
primata/mip-18

Conversation

@Primata

@Primata Primata commented Oct 9, 2024

Copy link
Copy Markdown
Contributor

Comment thread MIP/mip-18/README.md

There is an immediate need to deploy the Movement Token (MOVEToken) using a robust, secure, and auditable upgrade mechanism. By creating two multisigs—one for proposal and one for execution—we ensure a transparent and decentralized governance process over upgrades to critical contracts.

The first multisig allows Core Contributors engineers to propose upgrades via Safe’s multisig service. A remote key will automate the population of upgrade proposals. The second multisig, held by the Movement Foundation, will be responsible for executing the scheduled upgrades after a time delay, ensuring community trust and review.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

A remote key will automate the population of upgrade proposals.
Do you have an idea of how this is implemented. It's unclear how and where this remote key will be stored and how it will, without some program automate population of proposals.

I'm also unsure what you mean by 'population of upgrade proposals'.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

if there is a need to upgrade, we need to propose a transaction that will get stored in Safe's offchain solution. Populating it means adding the data required for the proposal to be initiated.

Comment thread MIP/mip-18/README.md

The first multisig allows Core Contributors engineers to propose upgrades via Safe’s multisig service. A remote key will automate the population of upgrade proposals. The second multisig, held by the Movement Foundation, will be responsible for executing the scheduled upgrades after a time delay, ensuring community trust and review.

Also, while developing an independent multisig, handling signature showed to be an issue that might be indicative of better letting signature to be handled by safe.global.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Did this come up in review? If so linking back to the review comments would be helpful.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

What are you referring to, sorry

@0xmovses 0xmovses Oct 14, 2024

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Just where you say it showed to be an issue, but no worries

Comment thread MIP/mip-18/README.md
- Role: Deploy contracts.
- Addresses: [redacted].

Both multisigs are part of a timelock mechanism to enforce a 2-day waiting period between the proposal and execution of upgrades. The engineers' multisig schedules the upgrade, while the foundation multisig executes it after the timelock expires.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Once the timelock is set, can its value every be updated without a redeployment?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I'm under the impression that maybe you could change it by using the fallback functionality, but maybe I'm wrong. That would require going through a transaction proposal to itself then executing it using the foundation multisig. I do believe that transferring to a new timelock is easier.

Comment thread MIP/mip-18/README.md

### Multisig Security Considerations

- Believe it is best practice to rely on a service that is fully dedicated to multisigs. Eventual exploits found might open us up to exploits while safe.global could've prevent the exploit for us.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

A third-party service?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

safe.global is a third-party service

Comment thread MIP/mip-18/README.md
## Appendix

- [R1] Safe Multisig: https://safe.global/
- [R2] SafeKit API Documentation: https://docs.safe.global/sdk/api-kit

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for the flow chart. In the case that a proposal is not signed on by at least 4 / 5 engineers, a proposer can just re-submit that proposal again? I'm just thinking in the case that an engineer missed the timelock period for some reason

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

proposals are live until it's either valid or cancelled as a multisig safe transaction

@apenzk apenzk changed the title MIP-18 Stage 0 Upgradeability and Multisigs [review] MIP-18 Stage 0 Upgradeability and Multisigs Oct 28, 2024
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

Successfully merging this pull request may close these issues.

2 participants