move MainPod layouting to mainpod (#196)
* move MainPod layouting to mainpod * wip * use MerkleClaimAndProof in merkle circuit set_targets * fix empty mt proof
This commit is contained in:
parent
0b5d4dd802
commit
281f57f0a0
11 changed files with 814 additions and 904 deletions
|
|
@ -16,10 +16,9 @@ use crate::{
|
|||
},
|
||||
signedpod::{SignedPodVerifyGadget, SignedPodVerifyTarget},
|
||||
},
|
||||
mock::{mainpod, mainpod::MerkleClaimAndProof},
|
||||
primitives::{
|
||||
merkletree,
|
||||
merkletree::{MerkleClaimAndProofTarget, MerkleProofGadget},
|
||||
mainpod,
|
||||
primitives::merkletree::{
|
||||
MerkleClaimAndProof, MerkleClaimAndProofTarget, MerkleProofGadget,
|
||||
},
|
||||
signedpod::SignedPod,
|
||||
},
|
||||
|
|
@ -495,20 +494,8 @@ impl MainPodVerifyTarget {
|
|||
}
|
||||
assert_eq!(input.merkle_proofs.len(), self.params.max_merkle_proofs);
|
||||
for (i, mp) in input.merkle_proofs.iter().enumerate() {
|
||||
assert_eq!(mp.siblings.len(), self.params.max_depth_mt_gadget);
|
||||
self.merkle_proofs[i].set_targets(
|
||||
pw,
|
||||
mp.enabled,
|
||||
mp.existence,
|
||||
mp.root,
|
||||
mp.clone().try_into().unwrap_or(merkletree::MerkleProof {
|
||||
existence: mp.existence,
|
||||
siblings: mp.siblings.clone(),
|
||||
other_leaf: None,
|
||||
}),
|
||||
mp.key,
|
||||
mp.value,
|
||||
)?;
|
||||
assert_eq!(mp.proof.siblings.len(), self.params.max_depth_mt_gadget);
|
||||
self.merkle_proofs[i].set_targets(pw, mp)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -531,26 +518,23 @@ impl MainPodVerifyCircuit {
|
|||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use merkletree::MerkleTree;
|
||||
use plonky2::plonk::{circuit_builder::CircuitBuilder, circuit_data::CircuitConfig};
|
||||
|
||||
use super::*;
|
||||
use crate::{
|
||||
backends::plonky2::{
|
||||
basetypes::C,
|
||||
mock::{
|
||||
mainpod,
|
||||
mainpod::{OperationArg, OperationAux},
|
||||
},
|
||||
mainpod::{OperationArg, OperationAux},
|
||||
primitives::merkletree::{MerkleClaimAndProof, MerkleTree},
|
||||
},
|
||||
middleware::{OperationType, PodId, RawValue},
|
||||
middleware::{Hash, OperationType, PodId, RawValue},
|
||||
};
|
||||
|
||||
fn operation_verify(
|
||||
st: mainpod::Statement,
|
||||
op: mainpod::Operation,
|
||||
prev_statements: Vec<mainpod::Statement>,
|
||||
merkle_proofs: Vec<mainpod::MerkleClaimAndProof>,
|
||||
merkle_proofs: Vec<MerkleClaimAndProof>,
|
||||
) -> Result<()> {
|
||||
let params = Params::default();
|
||||
let mp_gadget = MerkleProofGadget {
|
||||
|
|
@ -595,15 +579,7 @@ mod tests {
|
|||
for (merkle_proof_target, merkle_proof) in
|
||||
merkle_proofs_target.iter().zip(merkle_proofs.iter())
|
||||
{
|
||||
merkle_proof_target.set_targets(
|
||||
&mut pw,
|
||||
merkle_proof.enabled,
|
||||
merkle_proof.existence,
|
||||
merkle_proof.root,
|
||||
merkle_proof.clone().try_into()?,
|
||||
merkle_proof.key,
|
||||
merkle_proof.value,
|
||||
)?
|
||||
merkle_proof_target.set_targets(&mut pw, &merkle_proof)?
|
||||
}
|
||||
|
||||
// generate & verify proof
|
||||
|
|
@ -730,10 +706,10 @@ mod tests {
|
|||
OperationAux::MerkleProofIndex(0),
|
||||
);
|
||||
|
||||
let merkle_proofs = vec![mainpod::MerkleClaimAndProof::try_from_middleware(
|
||||
¶ms,
|
||||
&root.raw(),
|
||||
&key,
|
||||
let merkle_proofs = vec![MerkleClaimAndProof::new(
|
||||
params.max_depth_mt_gadget,
|
||||
Hash::from(root.raw()),
|
||||
key,
|
||||
None,
|
||||
&no_key_pf,
|
||||
)?];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue