From fdc70b8e2e85b0eef6b4829c02d0666e1177523a Mon Sep 17 00:00:00 2001 From: andrei_kozel Date: Tue, 9 Dec 2025 16:13:21 +0300 Subject: [PATCH 1/5] Added ability to disable blobs saving for blocks --- README.md | 3 +++ chaind.config.docker-compose.yml | 2 ++ main.go | 2 ++ services/blocks/standard/handler.go | 4 ++++ services/blocks/standard/parameters.go | 8 ++++++++ services/blocks/standard/service.go | 7 +++++++ 6 files changed, 26 insertions(+) diff --git a/README.md b/README.md index ea2f274..44bd8cc 100644 --- a/README.md +++ b/README.md @@ -203,6 +203,9 @@ blocks: # refetch will refetch block data from a beacon node even if it has already has a block # in its database. # refetch: false + # blob.enable will fetch and save blobs for block + blob: + enable: true # validators contains configuration for obtaining validator-related information. validators: enable: true diff --git a/chaind.config.docker-compose.yml b/chaind.config.docker-compose.yml index 229e5fe..3b3553e 100644 --- a/chaind.config.docker-compose.yml +++ b/chaind.config.docker-compose.yml @@ -33,6 +33,8 @@ blocks: # refetch will refetch block data from a beacon node even if it has already has a block # in its database. # refetch: false + blob: + enable: true # validators contains configuration for obtaining validator-related information. validators: enable: true diff --git a/main.go b/main.go index bb05296..0598a83 100644 --- a/main.go +++ b/main.go @@ -161,6 +161,7 @@ func fetchConfig() error { pflag.Bool("blocks.enable", true, "Enable fetching of block-related information") pflag.Int32("blocks.start-slot", -1, "Slot from which to start fetching blocks") pflag.Bool("blocks.refetch", false, "Refetch all blocks even if they are already in the database") + pflag.Bool("blocks.blob.enable", true, "Enable saving of block-related blobs") pflag.Bool("finalizer.enable", true, "Enable additional information on receipt of finality checkpoint") pflag.Bool("summarizer.enable", true, "Enable summary information") pflag.Bool("summarizer.epochs.enable", true, "Enable summary information for epochs") @@ -508,6 +509,7 @@ func startBlocks( standardblocks.WithChainDB(chainDB), standardblocks.WithStartSlot(viper.GetInt64("blocks.start-slot")), standardblocks.WithRefetch(viper.GetBool("blocks.refetch")), + standardblocks.WithBlobEnable(viper.GetBool("blocks.blob.enable")), standardblocks.WithActivitySem(activitySem), ) if err != nil { diff --git a/services/blocks/standard/handler.go b/services/blocks/standard/handler.go index c3bc730..983d086 100644 --- a/services/blocks/standard/handler.go +++ b/services/blocks/standard/handler.go @@ -714,6 +714,10 @@ func (s *Service) updateBlobSidecarsForBlock(ctx context.Context, ctx, span := otel.Tracer("wealdtech.chaind.services.blocks.standard").Start(ctx, "updateBlobSidecarsForBlock") defer span.End() + if !s.blobEnable { + return nil + } + response, err := s.eth2Client.(eth2client.BlobSidecarsProvider).BlobSidecars(ctx, &api.BlobSidecarsOpts{ Block: blockRoot.String(), }) diff --git a/services/blocks/standard/parameters.go b/services/blocks/standard/parameters.go index 532b119..9e04dd1 100644 --- a/services/blocks/standard/parameters.go +++ b/services/blocks/standard/parameters.go @@ -32,6 +32,7 @@ type parameters struct { chainTime chaintime.Service startSlot int64 refetch bool + blobEnable bool activitySem *semaphore.Weighted } @@ -95,6 +96,13 @@ func WithRefetch(refetch bool) Parameter { }) } +// WithBlobEnable sets the blobEnable flag for this module. +func WithBlobEnable(blobEnable bool) Parameter { + return parameterFunc(func(p *parameters) { + p.blobEnable = blobEnable + }) +} + // WithActivitySem sets the activity semaphore for this module. func WithActivitySem(sem *semaphore.Weighted) Parameter { return parameterFunc(func(p *parameters) { diff --git a/services/blocks/standard/service.go b/services/blocks/standard/service.go index 9a4e46c..a596319 100644 --- a/services/blocks/standard/service.go +++ b/services/blocks/standard/service.go @@ -47,6 +47,7 @@ type Service struct { consolidationRequestsSetter chaindb.ConsolidationRequestsSetter chainTime chaintime.Service refetch bool + blobEnable bool lastHandledBlockRoot phase0.Root activitySem *semaphore.Weighted syncCommittees map[uint64]*chaindb.SyncCommittee @@ -152,10 +153,16 @@ func New(ctx context.Context, params ...Parameter) (*Service, error) { consolidationRequestsSetter: consolidationRequestsSetter, chainTime: parameters.chainTime, refetch: parameters.refetch, + blobEnable: parameters.blobEnable, activitySem: parameters.activitySem, syncCommittees: make(map[uint64]*chaindb.SyncCommittee), } + log.Info(). + Bool("blobEnable", parameters.blobEnable). + Bool("refetch", parameters.refetch). + Int64("startSlot", parameters.startSlot). + Msg("Blocks Service initialized") // Note the current highest processed block for the monitor. md, err := s.getMetadata(ctx) if err != nil { From 6c3422f18fb13b2dabee81e5bf1fee947aa4efed Mon Sep 17 00:00:00 2001 From: andrei_kozel Date: Tue, 9 Dec 2025 16:53:45 +0300 Subject: [PATCH 2/5] Updated version --- main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.go b/main.go index 0598a83..389dac5 100644 --- a/main.go +++ b/main.go @@ -64,7 +64,7 @@ import ( ) // ReleaseVersion is the release version for the code. -var ReleaseVersion = "0.10.1" +var ReleaseVersion = "0.10.2" func main() { os.Exit(main2()) From eb6d2c5c8e76768074069c7238a38831791dcf5f Mon Sep 17 00:00:00 2001 From: andrei_kozel Date: Wed, 10 Dec 2025 10:31:34 +0300 Subject: [PATCH 3/5] Code review fixes --- CHANGELOG.md | 3 +++ README.md | 4 ++-- chaind.config.docker-compose.yml | 3 ++- main.go | 4 ++-- services/blocks/standard/handler.go | 2 +- services/blocks/standard/parameters.go | 8 ++++---- services/blocks/standard/service.go | 8 ++++---- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2b8686..841f879 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +0.10.2: + - added `blocks.blobs.enable` configuration flag (default: true) to control whether blobs for blocks should be fetched and saved + 0.10.1: - fix block handlers for fulu block event diff --git a/README.md b/README.md index 44bd8cc..a945869 100644 --- a/README.md +++ b/README.md @@ -203,8 +203,8 @@ blocks: # refetch will refetch block data from a beacon node even if it has already has a block # in its database. # refetch: false - # blob.enable will fetch and save blobs for block - blob: + # blobs.enable will fetch and save blobs for block + blobs: enable: true # validators contains configuration for obtaining validator-related information. validators: diff --git a/chaind.config.docker-compose.yml b/chaind.config.docker-compose.yml index 3b3553e..2b4a933 100644 --- a/chaind.config.docker-compose.yml +++ b/chaind.config.docker-compose.yml @@ -33,7 +33,8 @@ blocks: # refetch will refetch block data from a beacon node even if it has already has a block # in its database. # refetch: false - blob: + # blobs.enable will fetch and save blobs for blocks + blobs: enable: true # validators contains configuration for obtaining validator-related information. validators: diff --git a/main.go b/main.go index 389dac5..c2e4856 100644 --- a/main.go +++ b/main.go @@ -161,7 +161,7 @@ func fetchConfig() error { pflag.Bool("blocks.enable", true, "Enable fetching of block-related information") pflag.Int32("blocks.start-slot", -1, "Slot from which to start fetching blocks") pflag.Bool("blocks.refetch", false, "Refetch all blocks even if they are already in the database") - pflag.Bool("blocks.blob.enable", true, "Enable saving of block-related blobs") + pflag.Bool("blocks.blobs.enable", true, "Enable saving of blobs for block-related information") pflag.Bool("finalizer.enable", true, "Enable additional information on receipt of finality checkpoint") pflag.Bool("summarizer.enable", true, "Enable summary information") pflag.Bool("summarizer.epochs.enable", true, "Enable summary information for epochs") @@ -509,7 +509,7 @@ func startBlocks( standardblocks.WithChainDB(chainDB), standardblocks.WithStartSlot(viper.GetInt64("blocks.start-slot")), standardblocks.WithRefetch(viper.GetBool("blocks.refetch")), - standardblocks.WithBlobEnable(viper.GetBool("blocks.blob.enable")), + standardblocks.WithBlobsSaving(viper.GetBool("blocks.blobs.enable")), standardblocks.WithActivitySem(activitySem), ) if err != nil { diff --git a/services/blocks/standard/handler.go b/services/blocks/standard/handler.go index 983d086..bddadfe 100644 --- a/services/blocks/standard/handler.go +++ b/services/blocks/standard/handler.go @@ -714,7 +714,7 @@ func (s *Service) updateBlobSidecarsForBlock(ctx context.Context, ctx, span := otel.Tracer("wealdtech.chaind.services.blocks.standard").Start(ctx, "updateBlobSidecarsForBlock") defer span.End() - if !s.blobEnable { + if !s.blobsSaving { return nil } diff --git a/services/blocks/standard/parameters.go b/services/blocks/standard/parameters.go index 9e04dd1..108c1fb 100644 --- a/services/blocks/standard/parameters.go +++ b/services/blocks/standard/parameters.go @@ -32,7 +32,7 @@ type parameters struct { chainTime chaintime.Service startSlot int64 refetch bool - blobEnable bool + blobsSaving bool activitySem *semaphore.Weighted } @@ -96,10 +96,10 @@ func WithRefetch(refetch bool) Parameter { }) } -// WithBlobEnable sets the blobEnable flag for this module. -func WithBlobEnable(blobEnable bool) Parameter { +// WithBlobsSaving sets the blobsSaving flag for this module. +func WithBlobsSaving(blobsSaving bool) Parameter { return parameterFunc(func(p *parameters) { - p.blobEnable = blobEnable + p.blobsSaving = blobsSaving }) } diff --git a/services/blocks/standard/service.go b/services/blocks/standard/service.go index a596319..d11547d 100644 --- a/services/blocks/standard/service.go +++ b/services/blocks/standard/service.go @@ -47,7 +47,7 @@ type Service struct { consolidationRequestsSetter chaindb.ConsolidationRequestsSetter chainTime chaintime.Service refetch bool - blobEnable bool + blobsSaving bool lastHandledBlockRoot phase0.Root activitySem *semaphore.Weighted syncCommittees map[uint64]*chaindb.SyncCommittee @@ -153,13 +153,13 @@ func New(ctx context.Context, params ...Parameter) (*Service, error) { consolidationRequestsSetter: consolidationRequestsSetter, chainTime: parameters.chainTime, refetch: parameters.refetch, - blobEnable: parameters.blobEnable, + blobsSaving: parameters.blobsSaving, activitySem: parameters.activitySem, syncCommittees: make(map[uint64]*chaindb.SyncCommittee), } - log.Info(). - Bool("blobEnable", parameters.blobEnable). + log.Trace(). + Bool("blobsSaving", parameters.blobsSaving). Bool("refetch", parameters.refetch). Int64("startSlot", parameters.startSlot). Msg("Blocks Service initialized") From a420a13be48ce249a02c49da8a1ab44aad00ec6a Mon Sep 17 00:00:00 2001 From: andrei_kozel Date: Wed, 10 Dec 2025 15:39:06 +0300 Subject: [PATCH 4/5] Skip span creation --- services/blocks/standard/handler.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/blocks/standard/handler.go b/services/blocks/standard/handler.go index bddadfe..c580119 100644 --- a/services/blocks/standard/handler.go +++ b/services/blocks/standard/handler.go @@ -711,13 +711,13 @@ func (s *Service) updateSyncAggregateForBlock(ctx context.Context, func (s *Service) updateBlobSidecarsForBlock(ctx context.Context, blockRoot phase0.Root, ) error { - ctx, span := otel.Tracer("wealdtech.chaind.services.blocks.standard").Start(ctx, "updateBlobSidecarsForBlock") - defer span.End() - - if !s.blobsSaving { + if !s.blobsSaving { return nil } + ctx, span := otel.Tracer("wealdtech.chaind.services.blocks.standard").Start(ctx, "updateBlobSidecarsForBlock") + defer span.End() + response, err := s.eth2Client.(eth2client.BlobSidecarsProvider).BlobSidecars(ctx, &api.BlobSidecarsOpts{ Block: blockRoot.String(), }) From 4145cc933f37f68de7036f028df1f0c6890d2faf Mon Sep 17 00:00:00 2001 From: andrei_kozel Date: Wed, 10 Dec 2025 17:33:15 +0300 Subject: [PATCH 5/5] A small fix --- services/blocks/standard/handler.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/blocks/standard/handler.go b/services/blocks/standard/handler.go index c580119..7434c44 100644 --- a/services/blocks/standard/handler.go +++ b/services/blocks/standard/handler.go @@ -711,7 +711,7 @@ func (s *Service) updateSyncAggregateForBlock(ctx context.Context, func (s *Service) updateBlobSidecarsForBlock(ctx context.Context, blockRoot phase0.Root, ) error { - if !s.blobsSaving { + if !s.blobsSaving { return nil }