diff --git a/beacon_chain/rpc/rest_debug_api.nim b/beacon_chain/rpc/rest_debug_api.nim index 8e6bc537d..8592b7cfe 100644 --- a/beacon_chain/rpc/rest_debug_api.nim +++ b/beacon_chain/rpc/rest_debug_api.nim @@ -72,8 +72,11 @@ proc installDebugApiHandlers*(router: var RestRouter, node: BeaconNode) = "/eth/v2/debug/beacon/heads") do () -> RestApiResponse: RestApiResponse.jsonResponse( node.dag.heads.mapIt( - (root: it.root, slot: it.slot, - execution_optimistic: not it.executionValid) + RestChainHeadV2( + root: it.root, + slot: it.slot, + execution_optimistic: not it.executionValid + ) ) ) diff --git a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim index 371a64526..e5a4d3f51 100644 --- a/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim +++ b/beacon_chain/spec/eth2_apis/eth2_rest_serialization.nim @@ -122,6 +122,7 @@ RestJson.useDefaultSerializationFor( RestBeaconStatesFinalityCheckpoints, RestBlockHeader, RestBlockHeaderInfo, + RestChainHeadV2, RestCommitteeSubscription, RestContributionAndProof, RestDepositContract, diff --git a/beacon_chain/spec/eth2_apis/rest_debug_calls.nim b/beacon_chain/spec/eth2_apis/rest_debug_calls.nim index ccb69a5fd..8b56ae9ea 100644 --- a/beacon_chain/spec/eth2_apis/rest_debug_calls.nim +++ b/beacon_chain/spec/eth2_apis/rest_debug_calls.nim @@ -13,6 +13,12 @@ import export chronos, client, rest_types, eth2_rest_serialization +proc getDebugChainHeadsV2*(): RestResponse[GetDebugChainHeadsV2Response] {. + rest, endpoint: "/eth/v2/debug/beacon/heads", + meth: MethodGet.} + ## https://ethereum.github.io/beacon-APIs/#/Beacon/getDebugChainHeadsV2 + + proc getStateV2Plain*(state_id: StateIdent): RestPlainResponse {. rest, endpoint: "/eth/v2/debug/beacon/states/{state_id}", accept: preferSSZ, diff --git a/beacon_chain/spec/eth2_apis/rest_types.nim b/beacon_chain/spec/eth2_apis/rest_types.nim index 902437414..06bfdbdb2 100644 --- a/beacon_chain/spec/eth2_apis/rest_types.nim +++ b/beacon_chain/spec/eth2_apis/rest_types.nim @@ -263,9 +263,10 @@ type connected*: uint64 disconnecting*: uint64 - RestChainHead* = object + RestChainHeadV2* = object root*: Eth2Digest slot*: Slot + execution_optimistic*: bool RestMetadata* = object seq_number*: string @@ -541,7 +542,7 @@ type GetBlockHeaderResponse* = DataOptimisticAndFinalizedObject[RestBlockHeaderInfo] GetBlockHeadersResponse* = DataEnclosedObject[seq[RestBlockHeaderInfo]] GetBlockRootResponse* = DataOptimisticObject[RestRoot] - GetDebugChainHeadsResponse* = DataEnclosedObject[seq[RestChainHead]] + GetDebugChainHeadsV2Response* = DataEnclosedObject[seq[RestChainHeadV2]] GetDepositContractResponse* = DataEnclosedObject[RestDepositContract] GetDepositSnapshotResponse* = DataEnclosedObject[RestDepositSnapshot] GetEpochCommitteesResponse* = DataEnclosedObject[seq[RestBeaconStatesCommittees]] diff --git a/beacon_chain/spec/keystore.nim b/beacon_chain/spec/keystore.nim index a24f71b57..73fdf7d15 100644 --- a/beacon_chain/spec/keystore.nim +++ b/beacon_chain/spec/keystore.nim @@ -449,7 +449,7 @@ proc validateMnemonic*(inputWords: string, # TODO consider using a SecretString type for inputWords - let words = strutils.strip(inputWords.string.toNFKD).split(Whitespace) + let words = strutils.strip(inputWords.toNFKD).split(Whitespace) if words.len < 12 or words.len > 24 or words.len mod 3 != 0: return false