From bcdf1c92a7e4150305d7acf9617aaa964b5d4528 Mon Sep 17 00:00:00 2001 From: terencechain Date: Sat, 10 Jun 2023 12:11:41 -0700 Subject: [PATCH] feat(config): update max blobs per block to 6 (#12512) --- WORKSPACE | 10 +++++----- beacon-chain/db/kv/blob_test.go | 2 +- .../rpc/prysm/v1alpha1/validator/proposer_test.go | 4 +++- config/fieldparams/mainnet.go | 2 +- config/fieldparams/minimal.go | 2 +- config/params/loader_test.go | 4 ++-- config/params/mainnet_config.go | 2 ++ config/params/network_config.go | 2 ++ 8 files changed, 17 insertions(+), 11 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 28550faa9..2482ed8ba 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -213,7 +213,7 @@ filegroup( url = "https://github.com/ethereum/EIPs/archive/5480440fe51742ed23342b68cf106cefd427e39d.tar.gz", ) -consensus_spec_version = "v1.4.0-alpha.1" +consensus_spec_version = "v1.4.0-alpha.2" bls_test_version = "v0.1.1" @@ -229,7 +229,7 @@ filegroup( visibility = ["//visibility:public"], ) """, - sha256 = "1118a663be4a00ba00f0635eb20287157f2b2f993aed64335bfbcd04af424c2b", + sha256 = "bfba887cbe043907adf884cf6d18f2e8a31e34e9245397b84af1f54ed22b706a", url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/general.tar.gz" % consensus_spec_version, ) @@ -245,7 +245,7 @@ filegroup( visibility = ["//visibility:public"], ) """, - sha256 = "acde6e10940d14f22277eda5b55b65a24623ac88e4c7a2e34134a6069f5eea82", + sha256 = "9ff77bef0ca1e39bcee2769075c89f0f91fb8f89ad38a1b3e0c31cf6732650ad", url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/minimal.tar.gz" % consensus_spec_version, ) @@ -261,7 +261,7 @@ filegroup( visibility = ["//visibility:public"], ) """, - sha256 = "49c022f3a3478cea849ba8f877a9f7e4c1ded549edddc09993550bbc5bb192e1", + sha256 = "fbcc3c9898110c675e5de9c27cb667ad7cadf930db7ebb5c6bba15d7be95bf8a", url = "https://github.com/ethereum/consensus-spec-tests/releases/download/%s/mainnet.tar.gz" % consensus_spec_version, ) @@ -276,7 +276,7 @@ filegroup( visibility = ["//visibility:public"], ) """, - sha256 = "c3e246ff01f6b7b9e9e41939954a6ff89dfca7297415f88781809165fa83267c", + sha256 = "9fff1bcdd0e5857797197800db091c3675b2c11b54f704fe4de1ba683bed7ba5", strip_prefix = "consensus-specs-" + consensus_spec_version[1:], url = "https://github.com/ethereum/consensus-specs/archive/refs/tags/%s.tar.gz" % consensus_spec_version, ) diff --git a/beacon-chain/db/kv/blob_test.go b/beacon-chain/db/kv/blob_test.go index 9d4d05629..f08a60472 100644 --- a/beacon-chain/db/kv/blob_test.go +++ b/beacon-chain/db/kv/blob_test.go @@ -232,7 +232,7 @@ func TestStore_verifySideCars(t *testing.T) { error string }{ {name: "empty", scs: []*ethpb.BlobSidecar{}, error: "nil or empty blob sidecars"}, - {name: "too many sidecars", scs: generateBlobSidecars(t, fieldparams.MaxBlobsPerBlock+1), error: "too many sidecars: 5 > 4"}, + {name: "too many sidecars", scs: generateBlobSidecars(t, fieldparams.MaxBlobsPerBlock+1), error: "too many sidecars: 7 > 6"}, {name: "invalid slot", scs: []*ethpb.BlobSidecar{{Slot: 1}, {Slot: 2}}, error: "sidecar slot mismatch: 2 != 1"}, {name: "invalid proposer index", scs: []*ethpb.BlobSidecar{{ProposerIndex: 1}, {ProposerIndex: 2}}, error: "sidecar proposer index mismatch: 2 != 1"}, {name: "invalid root", scs: []*ethpb.BlobSidecar{{BlockRoot: []byte{1}}, {BlockRoot: []byte{2}}}, error: "sidecar root mismatch: 02 != 01"}, diff --git a/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go b/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go index 5a54c3f97..eb31f4623 100644 --- a/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go +++ b/beacon-chain/rpc/prysm/v1alpha1/validator/proposer_test.go @@ -721,7 +721,7 @@ func TestProposer_ProposeBlock_OK(t *testing.T) { }, { name: "deneb block has too many blobs", - err: "Too many blobs in block: 5", + err: "Too many blobs in block: 7", block: func(parent [32]byte) *ethpb.GenericSignedBeaconBlock { blockToPropose := util.NewBeaconBlockDeneb() blockToPropose.Block.Slot = 5 @@ -734,6 +734,8 @@ func TestProposer_ProposeBlock_OK(t *testing.T) { {Message: ðpb.BlobSidecar{Index: 2, Slot: 5, BlockParentRoot: parent[:]}}, {Message: ðpb.BlobSidecar{Index: 3, Slot: 5, BlockParentRoot: parent[:]}}, {Message: ðpb.BlobSidecar{Index: 4, Slot: 5, BlockParentRoot: parent[:]}}, + {Message: ðpb.BlobSidecar{Index: 5, Slot: 5, BlockParentRoot: parent[:]}}, + {Message: ðpb.BlobSidecar{Index: 6, Slot: 5, BlockParentRoot: parent[:]}}, }, }} return ðpb.GenericSignedBeaconBlock{Block: blk} diff --git a/config/fieldparams/mainnet.go b/config/fieldparams/mainnet.go index 285ca8b40..03c43223a 100644 --- a/config/fieldparams/mainnet.go +++ b/config/fieldparams/mainnet.go @@ -26,7 +26,7 @@ const ( SyncCommitteeAggregationBytesLength = 16 // SyncCommitteeAggregationBytesLength defines the length of sync committee aggregate bytes. SyncAggregateSyncCommitteeBytesLength = 64 // SyncAggregateSyncCommitteeBytesLength defines the length of sync committee bytes in a sync aggregate. MaxWithdrawalsPerPayload = 16 // MaxWithdrawalsPerPayloadLength defines the maximum number of withdrawals that can be included in a payload. - MaxBlobsPerBlock = 4 // MaxBlobsPerBlock defines the maximum number of blobs with respect to consensus rule can be included in a block. + MaxBlobsPerBlock = 6 // MaxBlobsPerBlock defines the maximum number of blobs with respect to consensus rule can be included in a block. MaxBlobCommitmentsPerBlock = 4096 // MaxBlobCommitmentsPerBlock defines the theoretical limit of blobs can be included in a block. BlobLength = 131072 // BlobLength defines the byte length of a blob. ) diff --git a/config/fieldparams/minimal.go b/config/fieldparams/minimal.go index bf04d2350..cf76dfd23 100644 --- a/config/fieldparams/minimal.go +++ b/config/fieldparams/minimal.go @@ -26,7 +26,7 @@ const ( SyncCommitteeAggregationBytesLength = 1 // SyncCommitteeAggregationBytesLength defines the sync committee aggregate bytes. SyncAggregateSyncCommitteeBytesLength = 4 // SyncAggregateSyncCommitteeBytesLength defines the length of sync committee bytes in a sync aggregate. MaxWithdrawalsPerPayload = 4 // MaxWithdrawalsPerPayloadLength defines the maximum number of withdrawals that can be included in a payload. - MaxBlobsPerBlock = 4 // MaxBlobsPerBlock defines the maximum number of blobs with respect to consensus rule can be included in a block. + MaxBlobsPerBlock = 6 // MaxBlobsPerBlock defines the maximum number of blobs with respect to consensus rule can be included in a block. MaxBlobCommitmentsPerBlock = 16 // MaxBlobCommitmentsPerBlock defines the theoretical limit of blobs can be included in a block. BlobLength = 4 // BlobLength defines the byte length of a blob. ) diff --git a/config/params/loader_test.go b/config/params/loader_test.go index 6076d9b50..e81b1d4a3 100644 --- a/config/params/loader_test.go +++ b/config/params/loader_test.go @@ -22,8 +22,8 @@ import ( // These are variables that we don't use in Prysm. (i.e. future hardfork, light client... etc) var placeholderFields = []string{"UPDATE_TIMEOUT", "ATTESTATION_SUBNET_EXTRA_BITS", "RESP_TIMEOUT", "MAX_REQUEST_BLOCKS", "EPOCHS_PER_SUBNET_SUBSCRIPTION", "EIP6110_FORK_EPOCH", "MESSAGE_DOMAIN_INVALID_SNAPPY", "MIN_EPOCHS_FOR_BLOCK_REQUESTS", "MAXIMUM_GOSSIP_CLOCK_DISPARITY", "MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS", - "MESSAGE_DOMAIN_VALID_SNAPPY", "GOSSIP_MAX_SIZE", "SUBNETS_PER_NODE", "ATTESTATION_SUBNET_COUNT", "MAX_REQUEST_BLOCKS_DENEB", "MAX_REQUEST_BLOB_SIDECARS", "EIP7002_FORK_EPOCH", "EIP7002_FORK_VERSION", - "MAX_CHUNK_SIZE", "ATTESTATION_PROPAGATION_SLOT_RANGE", "ATTESTATION_SUBNET_PREFIX_BITS", "EIP6110_FORK_VERSION", "TTFB_TIMEOUT", "WHISK_FORK_VERSION", "WHISK_FORK_EPOCH", "WHISK_FORK_EPOCH", "BLOB_SIDECAR_SUBNET_COUNT", "MAX_BLOBS_PER_BLOCK"} + "MESSAGE_DOMAIN_VALID_SNAPPY", "GOSSIP_MAX_SIZE", "SUBNETS_PER_NODE", "ATTESTATION_SUBNET_COUNT", "MAX_REQUEST_BLOCKS_DENEB", "MAX_REQUEST_BLOB_SIDECARS", + "MAX_CHUNK_SIZE", "ATTESTATION_PROPAGATION_SLOT_RANGE", "ATTESTATION_SUBNET_PREFIX_BITS", "EIP6110_FORK_VERSION", "TTFB_TIMEOUT", "BLOB_SIDECAR_SUBNET_COUNT", "MAX_BLOBS_PER_BLOCK"} func assertEqualConfigs(t *testing.T, name string, fields []string, expected, actual *params.BeaconChainConfig) { // Misc params. diff --git a/config/params/mainnet_config.go b/config/params/mainnet_config.go index 977d6ec34..28fa634ab 100644 --- a/config/params/mainnet_config.go +++ b/config/params/mainnet_config.go @@ -45,6 +45,8 @@ var mainnetNetworkConfig = &NetworkConfig{ MinimumPeersInSubnetSearch: 20, ContractDeploymentBlock: 11184524, // Note: contract was deployed in block 11052984 but no transactions were sent until 11184524. MinEpochsForBlobsSidecarsRequest: 4096, + MaxRequestBlobSidecars: 768, + MaxRequestBlocksDeneb: 128, BootstrapNodes: []string{ // Teku team's bootnode "enr:-KG4QOtcP9X1FbIMOe17QNMKqDxCpm14jcX5tiOE4_TyMrFqbmhPZHK_ZPG2Gxb1GE2xdtodOfx9-cgvNtxnRyHEmC0ghGV0aDKQ9aX9QgAAAAD__________4JpZIJ2NIJpcIQDE8KdiXNlY3AyNTZrMaEDhpehBDbZjM_L9ek699Y7vhUJ-eAdMyQW_Fil522Y0fODdGNwgiMog3VkcIIjKA", diff --git a/config/params/network_config.go b/config/params/network_config.go index 1dbcbf4b9..aaa3e171f 100644 --- a/config/params/network_config.go +++ b/config/params/network_config.go @@ -23,6 +23,8 @@ type NetworkConfig struct { MessageDomainInvalidSnappy [4]byte `yaml:"MESSAGE_DOMAIN_INVALID_SNAPPY"` // MessageDomainInvalidSnappy is the 4-byte domain for gossip message-id isolation of invalid snappy messages. MessageDomainValidSnappy [4]byte `yaml:"MESSAGE_DOMAIN_VALID_SNAPPY"` // MessageDomainValidSnappy is the 4-byte domain for gossip message-id isolation of valid snappy messages. MinEpochsForBlobsSidecarsRequest primitives.Epoch `yaml:"MIN_EPOCHS_FOR_BLOBS_SIDECARS_REQUEST"` // MinEpochsForBlobsSidecarsRequest is the minimum number of epochs the node will keep the blobs for. + MaxRequestBlobSidecars uint64 `yaml:"MAX_REQUEST_BLOB_SIDECARS"` // MaxRequestBlobSidecars is the maximum number of blobs to request in a single request. + MaxRequestBlocksDeneb uint64 `yaml:"MAX_REQUEST_BLOCKS_DENEB"` // MaxRequestBlocksDeneb is the maximum number of blocks in a single request after the deneb epoch. // DiscoveryV5 Config ETH2Key string // ETH2Key is the ENR key of the Ethereum consensus object in an enr.