Skip to content

Commit

Permalink
Merge GOSSIP_MAX_SIZE and MAX_CHUNK_SIZE into MAX_PAYLOAD_SIZE (#…
Browse files Browse the repository at this point in the history
…6955)

* Merge `GOSSIP_MAX_SIZE` and `MAX_CHUNK_SIZE` into `MAX_PAYLOAD_SIZE`

In upstream specs the preset values for indicating max payload sizes
have been merged into a single `MAX_PAYLOAD_SIZE` constant.

* Lint

* Update config endpoint
  • Loading branch information
etan-status authored Feb 24, 2025
1 parent 47b1663 commit 501580e
Show file tree
Hide file tree
Showing 8 changed files with 102 additions and 57 deletions.
4 changes: 2 additions & 2 deletions beacon_chain/beacon_chain_file.nim
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# beacon_chain
# Copyright (c) 2018-2024 Status Research & Development GmbH
# Copyright (c) 2018-2025 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at https://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at https://www.apache.org/licenses/LICENSE-2.0).
Expand Down Expand Up @@ -71,7 +71,7 @@ const
ChainFileVersion = 1'u32
ChainFileHeaderValue = 0x424D494E'u32
ChainFileBufferSize* = 4096
MaxChunkSize = int(GOSSIP_MAX_SIZE)
MaxChunkSize = int(MAX_PAYLOAD_SIZE)
ChainFileHeaderArray = ChainFileHeaderValue.toBytesLE()
IncompleteWriteError = "Unable to write data to file, disk full?"
MaxForksCount* = 16384
Expand Down
20 changes: 10 additions & 10 deletions beacon_chain/networking/eth2_network.nim
Original file line number Diff line number Diff line change
Expand Up @@ -845,8 +845,8 @@ func chunkMaxSize[T](): uint32 =
when isFixedSize(T):
uint32 fixedPortionSize(T)
else:
static: doAssert MAX_CHUNK_SIZE < high(uint32).uint64
MAX_CHUNK_SIZE.uint32
static: doAssert MAX_PAYLOAD_SIZE < high(uint32).uint64
MAX_PAYLOAD_SIZE.uint32

template gossipMaxSize(T: untyped): uint32 =
const maxSize = static:
Expand All @@ -855,20 +855,20 @@ template gossipMaxSize(T: untyped): uint32 =
elif T is bellatrix.SignedBeaconBlock or T is capella.SignedBeaconBlock or
T is deneb.SignedBeaconBlock or T is electra.SignedBeaconBlock or
T is fulu.SignedBeaconBlock:
GOSSIP_MAX_SIZE
MAX_PAYLOAD_SIZE
# TODO https://github.com/status-im/nim-ssz-serialization/issues/20 for
# Attestation, AttesterSlashing, and SignedAggregateAndProof, which all
# have lists bounded at MAX_VALIDATORS_PER_COMMITTEE (2048) items, thus
# having max sizes significantly smaller than GOSSIP_MAX_SIZE.
# having max sizes significantly smaller than MAX_PAYLOAD_SIZE.
elif T is phase0.Attestation or T is phase0.AttesterSlashing or
T is phase0.SignedAggregateAndProof or T is phase0.SignedBeaconBlock or
T is electra.SignedAggregateAndProof or T is electra.Attestation or
T is electra.AttesterSlashing or T is altair.SignedBeaconBlock or
T is SomeForkyLightClientObject:
GOSSIP_MAX_SIZE
MAX_PAYLOAD_SIZE
else:
{.fatal: "unknown type " & name(T).}
static: doAssert maxSize <= GOSSIP_MAX_SIZE
static: doAssert maxSize <= MAX_PAYLOAD_SIZE
maxSize.uint32

proc readVarint2(conn: Connection): Future[NetRes[uint64]] {.
Expand Down Expand Up @@ -902,7 +902,7 @@ proc readChunkPayload*(conn: Connection, peer: Peer,
if size == 0:
return neterr ZeroSizePrefix

# The `size.int` conversion is safe because `size` is bounded to `MAX_CHUNK_SIZE`
# The `size.int` conversion is safe because `size` is bounded to `MAX_PAYLOAD_SIZE`
let
dataRes = await conn.uncompressFramedStream(size.int)
data = dataRes.valueOr:
Expand Down Expand Up @@ -2417,7 +2417,7 @@ proc createEth2Node*(rng: ref HmacDrbgContext,
try:
# This doesn't have to be a tight bound, just enough to avoid denial of
# service attacks.
let decoded = snappy.decode(m.data, static(GOSSIP_MAX_SIZE.uint32))
let decoded = snappy.decode(m.data, static(MAX_PAYLOAD_SIZE.uint32))
ok(gossipId(decoded, phase0Prefix, m.topic))
except CatchableError:
err(ValidationResult.Reject)
Expand Down Expand Up @@ -2464,7 +2464,7 @@ proc createEth2Node*(rng: ref HmacDrbgContext,
sign = false,
verifySignature = false,
anonymize = true,
maxMessageSize = static(GOSSIP_MAX_SIZE.int),
maxMessageSize = static(MAX_PAYLOAD_SIZE.int),
parameters = params)

switch.mount(pubsub)
Expand Down Expand Up @@ -2604,7 +2604,7 @@ func gossipEncode(msg: auto): seq[byte] =
let uncompressed = SSZ.encode(msg)
# This function only for messages we create. A message this large amounts to
# an internal logic error.
doAssert uncompressed.lenu64 <= GOSSIP_MAX_SIZE
doAssert uncompressed.lenu64 <= MAX_PAYLOAD_SIZE

snappy.encode(uncompressed)

Expand Down
8 changes: 4 additions & 4 deletions beacon_chain/rpc/rest_config_api.nim
Original file line number Diff line number Diff line change
Expand Up @@ -209,22 +209,22 @@ proc installConfigApiHandlers*(router: var RestRouter, node: BeaconNode) =
Base10.toString(REORG_PARENT_WEIGHT_THRESHOLD),
REORG_MAX_EPOCHS_SINCE_FINALIZATION:
Base10.toString(uint64(REORG_MAX_EPOCHS_SINCE_FINALIZATION)),

DEPOSIT_CHAIN_ID:
Base10.toString(cfg.DEPOSIT_CHAIN_ID),
DEPOSIT_NETWORK_ID:
Base10.toString(cfg.DEPOSIT_NETWORK_ID),
DEPOSIT_CONTRACT_ADDRESS:
$cfg.DEPOSIT_CONTRACT_ADDRESS,
GOSSIP_MAX_SIZE:
Base10.toString(GOSSIP_MAX_SIZE),

MAX_PAYLOAD_SIZE:
Base10.toString(MAX_PAYLOAD_SIZE),
MAX_REQUEST_BLOCKS:
Base10.toString(MAX_REQUEST_BLOCKS),
EPOCHS_PER_SUBNET_SUBSCRIPTION:
Base10.toString(EPOCHS_PER_SUBNET_SUBSCRIPTION),
MIN_EPOCHS_FOR_BLOCK_REQUESTS:
Base10.toString(cfg.MIN_EPOCHS_FOR_BLOCK_REQUESTS),
MAX_CHUNK_SIZE:
Base10.toString(MAX_CHUNK_SIZE),
TTFB_TIMEOUT:
Base10.toString(TTFB_TIMEOUT),
RESP_TIMEOUT:
Expand Down
5 changes: 2 additions & 3 deletions beacon_chain/spec/datatypes/constants.nim
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,8 @@ const
ATTESTATION_PROPAGATION_SLOT_RANGE*: uint64 = 32
MAXIMUM_GOSSIP_CLOCK_DISPARITY* = 500.millis

# https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/bellatrix/p2p-interface.md#configuration
GOSSIP_MAX_SIZE* = 10'u64 * 1024 * 1024 # bytes
MAX_CHUNK_SIZE* = 10'u64 * 1024 * 1024 # bytes
# https://github.com/ethereum/consensus-specs/blob/v1.5.0-beta.2/specs/phase0/p2p-interface.md#configuration
MAX_PAYLOAD_SIZE* = 10'u64 * 1024 * 1024 # bytes

# https://github.com/ethereum/consensus-specs/blob/v1.5.0-alpha.8/specs/deneb/p2p-interface.md#configuration
MAX_REQUEST_BLOCKS_DENEB*: uint64 = 128 # TODO Make use of in request code
Expand Down
27 changes: 9 additions & 18 deletions beacon_chain/spec/presets.nim
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,10 @@ type
DEPOSIT_CONTRACT_ADDRESS*: Eth1Address

# Networking
# TODO GOSSIP_MAX_SIZE*: uint64
# TODO MAX_PAYLOAD_SIZE*: uint64
# TODO MAX_REQUEST_BLOCKS*: uint64
# TODO EPOCHS_PER_SUBNET_SUBSCRIPTION*: uint64
MIN_EPOCHS_FOR_BLOCK_REQUESTS*: uint64
# TODO MAX_CHUNK_SIZE*: uint64
# TODO TTFB_TIMEOUT*: uint64
# TODO RESP_TIMEOUT*: uint64
# TODO ATTESTATION_PROPAGATION_SLOT_RANGE*: uint64
Expand Down Expand Up @@ -249,15 +248,13 @@ when const_preset == "mainnet":
# Networking
# ---------------------------------------------------------------
# `10 * 2**20` (= 10485760, 10 MiB)
# TODO GOSSIP_MAX_SIZE: 10485760,
# TODO MAX_PAYLOAD_SIZE: 10485760,
# `2**10` (= 1024)
# TODO MAX_REQUEST_BLOCKS: 1024,
# `2**8` (= 256)
# TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256,
# `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months)
MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024,
# `10 * 2**20` (=10485760, 10 MiB)
# TODO MAX_CHUNK_SIZE: 10485760,
# 5s
# TODO TTFB_TIMEOUT: 5,
# 10s
Expand Down Expand Up @@ -312,9 +309,6 @@ elif const_preset == "gnosis":
# such as `CONFIG_NAME`, `TERMINAL_TOTAL_DIFFICULTY`, `*_FORK_EPOCH`, etc
# which must be effectively overriden in all network (including mainnet).
const defaultRuntimeConfig* = RuntimeConfig(
# Mainnet config

# Extends the mainnet preset
PRESET_BASE: "gnosis",

# Free-form short name of the network that this configuration applies to - known
Expand Down Expand Up @@ -372,8 +366,8 @@ elif const_preset == "gnosis":

# Time parameters
# ---------------------------------------------------------------
# 12 seconds
# TODO SECONDS_PER_SLOT: 12,
# 5 seconds
# TODO SECONDS_PER_SLOT: 5,
# 14 (estimate from Eth1 mainnet)
SECONDS_PER_ETH1_BLOCK: 5,
# 2**8 (= 256) epochs ~27 hours
Expand Down Expand Up @@ -409,15 +403,13 @@ elif const_preset == "gnosis":
# Networking
# ---------------------------------------------------------------
# `10 * 2**20` (= 10485760, 10 MiB)
# TODO GOSSIP_MAX_SIZE: 10485760,
# TODO MAX_PAYLOAD_SIZE: 10485760,
# `2**10` (= 1024)
# TODO MAX_REQUEST_BLOCKS: 1024,
# `2**8` (= 256)
# TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256,
# `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 33024, ~5 months)
MIN_EPOCHS_FOR_BLOCK_REQUESTS: 33024,
# `10 * 2**20` (=10485760, 10 MiB)
# TODO MAX_CHUNK_SIZE: 10485760,
# 5s
# TODO TTFB_TIMEOUT: 5,
# 10s
Expand Down Expand Up @@ -566,15 +558,13 @@ elif const_preset == "minimal":
# Networking
# ---------------------------------------------------------------
# `10 * 2**20` (= 10485760, 10 MiB)
# TODO GOSSIP_MAX_SIZE: 10485760,
# TODO MAX_PAYLOAD_SIZE: 10485760,
# `2**10` (= 1024)
# TODO MAX_REQUEST_BLOCKS: 1024,
# `2**8` (= 256)
# TODO EPOCHS_PER_SUBNET_SUBSCRIPTION: 256,
# [customized] `MIN_VALIDATOR_WITHDRAWABILITY_DELAY + CHURN_LIMIT_QUOTIENT // 2` (= 272)
MIN_EPOCHS_FOR_BLOCK_REQUESTS: 272,
# `10 * 2**20` (=10485760, 10 MiB)
# TODO MAX_CHUNK_SIZE: 10485760,
# 5s
# TODO TTFB_TIMEOUT: 5,
# 10s
Expand Down Expand Up @@ -804,10 +794,11 @@ proc readRuntimeConfig*(
checkCompatibility DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF
checkCompatibility DOMAIN_CONTRIBUTION_AND_PROOF

checkCompatibility GOSSIP_MAX_SIZE
checkCompatibility MAX_PAYLOAD_SIZE
checkCompatibility MAX_PAYLOAD_SIZE, "GOSSIP_MAX_SIZE"
checkCompatibility MAX_PAYLOAD_SIZE, "MAX_CHUNK_SIZE"
checkCompatibility MAX_REQUEST_BLOCKS
checkCompatibility EPOCHS_PER_SUBNET_SUBSCRIPTION
checkCompatibility MAX_CHUNK_SIZE
checkCompatibility TTFB_TIMEOUT
checkCompatibility RESP_TIMEOUT
checkCompatibility ATTESTATION_PROPAGATION_SLOT_RANGE
Expand Down
2 changes: 1 addition & 1 deletion ncli/resttest-rules.json
Original file line number Diff line number Diff line change
Expand Up @@ -4180,7 +4180,7 @@
"response": {
"status": {"operator": "equals", "value": "200"},
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
"body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","GOSSIP_MAX_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","MAX_CHUNK_SIZE":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}]
"body": [{"operator": "jstructcmps", "start": ["data"], "value": {"MAX_COMMITTEES_PER_SLOT":"","TARGET_COMMITTEE_SIZE":"","MAX_VALIDATORS_PER_COMMITTEE":"","SHUFFLE_ROUND_COUNT":"","HYSTERESIS_QUOTIENT":"","HYSTERESIS_DOWNWARD_MULTIPLIER":"","HYSTERESIS_UPWARD_MULTIPLIER":"","MIN_DEPOSIT_AMOUNT":"","MAX_EFFECTIVE_BALANCE":"","MAX_EFFECTIVE_BALANCE_ELECTRA":"","EFFECTIVE_BALANCE_INCREMENT":"","MIN_ATTESTATION_INCLUSION_DELAY":"","SLOTS_PER_EPOCH":"","MIN_SEED_LOOKAHEAD":"","MAX_SEED_LOOKAHEAD":"","EPOCHS_PER_ETH1_VOTING_PERIOD":"","SLOTS_PER_HISTORICAL_ROOT":"","MIN_EPOCHS_TO_INACTIVITY_PENALTY":"","EPOCHS_PER_HISTORICAL_VECTOR":"","EPOCHS_PER_SLASHINGS_VECTOR":"","HISTORICAL_ROOTS_LIMIT":"","VALIDATOR_REGISTRY_LIMIT":"","BASE_REWARD_FACTOR":"","WHISTLEBLOWER_REWARD_QUOTIENT":"","PROPOSER_REWARD_QUOTIENT":"","INACTIVITY_PENALTY_QUOTIENT":"","MIN_SLASHING_PENALTY_QUOTIENT":"","PROPORTIONAL_SLASHING_MULTIPLIER":"","MAX_PROPOSER_SLASHINGS":"","MAX_ATTESTER_SLASHINGS":"","MAX_ATTESTATIONS":"","MAX_DEPOSITS":"","MAX_VOLUNTARY_EXITS":"","INACTIVITY_PENALTY_QUOTIENT_ALTAIR":"","MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR":"","PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR":"","SYNC_COMMITTEE_SIZE":"","EPOCHS_PER_SYNC_COMMITTEE_PERIOD":"","MIN_SYNC_COMMITTEE_PARTICIPANTS":"","UPDATE_TIMEOUT":"","INACTIVITY_PENALTY_QUOTIENT_BELLATRIX":"","MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX":"","PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX":"","MAX_BYTES_PER_TRANSACTION":"","MAX_TRANSACTIONS_PER_PAYLOAD":"","BYTES_PER_LOGS_BLOOM":"","MAX_EXTRA_DATA_BYTES":"","MAX_BLS_TO_EXECUTION_CHANGES":"","MAX_WITHDRAWALS_PER_PAYLOAD":"","MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP":"","PRESET_BASE":"","CONFIG_NAME":"","TERMINAL_TOTAL_DIFFICULTY":"","TERMINAL_BLOCK_HASH":"","TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH":"","MIN_GENESIS_ACTIVE_VALIDATOR_COUNT":"","MIN_GENESIS_TIME":"","GENESIS_FORK_VERSION":"","GENESIS_DELAY":"","ALTAIR_FORK_VERSION":"","ALTAIR_FORK_EPOCH":"","BELLATRIX_FORK_VERSION":"","BELLATRIX_FORK_EPOCH":"","CAPELLA_FORK_VERSION":"","CAPELLA_FORK_EPOCH":"","DENEB_FORK_VERSION":"","DENEB_FORK_EPOCH":"","ELECTRA_FORK_VERSION":"","ELECTRA_FORK_EPOCH":"","SECONDS_PER_SLOT":"","SECONDS_PER_ETH1_BLOCK":"","MIN_VALIDATOR_WITHDRAWABILITY_DELAY":"","FIELD_ELEMENTS_PER_BLOB":"","MAX_BLOB_COMMITMENTS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK":"","MAX_BLOBS_PER_BLOCK_ELECTRA":"","MAX_REQUEST_BLOB_SIDECARS_ELECTRA":"","KZG_COMMITMENT_INCLUSION_PROOF_DEPTH":"","SHARD_COMMITTEE_PERIOD":"","ETH1_FOLLOW_DISTANCE":"","INACTIVITY_SCORE_BIAS":"","INACTIVITY_SCORE_RECOVERY_RATE":"","EJECTION_BALANCE":"","MIN_PER_EPOCH_CHURN_LIMIT":"","CHURN_LIMIT_QUOTIENT":"","MAX_PER_EPOCH_ACTIVATION_CHURN_LIMIT":"","PROPOSER_SCORE_BOOST":"","REORG_HEAD_WEIGHT_THRESHOLD":"","REORG_PARENT_WEIGHT_THRESHOLD":"","REORG_MAX_EPOCHS_SINCE_FINALIZATION":"","DEPOSIT_CHAIN_ID":"","DEPOSIT_NETWORK_ID":"","DEPOSIT_CONTRACT_ADDRESS":"","MAX_PAYLOAD_SIZE":"","MAX_REQUEST_BLOCKS":"","EPOCHS_PER_SUBNET_SUBSCRIPTION":"","MIN_EPOCHS_FOR_BLOCK_REQUESTS":"","TTFB_TIMEOUT":"","RESP_TIMEOUT":"","ATTESTATION_PROPAGATION_SLOT_RANGE":"","MAXIMUM_GOSSIP_CLOCK_DISPARITY":"","MESSAGE_DOMAIN_INVALID_SNAPPY":"","MESSAGE_DOMAIN_VALID_SNAPPY":"","SUBNETS_PER_NODE":"","ATTESTATION_SUBNET_COUNT":"","ATTESTATION_SUBNET_EXTRA_BITS":"","ATTESTATION_SUBNET_PREFIX_BITS":"","MAX_REQUEST_BLOCKS_DENEB":"","MAX_REQUEST_BLOB_SIDECARS":"","MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS":"","BLOB_SIDECAR_SUBNET_COUNT":"","BLS_WITHDRAWAL_PREFIX":"","ETH1_ADDRESS_WITHDRAWAL_PREFIX":"","DOMAIN_BEACON_PROPOSER":"","DOMAIN_BEACON_ATTESTER":"","DOMAIN_RANDAO":"","DOMAIN_DEPOSIT":"","DOMAIN_VOLUNTARY_EXIT":"","DOMAIN_SELECTION_PROOF":"","DOMAIN_AGGREGATE_AND_PROOF":"","TIMELY_SOURCE_FLAG_INDEX":"","TIMELY_TARGET_FLAG_INDEX":"","TIMELY_HEAD_FLAG_INDEX":"","TIMELY_SOURCE_WEIGHT":"","TIMELY_TARGET_WEIGHT":"","TIMELY_HEAD_WEIGHT":"","SYNC_REWARD_WEIGHT":"","PROPOSER_WEIGHT":"","WEIGHT_DENOMINATOR":"","DOMAIN_SYNC_COMMITTEE":"","DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF":"","DOMAIN_CONTRIBUTION_AND_PROOF":"","DOMAIN_BLS_TO_EXECUTION_CHANGE":"","TARGET_AGGREGATORS_PER_COMMITTEE":"","TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE":"","SYNC_COMMITTEE_SUBNET_COUNT":"", "UNSET_DEPOSIT_REQUESTS_START_INDEX":"", "FULL_EXIT_REQUEST_AMOUNT": "", "COMPOUNDING_WITHDRAWAL_PREFIX": "", "DEPOSIT_REQUEST_TYPE": "", "WITHDRAWAL_REQUEST_TYPE": "", "CONSOLIDATION_REQUEST_TYPE": "", "MIN_ACTIVATION_BALANCE": "", "MIN_SLASHING_PENALTY_QUOTIENT_ELECTRA": "", "WHISTLEBLOWER_REWARD_QUOTIENT_ELECTRA": "", "PENDING_DEPOSITS_LIMIT": "", "PENDING_PARTIAL_WITHDRAWALS_LIMIT": "", "PENDING_CONSOLIDATIONS_LIMIT": "", "MAX_ATTESTER_SLASHINGS_ELECTRA": "", "MAX_ATTESTATIONS_ELECTRA": "", "MAX_DEPOSIT_REQUESTS_PER_PAYLOAD": "", "MAX_WITHDRAWAL_REQUESTS_PER_PAYLOAD": "", "MAX_CONSOLIDATION_REQUESTS_PER_PAYLOAD": "", "MAX_PENDING_PARTIALS_PER_WITHDRAWALS_SWEEP": "", "MAX_PENDING_DEPOSITS_PER_EPOCH": "", "MIN_PER_EPOCH_CHURN_LIMIT_ELECTRA": "", "MAX_PER_EPOCH_ACTIVATION_EXIT_CHURN_LIMIT": ""}}]
}
},
{
Expand Down
Loading

0 comments on commit 501580e

Please sign in to comment.