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

Design a mechanism to reduce the need for two network upgrades for F3 activation to one #800

Open
masih opened this issue Dec 16, 2024 · 1 comment
Assignees

Comments

@masih
Copy link
Member

masih commented Dec 16, 2024

Background

To activate F3 two network upgrades are required:

  1. to allow a period of passive testing to determine the final manifest configuration values, e.g. delta, rebroadcast backoff, lookback etc.
  2. making a release with those empirically determined values to then upgrade the network with.

As a two step concept there is no getting away from this from engineering perspective; it is required to measure things and perform experimentation in order to determine network wide constants.

But logistically, the process can be simplified such that those values can be updated without requiring 2 network upgrade: by delegation of control to a party/committee to set those variables at runtime.

Done Criteria

There is a "design document" that outlines how a tightly scoped, easily abortable, and fully transparent mechanism can be built into go-f3 / Lotus to allow for a one-time setting of F3 activation parameters that bypasses the time / coordination cost of a network upgrade.

This document should include:

  1. Pseudo code of the smart contract
  2. Who would have access to the smart contract
  3. List of changes required in Lotus such that F3 parameter values are not required at build time
  4. Sequence of events for "releasing" and then using this mechanism (e.g., smart contract published, contract addressed integrated in Lotus RC, mechanism tested in Calibration, etc.)
  5. Estimate for the amount of engineering effort to pull this off

Why Important

This is even being considered because of the way it could save the network the time and coordination effort that goes into a network upgrade. Once the design is completed and communicated to the community, the community can still reject it and we fallback to doing a network upgrade.

We need to do this design phase so:

  1. Community can accurately assess the idea
  2. We can make realistic estimates and then timelines, given this will need to be done in concert with a larger nv25 upgrade train that has other FIPs. (As an extreme, if adding this mechanism took an extra calendar month from an engineering perspective, it would we become clear that it's likely not in scope for a mid-February 2025 nv25).

Notes

  1. This issue isn't tracking all the related comms for such an effort.
  2. The basic idea is to set up a smart contract that would allow a specific (mutisig) key to set manifest values for the network by some deadline and only once. After they are set, that smart contract would lock itself into an immutable config.
@github-project-automation github-project-automation bot moved this to Todo in F3 Dec 16, 2024
@masih masih changed the title Reduce the need for two network upgrades to one Reduce the need for two network upgrades for F3 activation to one Dec 16, 2024
@BigLep BigLep added this to the M3: Mainnet Activation milestone Dec 16, 2024
@BigLep BigLep changed the title Reduce the need for two network upgrades for F3 activation to one Design a mechanism to reduce the need for two network upgrades for F3 activation to one Dec 16, 2024
@BigLep
Copy link
Member

BigLep commented Dec 16, 2024

Thanks for creating this issue @masih. I update the issue description a bit by giving it done criteria that is focused on creating the design. There will be other/followup tasks for communications, implementation, etc.

@BigLep BigLep moved this from Todo to In progress in F3 Dec 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress
Development

No branches or pull requests

3 participants