Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compatibility with Teku VC for voluntary-exit #4711

Closed
heejin-github opened this issue Sep 7, 2023 · 5 comments
Closed

Compatibility with Teku VC for voluntary-exit #4711

heejin-github opened this issue Sep 7, 2023 · 5 comments
Labels
enhancement New feature or request good first issue Good for newcomers low-hanging-fruit Easy to resolve, get it before someone else does! v4.6.0 ETA Q1 2024

Comments

@heejin-github
Copy link

Description

I'm using LightHouse BN, and validator operated with Teku VC client.
If I'm trying to voluntary exit with Teku VC client, it was failed to retrieve network spec constant MAX_REQUEST_BLOCKS from beacon node endpoint as below. but, LightHouse BN didn't provide it.
Teku seems to check network spec configuration before run voluntary exit.

  • Teku log,
Loading configuration...
Failed to retrieve network spec from beacon node endpoint 'http://127.0.0.1:3600/'.
Details: Missing value for spec constant 'MAX_REQUEST_BLOCKS'

Version

Lighthouse BN : v4.4.1
Teku VC : v23.9.0

Present Behaviour

LightHouse BN didn't provide MAX_REQUEST_BLOCKS via beacon API. /eth/v1/config/spec

# curl -s localhost:5052/eth/v1/config/spec | jq
{
  "data": {
    "CONFIG_NAME": "prater",
    "PRESET_BASE": "mainnet",
    "TERMINAL_TOTAL_DIFFICULTY": "10790000",
    "TERMINAL_BLOCK_HASH": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH": "18446744073709551615",
    "SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY": "128",
    "MIN_GENESIS_ACTIVE_VALIDATOR_COUNT": "16384",
    "MIN_GENESIS_TIME": "1614588812",
    "GENESIS_FORK_VERSION": "0x00001020",
    "GENESIS_DELAY": "1919188",
    "ALTAIR_FORK_VERSION": "0x01001020",
    "ALTAIR_FORK_EPOCH": "36660",
    "BELLATRIX_FORK_VERSION": "0x02001020",
    "BELLATRIX_FORK_EPOCH": "112260",
    "CAPELLA_FORK_VERSION": "0x03001020",
    "CAPELLA_FORK_EPOCH": "162304",
    "SECONDS_PER_SLOT": "12",
    "SECONDS_PER_ETH1_BLOCK": "14",
    "MIN_VALIDATOR_WITHDRAWABILITY_DELAY": "256",
    "SHARD_COMMITTEE_PERIOD": "256",
    "ETH1_FOLLOW_DISTANCE": "2048",
    "SUBNETS_PER_NODE": "2",
    "INACTIVITY_SCORE_BIAS": "4",
    "INACTIVITY_SCORE_RECOVERY_RATE": "16",
    "EJECTION_BALANCE": "16000000000",
    "MIN_PER_EPOCH_CHURN_LIMIT": "4",
    "CHURN_LIMIT_QUOTIENT": "65536",
    "PROPOSER_SCORE_BOOST": "40",
    "DEPOSIT_CHAIN_ID": "5",
    "DEPOSIT_NETWORK_ID": "5",
    "DEPOSIT_CONTRACT_ADDRESS": "0xff50ed3d0ec03ac01d4c79aad74928bff48a7b2b",
    "GOSSIP_MAX_SIZE": "10485760",
    "MIN_EPOCHS_FOR_BLOCK_REQUESTS": "33024",
    "MAX_CHUNK_SIZE": "10485760",
    "TTFB_TIMEOUT": "5",
    "RESP_TIMEOUT": "10",
    "MESSAGE_DOMAIN_INVALID_SNAPPY": "0x00000000",
    "MESSAGE_DOMAIN_VALID_SNAPPY": "0x01000000",
    "ATTESTATION_SUBNET_EXTRA_BITS": "0",
    "ATTESTATION_SUBNET_PREFIX_BITS": "6",
    "MAX_COMMITTEES_PER_SLOT": "64",
    "TARGET_COMMITTEE_SIZE": "128",
    "MAX_VALIDATORS_PER_COMMITTEE": "2048",
    "SHUFFLE_ROUND_COUNT": "90",
    "HYSTERESIS_QUOTIENT": "4",
    "HYSTERESIS_DOWNWARD_MULTIPLIER": "1",
    "HYSTERESIS_UPWARD_MULTIPLIER": "5",
    "SAFE_SLOTS_TO_UPDATE_JUSTIFIED": "8",
    "MIN_DEPOSIT_AMOUNT": "1000000000",
    "MAX_EFFECTIVE_BALANCE": "32000000000",
    "EFFECTIVE_BALANCE_INCREMENT": "1000000000",
    "MIN_ATTESTATION_INCLUSION_DELAY": "1",
    "SLOTS_PER_EPOCH": "32",
    "MIN_SEED_LOOKAHEAD": "1",
    "MAX_SEED_LOOKAHEAD": "4",
    "EPOCHS_PER_ETH1_VOTING_PERIOD": "64",
    "SLOTS_PER_HISTORICAL_ROOT": "8192",
    "MIN_EPOCHS_TO_INACTIVITY_PENALTY": "4",
    "EPOCHS_PER_HISTORICAL_VECTOR": "65536",
    "EPOCHS_PER_SLASHINGS_VECTOR": "8192",
    "HISTORICAL_ROOTS_LIMIT": "16777216",
    "VALIDATOR_REGISTRY_LIMIT": "1099511627776",
    "BASE_REWARD_FACTOR": "64",
    "WHISTLEBLOWER_REWARD_QUOTIENT": "512",
    "PROPOSER_REWARD_QUOTIENT": "8",
    "INACTIVITY_PENALTY_QUOTIENT": "67108864",
    "MIN_SLASHING_PENALTY_QUOTIENT": "128",
    "PROPORTIONAL_SLASHING_MULTIPLIER": "1",
    "MAX_PROPOSER_SLASHINGS": "16",
    "MAX_ATTESTER_SLASHINGS": "2",
    "MAX_ATTESTATIONS": "128",
    "MAX_DEPOSITS": "16",
    "MAX_VOLUNTARY_EXITS": "16",
    "INACTIVITY_PENALTY_QUOTIENT_ALTAIR": "50331648",
    "MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR": "64",
    "PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR": "2",
    "SYNC_COMMITTEE_SIZE": "512",
    "EPOCHS_PER_SYNC_COMMITTEE_PERIOD": "256",
    "MIN_SYNC_COMMITTEE_PARTICIPANTS": "1",
    "INACTIVITY_PENALTY_QUOTIENT_BELLATRIX": "16777216",
    "MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX": "32",
    "PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX": "3",
    "MAX_BYTES_PER_TRANSACTION": "1073741824",
    "MAX_TRANSACTIONS_PER_PAYLOAD": "1048576",
    "BYTES_PER_LOGS_BLOOM": "256",
    "MAX_EXTRA_DATA_BYTES": "32",
    "MAX_BLS_TO_EXECUTION_CHANGES": "16",
    "MAX_WITHDRAWALS_PER_PAYLOAD": "16",
    "MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP": "16384",
    "BLS_WITHDRAWAL_PREFIX": "0x00",
    "DOMAIN_BEACON_ATTESTER": "0x01000000",
    "DOMAIN_RANDAO": "0x02000000",
    "DOMAIN_AGGREGATE_AND_PROOF": "0x06000000",
    "DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF": "0x08000000",
    "TARGET_AGGREGATORS_PER_COMMITTEE": "16",
    "DOMAIN_SELECTION_PROOF": "0x05000000",
    "DOMAIN_SYNC_COMMITTEE": "0x07000000",
    "DOMAIN_BEACON_PROPOSER": "0x00000000",
    "DOMAIN_VOLUNTARY_EXIT": "0x04000000",
    "DOMAIN_APPLICATION_MASK": "0x00000001",
    "DOMAIN_CONTRIBUTION_AND_PROOF": "0x09000000",
    "TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE": "16",
    "DOMAIN_DEPOSIT": "0x03000000",
    "SYNC_COMMITTEE_SUBNET_COUNT": "4"
  }
}

