Skip to content

Commit 895a4db

Browse files
committed
feedback part 1.
1 parent 05dddf8 commit 895a4db

File tree

5 files changed

+234
-237
lines changed

5 files changed

+234
-237
lines changed

block/manager.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ const (
4848
namespaceMigrationKey = "namespace_migration_completed"
4949

5050
// Applies to the headerInCh and dataInCh, 20000 is a large enough number for headers per DA block.
51-
eventInChLength = 20000
51+
eventInChLength = 10000
5252
)
5353

5454
var (
@@ -609,13 +609,13 @@ func (m *Manager) retrieveBatch(ctx context.Context) (*BatchData, error) {
609609
return nil, ErrNoBatch
610610
}
611611

612-
// isUsingExpectedSingleSequencer checks if the header is using the expected single sequencer.
613-
func (m *Manager) isUsingExpectedSingleSequencer(proposerAddress []byte) (bool, error) {
612+
// assertUsingExpectedSingleSequencer checks if the header is using the expected single sequencer.
613+
func (m *Manager) assertUsingExpectedSingleSequencer(proposerAddress []byte) error {
614614
if !bytes.Equal(m.genesis.ProposerAddress, proposerAddress) {
615-
return false, fmt.Errorf("proposer address is not the same as the genesis proposer address %x != %x", proposerAddress, m.genesis.ProposerAddress)
615+
return fmt.Errorf("proposer address is not the same as the genesis proposer address %x != %x", proposerAddress, m.genesis.ProposerAddress)
616616
}
617617

618-
return true, nil
618+
return nil
619619
}
620620

621621
// publishBlockInternal is the internal implementation for publishing a block.
@@ -870,7 +870,7 @@ func (m *Manager) execCreateBlock(_ context.Context, height uint64, lastSignatur
870870
return nil, nil, fmt.Errorf("failed to get proposer address: %w", err)
871871
}
872872

873-
if _, err := m.isUsingExpectedSingleSequencer(address); err != nil {
873+
if err := m.assertUsingExpectedSingleSequencer(address); err != nil {
874874
return nil, nil, err
875875
}
876876

@@ -1108,7 +1108,7 @@ func (m *Manager) isValidSignedData(signedData *types.SignedData) bool {
11081108
return false
11091109
}
11101110

1111-
if ok, _ := m.isUsingExpectedSingleSequencer(signedData.Signer.Address); !ok {
1111+
if err := m.assertUsingExpectedSingleSequencer(signedData.Signer.Address); err != nil {
11121112
return false
11131113
}
11141114

block/manager_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -713,12 +713,12 @@ func TestUtilityFunctions(t *testing.T) {
713713
require.ErrorContains(err, "signer is nil; cannot sign header")
714714
})
715715

716-
t.Run("IsUsingExpectedSingleSequencer", func(t *testing.T) {
716+
t.Run("AssertUsingExpectedSingleSequencer", func(t *testing.T) {
717717
require := require.New(t)
718718
m, _ := getManager(t, mocks.NewMockDA(t), -1, -1)
719719

720720
// Create genesis data for the test
721-
genesisData, privKey, _ := types.GetGenesisWithPrivkey("TestIsUsingExpectedSingleSequencer")
721+
genesisData, privKey, _ := types.GetGenesisWithPrivkey("TestAssertUsingExpectedSingleSequencer")
722722
m.genesis = genesisData
723723

724724
// Create a signer
@@ -751,15 +751,13 @@ func TestUtilityFunctions(t *testing.T) {
751751
header.Signature = signature
752752

753753
// Should return true for valid header with correct proposer
754-
ok, err := m.isUsingExpectedSingleSequencer(header.ProposerAddress)
754+
err = m.assertUsingExpectedSingleSequencer(header.ProposerAddress)
755755
require.NoError(err)
756-
require.True(ok)
757756

758757
// Should return false for header with wrong proposer address
759758
header.ProposerAddress = []byte("wrong-proposer")
760-
ok, err = m.isUsingExpectedSingleSequencer(header.ProposerAddress)
759+
err = m.assertUsingExpectedSingleSequencer(header.ProposerAddress)
761760
require.Error(err)
762-
require.False(ok)
763761
})
764762
}
765763

block/retriever_da.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ const (
2424
// daRetriever encapsulates DA retrieval with pending events management
2525
type daRetriever struct {
2626
manager *Manager
27+
mutex sync.RWMutex // mutex for pendingEvents
2728
pendingEvents map[uint64][]pendingDAEvent
28-
mutex sync.RWMutex
2929
}
3030

3131
// pendingDAEvent represents a DA event waiting for processing
@@ -200,7 +200,7 @@ func (m *Manager) tryDecodeHeader(bz []byte, daHeight uint64) *types.SignedHeade
200200
}
201201

202202
// early validation to reject junk headers
203-
if ok, err := m.isUsingExpectedSingleSequencer(header.ProposerAddress); !ok {
203+
if err := m.assertUsingExpectedSingleSequencer(header.ProposerAddress); err != nil {
204204
m.logger.Debug().
205205
Uint64("headerHeight", header.Height()).
206206
Str("headerHash", header.Hash().String()).
@@ -253,9 +253,8 @@ func (m *Manager) tryDecodeData(bz []byte, daHeight uint64) *types.Data {
253253
return &signedData.Data
254254
}
255255

256-
// isAtHeight checks if a height is available without blocking
257-
// waitForHeightNonBlocking checks if a height is available without blocking
258-
func (m *Manager) waitForHeightNonBlocking(ctx context.Context, height uint64) error {
256+
// isAtHeight checks if a height is available.
257+
func (m *Manager) isAtHeight(ctx context.Context, height uint64) error {
259258
currentHeight, err := m.GetStoreHeight(ctx)
260259
if err != nil {
261260
return err
@@ -282,8 +281,8 @@ func (dr *daRetriever) sendHeightEventIfValid(ctx context.Context, header *types
282281
return
283282
}
284283

285-
// Check if we can validate this height immediately (non-blocking check)
286-
if err := dr.manager.waitForHeightNonBlocking(ctx, header.Height()-1); err != nil {
284+
// Check if we can validate this height immediately
285+
if err := dr.manager.isAtHeight(ctx, header.Height()-1); err != nil {
287286
// Queue this event for later processing when the prerequisite height is available
288287
dr.queuePendingEvent(header, data, daHeight)
289288
return
@@ -316,7 +315,7 @@ func (dr *daRetriever) queuePendingEvent(header *types.SignedHeader, data *types
316315
func (dr *daRetriever) processEvent(ctx context.Context, header *types.SignedHeader, data *types.Data, daHeight uint64) {
317316
headerHash := header.Hash().String()
318317

319-
// Validate header with its data - this requires previous height to be stored
318+
// Validate header with its data - some execution environment may require previous height to be stored
320319
if err := header.ValidateBasicWithData(data); err != nil {
321320
dr.manager.logger.Debug().Uint64("height", header.Height()).Err(err).Msg("header validation with data failed")
322321
return
@@ -365,7 +364,7 @@ func (dr *daRetriever) processPendingEvents(ctx context.Context) {
365364
defer dr.mutex.Unlock()
366365

367366
for height, events := range dr.pendingEvents {
368-
if height-1 <= currentHeight {
367+
if height <= currentHeight+1 {
369368
for _, event := range events {
370369
dr.manager.logger.Debug().
371370
Uint64("height", height).

block/retriever_store.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (m *Manager) processHeaderStoreRange(ctx context.Context, startHeight, endH
7272
}
7373

7474
// early validation to reject junk headers
75-
if ok, _ := m.isUsingExpectedSingleSequencer(header.ProposerAddress); !ok {
75+
if err := m.assertUsingExpectedSingleSequencer(header.ProposerAddress); err != nil {
7676
continue
7777
}
7878

@@ -127,7 +127,7 @@ func (m *Manager) processDataStoreRange(ctx context.Context, startHeight, endHei
127127
}
128128

129129
// early validation to reject junk headers
130-
if ok, _ := m.isUsingExpectedSingleSequencer(header.ProposerAddress); !ok {
130+
if err := m.assertUsingExpectedSingleSequencer(header.ProposerAddress); err != nil {
131131
continue
132132
}
133133

0 commit comments

Comments
 (0)