Skip to content

Commit 2dad343

Browse files
committed
updates
1 parent 092a67e commit 2dad343

File tree

5 files changed

+61
-54
lines changed

5 files changed

+61
-54
lines changed

block/internal/submitting/da_submitter.go

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -160,12 +160,7 @@ func (s *DASubmitter) recordFailure(reason common.DASubmitterFailureReason) {
160160
}
161161

162162
// SubmitHeaders submits pending headers to DA layer
163-
func (s *DASubmitter) SubmitHeaders(ctx context.Context, cache cache.Manager, signer signer.Signer) error {
164-
headers, err := cache.GetPendingHeaders(ctx)
165-
if err != nil {
166-
return fmt.Errorf("failed to get pending headers: %w", err)
167-
}
168-
163+
func (s *DASubmitter) SubmitHeaders(ctx context.Context, headers []*types.SignedHeader, cache cache.Manager, signer signer.Signer) error {
169164
if len(headers) == 0 {
170165
return nil
171166
}
@@ -211,20 +206,15 @@ func (s *DASubmitter) SubmitHeaders(ctx context.Context, cache cache.Manager, si
211206
}
212207

213208
// SubmitData submits pending data to DA layer
214-
func (s *DASubmitter) SubmitData(ctx context.Context, cache cache.Manager, signer signer.Signer, genesis genesis.Genesis) error {
215-
dataList, err := cache.GetPendingData(ctx)
216-
if err != nil {
217-
return fmt.Errorf("failed to get pending data: %w", err)
218-
}
219-
220-
if len(dataList) == 0 {
209+
func (s *DASubmitter) SubmitData(ctx context.Context, unsignedDataList []*types.SignedData, cache cache.Manager, signer signer.Signer, genesis genesis.Genesis) error {
210+
if len(unsignedDataList) == 0 {
221211
return nil
222212
}
223213

224-
// Sign the data
225-
signedDataList, err := s.createSignedData(dataList, signer, genesis)
214+
// Sign the data (cache returns unsigned SignedData structs)
215+
signedDataList, err := s.signData(unsignedDataList, signer, genesis)
226216
if err != nil {
227-
return fmt.Errorf("failed to create signed data: %w", err)
217+
return fmt.Errorf("failed to sign data: %w", err)
228218
}
229219

230220
if len(signedDataList) == 0 {
@@ -253,8 +243,8 @@ func (s *DASubmitter) SubmitData(ctx context.Context, cache cache.Manager, signe
253243
)
254244
}
255245

256-
// createSignedData creates signed data from raw data
257-
func (s *DASubmitter) createSignedData(dataList []*types.SignedData, signer signer.Signer, genesis genesis.Genesis) ([]*types.SignedData, error) {
246+
// signData signs unsigned SignedData structs returned from cache
247+
func (s *DASubmitter) signData(unsignedDataList []*types.SignedData, signer signer.Signer, genesis genesis.Genesis) ([]*types.SignedData, error) {
258248
if signer == nil {
259249
return nil, fmt.Errorf("signer is nil")
260250
}
@@ -278,16 +268,16 @@ func (s *DASubmitter) createSignedData(dataList []*types.SignedData, signer sign
278268
Address: addr,
279269
}
280270

281-
signedDataList := make([]*types.SignedData, 0, len(dataList))
271+
signedDataList := make([]*types.SignedData, 0, len(unsignedDataList))
282272

283-
for _, data := range dataList {
273+
for _, unsignedData := range unsignedDataList {
284274
// Skip empty data
285-
if len(data.Txs) == 0 {
275+
if len(unsignedData.Data.Txs) == 0 {
286276
continue
287277
}
288278

289279
// Sign the data
290-
dataBytes, err := data.Data.MarshalBinary()
280+
dataBytes, err := unsignedData.Data.MarshalBinary()
291281
if err != nil {
292282
return nil, fmt.Errorf("failed to marshal data: %w", err)
293283
}
@@ -298,9 +288,9 @@ func (s *DASubmitter) createSignedData(dataList []*types.SignedData, signer sign
298288
}
299289

300290
signedData := &types.SignedData{
301-
Data: data.Data,
302-
Signature: signature,
291+
Data: unsignedData.Data,
303292
Signer: signerInfo,
293+
Signature: signature,
304294
}
305295

306296
signedDataList = append(signedDataList, signedData)

block/internal/submitting/da_submitter_integration_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,13 @@ func TestDASubmitter_SubmitHeadersAndData_MarksInclusionAndUpdatesLastSubmitted(
9999
daSubmitter := NewDASubmitter(client, cfg, gen, common.DefaultBlockOptions(), common.NopMetrics(), zerolog.Nop())
100100

101101
// Submit headers and data
102-
require.NoError(t, daSubmitter.SubmitHeaders(context.Background(), cm, n))
103-
require.NoError(t, daSubmitter.SubmitData(context.Background(), cm, n, gen))
102+
headers, err := cm.GetPendingHeaders(context.Background())
103+
require.NoError(t, err)
104+
require.NoError(t, daSubmitter.SubmitHeaders(context.Background(), headers, cm, n))
105+
106+
dataList, err := cm.GetPendingData(context.Background())
107+
require.NoError(t, err)
108+
require.NoError(t, daSubmitter.SubmitData(context.Background(), dataList, cm, n, gen))
104109

105110
// After submission, inclusion markers should be set
106111
_, ok := cm.GetHeaderDAIncluded(hdr1.Hash().String())

block/internal/submitting/da_submitter_test.go

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,10 @@ func TestDASubmitter_SubmitHeaders_Success(t *testing.T) {
212212
require.NoError(t, batch2.SetHeight(2))
213213
require.NoError(t, batch2.Commit())
214214

215-
// Submit headers
216-
err = submitter.SubmitHeaders(ctx, cm, signer)
215+
// Get headers from cache and submit
216+
headers, err := cm.GetPendingHeaders(ctx)
217+
require.NoError(t, err)
218+
err = submitter.SubmitHeaders(ctx, headers, cm, signer)
217219
require.NoError(t, err)
218220

219221
// Verify headers are marked as DA included
@@ -232,8 +234,10 @@ func TestDASubmitter_SubmitHeaders_NoPendingHeaders(t *testing.T) {
232234
// Create test signer
233235
_, _, signer := createTestSigner(t)
234236

235-
// Submit headers when none are pending
236-
err := submitter.SubmitHeaders(ctx, cm, signer)
237+
// Get headers from cache (should be empty) and submit
238+
headers, err := cm.GetPendingHeaders(ctx)
239+
require.NoError(t, err)
240+
err = submitter.SubmitHeaders(ctx, headers, cm, signer)
237241
require.NoError(t, err) // Should succeed with no action
238242
mockDA.AssertNotCalled(t, "Submit", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything)
239243
}
@@ -325,8 +329,10 @@ func TestDASubmitter_SubmitData_Success(t *testing.T) {
325329
require.NoError(t, batch2.SetHeight(2))
326330
require.NoError(t, batch2.Commit())
327331

328-
// Submit data
329-
err = submitter.SubmitData(ctx, cm, signer, gen)
332+
// Get data from cache and submit
333+
dataList, err := cm.GetPendingData(ctx)
334+
require.NoError(t, err)
335+
err = submitter.SubmitData(ctx, dataList, cm, signer, gen)
330336
require.NoError(t, err)
331337

332338
// Verify data is marked as DA included
@@ -376,8 +382,10 @@ func TestDASubmitter_SubmitData_SkipsEmptyData(t *testing.T) {
376382
require.NoError(t, batch.SetHeight(1))
377383
require.NoError(t, batch.Commit())
378384

379-
// Submit data - should succeed but skip empty data
380-
err = submitter.SubmitData(ctx, cm, signer, gen)
385+
// Get data from cache and submit - should succeed but skip empty data
386+
dataList, err := cm.GetPendingData(ctx)
387+
require.NoError(t, err)
388+
err = submitter.SubmitData(ctx, dataList, cm, signer, gen)
381389
require.NoError(t, err)
382390
mockDA.AssertNotCalled(t, "Submit", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything)
383391

@@ -393,8 +401,10 @@ func TestDASubmitter_SubmitData_NoPendingData(t *testing.T) {
393401
// Create test signer
394402
_, _, signer := createTestSigner(t)
395403

396-
// Submit data when none are pending
397-
err := submitter.SubmitData(ctx, cm, signer, gen)
404+
// Get data from cache (should be empty) and submit
405+
dataList, err := cm.GetPendingData(ctx)
406+
require.NoError(t, err)
407+
err = submitter.SubmitData(ctx, dataList, cm, signer, gen)
398408
require.NoError(t, err) // Should succeed with no action
399409
mockDA.AssertNotCalled(t, "Submit", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything)
400410
}
@@ -432,14 +442,16 @@ func TestDASubmitter_SubmitData_NilSigner(t *testing.T) {
432442
require.NoError(t, batch.SetHeight(1))
433443
require.NoError(t, batch.Commit())
434444

435-
// Submit data with nil signer - should fail
436-
err = submitter.SubmitData(ctx, cm, nil, gen)
445+
// Get data from cache and submit with nil signer - should fail
446+
dataList, err := cm.GetPendingData(ctx)
447+
require.NoError(t, err)
448+
err = submitter.SubmitData(ctx, dataList, cm, nil, gen)
437449
require.Error(t, err)
438450
assert.Contains(t, err.Error(), "signer is nil")
439451
mockDA.AssertNotCalled(t, "Submit", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything)
440452
}
441453

442-
func TestDASubmitter_CreateSignedData(t *testing.T) {
454+
func TestDASubmitter_SignData(t *testing.T) {
443455
submitter, _, _, _, gen := setupDASubmitterTest(t)
444456

445457
// Create test signer
@@ -483,7 +495,7 @@ func TestDASubmitter_CreateSignedData(t *testing.T) {
483495
dataList := []*types.SignedData{signedData1, signedData2, signedData3}
484496

485497
// Create signed data
486-
result, err := submitter.createSignedData(dataList, signer, gen)
498+
result, err := submitter.signData(dataList, signer, gen)
487499
require.NoError(t, err)
488500

489501
// Should have 2 items (empty data skipped)
@@ -497,7 +509,7 @@ func TestDASubmitter_CreateSignedData(t *testing.T) {
497509
}
498510
}
499511

500-
func TestDASubmitter_CreateSignedData_NilSigner(t *testing.T) {
512+
func TestDASubmitter_SignData_NilSigner(t *testing.T) {
501513
submitter, _, _, _, gen := setupDASubmitterTest(t)
502514

503515
// Create test data
@@ -514,7 +526,7 @@ func TestDASubmitter_CreateSignedData_NilSigner(t *testing.T) {
514526
dataList := []*types.SignedData{signedData}
515527

516528
// Create signed data with nil signer - should fail
517-
_, err := submitter.createSignedData(dataList, nil, gen)
529+
_, err := submitter.signData(dataList, nil, gen)
518530
require.Error(t, err)
519531
assert.Contains(t, err.Error(), "signer is nil")
520532
}

block/internal/submitting/submitter.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import (
2525

2626
// daSubmitterAPI defines minimal methods needed by Submitter for DA submissions.
2727
type daSubmitterAPI interface {
28-
SubmitHeaders(ctx context.Context, cache cache.Manager, signer signer.Signer) error
29-
SubmitData(ctx context.Context, cache cache.Manager, signer signer.Signer, genesis genesis.Genesis) error
28+
SubmitHeaders(ctx context.Context, headers []*types.SignedHeader, cache cache.Manager, signer signer.Signer) error
29+
SubmitData(ctx context.Context, signedDataList []*types.SignedData, cache cache.Manager, signer signer.Signer, genesis genesis.Genesis) error
3030
}
3131

3232
// Submitter handles DA submission and inclusion processing for both sync and aggregator nodes
@@ -185,7 +185,7 @@ func (s *Submitter) daSubmissionLoop() {
185185
return
186186
}
187187

188-
// Estimate total size
188+
// Marshal headers once and estimate total size
189189
totalSize := 0
190190
for _, h := range headers {
191191
data, err := h.MarshalBinary()
@@ -209,7 +209,7 @@ func (s *Submitter) daSubmissionLoop() {
209209
Dur("time_since_last", timeSinceLastSubmit).
210210
Msg("batching strategy triggered header submission")
211211

212-
if err := s.daSubmitter.SubmitHeaders(s.ctx, s.cache, s.signer); err != nil {
212+
if err := s.daSubmitter.SubmitHeaders(s.ctx, headers, s.cache, s.signer); err != nil {
213213
// Check for unrecoverable errors that indicate a critical issue
214214
if errors.Is(err, common.ErrOversizedItem) {
215215
s.logger.Error().Err(err).
@@ -236,23 +236,23 @@ func (s *Submitter) daSubmissionLoop() {
236236
defer s.dataSubmissionMtx.Unlock()
237237

238238
// Get pending data to estimate size
239-
dataList, err := s.cache.GetPendingData(s.ctx)
239+
signedDataList, err := s.cache.GetPendingData(s.ctx)
240240
if err != nil {
241241
s.logger.Error().Err(err).Msg("failed to get pending data for batching decision")
242242
return
243243
}
244244

245-
// Estimate total size
245+
// Marshal data once and estimate total size
246246
totalSize := 0
247-
for _, d := range dataList {
248-
data, err := d.MarshalBinary()
247+
for _, sd := range signedDataList {
248+
data, err := sd.MarshalBinary()
249249
if err == nil {
250250
totalSize += len(data)
251251
}
252252
}
253253

254254
shouldSubmit := s.batchingStrategy.ShouldSubmit(
255-
uint64(len(dataList)),
255+
uint64(len(signedDataList)),
256256
totalSize,
257257
common.DefaultMaxBlobSize,
258258
timeSinceLastSubmit,
@@ -266,7 +266,7 @@ func (s *Submitter) daSubmissionLoop() {
266266
Dur("time_since_last", timeSinceLastSubmit).
267267
Msg("batching strategy triggered data submission")
268268

269-
if err := s.daSubmitter.SubmitData(s.ctx, s.cache, s.signer, s.genesis); err != nil {
269+
if err := s.daSubmitter.SubmitData(s.ctx, signedDataList, s.cache, s.signer, s.genesis); err != nil {
270270
// Check for unrecoverable errors that indicate a critical issue
271271
if errors.Is(err, common.ErrOversizedItem) {
272272
s.logger.Error().Err(err).

block/internal/submitting/submitter_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,15 +412,15 @@ type fakeDASubmitter struct {
412412
chData chan struct{}
413413
}
414414

415-
func (f *fakeDASubmitter) SubmitHeaders(ctx context.Context, _ cache.Manager, _ signer.Signer) error {
415+
func (f *fakeDASubmitter) SubmitHeaders(ctx context.Context, _ []*types.SignedHeader, _ cache.Manager, _ signer.Signer) error {
416416
select {
417417
case f.chHdr <- struct{}{}:
418418
default:
419419
}
420420
return nil
421421
}
422422

423-
func (f *fakeDASubmitter) SubmitData(ctx context.Context, _ cache.Manager, _ signer.Signer, _ genesis.Genesis) error {
423+
func (f *fakeDASubmitter) SubmitData(ctx context.Context, _ []*types.SignedData, _ cache.Manager, _ signer.Signer, _ genesis.Genesis) error {
424424
select {
425425
case f.chData <- struct{}{}:
426426
default:

0 commit comments

Comments
 (0)