v1/beacon/blocks/{block_id}, v1/debug/beacon/states/{state_id}, and v1/validator/blocks/{slot} deprecated (#4279)
* v1/beacon/blocks/{block_id}, v1/debug/beacon/states/{state_id}, and v1/validator/blocks/{slot} deprecated * Update beacon_chain/rpc/rest_constants.nim Co-authored-by: Jacek Sieka <jacek@status.im> * Update beacon_chain/rpc/rest_constants.nim Co-authored-by: Jacek Sieka <jacek@status.im> Co-authored-by: Jacek Sieka <jacek@status.im>
This commit is contained in:
parent
fc724b21e8
commit
cee5a73a31
|
@ -798,46 +798,8 @@ proc installBeaconApiHandlers*(router: var RestRouter, node: BeaconNode) =
|
|||
# https://ethereum.github.io/beacon-APIs/#/Beacon/getBlock
|
||||
router.api(MethodGet, "/eth/v1/beacon/blocks/{block_id}") do (
|
||||
block_id: BlockIdent) -> RestApiResponse:
|
||||
let
|
||||
blockIdent = block_id.valueOr:
|
||||
return RestApiResponse.jsonError(Http400, InvalidBlockIdValueError,
|
||||
$error)
|
||||
bid = node.getBlockId(blockIdent).valueOr:
|
||||
return RestApiResponse.jsonError(Http404, BlockNotFoundError)
|
||||
|
||||
if node.dag.cfg.blockForkAtEpoch(bid.slot.epoch) !=
|
||||
BeaconBlockFork.Phase0:
|
||||
return RestApiResponse.jsonError(
|
||||
Http404, BlockNotFoundError, "v1 API supports only phase 0 blocks")
|
||||
|
||||
let contentType =
|
||||
block:
|
||||
let res = preferredContentType(jsonMediaType,
|
||||
sszMediaType)
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http406, ContentNotAcceptableError)
|
||||
res.get()
|
||||
|
||||
return
|
||||
if contentType == sszMediaType:
|
||||
var data: seq[byte]
|
||||
if not node.dag.getBlockSSZ(bid, data):
|
||||
return RestApiResponse.jsonError(Http404, BlockNotFoundError)
|
||||
|
||||
RestApiResponse.sszResponsePlain(data)
|
||||
elif contentType == jsonMediaType:
|
||||
let bdata = node.dag.getForkedBlock(bid).valueOr:
|
||||
return RestApiResponse.jsonError(Http404, BlockNotFoundError)
|
||||
|
||||
if bdata.kind == BeaconBlockFork.Phase0:
|
||||
RestApiResponse.jsonResponse(bdata.phase0Data.asSigned())
|
||||
else:
|
||||
# Shouldn't happen, but in case there's some weird block database
|
||||
# issue..
|
||||
RestApiResponse.jsonError(
|
||||
Http404, BlockNotFoundError, "v1 API supports only phase 0 blocks")
|
||||
else:
|
||||
RestApiResponse.jsonError(Http500, InvalidAcceptError)
|
||||
return RestApiResponse.jsonError(
|
||||
Http410, DeprecatedRemovalBeaconBlocksDebugStateV1)
|
||||
|
||||
# https://ethereum.github.io/beacon-APIs/#/Beacon/getBlockV2
|
||||
router.api(MethodGet, "/eth/v2/beacon/blocks/{block_id}") do (
|
||||
|
|
|
@ -27,7 +27,7 @@ const
|
|||
"Beacon node is currently syncing and not serving request on that endpoint"
|
||||
BlockNotFoundError* =
|
||||
"Block header/data has not been found"
|
||||
BlockProduceError* =
|
||||
BlockProduceError =
|
||||
"Could not produce the block"
|
||||
EmptyRequestBodyError* =
|
||||
"Empty request's body"
|
||||
|
@ -126,7 +126,7 @@ const
|
|||
"Validator index exceeds maximum supported number of validators"
|
||||
StateNotFoundError* =
|
||||
"Could not get requested state"
|
||||
SlotNotFoundError* =
|
||||
SlotNotFoundError =
|
||||
"Slot number is too far away"
|
||||
SlotNotInNextWallSlotEpochError* =
|
||||
"Requested slot not in next wall-slot epoch"
|
||||
|
@ -138,7 +138,7 @@ const
|
|||
"Requested epoch is from incorrect fork"
|
||||
ProposerNotFoundError* =
|
||||
"Could not find proposer for the head and slot"
|
||||
NoHeadForSlotError* =
|
||||
NoHeadForSlotError =
|
||||
"Cound not find head for slot"
|
||||
EpochOverflowValueError* =
|
||||
"Requesting epoch for which slot would overflow"
|
||||
|
@ -164,7 +164,7 @@ const
|
|||
"Missing `beacon_block_root` value"
|
||||
InvalidBeaconBlockRootValueError* =
|
||||
"Invalid `beacon_block_root` value"
|
||||
EpochOutsideSyncCommitteePeriodError* =
|
||||
EpochOutsideSyncCommitteePeriodError =
|
||||
"Epoch is outside the sync committee period of the state"
|
||||
InvalidSyncCommitteeSignatureMessageError* =
|
||||
"Unable to decode sync committee message(s)"
|
||||
|
@ -188,23 +188,23 @@ const
|
|||
"Internal server error"
|
||||
NoImplementationError* =
|
||||
"Not implemented yet"
|
||||
KeystoreAdditionFailure* =
|
||||
KeystoreAdditionFailure =
|
||||
"Could not add some keystores"
|
||||
InvalidKeystoreObjects* =
|
||||
"Invalid keystore objects found"
|
||||
KeystoreAdditionSuccess* =
|
||||
KeystoreAdditionSuccess =
|
||||
"All keystores has been added"
|
||||
KeystoreModificationFailure* =
|
||||
KeystoreModificationFailure =
|
||||
"Could not change keystore(s) state"
|
||||
KeystoreModificationSuccess* =
|
||||
KeystoreModificationSuccess =
|
||||
"Keystore(s) state was successfully modified"
|
||||
KeystoreRemovalSuccess* =
|
||||
KeystoreRemovalSuccess =
|
||||
"Keystore(s) was successfully removed"
|
||||
KeystoreRemovalFailure* =
|
||||
KeystoreRemovalFailure =
|
||||
"Could not remove keystore(s)"
|
||||
InvalidValidatorPublicKey* =
|
||||
"Invalid validator's public key(s) found"
|
||||
BadRequestFormatError* =
|
||||
BadRequestFormatError =
|
||||
"Bad request format"
|
||||
InvalidAuthorizationError* =
|
||||
"Invalid Authorization Header"
|
||||
|
@ -226,3 +226,10 @@ const
|
|||
"LC finality update unavailable"
|
||||
LCOptUpdateUnavailable* =
|
||||
"LC optimistic update unavailable"
|
||||
DeprecatedRemovalBeaconBlocksDebugStateV1* =
|
||||
"v1/beacon/blocks/{block_id} and v1/debug/beacon/states/{state_id} " &
|
||||
"endpoints were deprecated and replaced by v2, see " &
|
||||
"https://github.com/ethereum/beacon-APIs/pull/218"
|
||||
DeprecatedRemovalValidatorBlocksV1* =
|
||||
"v1/validator/blocks/{slot} endpoint was deprecated and replaced by v2, see " &
|
||||
"https://github.com/ethereum/beacon-APIs/pull/220"
|
||||
|
|
|
@ -22,36 +22,8 @@ proc installDebugApiHandlers*(router: var RestRouter, node: BeaconNode) =
|
|||
router.api(MethodGet,
|
||||
"/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.getBlockSlotId(state_id.get())
|
||||
if bres.isErr():
|
||||
return RestApiResponse.jsonError(Http404, StateNotFoundError,
|
||||
$bres.error())
|
||||
bres.get()
|
||||
let contentType =
|
||||
block:
|
||||
let res = preferredContentType(jsonMediaType,
|
||||
sszMediaType)
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http406, ContentNotAcceptableError)
|
||||
res.get()
|
||||
node.withStateForBlockSlotId(bslot):
|
||||
return
|
||||
case state.kind
|
||||
of BeaconStateFork.Phase0:
|
||||
if contentType == sszMediaType:
|
||||
RestApiResponse.sszResponse(state.phase0Data.data, [])
|
||||
elif contentType == jsonMediaType:
|
||||
RestApiResponse.jsonResponse(state.phase0Data.data)
|
||||
else:
|
||||
RestApiResponse.jsonError(Http500, InvalidAcceptError)
|
||||
of BeaconStateFork.Altair, BeaconStateFork.Bellatrix:
|
||||
RestApiResponse.jsonError(Http404, StateNotFoundError)
|
||||
return RestApiResponse.jsonError(Http404, StateNotFoundError)
|
||||
return RestApiResponse.jsonError(
|
||||
Http410, DeprecatedRemovalBeaconBlocksDebugStateV1)
|
||||
|
||||
# https://ethereum.github.io/beacon-APIs/#/Debug/getStateV2
|
||||
router.api(MethodGet,
|
||||
|
|
|
@ -301,70 +301,8 @@ proc installValidatorApiHandlers*(router: var RestRouter, node: BeaconNode) =
|
|||
router.api(MethodGet, "/eth/v1/validator/blocks/{slot}") do (
|
||||
slot: Slot, randao_reveal: Option[ValidatorSig],
|
||||
graffiti: Option[GraffitiBytes]) -> RestApiResponse:
|
||||
let message =
|
||||
block:
|
||||
let qslot = block:
|
||||
if slot.isErr():
|
||||
return RestApiResponse.jsonError(Http400, InvalidSlotValueError,
|
||||
$slot.error())
|
||||
let res = slot.get()
|
||||
|
||||
if res <= node.dag.finalizedHead.slot:
|
||||
return RestApiResponse.jsonError(Http400, InvalidSlotValueError,
|
||||
"Slot already finalized")
|
||||
let
|
||||
wallTime = node.beaconClock.now() + MAXIMUM_GOSSIP_CLOCK_DISPARITY
|
||||
if res > wallTime.slotOrZero:
|
||||
return RestApiResponse.jsonError(Http400, InvalidSlotValueError,
|
||||
"Slot cannot be in the future")
|
||||
|
||||
if node.dag.cfg.blockForkAtEpoch(res.epoch) != BeaconBlockFork.Phase0:
|
||||
return RestApiResponse.jsonError(Http400,
|
||||
"Use v2 for Altair+ slots")
|
||||
|
||||
res
|
||||
let qrandao =
|
||||
if randao_reveal.isNone():
|
||||
return RestApiResponse.jsonError(Http400, MissingRandaoRevealValue)
|
||||
else:
|
||||
let res = randao_reveal.get()
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http400,
|
||||
InvalidRandaoRevealValue,
|
||||
$res.error())
|
||||
res.get()
|
||||
let qgraffiti =
|
||||
if graffiti.isNone():
|
||||
defaultGraffitiBytes()
|
||||
else:
|
||||
let res = graffiti.get()
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http400,
|
||||
InvalidGraffitiBytesValue,
|
||||
$res.error())
|
||||
res.get()
|
||||
let qhead =
|
||||
block:
|
||||
let res = node.getSyncedHead(qslot)
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http503, BeaconNodeInSyncError,
|
||||
$res.error())
|
||||
res.get()
|
||||
let proposer = node.dag.getProposer(qhead, qslot)
|
||||
if proposer.isNone():
|
||||
return RestApiResponse.jsonError(Http400, ProposerNotFoundError)
|
||||
let res = await makeBeaconBlockForHeadAndSlot(
|
||||
node, qrandao, proposer.get(), qgraffiti, qhead, qslot)
|
||||
if res.isErr():
|
||||
return RestApiResponse.jsonError(Http400, res.error())
|
||||
res.get()
|
||||
return
|
||||
case message.kind
|
||||
of BeaconBlockFork.Phase0:
|
||||
RestApiResponse.jsonResponse(message.phase0Data)
|
||||
else:
|
||||
RestApiResponse.jsonError(Http400,
|
||||
"Use v2 for Altair+ slots")
|
||||
return RestApiResponse.jsonError(
|
||||
Http410, DeprecatedRemovalValidatorBlocksV1)
|
||||
|
||||
# https://ethereum.github.io/beacon-APIs/#/Validator/produceBlockV2
|
||||
router.api(MethodGet, "/eth/v2/validator/blocks/{slot}") do (
|
||||
|
|
|
@ -1812,159 +1812,9 @@
|
|||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "200"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmps", "start": ["data"],"value": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body": {"randao_reveal": "", "eth1_data": {"deposit_root": "", "deposit_count": "", "block_hash": ""}, "graffiti": "", "proposer_slashings": [{"signed_header_1": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}, "signed_header_2": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}}], "attester_slashings": [{"attestation_1": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}, "attestation_2": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}}], "attestations": [{"aggregation_bits": "", "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}], "deposits": [{"proof": [""], "data": {"pubkey": "", "withdrawal_credentials": "", "amount": "", "signature": ""}}], "voluntary_exits": [{"message": {"epoch": "", "validator_index": ""}, "signature": ""}]}}, "signature": ""}}]
|
||||
"status": {"operator": "equals", "value": "410"}
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/genesis",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "200"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmps", "start": ["data"],"value": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body": {"randao_reveal": "", "eth1_data": {"deposit_root": "", "deposit_count": "", "block_hash": ""}, "graffiti": "", "proposer_slashings": [{"signed_header_1": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}, "signed_header_2": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}}], "attester_slashings": [{"attestation_1": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}, "attestation_2": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}}], "attestations": [{"aggregation_bits": "", "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}], "deposits": [{"proof": [""], "data": {"pubkey": "", "withdrawal_credentials": "", "amount": "", "signature": ""}}], "voluntary_exits": [{"message": {"epoch": "", "validator_index": ""}, "signature": ""}]}}, "signature": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/finalized",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "200"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmps", "start": ["data"],"value": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body": {"randao_reveal": "", "eth1_data": {"deposit_root": "", "deposit_count": "", "block_hash": ""}, "graffiti": "", "proposer_slashings": [{"signed_header_1": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}, "signed_header_2": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}}], "attester_slashings": [{"attestation_1": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}, "attestation_2": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}}], "attestations": [{"aggregation_bits": "", "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}], "deposits": [{"proof": [""], "data": {"pubkey": "", "withdrawal_credentials": "", "amount": "", "signature": ""}}], "voluntary_exits": [{"message": {"epoch": "", "validator_index": ""}, "signature": ""}]}}, "signature": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "200"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmps", "start": ["data"],"value": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body": {"randao_reveal": "", "eth1_data": {"deposit_root": "", "deposit_count": "", "block_hash": ""}, "graffiti": "", "proposer_slashings": [{"signed_header_1": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}, "signed_header_2": {"message": {"slot": "", "proposer_index": "", "parent_root": "", "state_root": "", "body_root": ""},"signature": ""}}], "attester_slashings": [{"attestation_1": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}, "attestation_2": {"attesting_indices": [""], "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}}], "attestations": [{"aggregation_bits": "", "signature": "", "data": {"slot": "", "index": "", "beacon_block_root": "", "source": {"epoch": "", "root": ""}, "target": {"epoch": "", "root": ""}}}], "deposits": [{"proof": [""], "data": {"pubkey": "", "withdrawal_credentials": "", "amount": "", "signature": ""}}], "voluntary_exits": [{"message": {"epoch": "", "validator_index": ""}, "signature": ""}]}}, "signature": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/18446744073709551615",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "404"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmpns", "value": {"code": 404, "message": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/18446744073709551616",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "400"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmpns", "value": {"code": 400, "message": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "404"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmpns", "value": {"code": 404, "message": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/18446744073709551616",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "400"},
|
||||
"headers": [{"key": "Content-Type", "value": "application/json", "operator": "equals"}],
|
||||
"body": [{"operator": "jstructcmpns", "value": {"code": 400, "message": ""}}]
|
||||
}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/heat",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/geneziz",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/finalised",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/foobar",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0x",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0x0",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0x00",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
"url": "/eth/v1/beacon/blocks/0x000000000000000000000000000000000000000000000000000000000000000000",
|
||||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {"status": {"operator": "equals", "value": "400"}}
|
||||
},
|
||||
{
|
||||
"topics": ["beacon", "beacon_blocks_blockid"],
|
||||
"request": {
|
||||
|
@ -3084,7 +2934,7 @@
|
|||
"headers": {"Accept": "application/json"}
|
||||
},
|
||||
"response": {
|
||||
"status": {"operator": "equals", "value": "400"}
|
||||
"status": {"operator": "equals", "value": "410"}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue