You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently, nodes cannot sync blocks from before they joined the network. As a result, they cannot index execution data or serve requests from earlier blocks. Many AN operators would prefer to have the option to sync and provide access to data for those earlier blocks
Proposed Solution
Add a flag to ANs that allows them to bypass the checks and sync data from before they were staked. This may have some risks so before doing any work, we should assess the changes needed, their impact, and determine if there are any BFT issues that need to be considered.
Challenges
Nodes cannot start if they are not staked in their root block
The immediate challenge is that the node will fail to start if it is not staked in the root block. Specifically this check here:
// Verify that my ID (as given in the configuration) is known to the network
// (i.e. protocol state). There are two cases that will cause the following error:
// 1) used the wrong node id, which is not part of the identity list of the finalized state
// 2) the node id is a new one for a new spork, but the bootstrap data has not been updated.
self, err:=fnb.State.Final().Identity(myID)
iferr!=nil {
returnfmt.Errorf("node identity not found in the identity list of the finalized state (id: %v): %w", myID, err)
}
Nodes cannot communicate if they are not staked in their current finalized block.
The next challenge is that the node will not send any messages if it is not a staked member of the network at its current finalized block. This means that it currently cannot start syncing from a root block before it became part of the network since all outbound sync messages will be dropped.
Additionally, any Consensus node that joined after the root block will also be ignored and penalized since they would also not appear to be staked from the AN's perspective.
The text was updated successfully, but these errors were encountered:
Problem Description
Currently, nodes cannot sync blocks from before they joined the network. As a result, they cannot index execution data or serve requests from earlier blocks. Many AN operators would prefer to have the option to sync and provide access to data for those earlier blocks
Proposed Solution
Add a flag to ANs that allows them to bypass the checks and sync data from before they were staked. This may have some risks so before doing any work, we should assess the changes needed, their impact, and determine if there are any BFT issues that need to be considered.
Challenges
Nodes cannot start if they are not staked in their root block
The immediate challenge is that the node will fail to start if it is not staked in the root block. Specifically this check here:
flow-go/cmd/scaffold.go
Lines 1480 to 1487 in 72ac1d1
Nodes cannot communicate if they are not staked in their current finalized block.
The next challenge is that the node will not send any messages if it is not a staked member of the network at its current finalized block. This means that it currently cannot start syncing from a root block before it became part of the network since all outbound sync messages will be dropped.
Additionally, any Consensus node that joined after the root block will also be ignored and penalized since they would also not appear to be staked from the AN's perspective.
The text was updated successfully, but these errors were encountered: