mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 21:08:10 -05:00
PeerDAS: Add various missing items (#15629)
* `startBaseServices`: Warm data column storage cache. * `TestFindPeers_NodeDeduplication`: Use `t.context`. * `BUILD.bazel`: Moge `# gazelle.ignore` at the top of the file. Rationale: This directive is applied to the whole file, regardless its position in the file. * Improve `TestConstructGenericBeaconBlock`: Courtesy of Terence * Add `TestDataColumnStoragePath_FlagSpecified`. * `appFlags`: Move `flags.SubscribeAllDataSubnets` (cosmetic). * `appFlags`: Add `storage.DataColumnStoragePathFlag`. * Add changelog.
This commit is contained in:
@@ -318,6 +318,7 @@ func startBaseServices(cliCtx *cli.Context, beacon *BeaconNode, depositAddress s
|
|||||||
}
|
}
|
||||||
|
|
||||||
beacon.BlobStorage.WarmCache()
|
beacon.BlobStorage.WarmCache()
|
||||||
|
beacon.DataColumnStorage.WarmCache()
|
||||||
|
|
||||||
log.Debugln("Starting Slashing DB")
|
log.Debugln("Starting Slashing DB")
|
||||||
if err := beacon.startSlasherDB(cliCtx, clearer); err != nil {
|
if err := beacon.startSlasherDB(cliCtx, clearer); err != nil {
|
||||||
|
|||||||
@@ -969,7 +969,7 @@ func TestFindPeers_NodeDeduplication(t *testing.T) {
|
|||||||
cache.SubnetIDs.EmptyAllCaches()
|
cache.SubnetIDs.EmptyAllCaches()
|
||||||
defer cache.SubnetIDs.EmptyAllCaches()
|
defer cache.SubnetIDs.EmptyAllCaches()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := t.Context()
|
||||||
|
|
||||||
// Create LocalNodes and manipulate sequence numbers
|
// Create LocalNodes and manipulate sequence numbers
|
||||||
localNode1 := createTestNodeWithID(t, "node1")
|
localNode1 := createTestNodeWithID(t, "node1")
|
||||||
@@ -1193,8 +1193,6 @@ func TestFindPeers_received_bad_existing_node(t *testing.T) {
|
|||||||
cache.SubnetIDs.EmptyAllCaches()
|
cache.SubnetIDs.EmptyAllCaches()
|
||||||
defer cache.SubnetIDs.EmptyAllCaches()
|
defer cache.SubnetIDs.EmptyAllCaches()
|
||||||
|
|
||||||
ctx := context.Background()
|
|
||||||
|
|
||||||
// Create LocalNode with same ID but different sequences
|
// Create LocalNode with same ID but different sequences
|
||||||
localNode1 := createTestNodeWithID(t, "testnode")
|
localNode1 := createTestNodeWithID(t, "testnode")
|
||||||
node1_seq1 := localNode1.Node() // Get current node
|
node1_seq1 := localNode1.Node() // Get current node
|
||||||
@@ -1213,7 +1211,7 @@ func TestFindPeers_received_bad_existing_node(t *testing.T) {
|
|||||||
MaxPeers: 30,
|
MaxPeers: 30,
|
||||||
},
|
},
|
||||||
genesisValidatorsRoot: bytesutil.PadTo([]byte{'A'}, 32),
|
genesisValidatorsRoot: bytesutil.PadTo([]byte{'A'}, 32),
|
||||||
peers: peers.NewStatus(ctx, &peers.StatusConfig{
|
peers: peers.NewStatus(t.Context(), &peers.StatusConfig{
|
||||||
PeerLimit: 30,
|
PeerLimit: 30,
|
||||||
ScorerParams: &scorers.Config{},
|
ScorerParams: &scorers.Config{},
|
||||||
}),
|
}),
|
||||||
@@ -1243,7 +1241,7 @@ func TestFindPeers_received_bad_existing_node(t *testing.T) {
|
|||||||
service.dv5Listener = testp2p.NewMockListener(localNode, iter)
|
service.dv5Listener = testp2p.NewMockListener(localNode, iter)
|
||||||
|
|
||||||
// Run findPeers - node1_seq1 gets processed first, then callback marks peer bad, then node1_seq2 fails
|
// Run findPeers - node1_seq1 gets processed first, then callback marks peer bad, then node1_seq2 fails
|
||||||
ctxWithTimeout, cancel := context.WithTimeout(ctx, 1*time.Second)
|
ctxWithTimeout, cancel := context.WithTimeout(t.Context(), 1*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
result, err := service.findPeers(ctxWithTimeout, 3)
|
result, err := service.findPeers(ctxWithTimeout, 3)
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
# gazelle:ignore
|
||||||
|
|
||||||
load("@prysm//tools/go:def.bzl", "go_library", "go_test")
|
load("@prysm//tools/go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
@@ -63,8 +65,8 @@ go_library(
|
|||||||
"//beacon-chain/rpc/core:go_default_library",
|
"//beacon-chain/rpc/core:go_default_library",
|
||||||
"//beacon-chain/startup:go_default_library",
|
"//beacon-chain/startup:go_default_library",
|
||||||
"//beacon-chain/state:go_default_library",
|
"//beacon-chain/state:go_default_library",
|
||||||
"//beacon-chain/state/stategen:go_default_library",
|
|
||||||
"//beacon-chain/state/state-native:go_default_library",
|
"//beacon-chain/state/state-native:go_default_library",
|
||||||
|
"//beacon-chain/state/stategen:go_default_library",
|
||||||
"//beacon-chain/sync:go_default_library",
|
"//beacon-chain/sync:go_default_library",
|
||||||
"//config/features:go_default_library",
|
"//config/features:go_default_library",
|
||||||
"//config/fieldparams:go_default_library",
|
"//config/fieldparams:go_default_library",
|
||||||
@@ -81,7 +83,7 @@ go_library(
|
|||||||
"//crypto/rand:go_default_library",
|
"//crypto/rand:go_default_library",
|
||||||
"//encoding/bytesutil:go_default_library",
|
"//encoding/bytesutil:go_default_library",
|
||||||
"//encoding/ssz:go_default_library",
|
"//encoding/ssz:go_default_library",
|
||||||
"//genesis:go_default_library",
|
"//genesis:go_default_library",
|
||||||
"//math:go_default_library",
|
"//math:go_default_library",
|
||||||
"//monitoring/tracing:go_default_library",
|
"//monitoring/tracing:go_default_library",
|
||||||
"//monitoring/tracing/trace:go_default_library",
|
"//monitoring/tracing/trace:go_default_library",
|
||||||
@@ -181,7 +183,6 @@ common_deps = [
|
|||||||
"@org_golang_google_protobuf//types/known/emptypb:go_default_library",
|
"@org_golang_google_protobuf//types/known/emptypb:go_default_library",
|
||||||
]
|
]
|
||||||
|
|
||||||
# gazelle:ignore
|
|
||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
timeout = "moderate",
|
timeout = "moderate",
|
||||||
|
|||||||
@@ -29,12 +29,19 @@ func TestConstructGenericBeaconBlock(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
r1, err := eb.Block.HashTreeRoot()
|
r1, err := eb.Block.HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
result, err := vs.constructGenericBeaconBlock(b, nil, primitives.ZeroWei())
|
bundle := &enginev1.BlobsBundleV2{
|
||||||
|
KzgCommitments: [][]byte{{1, 2, 3}},
|
||||||
|
Proofs: [][]byte{{4, 5, 6}},
|
||||||
|
Blobs: [][]byte{{7, 8, 9}},
|
||||||
|
}
|
||||||
|
result, err := vs.constructGenericBeaconBlock(b, bundle, primitives.ZeroWei())
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
r2, err := result.GetFulu().Block.HashTreeRoot()
|
r2, err := result.GetFulu().Block.HashTreeRoot()
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, r1, r2)
|
require.Equal(t, r1, r2)
|
||||||
require.Equal(t, result.IsBlinded, false)
|
require.Equal(t, result.IsBlinded, false)
|
||||||
|
require.DeepEqual(t, bundle.Blobs, result.GetFulu().GetBlobs())
|
||||||
|
require.DeepEqual(t, bundle.Proofs, result.GetFulu().GetKzgProofs())
|
||||||
})
|
})
|
||||||
|
|
||||||
// Test for Electra version
|
// Test for Electra version
|
||||||
|
|||||||
3
changelog/manu-peerdas-various.md
Normal file
3
changelog/manu-peerdas-various.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
### Added
|
||||||
|
- Warm data columns storage cache at start.
|
||||||
|
- Add `--data-column-path` flag.
|
||||||
@@ -65,6 +65,7 @@ var appFlags = []cli.Flag{
|
|||||||
flags.SlotsPerArchivedPoint,
|
flags.SlotsPerArchivedPoint,
|
||||||
flags.DisableDebugRPCEndpoints,
|
flags.DisableDebugRPCEndpoints,
|
||||||
flags.SubscribeToAllSubnets,
|
flags.SubscribeToAllSubnets,
|
||||||
|
flags.SubscribeAllDataSubnets,
|
||||||
flags.HistoricalSlasherNode,
|
flags.HistoricalSlasherNode,
|
||||||
flags.ChainID,
|
flags.ChainID,
|
||||||
flags.NetworkID,
|
flags.NetworkID,
|
||||||
@@ -86,7 +87,6 @@ var appFlags = []cli.Flag{
|
|||||||
flags.BeaconDBPruning,
|
flags.BeaconDBPruning,
|
||||||
flags.PrunerRetentionEpochs,
|
flags.PrunerRetentionEpochs,
|
||||||
flags.EnableBuilderSSZ,
|
flags.EnableBuilderSSZ,
|
||||||
flags.SubscribeAllDataSubnets,
|
|
||||||
cmd.MinimalConfigFlag,
|
cmd.MinimalConfigFlag,
|
||||||
cmd.E2EConfigFlag,
|
cmd.E2EConfigFlag,
|
||||||
cmd.RPCMaxPageSizeFlag,
|
cmd.RPCMaxPageSizeFlag,
|
||||||
@@ -144,6 +144,7 @@ var appFlags = []cli.Flag{
|
|||||||
flags.SlasherFlag,
|
flags.SlasherFlag,
|
||||||
flags.JwtId,
|
flags.JwtId,
|
||||||
storage.BlobStoragePathFlag,
|
storage.BlobStoragePathFlag,
|
||||||
|
storage.DataColumnStoragePathFlag,
|
||||||
storage.BlobRetentionEpochFlag,
|
storage.BlobRetentionEpochFlag,
|
||||||
storage.BlobStorageLayout,
|
storage.BlobStorageLayout,
|
||||||
bflags.EnableExperimentalBackfill,
|
bflags.EnableExperimentalBackfill,
|
||||||
|
|||||||
@@ -61,3 +61,12 @@ func TestConfigureBlobRetentionEpoch(t *testing.T) {
|
|||||||
_, err = blobRetentionEpoch(cliCtx)
|
_, err = blobRetentionEpoch(cliCtx)
|
||||||
require.ErrorIs(t, err, errInvalidBlobRetentionEpochs)
|
require.ErrorIs(t, err, errInvalidBlobRetentionEpochs)
|
||||||
}
|
}
|
||||||
|
func TestDataColumnStoragePath_FlagSpecified(t *testing.T) {
|
||||||
|
app := cli.App{}
|
||||||
|
set := flag.NewFlagSet("test", 0)
|
||||||
|
set.String(DataColumnStoragePathFlag.Name, "/blah/blah", DataColumnStoragePathFlag.Usage)
|
||||||
|
cliCtx := cli.NewContext(&app, set, nil)
|
||||||
|
storagePath := dataColumnStoragePath(cliCtx)
|
||||||
|
|
||||||
|
assert.Equal(t, "/blah/blah", storagePath)
|
||||||
|
}
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ var appHelpFlagGroups = []flagGroup{
|
|||||||
storage.BlobRetentionEpochFlag,
|
storage.BlobRetentionEpochFlag,
|
||||||
storage.BlobStorageLayout,
|
storage.BlobStorageLayout,
|
||||||
storage.BlobStoragePathFlag,
|
storage.BlobStoragePathFlag,
|
||||||
|
storage.DataColumnStoragePathFlag,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ // Flags relevant to configuring local block production or external builders such as mev-boost.
|
{ // Flags relevant to configuring local block production or external builders such as mev-boost.
|
||||||
|
|||||||
Reference in New Issue
Block a user