diff --git a/acir/src/circuit/opcodes/black_box_function_call.rs b/acir/src/circuit/opcodes/black_box_function_call.rs index 52d5e867b..b047bc36f 100644 --- a/acir/src/circuit/opcodes/black_box_function_call.rs +++ b/acir/src/circuit/opcodes/black_box_function_call.rs @@ -48,6 +48,7 @@ pub enum BlackBoxFuncCall { }, Pedersen { inputs: Vec, + domain_separator: u32, outputs: Vec, }, // 128 here specifies that this function @@ -106,7 +107,7 @@ impl BlackBoxFuncCall { output: Witness(0), }, BlackBoxFunc::Pedersen => { - BlackBoxFuncCall::Pedersen { inputs: vec![], outputs: vec![] } + BlackBoxFuncCall::Pedersen { inputs: vec![], domain_separator: 0, outputs: vec![] } } BlackBoxFunc::HashToField128Security => { BlackBoxFuncCall::HashToField128Security { inputs: vec![], output: Witness(0) } @@ -298,7 +299,15 @@ impl std::fmt::Display for BlackBoxFuncCall { write!(f, "{outputs_str}")?; - write!(f, "]") + write!(f, "]")?; + + // SPECIFIC PARAMETERS + match self { + BlackBoxFuncCall::Pedersen { domain_separator, .. } => { + write!(f, " domain_separator: {domain_separator}") + } + _ => write!(f, ""), + } } } diff --git a/acvm/src/lib.rs b/acvm/src/lib.rs index e127e5741..d081b1d81 100644 --- a/acvm/src/lib.rs +++ b/acvm/src/lib.rs @@ -84,6 +84,7 @@ pub trait PartialWitnessGenerator { &self, initial_witness: &mut WitnessMap, inputs: &[FunctionInput], + domain_separator: u32, outputs: &[Witness], ) -> Result; fn fixed_base_scalar_mul( diff --git a/acvm/src/pwg.rs b/acvm/src/pwg.rs index 4e009cb73..020380222 100644 --- a/acvm/src/pwg.rs +++ b/acvm/src/pwg.rs @@ -335,6 +335,7 @@ mod test { &self, _initial_witness: &mut WitnessMap, _inputs: &[FunctionInput], + _domain_separator: u32, _outputs: &[Witness], ) -> Result { panic!("Path not trodden by this test") diff --git a/acvm/src/pwg/blackbox.rs b/acvm/src/pwg/blackbox.rs index 9a32e609f..05d301e43 100644 --- a/acvm/src/pwg/blackbox.rs +++ b/acvm/src/pwg/blackbox.rs @@ -70,8 +70,8 @@ pub(crate) fn solve( message, output, ), - BlackBoxFuncCall::Pedersen { inputs, outputs } => { - backend.pedersen(initial_witness, inputs, outputs) + BlackBoxFuncCall::Pedersen { inputs, domain_separator, outputs } => { + backend.pedersen(initial_witness, inputs, *domain_separator, outputs) } BlackBoxFuncCall::HashToField128Security { inputs, output } => { hash_to_field_128_security(initial_witness, inputs, output)