Skip to content

Add an option to start re validation from a specified block and end at a specified block #2893

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

Merged
merged 24 commits into from
May 6, 2025
Merged
Changes from 2 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
82bd97a
Add an option to start re validation from a specified block
amsanghi Jan 23, 2025
b165a7e
fix config
amsanghi Jan 23, 2025
358b213
Changes based on PR comments
amsanghi Jan 27, 2025
dbec16d
Merge branch 'master' into revalidation_start_block
amsanghi Jan 28, 2025
4af1654
Add end block and then quit options
amsanghi Jan 30, 2025
174a5ec
Merge branch 'master' into revalidation_start_block
amsanghi Apr 1, 2025
6ba2196
fix build
amsanghi Apr 1, 2025
6c3b533
Merge branch 'master' into revalidation_start_block
amsanghi Apr 1, 2025
41828f1
Merge branch 'master' into revalidation_start_block
amsanghi Apr 3, 2025
043a0ae
Changes based on PR comments
amsanghi Apr 3, 2025
99923b4
Changes based on PR comments
amsanghi Apr 3, 2025
fde9199
fix lint
amsanghi Apr 3, 2025
546f1f5
Merge branch 'master' into revalidation_start_block
amsanghi Apr 7, 2025
120c551
Changes based on PR comments
amsanghi Apr 7, 2025
b521ca7
Changes based on PR comments
amsanghi Apr 7, 2025
11c80b9
Merge branch 'master' into revalidation_start_block
eljobe Apr 16, 2025
729ef17
Merge branch 'master' into revalidation_start_block
eljobe Apr 24, 2025
13bab6b
Merge branch 'master' into revalidation_start_block
amsanghi Apr 29, 2025
ec706c7
Changes based on PR comments
amsanghi Apr 29, 2025
0db2872
add test
amsanghi Apr 29, 2025
200966b
fix log
amsanghi Apr 30, 2025
17a2114
modify test
amsanghi Apr 30, 2025
18ee1ee
Merge branch 'master' into revalidation_start_block
amsanghi May 2, 2025
51fc5f6
Merge branch 'master' into revalidation_start_block
joshuacolvin0 May 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 40 additions & 1 deletion staker/block_validator.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,13 @@ func (c *BlockValidatorConfig) Validate() error {
}

type BlockValidatorDangerousConfig struct {
ResetBlockValidation bool `koanf:"reset-block-validation"`
ResetBlockValidation bool `koanf:"reset-block-validation"`
Revalidation RevalidationConfig `koanf:"re-validation"`
}

type RevalidationConfig struct {
Enable bool `koanf:"enable"`
StartBlock uint64 `koanf:"start-block"`
}

type BlockValidatorConfigFetcher func() *BlockValidatorConfig
Expand All @@ -197,6 +203,12 @@ func BlockValidatorConfigAddOptions(prefix string, f *pflag.FlagSet) {

func BlockValidatorDangerousConfigAddOptions(prefix string, f *pflag.FlagSet) {
f.Bool(prefix+".reset-block-validation", DefaultBlockValidatorDangerousConfig.ResetBlockValidation, "resets block-by-block validation, starting again at genesis")
RevalidationConfigAddOptions(prefix+".re-validation", f)
}

func RevalidationConfigAddOptions(prefix string, f *pflag.FlagSet) {
f.Bool(prefix+".enable", DefaultRevalidationConfig.Enable, "enable re-validation")
f.Uint64(prefix+".start-block", DefaultBlockValidatorDangerousConfig.Revalidation.StartBlock, "start re-validation from this block")
}

var DefaultBlockValidatorConfig = BlockValidatorConfig{
Expand Down Expand Up @@ -237,6 +249,12 @@ var TestBlockValidatorConfig = BlockValidatorConfig{

var DefaultBlockValidatorDangerousConfig = BlockValidatorDangerousConfig{
ResetBlockValidation: false,
Revalidation: DefaultRevalidationConfig,
}

var DefaultRevalidationConfig = RevalidationConfig{
Enable: false,
StartBlock: 0,
}

type valStatusField uint32
Expand Down Expand Up @@ -325,6 +343,27 @@ func NewBlockValidator(
PosInBatch: 0,
}
}
if config().Dangerous.Revalidation.Enable && config().Dangerous.Revalidation.StartBlock > 0 {
startBlock := config().Dangerous.Revalidation.StartBlock
messageCount, err := inbox.GetBatchMessageCount(startBlock - 1)
if err != nil {
return nil, err
}
res, err := streamer.ResultAtCount(messageCount)
if err != nil {
return nil, err
}
gs := validator.GoGlobalState{
BlockHash: res.BlockHash,
SendRoot: res.SendRoot,
Batch: startBlock,
PosInBatch: 0,
}
err = ret.writeLastValidated(gs, nil)
if err != nil {
return nil, err
}
}
streamer.SetBlockValidator(ret)
inbox.SetBlockValidator(ret)
if config().MemoryFreeLimit != "" {
Expand Down
Loading