Skip to content

Commit c95bab2

Browse files
Merge pull request #7673 from devbugging/gregor/callbacks/verifier
[Scheduled Callbacks] Verification
2 parents 381a07d + 391bf5d commit c95bab2

File tree

10 files changed

+733
-214
lines changed

10 files changed

+733
-214
lines changed

cmd/util/cmd/verify_execution_result/cmd.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,15 @@ import (
1313
)
1414

1515
var (
16-
flagLastK uint64
17-
flagDatadir string
18-
flagChunkDataPackDir string
19-
flagChain string
20-
flagFromTo string
21-
flagWorkerCount uint // number of workers to verify the blocks concurrently
22-
flagStopOnMismatch bool
23-
flagtransactionFeesDisabled bool
16+
flagLastK uint64
17+
flagDatadir string
18+
flagChunkDataPackDir string
19+
flagChain string
20+
flagFromTo string
21+
flagWorkerCount uint // number of workers to verify the blocks concurrently
22+
flagStopOnMismatch bool
23+
flagtransactionFeesDisabled bool
24+
flagScheduledCallbacksEnabled bool
2425
)
2526

2627
// # verify the last 100 sealed blocks
@@ -57,6 +58,8 @@ func init() {
5758
Cmd.Flags().BoolVar(&flagStopOnMismatch, "stop_on_mismatch", false, "stop verification on first mismatch")
5859

5960
Cmd.Flags().BoolVar(&flagtransactionFeesDisabled, "fees_disabled", false, "disable transaction fees")
61+
62+
Cmd.Flags().BoolVar(&flagScheduledCallbacksEnabled, "scheduled_callbacks_enabled", false, "enable scheduled callbacks")
6063
}
6164

6265
func run(*cobra.Command, []string) {
@@ -84,15 +87,15 @@ func run(*cobra.Command, []string) {
8487
}
8588

8689
lg.Info().Msgf("verifying range from %d to %d", from, to)
87-
err = verifier.VerifyRange(from, to, chainID, flagDatadir, flagChunkDataPackDir, flagWorkerCount, flagStopOnMismatch, flagtransactionFeesDisabled)
90+
err = verifier.VerifyRange(from, to, chainID, flagDatadir, flagChunkDataPackDir, flagWorkerCount, flagStopOnMismatch, flagtransactionFeesDisabled, flagScheduledCallbacksEnabled)
8891
if err != nil {
8992
lg.Fatal().Err(err).Msgf("could not verify range from %d to %d", from, to)
9093
}
9194
lg.Info().Msgf("successfully verified range from %d to %d", from, to)
9295

9396
} else {
9497
lg.Info().Msgf("verifying last %d sealed blocks", flagLastK)
95-
err := verifier.VerifyLastKHeight(flagLastK, chainID, flagDatadir, flagChunkDataPackDir, flagWorkerCount, flagStopOnMismatch, flagtransactionFeesDisabled)
98+
err := verifier.VerifyLastKHeight(flagLastK, chainID, flagDatadir, flagChunkDataPackDir, flagWorkerCount, flagStopOnMismatch, flagtransactionFeesDisabled, flagScheduledCallbacksEnabled)
9699
if err != nil {
97100
lg.Fatal().Err(err).Msg("could not verify last k height")
98101
}

cmd/verification_builder.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ type VerificationConfig struct {
5555
blockWorkers uint64 // number of blocks processed in parallel.
5656
chunkWorkers uint64 // number of chunks processed in parallel.
5757

58-
stopAtHeight uint64 // height to stop the node on
59-
scheduleCallbacksEnabled bool // enable execution of scheduled callbacks
58+
stopAtHeight uint64 // height to stop the node on
59+
scheduledCallbacksEnabled bool // enable execution of scheduled callbacks
6060
}
6161

6262
type VerificationNodeBuilder struct {
@@ -84,7 +84,7 @@ func (v *VerificationNodeBuilder) LoadFlags() {
8484
flags.Uint64Var(&v.verConf.blockWorkers, "block-workers", blockconsumer.DefaultBlockWorkers, "maximum number of blocks being processed in parallel")
8585
flags.Uint64Var(&v.verConf.chunkWorkers, "chunk-workers", chunkconsumer.DefaultChunkWorkers, "maximum number of execution nodes a chunk data pack request is dispatched to")
8686
flags.Uint64Var(&v.verConf.stopAtHeight, "stop-at-height", 0, "height to stop the node at (0 to disable)")
87-
flags.BoolVar(&v.verConf.scheduleCallbacksEnabled, "scheduled-callbacks-enabled", false, "enable execution of scheduled callbacks")
87+
flags.BoolVar(&v.verConf.scheduledCallbacksEnabled, "scheduled-callbacks-enabled", false, "enable execution of scheduled callbacks")
8888
})
8989
}
9090

