Padding in set target (#200)
* feat: handle padding in set_target * remove enable from MerkleClaimAndProof * Update src/backends/plonky2/circuits/mainpod.rs Co-authored-by: Ahmad Afuni <root@ahmadafuni.com> --------- Co-authored-by: Ahmad Afuni <root@ahmadafuni.com>
This commit is contained in:
parent
17e6c2a092
commit
26a6b2d143
7 changed files with 87 additions and 143 deletions
|
|
@ -492,10 +492,14 @@ impl MainPodVerifyTarget {
|
|||
self.statements[i].set_targets(pw, &self.params, st)?;
|
||||
self.operations[i].set_targets(pw, &self.params, op)?;
|
||||
}
|
||||
assert_eq!(input.merkle_proofs.len(), self.params.max_merkle_proofs);
|
||||
assert!(input.merkle_proofs.len() <= self.params.max_merkle_proofs);
|
||||
for (i, mp) in input.merkle_proofs.iter().enumerate() {
|
||||
assert_eq!(mp.proof.siblings.len(), self.params.max_depth_mt_gadget);
|
||||
self.merkle_proofs[i].set_targets(pw, mp)?;
|
||||
self.merkle_proofs[i].set_targets(pw, true, mp)?;
|
||||
}
|
||||
// Padding
|
||||
let pad_mp = MerkleClaimAndProof::empty();
|
||||
for i in input.merkle_proofs.len()..self.params.max_merkle_proofs {
|
||||
self.merkle_proofs[i].set_targets(pw, false, &pad_mp)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -579,7 +583,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)?
|
||||
merkle_proof_target.set_targets(&mut pw, true, &merkle_proof)?
|
||||
}
|
||||
|
||||
// generate & verify proof
|
||||
|
|
@ -707,12 +711,11 @@ mod tests {
|
|||
);
|
||||
|
||||
let merkle_proofs = vec![MerkleClaimAndProof::new(
|
||||
params.max_depth_mt_gadget,
|
||||
Hash::from(root.raw()),
|
||||
key,
|
||||
None,
|
||||
&no_key_pf,
|
||||
)?];
|
||||
no_key_pf,
|
||||
)];
|
||||
let prev_statements = vec![root_st, key_st];
|
||||
operation_verify(st, op, prev_statements, merkle_proofs.clone())?;
|
||||
|
||||
|
|
|
|||
|
|
@ -134,13 +134,8 @@ impl SignedPodVerifyTarget {
|
|||
let (v, proof) = pod.dict.prove(k)?;
|
||||
self.mt_proofs[i].set_targets(
|
||||
pw,
|
||||
&MerkleClaimAndProof::new(
|
||||
self.params.max_depth_mt_gadget,
|
||||
pod.dict.commitment(),
|
||||
k.raw(),
|
||||
Some(v.raw()),
|
||||
&proof,
|
||||
)?,
|
||||
true,
|
||||
&MerkleClaimAndProof::new(pod.dict.commitment(), k.raw(), Some(v.raw()), proof),
|
||||
)?;
|
||||
Ok(v)
|
||||
})
|
||||
|
|
@ -160,13 +155,8 @@ impl SignedPodVerifyTarget {
|
|||
|
||||
self.mt_proofs[curr].set_targets(
|
||||
pw,
|
||||
&MerkleClaimAndProof::new(
|
||||
self.params.max_depth_mt_gadget,
|
||||
pod.dict.commitment(),
|
||||
k.raw(),
|
||||
Some(v.raw()),
|
||||
&proof,
|
||||
)?,
|
||||
true,
|
||||
&MerkleClaimAndProof::new(pod.dict.commitment(), k.raw(), Some(v.raw()), proof),
|
||||
)?;
|
||||
curr += 1;
|
||||
}
|
||||
|
|
@ -174,10 +164,10 @@ impl SignedPodVerifyTarget {
|
|||
assert!(curr <= self.params.max_signed_pod_values);
|
||||
|
||||
// add the proofs of empty leaves (if needed), till the max_signed_pod_values
|
||||
let mut mp = MerkleClaimAndProof::empty(self.params.max_depth_mt_gadget);
|
||||
let mut mp = MerkleClaimAndProof::empty();
|
||||
mp.root = pod.dict.commitment();
|
||||
for i in curr..self.params.max_signed_pod_values {
|
||||
self.mt_proofs[i].set_targets(pw, &mp)?;
|
||||
self.mt_proofs[i].set_targets(pw, false, &mp)?;
|
||||
}
|
||||
|
||||
// get the signer pk
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue