pub trait BlackBoxFunctionSolver {
// Required methods
fn schnorr_verify(
&self,
public_key_x: &FieldElement,
public_key_y: &FieldElement,
signature: &[u8; 64],
message: &[u8]
) -> Result<bool, BlackBoxResolutionError>;
fn pedersen_commitment(
&self,
inputs: &[FieldElement],
domain_separator: u32
) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
fn pedersen_hash(
&self,
inputs: &[FieldElement],
domain_separator: u32
) -> Result<FieldElement, BlackBoxResolutionError>;
fn fixed_base_scalar_mul(
&self,
low: &FieldElement,
high: &FieldElement
) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
fn ec_add(
&self,
input1_x: &FieldElement,
input1_y: &FieldElement,
input2_x: &FieldElement,
input2_y: &FieldElement
) -> Result<(FieldElement, FieldElement), BlackBoxResolutionError>;
fn poseidon2_permutation(
&self,
_inputs: &[FieldElement],
_len: u32
) -> Result<Vec<FieldElement>, BlackBoxResolutionError>;
}
Expand description
This component will generate outputs for Blackbox function calls where the underlying acir::BlackBoxFunc
doesn’t have a canonical Rust implementation.
Returns an BlackBoxResolutionError
if the backend does not support the given acir::BlackBoxFunc
.