-
Notifications
You must be signed in to change notification settings - Fork 239
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
in VC, extract all fork versions/epochs instead of just altair epoch #5956
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
In the past, VC needed to know `ALTAIR_FORK_EPOCH` to determine whether sync committee duties need to be performed. Now, with EIP-7044, it additionally needs to know `CAPELLA_FORK_VERSION` and `DENEB_FORK_EPOCH` to create `VoluntaryExit` signatures post-Deneb. These specific constants need to be accessed by name. They cannot be derived from the `/eth/v1/config/fork_schedule` endpoint, because that endpoint only provides the information needed for regular signatures. Notably, it does not state what `Fork` belongs to which `ConsensusFork`, and also does not indicate whether the underlying schedule is canonical, or whether it may be from a completely unsupported network, e.g., devnet for Verkle which currently uses a Verkle fork on top of Capella instead of Deneb. So, a heuristic which simply assumes that the fifth fork is Deneb is not reliable. As it seems to be recurring practice that VC needs to access fork config related config.yaml keys, extend `ValidatorRuntimeConfig` to extract all `ConsensusFork` specific constants. Further validate that the retrieved info is consistent (monotonically increasing `_FORK_EPOCH`) and avoid extracting information about forks that are still subject to change (scheduled at `FAR_FUTURE_EPOCH`). Note that this is a pre-requisite for implementing EIP-7044 into keymanager. Submitted separately due to the size of this patch.
Preferrable to only extract the |
etan-status
added a commit
that referenced
this pull request
Feb 25, 2024
When trying to sign `VoluntaryExit` via keymanager API, the logic is not yet aware of EIP-7044 (part of Deneb). This patch adds missing EIP-7044 support to the keymanager API as well. As part of this, the VC needs to become aware about: - `CAPELLA_FORK_VERSION`: To correctly form the EIP-7044 signing domain. The fork schedule does not indicate which of the results, if any, corresponds to Capella. - `CAPELLA_FORK_EPOCH`: To detect whether Capella was scheduled. If a BN does not have it in its config while other BNs have it, this leads to a log if Capella has not activated yet, or marks the BN as incompatible if Capella already activated. - `DENEB_FORK_EPOCH`: To check whether EIP-7044 logic should be used. Related PRs: - #5120 added support for processing EIP-7044 `VoluntaryExit` messages as part of the state transition functions (tested by EF spec tests). - #5953 synced the support from #5120 to gossip validation. - #5954 added support to the `nimbus_beacon_node deposits exit` command. - #5956 contains an alternative generic version of `VCForkConfig`.
arnetheduck
pushed a commit
that referenced
this pull request
Feb 26, 2024
* add EIP-7044 support to keymanager API When trying to sign `VoluntaryExit` via keymanager API, the logic is not yet aware of EIP-7044 (part of Deneb). This patch adds missing EIP-7044 support to the keymanager API as well. As part of this, the VC needs to become aware about: - `CAPELLA_FORK_VERSION`: To correctly form the EIP-7044 signing domain. The fork schedule does not indicate which of the results, if any, corresponds to Capella. - `CAPELLA_FORK_EPOCH`: To detect whether Capella was scheduled. If a BN does not have it in its config while other BNs have it, this leads to a log if Capella has not activated yet, or marks the BN as incompatible if Capella already activated. - `DENEB_FORK_EPOCH`: To check whether EIP-7044 logic should be used. Related PRs: - #5120 added support for processing EIP-7044 `VoluntaryExit` messages as part of the state transition functions (tested by EF spec tests). - #5953 synced the support from #5120 to gossip validation. - #5954 added support to the `nimbus_beacon_node deposits exit` command. - #5956 contains an alternative generic version of `VCForkConfig`. * address reviewer feedback: letter case, module location, double lookup --------- Co-authored-by: cheatfate <eugene.kabanov@status.im> * Update beacon_chain/rpc/rest_constants.nim * move `VCRuntimeConfig` back to `rest_types` --------- Co-authored-by: cheatfate <eugene.kabanov@status.im> * fix `getForkVersion` helper --------- Co-authored-by: cheatfate <eugene.kabanov@status.im>
zah
pushed a commit
that referenced
this pull request
Feb 27, 2024
* add EIP-7044 support to keymanager API When trying to sign `VoluntaryExit` via keymanager API, the logic is not yet aware of EIP-7044 (part of Deneb). This patch adds missing EIP-7044 support to the keymanager API as well. As part of this, the VC needs to become aware about: - `CAPELLA_FORK_VERSION`: To correctly form the EIP-7044 signing domain. The fork schedule does not indicate which of the results, if any, corresponds to Capella. - `CAPELLA_FORK_EPOCH`: To detect whether Capella was scheduled. If a BN does not have it in its config while other BNs have it, this leads to a log if Capella has not activated yet, or marks the BN as incompatible if Capella already activated. - `DENEB_FORK_EPOCH`: To check whether EIP-7044 logic should be used. Related PRs: - #5120 added support for processing EIP-7044 `VoluntaryExit` messages as part of the state transition functions (tested by EF spec tests). - #5953 synced the support from #5120 to gossip validation. - #5954 added support to the `nimbus_beacon_node deposits exit` command. - #5956 contains an alternative generic version of `VCForkConfig`. * address reviewer feedback: letter case, module location, double lookup --------- Co-authored-by: cheatfate <eugene.kabanov@status.im> * Update beacon_chain/rpc/rest_constants.nim * move `VCRuntimeConfig` back to `rest_types` --------- Co-authored-by: cheatfate <eugene.kabanov@status.im> * fix `getForkVersion` helper --------- Co-authored-by: cheatfate <eugene.kabanov@status.im>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the past, VC needed to know
ALTAIR_FORK_EPOCH
to determine whether sync committee duties need to be performed. Now, with EIP-7044, it additionally needs to knowCAPELLA_FORK_VERSION
andDENEB_FORK_EPOCH
to createVoluntaryExit
signatures post-Deneb.These specific constants need to be accessed by name. They cannot be derived from the
/eth/v1/config/fork_schedule
endpoint, because that endpoint only provides the information needed for regular signatures. Notably, it does not state whatFork
belongs to whichConsensusFork
, and also does not indicate whether the underlying schedule is canonical, or whether it may be from a completely unsupported network, e.g., devnet for Verkle which currently uses a Verkle fork on top of Capella instead of Deneb. So, a heuristic which simply assumes that the fifth fork is Deneb is not reliable.As it seems to be recurring practice that VC needs to access fork config related config.yaml keys, extend
ValidatorRuntimeConfig
to extract allConsensusFork
specific constants. Further validate that the retrieved info is consistent (monotonically increasing_FORK_EPOCH
) and avoid extracting information about forks that are still subject to change (scheduled atFAR_FUTURE_EPOCH
).Note that this is a pre-requisite for implementing EIP-7044 into keymanager. Submitted separately due to the size of this patch.