diff --git a/acvm-repo/acir/src/circuit/opcodes.rs b/acvm-repo/acir/src/circuit/opcodes.rs index 41a42a14684..87f7c42d27d 100644 --- a/acvm-repo/acir/src/circuit/opcodes.rs +++ b/acvm-repo/acir/src/circuit/opcodes.rs @@ -134,20 +134,8 @@ pub enum Opcode { impl std::fmt::Display for Opcode { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - Opcode::AssertZero(expr) => { - write!(f, "EXPR [ ")?; - for i in &expr.mul_terms { - write!(f, "({}, _{}, _{}) ", i.0, i.1.witness_index(), i.2.witness_index())?; - } - for i in &expr.linear_combinations { - write!(f, "({}, _{}) ", i.0, i.1.witness_index())?; - } - write!(f, "{}", expr.q_c)?; - - write!(f, " ]") - } - - Opcode::BlackBoxFuncCall(g) => write!(f, "{g}"), + Opcode::AssertZero(expr) => expr.fmt(f), + Opcode::BlackBoxFuncCall(g) => g.fmt(f), Opcode::MemoryOp { block_id, op, predicate } => { write!(f, "MEM ")?; if let Some(pred) = predicate { diff --git a/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs b/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs index 8c5ada3ee6e..da70e9b6eb5 100644 --- a/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs +++ b/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs @@ -82,7 +82,7 @@ impl std::fmt::Display for FunctionInput { } #[derive(Clone, PartialEq, Eq, Serialize, Deserialize, Hash)] -pub enum BlackBoxFuncCall { +pub enum BlackBoxFuncCall { AES128Encrypt { inputs: Vec>, iv: Box<[FunctionInput; 16]>, @@ -216,7 +216,7 @@ pub enum BlackBoxFuncCall { }, } -impl BlackBoxFuncCall { +impl BlackBoxFuncCall { pub fn get_black_box_func(&self) -> BlackBoxFunc { match self { BlackBoxFuncCall::AES128Encrypt { .. } => BlackBoxFunc::AES128Encrypt, @@ -246,6 +246,41 @@ impl BlackBoxFuncCall { self.get_black_box_func().name() } + pub fn get_outputs_vec(&self) -> Vec { + match self { + BlackBoxFuncCall::Blake2s { outputs, .. } + | BlackBoxFuncCall::Blake3 { outputs, .. } => outputs.to_vec(), + + BlackBoxFuncCall::Keccakf1600 { outputs, .. } => outputs.to_vec(), + + BlackBoxFuncCall::Sha256Compression { outputs, .. } => outputs.to_vec(), + + BlackBoxFuncCall::AES128Encrypt { outputs, .. } + | BlackBoxFuncCall::Poseidon2Permutation { outputs, .. } => outputs.to_vec(), + + BlackBoxFuncCall::AND { output, .. } + | BlackBoxFuncCall::XOR { output, .. } + | BlackBoxFuncCall::EcdsaSecp256k1 { output, .. } + | BlackBoxFuncCall::EcdsaSecp256r1 { output, .. } => vec![*output], + BlackBoxFuncCall::MultiScalarMul { outputs, .. } + | BlackBoxFuncCall::EmbeddedCurveAdd { outputs, .. } => { + vec![outputs.0, outputs.1, outputs.2] + } + BlackBoxFuncCall::RANGE { .. } + | BlackBoxFuncCall::RecursiveAggregation { .. } + | BlackBoxFuncCall::BigIntFromLeBytes { .. } + | BlackBoxFuncCall::BigIntAdd { .. } + | BlackBoxFuncCall::BigIntSub { .. } + | BlackBoxFuncCall::BigIntMul { .. } + | BlackBoxFuncCall::BigIntDiv { .. } => { + vec![] + } + BlackBoxFuncCall::BigIntToLeBytes { outputs, .. } => outputs.to_vec(), + } + } +} + +impl BlackBoxFuncCall { pub fn get_inputs_vec(&self) -> Vec> { match self { BlackBoxFuncCall::AES128Encrypt { inputs, .. } @@ -333,39 +368,6 @@ impl BlackBoxFuncCall { } } - pub fn get_outputs_vec(&self) -> Vec { - match self { - BlackBoxFuncCall::Blake2s { outputs, .. } - | BlackBoxFuncCall::Blake3 { outputs, .. } => outputs.to_vec(), - - BlackBoxFuncCall::Keccakf1600 { outputs, .. } => outputs.to_vec(), - - BlackBoxFuncCall::Sha256Compression { outputs, .. } => outputs.to_vec(), - - BlackBoxFuncCall::AES128Encrypt { outputs, .. } - | BlackBoxFuncCall::Poseidon2Permutation { outputs, .. } => outputs.to_vec(), - - BlackBoxFuncCall::AND { output, .. } - | BlackBoxFuncCall::XOR { output, .. } - | BlackBoxFuncCall::EcdsaSecp256k1 { output, .. } - | BlackBoxFuncCall::EcdsaSecp256r1 { output, .. } => vec![*output], - BlackBoxFuncCall::MultiScalarMul { outputs, .. } - | BlackBoxFuncCall::EmbeddedCurveAdd { outputs, .. } => { - vec![outputs.0, outputs.1, outputs.2] - } - BlackBoxFuncCall::RANGE { .. } - | BlackBoxFuncCall::RecursiveAggregation { .. } - | BlackBoxFuncCall::BigIntFromLeBytes { .. } - | BlackBoxFuncCall::BigIntAdd { .. } - | BlackBoxFuncCall::BigIntSub { .. } - | BlackBoxFuncCall::BigIntMul { .. } - | BlackBoxFuncCall::BigIntDiv { .. } => { - vec![] - } - BlackBoxFuncCall::BigIntToLeBytes { outputs, .. } => outputs.to_vec(), - } - } - pub fn get_input_witnesses(&self) -> BTreeSet { let mut result = BTreeSet::new(); for input in self.get_inputs_vec() { @@ -429,7 +431,7 @@ fn get_outputs_string(outputs: &[Witness]) -> String { } } -impl std::fmt::Display for BlackBoxFuncCall { +impl std::fmt::Display for BlackBoxFuncCall { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { let uppercase_name = self.name().to_uppercase(); write!(f, "BLACKBOX::{uppercase_name} ")?; @@ -454,7 +456,7 @@ impl std::fmt::Display for BlackBoxFunc } } -impl std::fmt::Debug for BlackBoxFuncCall { +impl std::fmt::Debug for BlackBoxFuncCall { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self, f) } diff --git a/acvm-repo/acir/src/native_types/expression/mod.rs b/acvm-repo/acir/src/native_types/expression/mod.rs index 1d1f12b7eea..b82b6729422 100644 --- a/acvm-repo/acir/src/native_types/expression/mod.rs +++ b/acvm-repo/acir/src/native_types/expression/mod.rs @@ -33,13 +33,18 @@ impl Default for Expression { } } -impl std::fmt::Display for Expression { +impl std::fmt::Display for Expression { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { - if let Some(witness) = self.to_witness() { - write!(f, "x{}", witness.witness_index()) - } else { - write!(f, "%{:?}%", crate::circuit::opcodes::Opcode::AssertZero(self.clone())) + write!(f, "EXPR [ ")?; + for i in &self.mul_terms { + write!(f, "({}, _{}, _{}) ", i.0, i.1.witness_index(), i.2.witness_index())?; } + for i in &self.linear_combinations { + write!(f, "({}, _{}) ", i.0, i.1.witness_index())?; + } + write!(f, "{}", self.q_c)?; + + write!(f, " ]") } } diff --git a/acvm-repo/acir/src/native_types/witness_map.rs b/acvm-repo/acir/src/native_types/witness_map.rs index cbaef49049f..edb6047b5db 100644 --- a/acvm-repo/acir/src/native_types/witness_map.rs +++ b/acvm-repo/acir/src/native_types/witness_map.rs @@ -84,13 +84,13 @@ impl From> for WitnessMap { } } -impl WitnessMap { +impl WitnessMap { pub(crate) fn bincode_serialize(&self) -> Result, WitnessMapError> { bincode::serialize(self).map_err(|e| SerializationError::Deserialize(e.to_string()).into()) } } -impl Deserialize<'a>> WitnessMap { +impl Deserialize<'a>> WitnessMap { pub(crate) fn bincode_deserialize(buf: &[u8]) -> Result { bincode::deserialize(buf).map_err(|e| SerializationError::Deserialize(e.to_string()).into()) } @@ -120,7 +120,7 @@ impl TryFrom> for Vec { } } -impl Deserialize<'a>> TryFrom<&[u8]> for WitnessMap { +impl Deserialize<'a>> TryFrom<&[u8]> for WitnessMap { type Error = WitnessMapError; fn try_from(bytes: &[u8]) -> Result { diff --git a/acvm-repo/acir/src/native_types/witness_stack.rs b/acvm-repo/acir/src/native_types/witness_stack.rs index d8c0eb14773..686b3ee98fd 100644 --- a/acvm-repo/acir/src/native_types/witness_stack.rs +++ b/acvm-repo/acir/src/native_types/witness_stack.rs @@ -70,13 +70,13 @@ impl From> for WitnessStack { } } -impl WitnessStack { +impl WitnessStack { pub(crate) fn bincode_serialize(&self) -> Result, WitnessStackError> { bincode::serialize(self).map_err(|e| WitnessStackError(e.into())) } } -impl Deserialize<'a>> WitnessStack { +impl Deserialize<'a>> WitnessStack { pub(crate) fn bincode_deserialize(buf: &[u8]) -> Result { bincode::deserialize(buf).map_err(|e| WitnessStackError(e.into())) } @@ -114,7 +114,7 @@ impl TryFrom> for Vec { } } -impl Deserialize<'a>> TryFrom<&[u8]> for WitnessStack { +impl Deserialize<'a>> TryFrom<&[u8]> for WitnessStack { type Error = WitnessStackError; fn try_from(bytes: &[u8]) -> Result { diff --git a/acvm-repo/acir/src/proto/convert/acir.rs b/acvm-repo/acir/src/proto/convert/acir.rs index 1a6d9169b30..4c3304613e4 100644 --- a/acvm-repo/acir/src/proto/convert/acir.rs +++ b/acvm-repo/acir/src/proto/convert/acir.rs @@ -16,10 +16,7 @@ use noir_protobuf::{ProtoCodec, decode_oneof_map}; use super::ProtoSchema; -impl ProtoCodec, Circuit> for ProtoSchema -where - F: AcirField, -{ +impl ProtoCodec, Circuit> for ProtoSchema { fn encode(value: &circuit::Circuit) -> Circuit { Circuit { current_witness_index: value.current_witness_index, diff --git a/acvm-repo/acir/src/proto/convert/brillig.rs b/acvm-repo/acir/src/proto/convert/brillig.rs index d07ba462782..54df85ec4ed 100644 --- a/acvm-repo/acir/src/proto/convert/brillig.rs +++ b/acvm-repo/acir/src/proto/convert/brillig.rs @@ -13,9 +13,8 @@ use crate::proto::brillig::{ use super::ProtoSchema; -impl ProtoCodec, BrilligBytecode> for ProtoSchema -where - F: AcirField, +impl ProtoCodec, BrilligBytecode> + for ProtoSchema { fn encode(value: &circuit::brillig::BrilligBytecode) -> BrilligBytecode { BrilligBytecode { bytecode: Self::encode_vec(&value.bytecode) } @@ -28,10 +27,7 @@ where } } -impl ProtoCodec, BrilligOpcode> for ProtoSchema -where - F: AcirField, -{ +impl ProtoCodec, BrilligOpcode> for ProtoSchema { fn encode(value: &brillig::Opcode) -> BrilligOpcode { use brillig_opcode::*; diff --git a/acvm-repo/acir/src/proto/convert/mod.rs b/acvm-repo/acir/src/proto/convert/mod.rs index 9d68ba665e1..4d7b487da37 100644 --- a/acvm-repo/acir/src/proto/convert/mod.rs +++ b/acvm-repo/acir/src/proto/convert/mod.rs @@ -16,10 +16,7 @@ pub(crate) struct ProtoSchema { field: PhantomData, } -impl ProtoCodec, Program> for ProtoSchema -where - F: AcirField, -{ +impl ProtoCodec, Program> for ProtoSchema { fn encode(value: &circuit::Program) -> Program { Program { functions: Self::encode_vec(&value.functions),