remove op! macro (#378)

This commit is contained in:
Daniel Gulotta 2025-08-01 09:52:06 -07:00 committed by GitHub
parent 7f120f026d
commit fe8c4eceb3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 118 additions and 211 deletions

View file

@ -15,10 +15,9 @@ use pod2::{
basetypes::DEFAULT_VD_SET, mainpod::Prover, mock::mainpod::MockProver,
primitives::ec::schnorr::SecretKey, signedpod::Signer,
},
frontend::{MainPodBuilder, SignedPodBuilder},
frontend::{MainPodBuilder, Operation, SignedPodBuilder},
lang::parse,
middleware::{Params, PodProver, PodType, VDSet, Value, KEY_SIGNER, KEY_TYPE},
op,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
@ -100,19 +99,17 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build a pod to prove the statement `points("Alice", 1, 3512)`
let mut builder = MainPodBuilder::new(&params, vd_set);
builder.add_signed_pod(&pod_points_lvl_1);
let st_type = builder.priv_op(op!(eq, (&pod_points_lvl_1, KEY_TYPE), PodType::Signed))?;
let st_signer = builder.priv_op(op!(eq, (&pod_points_lvl_1, KEY_SIGNER), game_pk))?;
let st_player = builder.priv_op(op!(eq, (&pod_points_lvl_1, "player"), "Alice"))?;
let st_level = builder.priv_op(op!(eq, (&pod_points_lvl_1, "level"), 1))?;
let st_points = builder.priv_op(op!(eq, (&pod_points_lvl_1, "points"), 3512))?;
let st_points_lvl_1 = builder.pub_op(op!(
custom,
let st_type = builder.priv_op(Operation::eq(
(&pod_points_lvl_1, KEY_TYPE),
PodType::Signed,
))?;
let st_signer = builder.priv_op(Operation::eq((&pod_points_lvl_1, KEY_SIGNER), game_pk))?;
let st_player = builder.priv_op(Operation::eq((&pod_points_lvl_1, "player"), "Alice"))?;
let st_level = builder.priv_op(Operation::eq((&pod_points_lvl_1, "level"), 1))?;
let st_points = builder.priv_op(Operation::eq((&pod_points_lvl_1, "points"), 3512))?;
let st_points_lvl_1 = builder.pub_op(Operation::custom(
points_pred.clone(),
st_type,
st_signer,
st_player,
st_level,
st_points
[st_type, st_signer, st_player, st_level, st_points],
))?;
let pod_alice_lvl_1_points = builder.prove(prover).unwrap();
println!("# pod_alice_lvl_1_points\n:{}", pod_alice_lvl_1_points);
@ -121,19 +118,17 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
// Build a pod to prove the statement `points("Alice", 2, 5771)`
let mut builder = MainPodBuilder::new(&params, vd_set);
builder.add_signed_pod(&pod_points_lvl_2);
let st_type = builder.priv_op(op!(eq, (&pod_points_lvl_2, KEY_TYPE), PodType::Signed))?;
let st_signer = builder.priv_op(op!(eq, (&pod_points_lvl_2, KEY_SIGNER), game_pk))?;
let st_player = builder.priv_op(op!(eq, (&pod_points_lvl_2, "player"), "Alice"))?;
let st_level = builder.priv_op(op!(eq, (&pod_points_lvl_2, "level"), 2))?;
let st_points = builder.priv_op(op!(eq, (&pod_points_lvl_2, "points"), 5771))?;
let st_points_lvl_2 = builder.pub_op(op!(
custom,
let st_type = builder.priv_op(Operation::eq(
(&pod_points_lvl_2, KEY_TYPE),
PodType::Signed,
))?;
let st_signer = builder.priv_op(Operation::eq((&pod_points_lvl_2, KEY_SIGNER), game_pk))?;
let st_player = builder.priv_op(Operation::eq((&pod_points_lvl_2, "player"), "Alice"))?;
let st_level = builder.priv_op(Operation::eq((&pod_points_lvl_2, "level"), 2))?;
let st_points = builder.priv_op(Operation::eq((&pod_points_lvl_2, "points"), 5771))?;
let st_points_lvl_2 = builder.pub_op(Operation::custom(
points_pred,
st_type,
st_signer,
st_player,
st_level,
st_points
[st_type, st_signer, st_player, st_level, st_points],
))?;
let pod_alice_lvl_2_points = builder.prove(prover).unwrap();
println!("# pod_alice_lvl_2_points\n:{}", pod_alice_lvl_2_points);
@ -143,15 +138,16 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut builder = MainPodBuilder::new(&params, vd_set);
builder.add_recursive_pod(pod_alice_lvl_1_points);
builder.add_recursive_pod(pod_alice_lvl_2_points);
let st_points_total = builder.priv_op(op!(sum_of, 3512 + 5771, 3512, 5771))?;
let st_gt_9000 = builder.priv_op(op!(gt, 3512 + 5771, 9000))?;
let _st_over_9000 = builder.pub_op(op!(
custom,
let st_points_total = builder.priv_op(Operation::sum_of(3512 + 5771, 3512, 5771))?;
let st_gt_9000 = builder.priv_op(Operation::gt(3512 + 5771, 9000))?;
let _st_over_9000 = builder.pub_op(Operation::custom(
over_9000_pred,
st_points_lvl_1,
st_points_lvl_2,
st_points_total,
st_gt_9000
[
st_points_lvl_1,
st_points_lvl_2,
st_points_total,
st_gt_9000,
],
));
let pod_alice_over_9000 = builder.prove(prover).unwrap();
println!("# pod_alice_over_9000\n:{}", pod_alice_over_9000);