pub mod batch_recon;
use crate::{
common::share::ShareError,
honeybadger::{
robust_interpolate::{robust_interpolate::RobustShare, InterpolateError},
SessionId,
},
};
use ark_ff::FftField;
use ark_serialize::SerializationError;
use bincode::ErrorKind;
use serde::{Deserialize, Serialize};
use stoffelnet::network_utils::NetworkError;
use thiserror::Error;
#[derive(Clone, Serialize, Deserialize, Debug)]
pub enum BatchReconMsgType {
Eval, Reveal, EvalBatch,
RevealBatch,
}
#[derive(Clone, Serialize, Deserialize, Debug)]
pub struct BatchReconMsg {
pub session_id: SessionId,
pub sender_id: usize, pub msg_type: BatchReconMsgType, pub payload: Vec<u8>, }
impl BatchReconMsg {
pub fn new(
sender_id: usize,
session_id: SessionId,
msg_type: BatchReconMsgType,
payload: Vec<u8>,
) -> Self {
BatchReconMsg {
sender_id,
session_id,
msg_type,
payload,
}
}
}
pub struct BatchReconStore<F: FftField> {
pub evals_received: Vec<RobustShare<F>>, pub reveals_received: Vec<RobustShare<F>>, pub batch_evals_received: Vec<(usize, Vec<F>)>,
pub batch_reveals_received: Vec<(usize, Vec<F>)>,
pub y_j: Option<RobustShare<F>>, pub y_j_batch: Option<Vec<F>>,
pub secrets: Option<Vec<u8>>, }
impl<F: FftField> BatchReconStore<F> {
pub fn empty() -> Self {
Self {
evals_received: vec![],
reveals_received: vec![],
batch_evals_received: vec![],
batch_reveals_received: vec![],
y_j: None,
y_j_batch: None,
secrets: None,
}
}
}
#[derive(Debug, Error)]
pub enum BatchReconError {
#[error("there was an error in the network: {0:?}")]
NetworkError(#[from] NetworkError),
#[error("inner error: {0:?}")]
ShareError(#[from] ShareError),
#[error("error while serializing an arkworks object: {0:?}")]
ArkSerialization(#[from] SerializationError),
#[error("error while serializing an arkworks object: {0:?}")]
ArkDeserialization(SerializationError),
#[error("error while serializing the object into bytes: {0:?}")]
SerializationError(#[from] Box<ErrorKind>),
#[error("Invalid input: {0}")]
InvalidInput(String),
#[error("inner error: {0}")]
InterpolateError(#[from] InterpolateError),
#[error("error sending the output of the batch reconstruction")]
SendError,
}