Skip to content

Commit 7ca92d0

Browse files
committed
Add names for custom predicates
1 parent 6ee329e commit 7ca92d0

File tree

4 files changed

+30
-11
lines changed

4 files changed

+30
-11
lines changed

src/examples/custom.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ pub fn eth_friend_batch(params: &Params) -> Result<Arc<CustomPredicateBatch>> {
3737
.arg(("attestation_pod", literal("attestation")))
3838
.arg(("dst_ori", "dst_key")),
3939
],
40+
"eth_friend",
4041
)?;
4142

4243
println!("a.0. eth_friend = {}", builder.predicates.last().unwrap());
@@ -74,6 +75,7 @@ pub fn eth_dos_batch(params: &Params) -> Result<Arc<CustomPredicateBatch>> {
7475
.arg(("distance_ori", "distance_key"))
7576
.arg(0),
7677
],
78+
"eth_dos_distance_base",
7779
)?;
7880
println!(
7981
"b.0. eth_dos_distance_base = {}",
@@ -119,6 +121,7 @@ pub fn eth_dos_batch(params: &Params) -> Result<Arc<CustomPredicateBatch>> {
119121
.arg(("intermed_ori", "intermed_key"))
120122
.arg(("dst_ori", "dst_key")),
121123
],
124+
"eth_dos_distance_ind",
122125
)?;
123126

124127
println!(
@@ -147,6 +150,7 @@ pub fn eth_dos_batch(params: &Params) -> Result<Arc<CustomPredicateBatch>> {
147150
.arg(("dst_ori", "dst_key"))
148151
.arg(("distance_ori", "distance_key")),
149152
],
153+
"eth_dos_distance",
150154
)?;
151155

152156
println!(

src/frontend/custom.rs

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ impl CustomPredicateRef {
208208
})
209209
.collect(),
210210
args_len: cp.args_len,
211+
name: cp.name.to_string(),
211212
}
212213
};
213214
match custom_predicate.conjunction {
@@ -262,20 +263,32 @@ pub struct CustomPredicate {
262263
pub(crate) args_len: usize,
263264
// TODO: Add private args length?
264265
// TODO: Add args type information?
266+
pub(crate) name: String,
265267
}
266268

267269
impl CustomPredicate {
268-
pub fn and(params: &Params, statements: Vec<StatementTmpl>, args_len: usize) -> Result<Self> {
269-
Self::new(params, true, statements, args_len)
270+
pub fn and(
271+
params: &Params,
272+
statements: Vec<StatementTmpl>,
273+
args_len: usize,
274+
name: &str,
275+
) -> Result<Self> {
276+
Self::new(params, true, statements, args_len, name)
270277
}
271-
pub fn or(params: &Params, statements: Vec<StatementTmpl>, args_len: usize) -> Result<Self> {
272-
Self::new(params, false, statements, args_len)
278+
pub fn or(
279+
params: &Params,
280+
statements: Vec<StatementTmpl>,
281+
args_len: usize,
282+
name: &str,
283+
) -> Result<Self> {
284+
Self::new(params, false, statements, args_len, name)
273285
}
274286
pub fn new(
275287
params: &Params,
276288
conjunction: bool,
277289
statements: Vec<StatementTmpl>,
278290
args_len: usize,
291+
name: &str,
279292
) -> Result<Self> {
280293
if statements.len() > params.max_custom_predicate_arity {
281294
return Err(anyhow!("Custom predicate depends on too many statements"));
@@ -285,6 +298,7 @@ impl CustomPredicate {
285298
conjunction,
286299
statements,
287300
args_len,
301+
name: name.to_string(),
288302
})
289303
}
290304
}
@@ -473,8 +487,9 @@ impl CustomPredicateBatchBuilder {
473487
args: &[&str],
474488
priv_args: &[&str],
475489
sts: &[StatementTmplBuilder],
490+
name: &str,
476491
) -> Result<Predicate> {
477-
self.predicate(params, true, args, priv_args, sts)
492+
self.predicate(params, true, args, priv_args, sts, name)
478493
}
479494

480495
pub fn predicate_or(
@@ -483,8 +498,9 @@ impl CustomPredicateBatchBuilder {
483498
args: &[&str],
484499
priv_args: &[&str],
485500
sts: &[StatementTmplBuilder],
501+
name: &str,
486502
) -> Result<Predicate> {
487-
self.predicate(params, false, args, priv_args, sts)
503+
self.predicate(params, false, args, priv_args, sts, name)
488504
}
489505

490506
/// creates the custom predicate from the given input, adds it to the
@@ -496,6 +512,7 @@ impl CustomPredicateBatchBuilder {
496512
args: &[&str],
497513
priv_args: &[&str],
498514
sts: &[StatementTmplBuilder],
515+
name: &str,
499516
) -> Result<Predicate> {
500517
let statements = sts
501518
.iter()
@@ -517,7 +534,8 @@ impl CustomPredicateBatchBuilder {
517534
}
518535
})
519536
.collect();
520-
let custom_predicate = CustomPredicate::new(params, conjunction, statements, args.len())?;
537+
let custom_predicate =
538+
CustomPredicate::new(params, conjunction, statements, args.len(), name)?;
521539
self.predicates.push(custom_predicate);
522540
Ok(Predicate::BatchSelf(self.predicates.len() - 1))
523541
}

src/frontend/serialization.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,6 @@ pub fn transform_value_schema(schema: &mut Schema) {
154154
#[cfg(test)]
155155
mod tests {
156156
use schemars::generate::SchemaSettings;
157-
use serde_json::json;
158157

159158
use crate::{
160159
backends::plonky2::mock::{mainpod::MockProver, signedpod::MockSigner},

src/middleware/statement.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ use serde::{Deserialize, Serialize};
55
use std::{fmt, iter};
66
use strum_macros::FromRepr;
77

8-
use super::{
9-
AnchoredKey, CustomPredicateRef, Params, Predicate, ToFields, Value, F, HASH_SIZE, VALUE_SIZE,
10-
};
8+
use super::{AnchoredKey, CustomPredicateRef, Params, Predicate, ToFields, Value, F, VALUE_SIZE};
119

1210
pub const KEY_SIGNER: &str = "_signer";
1311
pub const KEY_TYPE: &str = "_type";

0 commit comments

Comments
 (0)