add slot validation to attestation_data endpoint (#1888)
## Issue Addressed Resolves #1801 ## Proposed Changes Verify queries to `attestation_data` are for no later than `current_slot + 1`. If they are later than this, return a 400. Co-authored-by: realbigsean <seananderson33@gmail.com>
This commit is contained in:
parent
8a16548715
commit
6a7d221f72
@ -1582,6 +1582,18 @@ pub fn serve<T: BeaconChainTypes>(
|
|||||||
.and_then(
|
.and_then(
|
||||||
|query: api_types::ValidatorAttestationDataQuery, chain: Arc<BeaconChain<T>>| {
|
|query: api_types::ValidatorAttestationDataQuery, chain: Arc<BeaconChain<T>>| {
|
||||||
blocking_json_task(move || {
|
blocking_json_task(move || {
|
||||||
|
let current_slot = chain
|
||||||
|
.slot()
|
||||||
|
.map_err(warp_utils::reject::beacon_chain_error)?;
|
||||||
|
|
||||||
|
// allow a tolerance of one slot to account for clock skew
|
||||||
|
if query.slot > current_slot + 1 {
|
||||||
|
return Err(warp_utils::reject::custom_bad_request(format!(
|
||||||
|
"request slot {} is more than one slot past the current slot {}",
|
||||||
|
query.slot, current_slot
|
||||||
|
)));
|
||||||
|
}
|
||||||
|
|
||||||
chain
|
chain
|
||||||
.produce_unaggregated_attestation(query.slot, query.committee_index)
|
.produce_unaggregated_attestation(query.slot, query.committee_index)
|
||||||
.map(|attestation| attestation.data)
|
.map(|attestation| attestation.data)
|
||||||
|
Loading…
Reference in New Issue
Block a user