Expected Behaviour

Provide MAX_REQUEST_BLOCKS constant value through beacon API /eth/v1/config/spec

Steps to resolve

Need to provide MAX_REQUEST_BLOCKS constant value for voluntary-exit with Teku VC Client.

@michaelsproul michaelsproul added enhancement New feature or request low-hanging-fruit Easy to resolve, get it before someone else does! v4.5.0 ETA Q4 2023 labels Sep 7, 2023
@michaelsproul
Copy link
Member

Hey @heejin-github thanks for bringing this to our attention. Lighthouse generally updates the /config/spec at each hard-fork, and the field MAX_REQUEST_BLOCKS was not added as part of a hard fork (it was added in this PR: ethereum/consensus-specs#3375).

You might be able to work around the issue by using an older version of Teku that doesn't expect this field. It's my opinion that Teku shouldn't be so strict here, but we can also fix it on our side for the next release.

@heejin-github
Copy link
Author

Hey @michaelsproul
yeah, make sense for me. I'll close this issue. and I look forward to fix it for the next release.
Thank you for your efforts in client diversity and compatibility.

@michaelsproul
Copy link
Member

I'll leave it open so we can track it

@duguorong009
Copy link
Contributor

Hey, @michaelsproul @paulhauner
I think this issue needs to be addressed, since v4.5.0 is released.
Hence, I created the PR addressing the issue.
Please check the PR #4800 & gimme the comments.

@michaelsproul
Copy link
Member

michaelsproul commented Oct 6, 2023

Closing this issue in favour of #4562. The Teku-incompatibility has been addressed on Teku's side, and Lighthouse will include the value on the spec endpoint once #4562 is solved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers low-hanging-fruit Easy to resolve, get it before someone else does! v4.6.0 ETA Q1 2024
Projects
None yet
Development

No branches or pull requests

4 participants