Compare commits

...

3 Commits

Author SHA1 Message Date
terence tsao
ee6a4e66c8 Clean up logic 2025-10-14 09:34:10 -07:00
terence tsao
f5c49b86d0 Unit test 2025-10-14 09:20:15 -07:00
terence tsao
d64d79e154 Fix data column validation for far future Fulu fork epoch 2025-10-14 09:07:43 -07:00
3 changed files with 61 additions and 0 deletions

View File

@@ -3,6 +3,7 @@ package lookup
import (
"context"
"fmt"
"math"
"strconv"
"github.com/OffchainLabs/prysm/v6/beacon-chain/blockchain"
@@ -515,6 +516,11 @@ func (p *BeaconDbBlocker) DataColumns(ctx context.Context, id string, indices []
slot := roSignedBlock.Block().Slot()
fuluForkEpoch := params.BeaconConfig().FuluForkEpoch
if fuluForkEpoch == primitives.Epoch(math.MaxUint64) {
// Fulu fork is disabled - data columns are never supported
return nil, &core.RpcError{Err: errors.New("data columns are not supported when Fulu fork is disabled"), Reason: core.BadRequest}
}
fuluForkSlot, err := slots.EpochStart(fuluForkEpoch)
if err != nil {
return nil, &core.RpcError{Err: errors.Wrap(err, "could not calculate Fulu start slot"), Reason: core.Internal}

View File

@@ -1046,3 +1046,55 @@ func TestGetDataColumns(t *testing.T) {
require.Equal(t, core.ErrorReason(core.NotFound), rpcErr.Reason)
})
}
func TestDataColumns_FarFutureFuluForkEpoch(t *testing.T) {
// Test for commit d64d79e154e9dd895af94de67f7704d172a4209a
// "Fix data column validation for far future Fulu fork epoch"
params.SetupTestConfigCleanup(t)
cfg := params.BeaconConfig().Copy()
cfg.DenebForkEpoch = 1
cfg.FuluForkEpoch = primitives.Epoch(math.MaxUint64)
params.OverrideBeaconConfig(cfg)
ctx := t.Context()
db := testDB.SetupDB(t)
// Create a block with blob commitments
block := util.NewBeaconBlockDeneb()
block.Block.Slot = 1000 // Well beyond Deneb fork
block.Block.Body.BlobKzgCommitments = [][]byte{
bytesutil.PadTo([]byte("commitment1"), 48),
}
wrapped, err := blocks.NewSignedBeaconBlock(block)
require.NoError(t, err)
blockRoot, err := wrapped.Block().HashTreeRoot()
require.NoError(t, err)
require.NoError(t, db.SaveBlock(ctx, wrapped))
dataColumnStorage, err := filesystem.NewDataColumnStorage(ctx,
filesystem.WithDataColumnBasePath(t.TempDir()),
filesystem.WithDataColumnRetentionEpochs(10),
)
require.NoError(t, err)
blocker := &BeaconDbBlocker{
BeaconDB: db,
DataColumnStorage: dataColumnStorage,
}
defer func() {
if r := recover(); r != nil {
t.Fatalf("DataColumns crashed with panic when FuluForkEpoch is MaxUint64: %v", r)
}
}()
_, rpcErr := blocker.DataColumns(ctx, hexutil.Encode(blockRoot[:]), nil)
// Should return BadRequest error since Fulu fork is disabled (MaxUint64)
require.NotNil(t, rpcErr, "Should return error when Fulu fork is disabled")
require.Equal(t, core.ErrorReason(core.BadRequest), rpcErr.Reason)
require.Equal(t, "data columns are not supported when Fulu fork is disabled", rpcErr.Err.Error())
}

View File

@@ -0,0 +1,3 @@
### Fixed
- Fix data column sidecar conversion for fulu epoch set to far future epoch.