diff --git a/beacon_chain/rpc/config_api.nim b/beacon_chain/rpc/config_api.nim index eabb6037d..65ba7c1c3 100644 --- a/beacon_chain/rpc/config_api.nim +++ b/beacon_chain/rpc/config_api.nim @@ -5,11 +5,12 @@ # at your option. This file may not be copied, modified, or distributed except according to those terms. import + std/strutils, json_rpc/[rpcserver, jsonmarshal], chronicles, + nimcrypto/utils as ncrutils, ../beacon_node_common, - - ../spec/datatypes + ../spec/[datatypes, digest, presets] logScope: topics = "configapi" @@ -24,7 +25,78 @@ proc installConfigApiHandlers*(rpcServer: RpcServer, node: BeaconNode) = return @[node.chainDag.headState.data.data.fork] rpcServer.rpc("get_v1_config_spec") do () -> JsonNode: - unimplemented() + return %{ + "MAX_COMMITTEES_PER_SLOT": $MAX_COMMITTEES_PER_SLOT, + "TARGET_COMMITTEE_SIZE": $TARGET_COMMITTEE_SIZE, + "MAX_VALIDATORS_PER_COMMITTEE": $MAX_VALIDATORS_PER_COMMITTEE, + "MIN_PER_EPOCH_CHURN_LIMIT": $MIN_PER_EPOCH_CHURN_LIMIT, + "CHURN_LIMIT_QUOTIENT": $CHURN_LIMIT_QUOTIENT, + "SHUFFLE_ROUND_COUNT": $SHUFFLE_ROUND_COUNT, + "MIN_GENESIS_ACTIVE_VALIDATOR_COUNT": + $node.config.runtimePreset.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT, + "MIN_GENESIS_TIME": $node.config.runtimePreset.MIN_GENESIS_TIME, + "HYSTERESIS_QUOTIENT": $HYSTERESIS_QUOTIENT, + "HYSTERESIS_DOWNWARD_MULTIPLIER": $HYSTERESIS_DOWNWARD_MULTIPLIER, + "HYSTERESIS_UPWARD_MULTIPLIER": $HYSTERESIS_UPWARD_MULTIPLIER, + "SAFE_SLOTS_TO_UPDATE_JUSTIFIED": $SAFE_SLOTS_TO_UPDATE_JUSTIFIED, + "ETH1_FOLLOW_DISTANCE": $node.config.runtimePreset.ETH1_FOLLOW_DISTANCE, + "TARGET_AGGREGATORS_PER_COMMITTEE": $TARGET_AGGREGATORS_PER_COMMITTEE, + "RANDOM_SUBNETS_PER_VALIDATOR": $RANDOM_SUBNETS_PER_VALIDATOR, + "EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION": + $EPOCHS_PER_RANDOM_SUBNET_SUBSCRIPTION, + "SECONDS_PER_ETH1_BLOCK": $SECONDS_PER_ETH1_BLOCK, + "DEPOSIT_CHAIN_ID": $DEPOSIT_CHAIN_ID, + "DEPOSIT_NETWORK_ID": $DEPOSIT_NETWORK_ID, + "DEPOSIT_CONTRACT_ADDRESS": $node.config.depositContractAddress, + "MIN_DEPOSIT_AMOUNT": $MIN_DEPOSIT_AMOUNT, + "MAX_EFFECTIVE_BALANCE": $MAX_EFFECTIVE_BALANCE, + "EJECTION_BALANCE": $EJECTION_BALANCE, + "EFFECTIVE_BALANCE_INCREMENT": $EFFECTIVE_BALANCE_INCREMENT, + "GENESIS_FORK_VERSION": + $node.config.runtimePreset.GENESIS_FORK_VERSION, + "BLS_WITHDRAWAL_PREFIX": "0x" & ncrutils.toHex([BLS_WITHDRAWAL_PREFIX]), + "GENESIS_DELAY": $node.config.runtimePreset.GENESIS_DELAY, + "SECONDS_PER_SLOT": $SECONDS_PER_SLOT, + "MIN_ATTESTATION_INCLUSION_DELAY": $MIN_ATTESTATION_INCLUSION_DELAY, + "SLOTS_PER_EPOCH": $SLOTS_PER_EPOCH, + "MIN_SEED_LOOKAHEAD": $MIN_SEED_LOOKAHEAD, + "MAX_SEED_LOOKAHEAD": $MAX_SEED_LOOKAHEAD, + "EPOCHS_PER_ETH1_VOTING_PERIOD": $EPOCHS_PER_ETH1_VOTING_PERIOD, + "SLOTS_PER_HISTORICAL_ROOT": $SLOTS_PER_HISTORICAL_ROOT, + "MIN_VALIDATOR_WITHDRAWABILITY_DELAY": + $MIN_VALIDATOR_WITHDRAWABILITY_DELAY, + "SHARD_COMMITTEE_PERIOD": $SHARD_COMMITTEE_PERIOD, + "MIN_EPOCHS_TO_INACTIVITY_PENALTY": $MIN_EPOCHS_TO_INACTIVITY_PENALTY, + "EPOCHS_PER_HISTORICAL_VECTOR": $EPOCHS_PER_HISTORICAL_VECTOR, + "EPOCHS_PER_SLASHINGS_VECTOR": $EPOCHS_PER_SLASHINGS_VECTOR, + "HISTORICAL_ROOTS_LIMIT": $HISTORICAL_ROOTS_LIMIT, + "VALIDATOR_REGISTRY_LIMIT": $VALIDATOR_REGISTRY_LIMIT, + "BASE_REWARD_FACTOR": $BASE_REWARD_FACTOR, + "WHISTLEBLOWER_REWARD_QUOTIENT": $WHISTLEBLOWER_REWARD_QUOTIENT, + "PROPOSER_REWARD_QUOTIENT": $PROPOSER_REWARD_QUOTIENT, + "INACTIVITY_PENALTY_QUOTIENT": $INACTIVITY_PENALTY_QUOTIENT, + "MIN_SLASHING_PENALTY_QUOTIENT": $MIN_SLASHING_PENALTY_QUOTIENT, + "PROPORTIONAL_SLASHING_MULTIPLIER": $PROPORTIONAL_SLASHING_MULTIPLIER, + "MAX_PROPOSER_SLASHINGS": $MAX_PROPOSER_SLASHINGS, + "MAX_ATTESTER_SLASHINGS": $MAX_ATTESTER_SLASHINGS, + "MAX_ATTESTATIONS": $MAX_ATTESTATIONS, + "MAX_DEPOSITS": $MAX_DEPOSITS, + "MAX_VOLUNTARY_EXITS": $MAX_VOLUNTARY_EXITS, + "DOMAIN_BEACON_PROPOSER": + "0x" & strutils.toHex(cast[uint64](DOMAIN_BEACON_PROPOSER)), + "DOMAIN_BEACON_ATTESTER": + "0x" & strutils.toHex(cast[uint64](DOMAIN_BEACON_ATTESTER)), + "DOMAIN_RANDAO": + "0x" & strutils.toHex(cast[uint64](DOMAIN_RANDAO)), + "DOMAIN_DEPOSIT": + "0x" & strutils.toHex(cast[uint64](DOMAIN_DEPOSIT)), + "DOMAIN_VOLUNTARY_EXIT": + "0x" & strutils.toHex(cast[uint64](DOMAIN_VOLUNTARY_EXIT)), + "DOMAIN_SELECTION_PROOF": + "0x" & strutils.toHex(cast[uint64](DOMAIN_SELECTION_PROOF)), + "DOMAIN_AGGREGATE_AND_PROOF": + "0x" & strutils.toHex(cast[uint64](DOMAIN_AGGREGATE_AND_PROOF)) + } rpcServer.rpc("get_v1_config_deposit_contract") do () -> JsonNode: unimplemented()