@@ -218,7 +218,7 @@ func (v *VerificationNodeBuilder) LoadComponentsAndModules() {
218218
computation.DefaultFVMOptions(
219219
node.RootChainID,
220220
false,
221-
v.verConf.scheduleCallbacksEnabled,
221+
v.verConf.scheduledCallbacksEnabled,
222222
)...,
223223
)
224224
vmCtx := fvm.NewContext(fvmOptions...)

engine/verification/verifier/verifiers.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,9 @@ func VerifyLastKHeight(
3838
nWorker uint,
3939
stopOnMismatch bool,
4040
transactionFeesDisabled bool,
41+
scheduledCallbacksEnabled bool,
4142
) (err error) {
42-
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir, transactionFeesDisabled)
43+
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir, transactionFeesDisabled, scheduledCallbacksEnabled)
4344
if err != nil {
4445
return fmt.Errorf("could not init storages: %w", err)
4546
}
@@ -92,8 +93,9 @@ func VerifyRange(
9293
nWorker uint,
9394
stopOnMismatch bool,
9495
transactionFeesDisabled bool,
96+
scheduledCallbacksEnabled bool,
9597
) (err error) {
96-
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir, transactionFeesDisabled)
98+
closer, storages, chunkDataPacks, state, verifier, err := initStorages(chainID, protocolDataDir, chunkDataPackDir, transactionFeesDisabled, scheduledCallbacksEnabled)
9799
if err != nil {
98100
return fmt.Errorf("could not init storages: %w", err)
99101
}
@@ -221,6 +223,7 @@ func initStorages(
221223
dataDir string,
222224
chunkDataPackDir string,
223225
transactionFeesDisabled bool,
226+
scheduledCallbacksEnabled bool,
224227
) (
225228
func() error,
226229
*storage.All,
@@ -246,7 +249,7 @@ func initStorages(
246249
chunkDataPacks := store.NewChunkDataPacks(metrics.NewNoopCollector(),
247250
pebbleimpl.ToDB(chunkDataPackDB), storages.Collections, 1000)
248251

249-
verifier := makeVerifier(log.Logger, chainID, storages.Headers, transactionFeesDisabled)
252+
verifier := makeVerifier(log.Logger, chainID, storages.Headers, transactionFeesDisabled, scheduledCallbacksEnabled)
250253
closer := func() error {
251254
var dbErr, chunkDataPackDBErr error
252255

@@ -319,6 +322,7 @@ func makeVerifier(
319322
chainID flow.ChainID,
320323
headers storage.Headers,
321324
transactionFeesDisabled bool,
325+
scheduledCallbacksEnabled bool,
322326
) module.ChunkVerifier {
323327

324328
vm := fvm.NewVirtualMachine()
@@ -338,7 +342,7 @@ func makeVerifier(
338342
computation.DefaultFVMOptions(
339343
chainID,
340344
false,
341-
true,
345+
scheduledCallbacksEnabled,
342346
)...,
343347
)
344348
vmCtx := fvm.NewContext(fvmOptions...)

integration/testnet/client.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,21 @@ func (c *Client) GetEventsForBlockIDs(
458458
return events, nil
459459
}
460460

461+
func (c *Client) GetEventsForHeightRange(
462+
ctx context.Context,
463+
eventType string,
464+
startHeight uint64,
465+
endHeight uint64,
466+
) ([]sdk.BlockEvents, error) {
467+
events, err := c.client.GetEventsForHeightRange(ctx, eventType, startHeight, endHeight)
468+
if err != nil {
469+
return nil, fmt.Errorf("could not get events for height range: %w", err)
470+
}
471+
return events, nil
472+
}
473+
461474
func getAccount(ctx context.Context, client *client.Client, address sdk.Address) (*sdk.Account, error) {
462-
header, err := client.GetLatestBlockHeader(ctx, false) // todo change back to true when sealing is done
475+
header, err := client.GetLatestBlockHeader(ctx, true)
463476
if err != nil {
464477
return nil, fmt.Errorf("could not get latest block header: %w", err)
465478
}

0 commit comments

Comments
 (0)