@@ -191,7 +191,6 @@ pub struct ChainSpec {
191191 pub max_pending_partials_per_withdrawals_sweep : u64 ,
192192 pub min_per_epoch_churn_limit_electra : u64 ,
193193 pub max_per_epoch_activation_exit_churn_limit : u64 ,
194- pub max_blobs_per_block_electra : u64 ,
195194
196195 /*
197196 * Fulu hard fork params
@@ -240,6 +239,13 @@ pub struct ChainSpec {
240239 pub blob_sidecar_subnet_count : u64 ,
241240 max_blobs_per_block : u64 ,
242241
242+ /*
243+ * Networking Electra
244+ */
245+ max_blobs_per_block_electra : u64 ,
246+ pub blob_sidecar_subnet_count_electra : u64 ,
247+ pub max_request_blob_sidecars_electra : u64 ,
248+
243249 /*
244250 * Networking Derived
245251 *
@@ -618,6 +624,14 @@ impl ChainSpec {
618624 }
619625 }
620626
627+ pub fn max_request_blob_sidecars ( & self , fork_name : ForkName ) -> usize {
628+ if fork_name. electra_enabled ( ) {
629+ self . max_request_blob_sidecars_electra as usize
630+ } else {
631+ self . max_request_blob_sidecars as usize
632+ }
633+ }
634+
621635 /// Return the value of `MAX_BLOBS_PER_BLOCK` appropriate for the fork at `epoch`.
622636 pub fn max_blobs_per_block ( & self , epoch : Epoch ) -> u64 {
623637 self . max_blobs_per_block_by_fork ( self . fork_name_at_epoch ( epoch) )
@@ -830,7 +844,6 @@ impl ChainSpec {
830844 u64:: checked_pow ( 2 , 8 ) ?. checked_mul ( u64:: checked_pow ( 10 , 9 ) ?)
831845 } )
832846 . expect ( "calculation does not overflow" ) ,
833- max_blobs_per_block_electra : default_max_blobs_per_block_electra ( ) ,
834847
835848 /*
836849 * Fulu hard fork params
@@ -886,6 +899,13 @@ impl ChainSpec {
886899 max_blobs_by_root_request : default_max_blobs_by_root_request ( ) ,
887900 max_data_columns_by_root_request : default_data_columns_by_root_request ( ) ,
888901
902+ /*
903+ * Networking Electra specific
904+ */
905+ max_blobs_per_block_electra : default_max_blobs_per_block_electra ( ) ,
906+ blob_sidecar_subnet_count_electra : default_blob_sidecar_subnet_count_electra ( ) ,
907+ max_request_blob_sidecars_electra : default_max_request_blob_sidecars_electra ( ) ,
908+
889909 /*
890910 * Application specific
891911 */
@@ -1161,7 +1181,6 @@ impl ChainSpec {
11611181 u64:: checked_pow ( 2 , 8 ) ?. checked_mul ( u64:: checked_pow ( 10 , 9 ) ?)
11621182 } )
11631183 . expect ( "calculation does not overflow" ) ,
1164- max_blobs_per_block_electra : default_max_blobs_per_block_electra ( ) ,
11651184
11661185 /*
11671186 * Fulu hard fork params
@@ -1216,6 +1235,13 @@ impl ChainSpec {
12161235 max_blobs_by_root_request : default_max_blobs_by_root_request ( ) ,
12171236 max_data_columns_by_root_request : default_data_columns_by_root_request ( ) ,
12181237
1238+ /*
1239+ * Networking Electra specific
1240+ */
1241+ max_blobs_per_block_electra : default_max_blobs_per_block_electra ( ) ,
1242+ blob_sidecar_subnet_count_electra : default_blob_sidecar_subnet_count_electra ( ) ,
1243+ max_request_blob_sidecars_electra : default_max_request_blob_sidecars_electra ( ) ,
1244+
12191245 /*
12201246 * Application specific
12211247 */
@@ -1421,6 +1447,12 @@ pub struct Config {
14211447 #[ serde( default = "default_max_blobs_per_block_electra" ) ]
14221448 #[ serde( with = "serde_utils::quoted_u64" ) ]
14231449 max_blobs_per_block_electra : u64 ,
1450+ #[ serde( default = "default_blob_sidecar_subnet_count_electra" ) ]
1451+ #[ serde( with = "serde_utils::quoted_u64" ) ]
1452+ pub blob_sidecar_subnet_count_electra : u64 ,
1453+ #[ serde( default = "default_max_request_blob_sidecars_electra" ) ]
1454+ #[ serde( with = "serde_utils::quoted_u64" ) ]
1455+ max_request_blob_sidecars_electra : u64 ,
14241456
14251457 #[ serde( default = "default_custody_requirement" ) ]
14261458 #[ serde( with = "serde_utils::quoted_u64" ) ]
@@ -1555,6 +1587,14 @@ const fn default_max_blobs_per_block() -> u64 {
15551587 6
15561588}
15571589
1590+ const fn default_blob_sidecar_subnet_count_electra ( ) -> u64 {
1591+ 9
1592+ }
1593+
1594+ const fn default_max_request_blob_sidecars_electra ( ) -> u64 {
1595+ 1152
1596+ }
1597+
15581598const fn default_min_per_epoch_churn_limit_electra ( ) -> u64 {
15591599 128_000_000_000
15601600}
@@ -1787,6 +1827,8 @@ impl Config {
17871827 max_per_epoch_activation_exit_churn_limit : spec
17881828 . max_per_epoch_activation_exit_churn_limit ,
17891829 max_blobs_per_block_electra : spec. max_blobs_per_block_electra ,
1830+ blob_sidecar_subnet_count_electra : spec. blob_sidecar_subnet_count_electra ,
1831+ max_request_blob_sidecars_electra : spec. max_request_blob_sidecars_electra ,
17901832
17911833 custody_requirement : spec. custody_requirement ,
17921834 data_column_sidecar_subnet_count : spec. data_column_sidecar_subnet_count ,
@@ -1865,6 +1907,8 @@ impl Config {
18651907 min_per_epoch_churn_limit_electra,
18661908 max_per_epoch_activation_exit_churn_limit,
18671909 max_blobs_per_block_electra,
1910+ blob_sidecar_subnet_count_electra,
1911+ max_request_blob_sidecars_electra,
18681912 custody_requirement,
18691913 data_column_sidecar_subnet_count,
18701914 number_of_columns,
@@ -1935,6 +1979,8 @@ impl Config {
19351979 min_per_epoch_churn_limit_electra,
19361980 max_per_epoch_activation_exit_churn_limit,
19371981 max_blobs_per_block_electra,
1982+ max_request_blob_sidecars_electra,
1983+ blob_sidecar_subnet_count_electra,
19381984
19391985 // We need to re-derive any values that might have changed in the config.
19401986 max_blocks_by_root_request : max_blocks_by_root_request_common ( max_request_blocks) ,
0 commit comments