diff --git a/.github/tests/bpo.yaml b/.github/tests/bpo.yaml new file mode 100644 index 000000000..c8de935e1 --- /dev/null +++ b/.github/tests/bpo.yaml @@ -0,0 +1,49 @@ +participants_matrix: + el: + - el_type: nethermind + el_image: ethpandaops/nethermind:feature-peerdas + - el_type: reth + el_image: ethpandaops/reth:rkrasiuk-peerdas + - el_type: geth + el_image: ethpandaops/geth:peerdas-devnet-7 + cl: + - cl_type: teku + cl_image: ethpandaops/teku:das + supernode: true + - cl_type: nimbus + cl_image: ethpandaops/nimbus-eth2:gbv2 + supernode: true + - cl_type: grandine + cl_image: ethpandaops/grandine:hangleang-peerdas-devnet-7 + supernode: true + cl_extra_env_vars: {"RUST_MIN_STACK": "5242880"} + - cl_type: prysm + cl_image: ethpandaops/prysm-beacon-chain:peerDAS + supernode: true + - cl_type: lighthouse + cl_image: ethpandaops/lighthouse:peerdas-devnet-7 + supernode: true + - cl_type: lodestar + cl_image: ethpandaops/lodestar:peerDAS + supernode: true + +network_params: + fulu_fork_epoch: 1 + bpo_1_epoch: 1 + bpo_1_max_blobs: 9 + bpo_1_target_blobs: 6 +additional_services: + - dora + - spamoor + +spamoor_params: + image: ethpandaops/spamoor:latest + max_mem: 4000 + spammers: + - scenario: eoatx + config: + throughput: 200 + - scenario: blobs + config: + throughput: 20 + diff --git a/.github/tests/minimal-fulu.yaml b/.github/tests/minimal-fulu.yaml new file mode 100644 index 000000000..b269d2c09 --- /dev/null +++ b/.github/tests/minimal-fulu.yaml @@ -0,0 +1,62 @@ +participants: + - el_type: geth + el_image: ethpandaops/geth:peerdas-devnet-7 + el_extra_params: ["--miner.extradata=lighthouseFromLocal"] + cl_type: lighthouse + cl_image: ethpandaops/lighthouse:peerdas-devnet-7 + supernode: true + + - el_type: nethermind + el_image: ethpandaops/nethermind:feature-peerdas + el_extra_params: ["--Blocks.ExtraData=TekuFromLocal"] + cl_type: teku + cl_image: ethpandaops/teku:das + + - el_type: reth + el_image: ethpandaops/reth:rkrasiuk-peerdas + el_extra_params: ["--builder.extradata=lodestarFromLocal"] + cl_type: lodestar + cl_image: ethpandaops/lodestar:peerDAS + + - el_type: geth + el_image: ethpandaops/geth:peerdas-devnet-7 + el_extra_params: ["--miner.extradata=prysmFromLocal"] + cl_type: prysm + cl_image: ethpandaops/prysm-beacon-chain:peerDAS-minimal + vc_image: ethpandaops/prysm-validator:peerDAS-minimal + + - el_type: nethermind + el_image: ethpandaops/nethermind:feature-peerdas + el_extra_params: ["--Blocks.ExtraData=nimbusFromLocal"] + cl_type: nimbus + cl_image: ethpandaops/nimbus-eth2:gbv2-minimal + + - el_type: reth + el_image: ethpandaops/reth:rkrasiuk-peerdas + el_extra_params: ["--builder.extradata=grandineFromLocal"] + cl_type: grandine + cl_image: ethpandaops/grandine:hangleang-peerdas-devnet-7-minimal + cl_extra_env_vars: {"RUST_MIN_STACK": "5242880"} + +additional_services: + - dora + - tx_fuzz + - spamoor + - assertoor + +network_params: + min_validator_withdrawability_delay: 1 + shard_committee_period: 1 + churn_limit_quotient: 16 + fulu_fork_epoch: 10 + genesis_delay: 120 + preset: minimal + +assertoor_params: + tests: + - file: https://raw.githubusercontent.com/ethpandaops/assertoor/refs/heads/master/playbooks/pectra-dev/kurtosis/fillup-all-el-queues.yaml + config: + requestCount: 1000 # total number of requests + walletCount: 2 # number of wallets to send from for each request type + throughputPerWallet: 2 # number of transactions per slot, type and wallet + maxPendingPerWallet: 10 # max number of pending requests per type diff --git a/.github/tests/peerdas-devnet-7.yaml b/.github/tests/peerdas-devnet-7.yaml index 9d737b24c..4984a6b68 100644 --- a/.github/tests/peerdas-devnet-7.yaml +++ b/.github/tests/peerdas-devnet-7.yaml @@ -29,8 +29,8 @@ participants_matrix: network_params: fulu_fork_epoch: 1 - max_blobs_per_block_fulu: 9 - target_blobs_per_block_fulu: 6 + bpo_1_max_blobs: 9 + bpo_1_target_blobs: 6 additional_services: - dora - spamoor diff --git a/README.md b/README.md index e590dec82..9718eb6f0 100644 --- a/README.md +++ b/README.md @@ -598,13 +598,6 @@ network_params: # Base fee update fraction for Electra fork (default 5007716) base_fee_update_fraction_electra: 5007716 - # Maximum number of blobs per block for Fulu fork (default 12) - max_blobs_per_block_fulu: 12 - # Target number of blobs per block for Fulu fork (default 9) - target_blobs_per_block_fulu: 9 - # Base fee update fraction for Fulu fork (default 5007716) - base_fee_update_fraction_fulu: 5007716 - # EIP-7732 fork epoch # Defaults to 18446744073709551615 eip7732_fork_epoch: 18446744073709551615 @@ -671,6 +664,53 @@ network_params: # Do not confuse with genesis_gaslimit which sets the gas limit at the genesis file level gas_limit: 0 + # BPO + # BPO1 epoch (default 18446744073709551615) + bpo_1_epoch: 18446744073709551615 + # Maximum number of blobs per block for BPO1 (default 12) + bpo_1_max_blobs: 12 + # Target number of blobs per block for BPO1 (default 9) + bpo_1_target_blobs: 9 + # Base fee update fraction for BPO1 (default 5007716) + bpo_1_base_fee_update_fraction: 5007716 + + # BPO2 epoch (default 18446744073709551615) + bpo_2_epoch: 18446744073709551615 + # Maximum number of blobs per block for BPO2 (default 12) + bpo_2_max_blobs: 12 + # Target number of blobs per block for BPO2 (default 9) + bpo_2_target_blobs: 9 + # Base fee update fraction for BPO2 (default 5007716) + bpo_2_base_fee_update_fraction: 5007716 + + # BPO3 epoch (default 18446744073709551615) + bpo_3_epoch: 18446744073709551615 + # Maximum number of blobs per block for BPO3 (default 12) + bpo_3_max_blobs: 12 + # Target number of blobs per block for BPO3 (default 9) + bpo_3_target_blobs: 9 + # Base fee update fraction for BPO3 (default 5007716) + bpo_3_base_fee_update_fraction: 5007716 + + # BPO4 epoch (default 18446744073709551615) + bpo_4_epoch: 18446744073709551615 + # Maximum number of blobs per block for BPO4 (default 12) + bpo_4_max_blobs: 12 + # Target number of blobs per block for BPO4 (default 9) + bpo_4_target_blobs: 9 + # Base fee update fraction for BPO4 (default 5007716) + bpo_4_base_fee_update_fraction: 5007716 + + # BPO5 epoch (default 18446744073709551615) + bpo_5_epoch: 18446744073709551615 + # Maximum number of blobs per block for BPO5 (default 12) + bpo_5_max_blobs: 12 + # Target number of blobs per block for BPO5 (default 9) + bpo_5_target_blobs: 9 + # Base fee update fraction for BPO5 (default 5007716) + bpo_5_base_fee_update_fraction: 5007716 + + # Global parameters for the network # By default includes @@ -1008,7 +1048,7 @@ spamoor_params: # Ethereum genesis generator params ethereum_genesis_generator_params: # The image to use for ethereum genesis generator - image: ethpandaops/ethereum-genesis-generator:4.0.6 + image: ethpandaops/ethereum-genesis-generator:4.1.3 # Global parameter to set the exit ip address of services and public ports port_publisher: diff --git a/network_params.yaml b/network_params.yaml index 2d0d40f83..51ac6a794 100644 --- a/network_params.yaml +++ b/network_params.yaml @@ -96,12 +96,29 @@ network_params: max_blobs_per_block_electra: 9 target_blobs_per_block_electra: 6 base_fee_update_fraction_electra: 5007716 - max_blobs_per_block_fulu: 12 - target_blobs_per_block_fulu: 9 - base_fee_update_fraction_fulu: 5007716 additional_preloaded_contracts: {} devnet_repo: ethpandaops prefunded_accounts: {} + bpo_1_epoch: 18446744073709551615 + bpo_1_max_blobs: 12 + bpo_1_target_blobs: 9 + bpo_1_base_fee_update_fraction: 5007716 + bpo_2_epoch: 18446744073709551615 + bpo_2_max_blobs: 12 + bpo_2_target_blobs: 9 + bpo_2_base_fee_update_fraction: 5007716 + bpo_3_epoch: 18446744073709551615 + bpo_3_max_blobs: 12 + bpo_3_target_blobs: 9 + bpo_3_base_fee_update_fraction: 5007716 + bpo_4_epoch: 18446744073709551615 + bpo_4_max_blobs: 12 + bpo_4_target_blobs: 9 + bpo_4_base_fee_update_fraction: 5007716 + bpo_5_epoch: 18446744073709551615 + bpo_5_max_blobs: 12 + bpo_5_target_blobs: 9 + bpo_5_base_fee_update_fraction: 5007716 additional_services: [] dora_params: image: "" @@ -186,7 +203,7 @@ keymanager_enabled: false checkpoint_sync_enabled: false checkpoint_sync_url: "" ethereum_genesis_generator_params: - image: ethpandaops/ethereum-genesis-generator:4.0.6 + image: ethpandaops/ethereum-genesis-generator:4.1.3 port_publisher: nat_exit_ip: KURTOSIS_IP_ADDR_PLACEHOLDER el: diff --git a/src/package_io/constants.star b/src/package_io/constants.star index 903160b5c..24064aac3 100644 --- a/src/package_io/constants.star +++ b/src/package_io/constants.star @@ -95,7 +95,7 @@ DEFAULT_SPAMOOR_IMAGE = "ethpandaops/spamoor:latest" DEFAULT_ASSERTOOR_IMAGE = "ethpandaops/assertoor:latest" DEFAULT_SNOOPER_IMAGE = "ethpandaops/rpc-snooper:latest" DEFAULT_ETHEREUM_GENESIS_GENERATOR_IMAGE = ( - "ethpandaops/ethereum-genesis-generator:4.0.6" + "ethpandaops/ethereum-genesis-generator:4.1.3" ) DEFAULT_YQ_IMAGE = "linuxserver/yq" DEFAULT_FLASHBOTS_RELAY_IMAGE = "ethpandaops/mev-boost-relay:main" diff --git a/src/package_io/input_parser.star b/src/package_io/input_parser.star index 5a0eb09b6..dc78562e7 100644 --- a/src/package_io/input_parser.star +++ b/src/package_io/input_parser.star @@ -13,12 +13,12 @@ DEFAULT_EL_IMAGES = { "besu": "hyperledger/besu:latest", "reth": "ghcr.io/paradigmxyz/reth", "ethereumjs": "ethpandaops/ethereumjs:master", - "nimbus": "ethpandaops/nimbus-eth1:master", + "nimbus": "statusim/nimbus-eth1:master", } DEFAULT_CL_IMAGES = { "lighthouse": "sigp/lighthouse:latest", - "teku": "consensys/teku:latest", + "teku": "consensys/teku:develop", "nimbus": "statusim/nimbus-eth2:multiarch-latest", "prysm": "gcr.io/prysmaticlabs/prysm/beacon-chain:stable", "lodestar": "chainsafe/lodestar:latest", @@ -27,7 +27,7 @@ DEFAULT_CL_IMAGES = { DEFAULT_CL_IMAGES_MINIMAL = { "lighthouse": "ethpandaops/lighthouse:stable", - "teku": "consensys/teku:latest", + "teku": "consensys/teku:develop", "nimbus": "ethpandaops/nimbus-eth2:stable-minimal", "prysm": "ethpandaops/prysm-beacon-chain:develop-minimal", "lodestar": "chainsafe/lodestar:latest", @@ -39,7 +39,7 @@ DEFAULT_VC_IMAGES = { "lodestar": "chainsafe/lodestar:latest", "nimbus": "statusim/nimbus-validator-client:multiarch-latest", "prysm": "gcr.io/prysmaticlabs/prysm/validator:stable", - "teku": "consensys/teku:latest", + "teku": "consensys/teku:develop", "grandine": "sifrai/grandine:stable", "vero": "ghcr.io/serenita-org/vero:master", } @@ -49,7 +49,7 @@ DEFAULT_VC_IMAGES_MINIMAL = { "lodestar": "chainsafe/lodestar:latest", "nimbus": "ethpandaops/nimbus-validator-client:stable-minimal", "prysm": "ethpandaops/prysm-validator:develop-minimal", - "teku": "consensys/teku:latest", + "teku": "consensys/teku:develop", "grandine": "ethpandaops/grandine:develop-minimal", "vero": "ghcr.io/serenita-org/vero:master", } @@ -359,14 +359,35 @@ def input_parser(plan, input_args): base_fee_update_fraction_electra=result["network_params"][ "base_fee_update_fraction_electra" ], - max_blobs_per_block_fulu=result["network_params"][ - "max_blobs_per_block_fulu" + bpo_1_epoch=result["network_params"]["bpo_1_epoch"], + bpo_1_max_blobs=result["network_params"]["bpo_1_max_blobs"], + bpo_1_target_blobs=result["network_params"]["bpo_1_target_blobs"], + bpo_1_base_fee_update_fraction=result["network_params"][ + "bpo_1_base_fee_update_fraction" ], - target_blobs_per_block_fulu=result["network_params"][ - "target_blobs_per_block_fulu" + bpo_2_epoch=result["network_params"]["bpo_2_epoch"], + bpo_2_max_blobs=result["network_params"]["bpo_2_max_blobs"], + bpo_2_target_blobs=result["network_params"]["bpo_2_target_blobs"], + bpo_2_base_fee_update_fraction=result["network_params"][ + "bpo_2_base_fee_update_fraction" ], - base_fee_update_fraction_fulu=result["network_params"][ - "base_fee_update_fraction_fulu" + bpo_3_epoch=result["network_params"]["bpo_3_epoch"], + bpo_3_max_blobs=result["network_params"]["bpo_3_max_blobs"], + bpo_3_target_blobs=result["network_params"]["bpo_3_target_blobs"], + bpo_3_base_fee_update_fraction=result["network_params"][ + "bpo_3_base_fee_update_fraction" + ], + bpo_4_epoch=result["network_params"]["bpo_4_epoch"], + bpo_4_max_blobs=result["network_params"]["bpo_4_max_blobs"], + bpo_4_target_blobs=result["network_params"]["bpo_4_target_blobs"], + bpo_4_base_fee_update_fraction=result["network_params"][ + "bpo_4_base_fee_update_fraction" + ], + bpo_5_epoch=result["network_params"]["bpo_5_epoch"], + bpo_5_max_blobs=result["network_params"]["bpo_5_max_blobs"], + bpo_5_target_blobs=result["network_params"]["bpo_5_target_blobs"], + bpo_5_base_fee_update_fraction=result["network_params"][ + "bpo_5_base_fee_update_fraction" ], preset=result["network_params"]["preset"], additional_preloaded_contracts=result["network_params"][ @@ -954,9 +975,26 @@ def default_network_params(): "max_blobs_per_block_electra": 9, "target_blobs_per_block_electra": 6, "base_fee_update_fraction_electra": 5007716, - "max_blobs_per_block_fulu": 12, - "target_blobs_per_block_fulu": 9, - "base_fee_update_fraction_fulu": 5007716, + "bpo_1_epoch": 18446744073709551615, + "bpo_1_max_blobs": 12, + "bpo_1_target_blobs": 9, + "bpo_1_base_fee_update_fraction": 5007716, + "bpo_2_epoch": 18446744073709551615, + "bpo_2_max_blobs": 12, + "bpo_2_target_blobs": 9, + "bpo_2_base_fee_update_fraction": 5007716, + "bpo_3_epoch": 18446744073709551615, + "bpo_3_max_blobs": 12, + "bpo_3_target_blobs": 9, + "bpo_3_base_fee_update_fraction": 5007716, + "bpo_4_epoch": 18446744073709551615, + "bpo_4_max_blobs": 12, + "bpo_4_target_blobs": 9, + "bpo_4_base_fee_update_fraction": 5007716, + "bpo_5_epoch": 18446744073709551615, + "bpo_5_max_blobs": 12, + "bpo_5_target_blobs": 9, + "bpo_5_base_fee_update_fraction": 5007716, "preset": "mainnet", "additional_preloaded_contracts": {}, "devnet_repo": "ethpandaops", @@ -1001,9 +1039,6 @@ def default_minimal_network_params(): "max_blobs_per_block_electra": 9, "target_blobs_per_block_electra": 6, "base_fee_update_fraction_electra": 5007716, - "max_blobs_per_block_fulu": 12, - "target_blobs_per_block_fulu": 9, - "base_fee_update_fraction_fulu": 5007716, "preset": "minimal", "additional_preloaded_contracts": {}, "devnet_repo": "ethpandaops", @@ -1011,6 +1046,26 @@ def default_minimal_network_params(): "max_payload_size": 10485760, "perfect_peerdas_enabled": False, "gas_limit": 0, + "bpo_1_epoch": 18446744073709551615, + "bpo_1_max_blobs": 12, + "bpo_1_target_blobs": 9, + "bpo_1_base_fee_update_fraction": 5007716, + "bpo_2_epoch": 18446744073709551615, + "bpo_2_max_blobs": 12, + "bpo_2_target_blobs": 9, + "bpo_2_base_fee_update_fraction": 5007716, + "bpo_3_epoch": 18446744073709551615, + "bpo_3_max_blobs": 12, + "bpo_3_target_blobs": 9, + "bpo_3_base_fee_update_fraction": 5007716, + "bpo_4_epoch": 18446744073709551615, + "bpo_4_max_blobs": 12, + "bpo_4_target_blobs": 9, + "bpo_4_base_fee_update_fraction": 5007716, + "bpo_5_epoch": 18446744073709551615, + "bpo_5_max_blobs": 12, + "bpo_5_target_blobs": 9, + "bpo_5_base_fee_update_fraction": 5007716, } diff --git a/src/package_io/sanity_check.star b/src/package_io/sanity_check.star index 23eb0e887..852768bf6 100644 --- a/src/package_io/sanity_check.star +++ b/src/package_io/sanity_check.star @@ -170,10 +170,7 @@ SUBCATEGORY_PARAMS = { "custody_requirement", "max_blobs_per_block_electra", "target_blobs_per_block_electra", - "max_blobs_per_block_fulu", - "target_blobs_per_block_fulu", "base_fee_update_fraction_electra", - "base_fee_update_fraction_fulu", "preset", "additional_preloaded_contracts", "devnet_repo", @@ -181,6 +178,26 @@ SUBCATEGORY_PARAMS = { "max_payload_size", "perfect_peerdas_enabled", "gas_limit", + "bpo_1_epoch", + "bpo_1_max_blobs", + "bpo_1_target_blobs", + "bpo_1_base_fee_update_fraction", + "bpo_2_epoch", + "bpo_2_max_blobs", + "bpo_2_target_blobs", + "bpo_2_base_fee_update_fraction", + "bpo_3_epoch", + "bpo_3_max_blobs", + "bpo_3_target_blobs", + "bpo_3_base_fee_update_fraction", + "bpo_4_epoch", + "bpo_4_max_blobs", + "bpo_4_target_blobs", + "bpo_4_base_fee_update_fraction", + "bpo_5_epoch", + "bpo_5_max_blobs", + "bpo_5_target_blobs", + "bpo_5_base_fee_update_fraction", ], "blockscout_params": [ "image", diff --git a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star index 7d350c8c2..fe58d9ef5 100644 --- a/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star +++ b/src/prelaunch_data_generator/el_cl_genesis/el_cl_genesis_generator.star @@ -156,15 +156,32 @@ def new_env_file_for_el_cl_genesis_data( "MaxBlobsPerBlockElectra": network_params.max_blobs_per_block_electra, "TargetBlobsPerBlockElectra": network_params.target_blobs_per_block_electra, "BaseFeeUpdateFractionElectra": network_params.base_fee_update_fraction_electra, - "MaxBlobsPerBlockFulu": network_params.max_blobs_per_block_fulu, - "TargetBlobsPerBlockFulu": network_params.target_blobs_per_block_fulu, - "BaseFeeUpdateFractionFulu": network_params.base_fee_update_fraction_fulu, "Preset": network_params.preset, "AdditionalPreloadedContractsFile": GENESIS_VALUES_PATH + "/" + GENESIS_CONTRACTS_FILENAME, "PrefundedAccounts": json.encode(network_params.prefunded_accounts), "MaxPayloadSize": network_params.max_payload_size, + "Bpo1Epoch": "{0}".format(network_params.bpo_1_epoch), + "Bpo1MaxBlobs": network_params.bpo_1_max_blobs, + "Bpo1TargetBlobs": network_params.bpo_1_target_blobs, + "Bpo1BaseFeeUpdateFraction": network_params.bpo_1_base_fee_update_fraction, + "Bpo2Epoch": "{0}".format(network_params.bpo_2_epoch), + "Bpo2MaxBlobs": network_params.bpo_2_max_blobs, + "Bpo2TargetBlobs": network_params.bpo_2_target_blobs, + "Bpo2BaseFeeUpdateFraction": network_params.bpo_2_base_fee_update_fraction, + "Bpo3Epoch": "{0}".format(network_params.bpo_3_epoch), + "Bpo3MaxBlobs": network_params.bpo_3_max_blobs, + "Bpo3TargetBlobs": network_params.bpo_3_target_blobs, + "Bpo3BaseFeeUpdateFraction": network_params.bpo_3_base_fee_update_fraction, + "Bpo4Epoch": "{0}".format(network_params.bpo_4_epoch), + "Bpo4MaxBlobs": network_params.bpo_4_max_blobs, + "Bpo4TargetBlobs": network_params.bpo_4_target_blobs, + "Bpo4BaseFeeUpdateFraction": network_params.bpo_4_base_fee_update_fraction, + "Bpo5Epoch": "{0}".format(network_params.bpo_5_epoch), + "Bpo5MaxBlobs": network_params.bpo_5_max_blobs, + "Bpo5TargetBlobs": network_params.bpo_5_target_blobs, + "Bpo5BaseFeeUpdateFraction": network_params.bpo_5_base_fee_update_fraction, } diff --git a/static_files/genesis-generation-config/el-cl/values.env.tmpl b/static_files/genesis-generation-config/el-cl/values.env.tmpl index 0d3acbeb3..04670ff0a 100644 --- a/static_files/genesis-generation-config/el-cl/values.env.tmpl +++ b/static_files/genesis-generation-config/el-cl/values.env.tmpl @@ -41,9 +41,26 @@ export CUSTODY_REQUIREMENT={{ .CustodyRequirement }} export MAX_BLOBS_PER_BLOCK_ELECTRA={{ .MaxBlobsPerBlockElectra }} export TARGET_BLOBS_PER_BLOCK_ELECTRA={{ .TargetBlobsPerBlockElectra }} export BASEFEE_UPDATE_FRACTION_ELECTRA={{ .BaseFeeUpdateFractionElectra }} -export MAX_BLOBS_PER_BLOCK_FULU={{ .MaxBlobsPerBlockFulu }} -export TARGET_BLOBS_PER_BLOCK_FULU={{ .TargetBlobsPerBlockFulu }} -export BASEFEE_UPDATE_FRACTION_FULU={{ .BaseFeeUpdateFractionFulu }} export ADDITIONAL_PRELOADED_CONTRACTS={{ .AdditionalPreloadedContractsFile }} export EL_PREMINE_ADDRS={{ .PrefundedAccounts }} export MAX_PAYLOAD_SIZE={{ .MaxPayloadSize }} +export BPO_1_EPOCH="{{ .Bpo1Epoch }}" +export BPO_1_MAX_BLOBS={{ .Bpo1MaxBlobs }} +export BPO_1_TARGET_BLOBS={{ .Bpo1TargetBlobs }} +export BPO_1_BASE_FEE_UPDATE_FRACTION={{ .Bpo1BaseFeeUpdateFraction }} +export BPO_2_EPOCH="{{ .Bpo2Epoch }}" +export BPO_2_MAX_BLOBS={{ .Bpo2MaxBlobs }} +export BPO_2_TARGET_BLOBS={{ .Bpo2TargetBlobs }} +export BPO_2_BASE_FEE_UPDATE_FRACTION={{ .Bpo2BaseFeeUpdateFraction }} +export BPO_3_EPOCH="{{ .Bpo3Epoch }}" +export BPO_3_MAX_BLOBS={{ .Bpo3MaxBlobs }} +export BPO_3_TARGET_BLOBS={{ .Bpo3TargetBlobs }} +export BPO_3_BASE_FEE_UPDATE_FRACTION={{ .Bpo3BaseFeeUpdateFraction }} +export BPO_4_EPOCH="{{ .Bpo4Epoch }}" +export BPO_4_MAX_BLOBS={{ .Bpo4MaxBlobs }} +export BPO_4_TARGET_BLOBS={{ .Bpo4TargetBlobs }} +export BPO_4_BASE_FEE_UPDATE_FRACTION={{ .Bpo4BaseFeeUpdateFraction }} +export BPO_5_EPOCH="{{ .Bpo5Epoch }}" +export BPO_5_MAX_BLOBS={{ .Bpo5MaxBlobs }} +export BPO_5_TARGET_BLOBS={{ .Bpo5TargetBlobs }} +export BPO_5_BASE_FEE_UPDATE_FRACTION={{ .Bpo5BaseFeeUpdateFraction }}