mirror of
https://github.com/status-im/nimbus-eth2.git
synced 2025-01-10 06:16:25 +00:00
146fa48454
* use ForkedHashedBeaconState in StateData * fix FAR_FUTURE_EPOCH -> slot overflow; almost always use assign() * avoid stack allocation in maybeUpgradeStateToAltair() * create and use dispatch functions for check_attester_slashing(), check_proposer_slashing(), and check_voluntary_exit() * use getStateRoot() instead of various state.data.hbsPhase0.root * remove withStateVars.hashedState(), which doesn't work as a design anymore * introduce spec/datatypes/altair into beacon_chain_db * fix inefficient codegen for getStateField(largeStateField) * state_transition_slots() doesn't either need/use blocks or runtime presets * combine process_slots(HBS)/state_transition_slots(HBS) which differ only in last-slot htr optimization * getStateField(StateData, ...) was replaced by getStateField(ForkedHashedBeaconState, ...) * fix rollback * switch some state_transition(), process_slots, makeTestBlocks(), etc to use ForkedHashedBeaconState * remove state_transition(phase0.HashedBeaconState) * remove process_slots(phase0.HashedBeaconState) * remove state_transition_block(phase0.HashedBeaconState) * remove unused callWithBS(); separate case expression from if statement * switch back from nested-ref-object construction to (ref Foo)(Bar())
45 lines
1.4 KiB
Nim
45 lines
1.4 KiB
Nim
import
|
|
std/sequtils,
|
|
presto,
|
|
chronicles,
|
|
../version, ../beacon_node_common,
|
|
../spec/[datatypes, digest, presets],
|
|
./eth2_json_rest_serialization, ./rest_utils
|
|
|
|
logScope: topics = "rest_debug"
|
|
|
|
proc installDebugApiHandlers*(router: var RestRouter, node: BeaconNode) =
|
|
router.api(MethodGet,
|
|
"/api/eth/v1/debug/beacon/states/{state_id}") do (
|
|
state_id: StateIdent) -> RestApiResponse:
|
|
let bslot =
|
|
block:
|
|
if state_id.isErr():
|
|
return RestApiResponse.jsonError(Http400, InvalidStateIdValueError,
|
|
$state_id.error())
|
|
let bres = node.getBlockSlot(state_id.get())
|
|
if bres.isErr():
|
|
return RestApiResponse.jsonError(Http404, StateNotFoundError,
|
|
$bres.error())
|
|
bres.get()
|
|
node.withStateForBlockSlot(bslot):
|
|
return RestApiResponse.jsonResponse(stateData.data.hbsPhase0.data)
|
|
return RestApiResponse.jsonError(Http500, InternalServerError)
|
|
|
|
router.api(MethodGet,
|
|
"/api/eth/v1/debug/beacon/heads") do () -> RestApiResponse:
|
|
return RestApiResponse.jsonResponse(
|
|
node.dag.heads.mapIt((root: it.root, slot: it.slot))
|
|
)
|
|
|
|
router.redirect(
|
|
MethodGet,
|
|
"/eth/v1/debug/beacon/states/{state_id}",
|
|
"/api/eth/v1/debug/beacon/states/{state_id}"
|
|
)
|
|
router.redirect(
|
|
MethodGet,
|
|
"/eth/v1/debug/beacon/heads",
|
|
"/api/eth/v1/debug/beacon/heads"
|
|
)
|