* Address issue #5362. * Remove RestSpec object declaration and getSpec() API call declaration. * Address review comments.
This commit is contained in:
parent
8ffb80e954
commit
4ce8e77b56
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
import
|
import
|
||||||
std/[os, sequtils, times],
|
std/[os, sequtils, times],
|
||||||
stew/byteutils,
|
stew/[byteutils, base10],
|
||||||
chronicles,
|
chronicles,
|
||||||
./spec/eth2_apis/rest_beacon_client,
|
./spec/eth2_apis/rest_beacon_client,
|
||||||
./spec/signatures,
|
./spec/signatures,
|
||||||
|
@ -220,15 +220,29 @@ proc restValidatorExit(config: BeaconNodeConf) {.async.} =
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
let signingFork = try:
|
let signingFork = try:
|
||||||
let response = await client.getSpec()
|
let response = await client.getSpecVC()
|
||||||
if response.status == 200:
|
if response.status == 200:
|
||||||
let spec = response.data
|
let
|
||||||
|
spec = response.data.data
|
||||||
|
denebForkEpoch =
|
||||||
|
block:
|
||||||
|
let s = spec.getOrDefault("DENEB_FORK_EPOCH", $FAR_FUTURE_EPOCH)
|
||||||
|
Epoch(Base10.decode(uint64, s).get(uint64(FAR_FUTURE_EPOCH)))
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/specs/phase0/beacon-chain.md#voluntary-exits
|
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/specs/phase0/beacon-chain.md#voluntary-exits
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.0/specs/deneb/beacon-chain.md#modified-process_voluntary_exit
|
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.0/specs/deneb/beacon-chain.md#modified-process_voluntary_exit
|
||||||
if currentEpoch >= Epoch(spec.data.DENEB_FORK_EPOCH):
|
if currentEpoch >= denebForkEpoch:
|
||||||
|
let capellaForkVersion =
|
||||||
|
block:
|
||||||
|
var res: Version
|
||||||
|
# CAPELLA_FOR_VERSION has specific format - "0x01000000", so
|
||||||
|
# default empty string is invalid, so `hexToByteArrayStrict`
|
||||||
|
# will raise exception on empty string.
|
||||||
|
let s = spec.getOrDefault("CAPELLA_FORK_VERSION", "")
|
||||||
|
hexToByteArrayStrict(s, distinctBase(res))
|
||||||
|
res
|
||||||
Fork(
|
Fork(
|
||||||
current_version: spec.data.CAPELLA_FORK_VERSION,
|
current_version: capellaForkVersion,
|
||||||
previous_version: spec.data.CAPELLA_FORK_VERSION,
|
previous_version: capellaForkVersion,
|
||||||
epoch: GENESIS_EPOCH) # irrelevant when current/previous identical
|
epoch: GENESIS_EPOCH) # irrelevant when current/previous identical
|
||||||
else:
|
else:
|
||||||
fork
|
fork
|
||||||
|
@ -239,6 +253,8 @@ proc restValidatorExit(config: BeaconNodeConf) {.async.} =
|
||||||
reason = exc.msg
|
reason = exc.msg
|
||||||
quit 1
|
quit 1
|
||||||
|
|
||||||
|
debug "Signing fork obtained", fork = fork
|
||||||
|
|
||||||
if not config.printData:
|
if not config.printData:
|
||||||
case askForExitConfirmation()
|
case askForExitConfirmation()
|
||||||
of ClientExitAction.abort:
|
of ClientExitAction.abort:
|
||||||
|
@ -249,7 +265,8 @@ proc restValidatorExit(config: BeaconNodeConf) {.async.} =
|
||||||
var hadErrors = false
|
var hadErrors = false
|
||||||
for validator in validators:
|
for validator in validators:
|
||||||
let restValidator = try:
|
let restValidator = try:
|
||||||
let response = await client.getStateValidatorPlain(stateIdHead, validator.getIdent)
|
let response = await client.getStateValidatorPlain(
|
||||||
|
stateIdHead, validator.getIdent)
|
||||||
if response.status == 200:
|
if response.status == 200:
|
||||||
let validatorInfo = decodeBytes(GetStateValidatorResponse,
|
let validatorInfo = decodeBytes(GetStateValidatorResponse,
|
||||||
response.data, response.contentType)
|
response.data, response.contentType)
|
||||||
|
|
|
@ -20,10 +20,6 @@ proc getForkSchedulePlain*(): RestPlainResponse {.
|
||||||
rest, endpoint: "/eth/v1/config/fork_schedule", meth: MethodGet.}
|
rest, endpoint: "/eth/v1/config/fork_schedule", meth: MethodGet.}
|
||||||
## https://ethereum.github.io/beacon-APIs/#/Config/getForkSchedule
|
## https://ethereum.github.io/beacon-APIs/#/Config/getForkSchedule
|
||||||
|
|
||||||
proc getSpec*(): RestResponse[GetSpecResponse] {.
|
|
||||||
rest, endpoint: "/eth/v1/config/spec", meth: MethodGet.}
|
|
||||||
## https://ethereum.github.io/beacon-APIs/#/Config/getSpec
|
|
||||||
|
|
||||||
proc getSpecVC*(): RestResponse[GetSpecVCResponse] {.
|
proc getSpecVC*(): RestResponse[GetSpecVCResponse] {.
|
||||||
rest, endpoint: "/eth/v1/config/spec", meth: MethodGet.}
|
rest, endpoint: "/eth/v1/config/spec", meth: MethodGet.}
|
||||||
## https://ethereum.github.io/beacon-APIs/#/Config/getSpec
|
## https://ethereum.github.io/beacon-APIs/#/Config/getSpec
|
||||||
|
|
|
@ -344,143 +344,6 @@ type
|
||||||
of ConsensusFork.Capella: capellaData*: capella.BeaconBlock
|
of ConsensusFork.Capella: capellaData*: capella.BeaconBlock
|
||||||
of ConsensusFork.Deneb: denebData*: DenebBlockContents
|
of ConsensusFork.Deneb: denebData*: DenebBlockContents
|
||||||
|
|
||||||
RestSpec* = object
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-alpha.1/presets/mainnet/phase0.yaml
|
|
||||||
MAX_COMMITTEES_PER_SLOT*: uint64
|
|
||||||
TARGET_COMMITTEE_SIZE*: uint64
|
|
||||||
MAX_VALIDATORS_PER_COMMITTEE*: uint64
|
|
||||||
SHUFFLE_ROUND_COUNT*: uint64
|
|
||||||
HYSTERESIS_QUOTIENT*: uint64
|
|
||||||
HYSTERESIS_DOWNWARD_MULTIPLIER*: uint64
|
|
||||||
HYSTERESIS_UPWARD_MULTIPLIER*: uint64
|
|
||||||
MIN_DEPOSIT_AMOUNT*: uint64
|
|
||||||
MAX_EFFECTIVE_BALANCE*: uint64
|
|
||||||
EFFECTIVE_BALANCE_INCREMENT*: uint64
|
|
||||||
MIN_ATTESTATION_INCLUSION_DELAY*: uint64
|
|
||||||
SLOTS_PER_EPOCH*: uint64
|
|
||||||
MIN_SEED_LOOKAHEAD*: uint64
|
|
||||||
MAX_SEED_LOOKAHEAD*: uint64
|
|
||||||
EPOCHS_PER_ETH1_VOTING_PERIOD*: uint64
|
|
||||||
SLOTS_PER_HISTORICAL_ROOT*: uint64
|
|
||||||
MIN_EPOCHS_TO_INACTIVITY_PENALTY*: uint64
|
|
||||||
EPOCHS_PER_HISTORICAL_VECTOR*: uint64
|
|
||||||
EPOCHS_PER_SLASHINGS_VECTOR*: uint64
|
|
||||||
HISTORICAL_ROOTS_LIMIT*: uint64
|
|
||||||
VALIDATOR_REGISTRY_LIMIT*: uint64
|
|
||||||
BASE_REWARD_FACTOR*: uint64
|
|
||||||
WHISTLEBLOWER_REWARD_QUOTIENT*: uint64
|
|
||||||
PROPOSER_REWARD_QUOTIENT*: uint64
|
|
||||||
INACTIVITY_PENALTY_QUOTIENT*: uint64
|
|
||||||
MIN_SLASHING_PENALTY_QUOTIENT*: uint64
|
|
||||||
PROPORTIONAL_SLASHING_MULTIPLIER*: uint64
|
|
||||||
MAX_PROPOSER_SLASHINGS*: uint64
|
|
||||||
MAX_ATTESTER_SLASHINGS*: uint64
|
|
||||||
MAX_ATTESTATIONS*: uint64
|
|
||||||
MAX_DEPOSITS*: uint64
|
|
||||||
MAX_VOLUNTARY_EXITS*: uint64
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/presets/mainnet/altair.yaml
|
|
||||||
INACTIVITY_PENALTY_QUOTIENT_ALTAIR*: uint64
|
|
||||||
MIN_SLASHING_PENALTY_QUOTIENT_ALTAIR*: uint64
|
|
||||||
PROPORTIONAL_SLASHING_MULTIPLIER_ALTAIR*: uint64
|
|
||||||
SYNC_COMMITTEE_SIZE*: uint64
|
|
||||||
EPOCHS_PER_SYNC_COMMITTEE_PERIOD*: uint64
|
|
||||||
MIN_SYNC_COMMITTEE_PARTICIPANTS*: uint64
|
|
||||||
UPDATE_TIMEOUT*: uint64
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/presets/mainnet/bellatrix.yaml
|
|
||||||
INACTIVITY_PENALTY_QUOTIENT_BELLATRIX*: uint64
|
|
||||||
MIN_SLASHING_PENALTY_QUOTIENT_BELLATRIX*: uint64
|
|
||||||
PROPORTIONAL_SLASHING_MULTIPLIER_BELLATRIX*: uint64
|
|
||||||
MAX_BYTES_PER_TRANSACTION*: uint64
|
|
||||||
MAX_TRANSACTIONS_PER_PAYLOAD*: uint64
|
|
||||||
BYTES_PER_LOGS_BLOOM*: uint64
|
|
||||||
MAX_EXTRA_DATA_BYTES*: uint64
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/presets/mainnet/capella.yaml
|
|
||||||
MAX_BLS_TO_EXECUTION_CHANGES*: uint64
|
|
||||||
MAX_WITHDRAWALS_PER_PAYLOAD*: uint64
|
|
||||||
MAX_VALIDATORS_PER_WITHDRAWALS_SWEEP*: uint64
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.3.0/configs/mainnet.yaml
|
|
||||||
PRESET_BASE*: string
|
|
||||||
CONFIG_NAME*: string
|
|
||||||
TERMINAL_TOTAL_DIFFICULTY*: UInt256
|
|
||||||
TERMINAL_BLOCK_HASH*: BlockHash
|
|
||||||
TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH*: uint64
|
|
||||||
MIN_GENESIS_ACTIVE_VALIDATOR_COUNT*: uint64
|
|
||||||
MIN_GENESIS_TIME*: uint64
|
|
||||||
GENESIS_FORK_VERSION*: Version
|
|
||||||
GENESIS_DELAY*: uint64
|
|
||||||
ALTAIR_FORK_VERSION*: Version
|
|
||||||
ALTAIR_FORK_EPOCH*: uint64
|
|
||||||
BELLATRIX_FORK_VERSION*: Version
|
|
||||||
BELLATRIX_FORK_EPOCH*: uint64
|
|
||||||
CAPELLA_FORK_VERSION*: Version
|
|
||||||
CAPELLA_FORK_EPOCH*: uint64
|
|
||||||
DENEB_FORK_VERSION*: Version
|
|
||||||
DENEB_FORK_EPOCH*: uint64
|
|
||||||
SECONDS_PER_SLOT*: uint64
|
|
||||||
SECONDS_PER_ETH1_BLOCK*: uint64
|
|
||||||
MIN_VALIDATOR_WITHDRAWABILITY_DELAY*: uint64
|
|
||||||
SHARD_COMMITTEE_PERIOD*: uint64
|
|
||||||
ETH1_FOLLOW_DISTANCE*: uint64
|
|
||||||
INACTIVITY_SCORE_BIAS*: uint64
|
|
||||||
INACTIVITY_SCORE_RECOVERY_RATE*: uint64
|
|
||||||
EJECTION_BALANCE*: uint64
|
|
||||||
MIN_PER_EPOCH_CHURN_LIMIT*: uint64
|
|
||||||
CHURN_LIMIT_QUOTIENT*: uint64
|
|
||||||
PROPOSER_SCORE_BOOST*: uint64
|
|
||||||
DEPOSIT_CHAIN_ID*: uint64
|
|
||||||
DEPOSIT_NETWORK_ID*: uint64
|
|
||||||
DEPOSIT_CONTRACT_ADDRESS*: Eth1Address
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-alpha.3/specs/phase0/beacon-chain.md#constants
|
|
||||||
# GENESIS_SLOT
|
|
||||||
# GENESIS_EPOCH
|
|
||||||
# FAR_FUTURE_EPOCH
|
|
||||||
# BASE_REWARDS_PER_EPOCH
|
|
||||||
# DEPOSIT_CONTRACT_TREE_DEPTH
|
|
||||||
# JUSTIFICATION_BITS_LENGTH
|
|
||||||
# ENDIANNESS
|
|
||||||
BLS_WITHDRAWAL_PREFIX*: RestWithdrawalPrefix
|
|
||||||
ETH1_ADDRESS_WITHDRAWAL_PREFIX*: RestWithdrawalPrefix
|
|
||||||
DOMAIN_BEACON_PROPOSER*: DomainType
|
|
||||||
DOMAIN_BEACON_ATTESTER*: DomainType
|
|
||||||
DOMAIN_RANDAO*: DomainType
|
|
||||||
DOMAIN_DEPOSIT*: DomainType
|
|
||||||
DOMAIN_VOLUNTARY_EXIT*: DomainType
|
|
||||||
DOMAIN_SELECTION_PROOF*: DomainType
|
|
||||||
DOMAIN_AGGREGATE_AND_PROOF*: DomainType
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/altair/beacon-chain.md#constants
|
|
||||||
TIMELY_SOURCE_FLAG_INDEX*: byte
|
|
||||||
TIMELY_TARGET_FLAG_INDEX*: byte
|
|
||||||
TIMELY_HEAD_FLAG_INDEX*: byte
|
|
||||||
TIMELY_SOURCE_WEIGHT*: uint64
|
|
||||||
TIMELY_TARGET_WEIGHT*: uint64
|
|
||||||
TIMELY_HEAD_WEIGHT*: uint64
|
|
||||||
SYNC_REWARD_WEIGHT*: uint64
|
|
||||||
PROPOSER_WEIGHT*: uint64
|
|
||||||
WEIGHT_DENOMINATOR*: uint64
|
|
||||||
DOMAIN_SYNC_COMMITTEE*: DomainType
|
|
||||||
DOMAIN_SYNC_COMMITTEE_SELECTION_PROOF*: DomainType
|
|
||||||
DOMAIN_CONTRIBUTION_AND_PROOF*: DomainType
|
|
||||||
# PARTICIPATION_FLAG_WEIGHTS
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/capella/beacon-chain.md#domain-types
|
|
||||||
DOMAIN_BLS_TO_EXECUTION_CHANGE*: DomainType
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.3.0/specs/phase0/validator.md#constants
|
|
||||||
TARGET_AGGREGATORS_PER_COMMITTEE*: uint64
|
|
||||||
RANDOM_SUBNETS_PER_VALIDATOR*: uint64
|
|
||||||
EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION*: uint64
|
|
||||||
ATTESTATION_SUBNET_COUNT*: uint64
|
|
||||||
|
|
||||||
# https://github.com/ethereum/consensus-specs/blob/v1.4.0-beta.1/specs/altair/validator.md#constants
|
|
||||||
TARGET_AGGREGATORS_PER_SYNC_SUBCOMMITTEE*: uint64
|
|
||||||
SYNC_COMMITTEE_SUBNET_COUNT*: uint64
|
|
||||||
|
|
||||||
VCRuntimeConfig* = Table[string, string]
|
VCRuntimeConfig* = Table[string, string]
|
||||||
|
|
||||||
RestDepositContract* = object
|
RestDepositContract* = object
|
||||||
|
@ -665,7 +528,6 @@ type
|
||||||
GetPoolProposerSlashingsResponse* = DataEnclosedObject[seq[ProposerSlashing]]
|
GetPoolProposerSlashingsResponse* = DataEnclosedObject[seq[ProposerSlashing]]
|
||||||
GetPoolVoluntaryExitsResponse* = DataEnclosedObject[seq[SignedVoluntaryExit]]
|
GetPoolVoluntaryExitsResponse* = DataEnclosedObject[seq[SignedVoluntaryExit]]
|
||||||
GetProposerDutiesResponse* = DataRootEnclosedObject[seq[RestProposerDuty]]
|
GetProposerDutiesResponse* = DataRootEnclosedObject[seq[RestProposerDuty]]
|
||||||
GetSpecResponse* = DataEnclosedObject[RestSpec]
|
|
||||||
GetSpecVCResponse* = DataEnclosedObject[VCRuntimeConfig]
|
GetSpecVCResponse* = DataEnclosedObject[VCRuntimeConfig]
|
||||||
GetStateFinalityCheckpointsResponse* = DataEnclosedObject[RestBeaconStatesFinalityCheckpoints]
|
GetStateFinalityCheckpointsResponse* = DataEnclosedObject[RestBeaconStatesFinalityCheckpoints]
|
||||||
GetStateForkResponse* = DataEnclosedObject[Fork]
|
GetStateForkResponse* = DataEnclosedObject[Fork]
|
||||||
|
|
Loading…
Reference in New Issue