pub fn reconstruct<S: Shard>( received_shards: Vec<Option<S>>, validator_count: usize, ) -> Result<Vec<u8>>
each shard contains one symbol of one run of erasure coding