make Pod derive from Any (#205)
This commit is contained in:
parent
bf6d8aee8b
commit
58d3c6a236
7 changed files with 29 additions and 56 deletions
|
|
@ -188,6 +188,8 @@ impl SignedPodVerifyTarget {
|
|||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use std::any::Any;
|
||||
|
||||
use plonky2::plonk::{circuit_builder::CircuitBuilder, circuit_data::CircuitConfig};
|
||||
|
||||
use super::*;
|
||||
|
|
@ -218,7 +220,7 @@ pub mod tests {
|
|||
let sk = SecretKey::new_rand();
|
||||
let mut signer = Signer(sk);
|
||||
let pod = pod.sign(&mut signer).unwrap();
|
||||
let signed_pod = pod.pod.into_any().downcast::<SignedPod>().unwrap();
|
||||
let signed_pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
||||
|
||||
// use the pod in the circuit
|
||||
let config = CircuitConfig::standard_recursion_config();
|
||||
|
|
|
|||
|
|
@ -293,8 +293,7 @@ impl PodProver for Prover {
|
|||
.signed_pods
|
||||
.iter()
|
||||
.map(|p| {
|
||||
let p = p
|
||||
.as_any()
|
||||
let p = (*p as &dyn Any)
|
||||
.downcast_ref::<SignedPod>()
|
||||
.expect("type SignedPod");
|
||||
p.clone()
|
||||
|
|
@ -404,13 +403,6 @@ impl Pod for MainPod {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn into_any(self: Box<Self>) -> Box<dyn Any> {
|
||||
self
|
||||
}
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
|
||||
fn serialized_proof(&self) -> String {
|
||||
todo!()
|
||||
}
|
||||
|
|
@ -453,7 +445,7 @@ pub mod tests {
|
|||
|
||||
let mut prover = Prover {};
|
||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms)?;
|
||||
let pod = kyc_pod.pod.into_any().downcast::<MainPod>().unwrap();
|
||||
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||
|
||||
pod.verify()
|
||||
}
|
||||
|
|
@ -488,14 +480,16 @@ pub mod tests {
|
|||
// Mock
|
||||
let mut prover = MockProver {};
|
||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms).unwrap();
|
||||
let pod = kyc_pod.pod.into_any().downcast::<MockMainPod>().unwrap();
|
||||
let pod = (kyc_pod.pod as Box<dyn Any>)
|
||||
.downcast::<MockMainPod>()
|
||||
.unwrap();
|
||||
pod.verify().unwrap();
|
||||
println!("{:#}", pod);
|
||||
|
||||
// Real
|
||||
let mut prover = Prover {};
|
||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms).unwrap();
|
||||
let pod = kyc_pod.pod.into_any().downcast::<MainPod>().unwrap();
|
||||
let pod = (kyc_pod.pod as Box<dyn Any>).downcast::<MainPod>().unwrap();
|
||||
pod.verify().unwrap()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// MainPod
|
||||
//
|
||||
|
||||
use std::{any::Any, fmt};
|
||||
use std::fmt;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use base64::{prelude::BASE64_STANDARD, Engine};
|
||||
|
|
@ -277,13 +277,6 @@ impl Pod for MockMainPod {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn into_any(self: Box<Self>) -> Box<dyn Any> {
|
||||
self
|
||||
}
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
|
||||
fn serialized_proof(&self) -> String {
|
||||
BASE64_STANDARD.encode(serde_json::to_string(self).unwrap())
|
||||
}
|
||||
|
|
@ -291,6 +284,8 @@ impl Pod for MockMainPod {
|
|||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use std::any::Any;
|
||||
|
||||
use super::*;
|
||||
use crate::{
|
||||
backends::plonky2::mock::signedpod::MockSigner,
|
||||
|
|
@ -323,7 +318,9 @@ pub mod tests {
|
|||
|
||||
let mut prover = MockProver {};
|
||||
let kyc_pod = kyc_builder.prove(&mut prover, ¶ms)?;
|
||||
let pod = kyc_pod.pod.into_any().downcast::<MockMainPod>().unwrap();
|
||||
let pod = (kyc_pod.pod as Box<dyn Any>)
|
||||
.downcast::<MockMainPod>()
|
||||
.unwrap();
|
||||
|
||||
println!("{:#}", pod);
|
||||
|
||||
|
|
@ -340,9 +337,7 @@ pub mod tests {
|
|||
|
||||
let mut prover = MockProver {};
|
||||
let great_boy_pod = great_boy_builder.prove(&mut prover, ¶ms)?;
|
||||
let pod = great_boy_pod
|
||||
.pod
|
||||
.into_any()
|
||||
let pod = (great_boy_pod.pod as Box<dyn Any>)
|
||||
.downcast::<MockMainPod>()
|
||||
.unwrap();
|
||||
|
||||
|
|
@ -359,7 +354,9 @@ pub mod tests {
|
|||
let tickets_builder = tickets_pod_full_flow()?;
|
||||
let mut prover = MockProver {};
|
||||
let proof_pod = tickets_builder.prove(&mut prover, ¶ms)?;
|
||||
let pod = proof_pod.pod.into_any().downcast::<MockMainPod>().unwrap();
|
||||
let pod = (proof_pod.pod as Box<dyn Any>)
|
||||
.downcast::<MockMainPod>()
|
||||
.unwrap();
|
||||
|
||||
println!("{}", pod);
|
||||
pod.verify()?;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use std::{any::Any, collections::HashMap};
|
||||
use std::collections::HashMap;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use itertools::Itertools;
|
||||
|
|
@ -118,13 +118,6 @@ impl Pod for MockSignedPod {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn into_any(self: Box<Self>) -> Box<dyn Any> {
|
||||
self
|
||||
}
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
|
||||
fn serialized_proof(&self) -> String {
|
||||
self.signature.to_string()
|
||||
}
|
||||
|
|
@ -132,7 +125,7 @@ impl Pod for MockSignedPod {
|
|||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use std::iter;
|
||||
use std::{any::Any, iter};
|
||||
|
||||
use plonky2::field::types::Field;
|
||||
|
||||
|
|
@ -152,7 +145,9 @@ pub mod tests {
|
|||
|
||||
let mut signer = MockSigner { pk: "Molly".into() };
|
||||
let pod = pod.sign(&mut signer).unwrap();
|
||||
let pod = pod.pod.into_any().downcast::<MockSignedPod>().unwrap();
|
||||
let pod = (pod.pod as Box<dyn Any>)
|
||||
.downcast::<MockSignedPod>()
|
||||
.unwrap();
|
||||
|
||||
pod.verify()?;
|
||||
println!("id: {}", pod.id());
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use std::{any::Any, collections::HashMap};
|
||||
use std::collections::HashMap;
|
||||
|
||||
use anyhow::{anyhow, Result};
|
||||
use itertools::Itertools;
|
||||
|
|
@ -101,13 +101,6 @@ impl Pod for SignedPod {
|
|||
.collect()
|
||||
}
|
||||
|
||||
fn into_any(self: Box<Self>) -> Box<dyn Any> {
|
||||
self
|
||||
}
|
||||
fn as_any(&self) -> &dyn Any {
|
||||
self
|
||||
}
|
||||
|
||||
fn serialized_proof(&self) -> String {
|
||||
let mut buffer = Vec::new();
|
||||
use plonky2::util::serialization::Write;
|
||||
|
|
@ -118,7 +111,7 @@ impl Pod for SignedPod {
|
|||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use std::iter;
|
||||
use std::{any::Any, iter};
|
||||
|
||||
use plonky2::field::types::Field;
|
||||
|
||||
|
|
@ -140,7 +133,7 @@ pub mod tests {
|
|||
let sk = SecretKey::new_rand();
|
||||
let mut signer = Signer(sk);
|
||||
let pod = pod.sign(&mut signer).unwrap();
|
||||
let pod = pod.pod.into_any().downcast::<SignedPod>().unwrap();
|
||||
let pod = (pod.pod as Box<dyn Any>).downcast::<SignedPod>().unwrap();
|
||||
|
||||
pod.verify()?;
|
||||
println!("id: {}", pod.id());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue