Skip to content

Commit

Permalink
feat(validation): remove extra validations for rng
Browse files Browse the repository at this point in the history
  • Loading branch information
lrubiorod committed Sep 9, 2021
1 parent f3502da commit e8b3537
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 30 deletions.
2 changes: 0 additions & 2 deletions data_structures/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -485,8 +485,6 @@ pub enum DataRequestError {
UnfinishedDataRequest,
#[fail(display = "The data request is not valid since it has no retrieval sources")]
NoRetrievalSources,
#[fail(display = "The data request to generate a Random Number is invalid")]
InvalidRngRequest,
}

/// Possible errors when converting between epoch and timestamp
Expand Down
30 changes: 2 additions & 28 deletions validations/src/validations.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ use witnet_data_structures::{
};
use witnet_rad::{
error::RadError,
reducers::{mode::mode, RadonReducers},
reducers::mode::mode,
run_tally_report,
script::{
create_radon_script_from_filters_and_reducer, unpack_radon_script,
Expand Down Expand Up @@ -244,48 +244,22 @@ pub fn validate_rad_request(rad_request: &RADRequest) -> Result<(), failure::Err
if retrieval_paths.is_empty() {
return Err(DataRequestError::NoRetrievalSources.into());
}
let mut is_rng = false;
for path in retrieval_paths {
if path.kind == RADType::Rng {
if path.url.is_empty() && path.script.is_empty() {
is_rng = true;
break;
} else {
return Err(DataRequestError::InvalidRngRequest.into());
}
}

// If the sources are empty the data request is set as invalid
if path.url.is_empty() {
if path.url.is_empty() && path.kind != RADType::Rng {
return Err(DataRequestError::NoRetrievalSources.into());
}
unpack_radon_script(path.script.as_slice())?;
}

if is_rng && retrieval_paths.len() > 1 {
return Err(DataRequestError::InvalidRngRequest.into());
}

let aggregate = &rad_request.aggregate;
let filters = aggregate.filters.as_slice();
let reducer = aggregate.reducer;
let valid_rng_aggregation_script =
filters.is_empty() && reducer == u32::from(u8::from(RadonReducers::Unwrap));

if is_rng && !valid_rng_aggregation_script {
return Err(DataRequestError::InvalidRngRequest.into());
}
create_radon_script_from_filters_and_reducer(filters, reducer)?;

let consensus = &rad_request.tally;
let filters = consensus.filters.as_slice();
let reducer = consensus.reducer;
let valid_rng_tally_script =
filters.is_empty() && reducer == u32::from(u8::from(RadonReducers::HashConcatenate));

if is_rng && !valid_rng_tally_script {
return Err(DataRequestError::InvalidRngRequest.into());
}
create_radon_script_from_filters_and_reducer(filters, reducer)?;

Ok(())
Expand Down

0 comments on commit e8b3537

Please sign in to comment.