diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp index 75db931222c..3bafc86f92b 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.cpp @@ -65,9 +65,6 @@ void build_constraints(Builder& builder, AcirFormat const& constraint_system, bo for (const auto& constraint : constraint_system.keccak_constraints) { create_keccak_constraints(builder, constraint); } - for (const auto& constraint : constraint_system.keccak_var_constraints) { - create_keccak_var_constraints(builder, constraint); - } for (const auto& constraint : constraint_system.keccak_permutations) { create_keccak_permutations(builder, constraint); } diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp index c5b64473d80..c91d98c6fcd 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.hpp @@ -43,7 +43,6 @@ struct AcirFormat { std::vector blake2s_constraints; std::vector blake3_constraints; std::vector keccak_constraints; - std::vector keccak_var_constraints; std::vector keccak_permutations; std::vector pedersen_constraints; std::vector pedersen_hash_constraints; @@ -76,7 +75,6 @@ struct AcirFormat { blake2s_constraints, blake3_constraints, keccak_constraints, - keccak_var_constraints, keccak_permutations, pedersen_constraints, pedersen_hash_constraints, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp index cf36bbd1c0b..5d2fae4d988 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_format.test.cpp @@ -43,7 +43,6 @@ TEST_F(AcirFormatTests, TestASingleConstraintNoPubInputs) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -159,7 +158,6 @@ TEST_F(AcirFormatTests, TestLogicGateFromNoirCircuit) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -227,7 +225,6 @@ TEST_F(AcirFormatTests, TestSchnorrVerifyPass) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -322,7 +319,6 @@ TEST_F(AcirFormatTests, TestSchnorrVerifySmallRange) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -388,7 +384,7 @@ TEST_F(AcirFormatTests, TestVarKeccak) HashInput input3; input3.witness = 2; input3.num_bits = 8; - KeccakVarConstraint keccak; + KeccakConstraint keccak; keccak.inputs = { input1, input2, input3 }; keccak.var_message_size = 3; keccak.result = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, @@ -435,8 +431,7 @@ TEST_F(AcirFormatTests, TestVarKeccak) .ecdsa_r1_constraints = {}, .blake2s_constraints = {}, .blake3_constraints = {}, - .keccak_constraints = {}, - .keccak_var_constraints = { keccak }, + .keccak_constraints = { keccak }, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -483,7 +478,6 @@ TEST_F(AcirFormatTests, TestKeccakPermutation) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = { keccak_permutation }, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp index c3b35c2c88c..0034d4cae83 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/acir_to_constraint_buf.hpp @@ -244,17 +244,6 @@ void handle_blackbox_func_call(Program::Opcode::BlackBoxFuncCall const& arg, Aci }; }), .result = map(arg.outputs, [](auto& e) { return e.value; }), - }); - } else if constexpr (std::is_same_v) { - af.keccak_var_constraints.push_back(KeccakVarConstraint{ - .inputs = map(arg.inputs, - [](auto& e) { - return HashInput{ - .witness = e.witness.value, - .num_bits = e.num_bits, - }; - }), - .result = map(arg.outputs, [](auto& e) { return e.value; }), .var_message_size = arg.var_message_size.witness.value, }); } else if constexpr (std::is_same_v) { diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/bigint_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/bigint_constraint.test.cpp index 550ee4a7b40..90d61c52cd5 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/bigint_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/bigint_constraint.test.cpp @@ -180,7 +180,6 @@ TEST_F(BigIntTests, TestBigIntConstraintMultiple) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -248,7 +247,6 @@ TEST_F(BigIntTests, TestBigIntConstraintSimple) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -301,7 +299,6 @@ TEST_F(BigIntTests, TestBigIntConstraintReuse) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -358,7 +355,6 @@ TEST_F(BigIntTests, TestBigIntConstraintReuse2) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -436,7 +432,6 @@ TEST_F(BigIntTests, TestBigIntDIV) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -466,4 +461,4 @@ TEST_F(BigIntTests, TestBigIntDIV) auto verifier2 = composer.create_ultra_with_keccak_verifier(builder); EXPECT_EQ(verifier2.verify_proof(proof), true); } -} // namespace acir_format::tests \ No newline at end of file +} // namespace acir_format::tests diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp index 3054120b4ba..88d54261ea8 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/block_constraint.test.cpp @@ -122,7 +122,6 @@ TEST_F(UltraPlonkRAM, TestBlockConstraint) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ec_operations.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ec_operations.test.cpp index efcfd7ceace..479d42a2f3c 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ec_operations.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ec_operations.test.cpp @@ -62,7 +62,6 @@ TEST_F(EcOperations, TestECOperations) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp index 6d8135cf36f..1986460b53c 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.test.cpp @@ -102,7 +102,6 @@ TEST_F(ECDSASecp256k1, TestECDSAConstraintSucceed) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -151,7 +150,6 @@ TEST_F(ECDSASecp256k1, TestECDSACompilesForVerifier) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -195,7 +193,6 @@ TEST_F(ECDSASecp256k1, TestECDSAConstraintFail) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp index 17720a6dd5d..462172d3c4e 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.test.cpp @@ -136,7 +136,6 @@ TEST(ECDSASecp256r1, test_hardcoded) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -187,7 +186,6 @@ TEST(ECDSASecp256r1, TestECDSAConstraintSucceed) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -236,7 +234,6 @@ TEST(ECDSASecp256r1, TestECDSACompilesForVerifier) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -280,7 +277,6 @@ TEST(ECDSASecp256r1, TestECDSAConstraintFail) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp index 205021739fa..2563204adde 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.cpp @@ -6,39 +6,6 @@ namespace acir_format { template void create_keccak_constraints(Builder& builder, const KeccakConstraint& constraint) -{ - using byte_array_ct = bb::stdlib::byte_array; - using field_ct = bb::stdlib::field_t; - - // Create byte array struct - byte_array_ct arr(&builder); - - // Get the witness assignment for each witness index - // Write the witness assignment to the byte_array - for (const auto& witness_index_num_bits : constraint.inputs) { - auto witness_index = witness_index_num_bits.witness; - auto num_bits = witness_index_num_bits.num_bits; - - // XXX: The implementation requires us to truncate the element to the nearest byte and not bit - auto num_bytes = round_to_nearest_byte(num_bits); - - field_ct element = field_ct::from_witness_index(&builder, witness_index); - byte_array_ct element_bytes(element, num_bytes); - - arr.write(element_bytes); - } - - byte_array_ct output_bytes = bb::stdlib::keccak::hash(arr); - - // Convert byte array to vector of field_t - auto bytes = output_bytes.bytes(); - - for (size_t i = 0; i < bytes.size(); ++i) { - builder.assert_equal(bytes[i].normalize().witness_index, constraint.result[i]); - } -} - -template void create_keccak_var_constraints(Builder& builder, const KeccakVarConstraint& constraint) { using byte_array_ct = bb::stdlib::byte_array; using field_ct = bb::stdlib::field_t; @@ -95,15 +62,11 @@ template void create_keccak_permutations(Builder& builder, co } template void create_keccak_constraints(UltraCircuitBuilder& builder, const KeccakConstraint& constraint); -template void create_keccak_var_constraints(UltraCircuitBuilder& builder, - const KeccakVarConstraint& constraint); template void create_keccak_permutations(UltraCircuitBuilder& builder, const Keccakf1600& constraint); template void create_keccak_constraints(GoblinUltraCircuitBuilder& builder, const KeccakConstraint& constraint); -template void create_keccak_var_constraints(GoblinUltraCircuitBuilder& builder, - const KeccakVarConstraint& constraint); template void create_keccak_permutations(GoblinUltraCircuitBuilder& builder, const Keccakf1600& constraint); diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp index 4524e35862b..6ce3ccdc5f2 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/keccak_constraint.hpp @@ -27,24 +27,14 @@ struct Keccakf1600 { struct KeccakConstraint { std::vector inputs; std::vector result; - - // For serialization, update with any new fields - MSGPACK_FIELDS(inputs, result); - friend bool operator==(KeccakConstraint const& lhs, KeccakConstraint const& rhs) = default; -}; - -struct KeccakVarConstraint { - std::vector inputs; - std::vector result; uint32_t var_message_size; // For serialization, update with any new fields MSGPACK_FIELDS(inputs, result, var_message_size); - friend bool operator==(KeccakVarConstraint const& lhs, KeccakVarConstraint const& rhs) = default; + friend bool operator==(KeccakConstraint const& lhs, KeccakConstraint const& rhs) = default; }; template void create_keccak_constraints(Builder& builder, const KeccakConstraint& constraint); -template void create_keccak_var_constraints(Builder& builder, const KeccakVarConstraint& constraint); template void create_keccak_permutations(Builder& builder, const Keccakf1600& constraint); } // namespace acir_format diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/poseidon2_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/poseidon2_constraint.test.cpp index a7b02619734..7ca36a78414 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/poseidon2_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/poseidon2_constraint.test.cpp @@ -42,7 +42,6 @@ TEST_F(Poseidon2Tests, TestPoseidon2Permutation) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -79,4 +78,4 @@ TEST_F(Poseidon2Tests, TestPoseidon2Permutation) EXPECT_EQ(verifier.verify_proof(proof), true); } -} // namespace acir_format::tests \ No newline at end of file +} // namespace acir_format::tests diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp index bc1febd7409..d35e15768fa 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/recursion_constraint.test.cpp @@ -94,7 +94,6 @@ Builder create_inner_circuit() .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -251,7 +250,6 @@ Builder create_outer_circuit(std::vector& inner_circuits) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp index 35db8753546..3e01fd1f155 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/serde/acir.hpp @@ -159,6 +159,7 @@ struct BlackBoxFuncCall { struct Keccak256 { std::vector inputs; + Program::FunctionInput var_message_size; std::vector outputs; friend bool operator==(const Keccak256&, const Keccak256&); @@ -166,16 +167,6 @@ struct BlackBoxFuncCall { static Keccak256 bincodeDeserialize(std::vector); }; - struct Keccak256VariableLength { - std::vector inputs; - Program::FunctionInput var_message_size; - std::vector outputs; - - friend bool operator==(const Keccak256VariableLength&, const Keccak256VariableLength&); - std::vector bincodeSerialize() const; - static Keccak256VariableLength bincodeDeserialize(std::vector); - }; - struct Keccakf1600 { std::vector inputs; std::vector outputs; @@ -289,7 +280,6 @@ struct BlackBoxFuncCall { FixedBaseScalarMul, EmbeddedCurveAdd, Keccak256, - Keccak256VariableLength, Keccakf1600, RecursiveAggregation, BigIntAdd, @@ -2954,6 +2944,9 @@ inline bool operator==(const BlackBoxFuncCall::Keccak256& lhs, const BlackBoxFun if (!(lhs.inputs == rhs.inputs)) { return false; } + if (!(lhs.var_message_size == rhs.var_message_size)) { + return false; + } if (!(lhs.outputs == rhs.outputs)) { return false; } @@ -2985,6 +2978,7 @@ void serde::Serializable::serialize( const Program::BlackBoxFuncCall::Keccak256& obj, Serializer& serializer) { serde::Serializable::serialize(obj.inputs, serializer); + serde::Serializable::serialize(obj.var_message_size, serializer); serde::Serializable::serialize(obj.outputs, serializer); } @@ -2995,64 +2989,6 @@ Program::BlackBoxFuncCall::Keccak256 serde::Deserializable::deserialize(deserializer); - obj.outputs = serde::Deserializable::deserialize(deserializer); - return obj; -} - -namespace Program { - -inline bool operator==(const BlackBoxFuncCall::Keccak256VariableLength& lhs, - const BlackBoxFuncCall::Keccak256VariableLength& rhs) -{ - if (!(lhs.inputs == rhs.inputs)) { - return false; - } - if (!(lhs.var_message_size == rhs.var_message_size)) { - return false; - } - if (!(lhs.outputs == rhs.outputs)) { - return false; - } - return true; -} - -inline std::vector BlackBoxFuncCall::Keccak256VariableLength::bincodeSerialize() const -{ - auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); - return std::move(serializer).bytes(); -} - -inline BlackBoxFuncCall::Keccak256VariableLength BlackBoxFuncCall::Keccak256VariableLength::bincodeDeserialize( - std::vector input) -{ - auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); - if (deserializer.get_buffer_offset() < input.size()) { - throw_or_abort("Some input bytes were not read"); - } - return value; -} - -} // end of namespace Program - -template <> -template -void serde::Serializable::serialize( - const Program::BlackBoxFuncCall::Keccak256VariableLength& obj, Serializer& serializer) -{ - serde::Serializable::serialize(obj.inputs, serializer); - serde::Serializable::serialize(obj.var_message_size, serializer); - serde::Serializable::serialize(obj.outputs, serializer); -} - -template <> -template -Program::BlackBoxFuncCall::Keccak256VariableLength serde::Deserializable< - Program::BlackBoxFuncCall::Keccak256VariableLength>::deserialize(Deserializer& deserializer) -{ - Program::BlackBoxFuncCall::Keccak256VariableLength obj; - obj.inputs = serde::Deserializable::deserialize(deserializer); obj.var_message_size = serde::Deserializable::deserialize(deserializer); obj.outputs = serde::Deserializable::deserialize(deserializer); return obj; diff --git a/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.test.cpp b/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.test.cpp index 037473e31d4..8e770aa4f40 100644 --- a/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.test.cpp +++ b/barretenberg/cpp/src/barretenberg/dsl/acir_format/sha256_constraint.test.cpp @@ -44,7 +44,6 @@ TEST_F(Sha256Tests, TestSha256Compression) .blake2s_constraints = {}, .blake3_constraints = {}, .keccak_constraints = {}, - .keccak_var_constraints = {}, .keccak_permutations = {}, .pedersen_constraints = {}, .pedersen_hash_constraints = {}, @@ -102,4 +101,4 @@ TEST_F(Sha256Tests, TestSha256Compression) EXPECT_EQ(verifier.verify_proof(proof), true); } -} // namespace acir_format::tests \ No newline at end of file +} // namespace acir_format::tests diff --git a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp index e4203b579b0..7cd9fbefba0 100644 --- a/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp +++ b/noir/noir-repo/acvm-repo/acir/codegen/acir.cpp @@ -159,6 +159,7 @@ namespace Program { struct Keccak256 { std::vector inputs; + Program::FunctionInput var_message_size; std::vector outputs; friend bool operator==(const Keccak256&, const Keccak256&); @@ -166,16 +167,6 @@ namespace Program { static Keccak256 bincodeDeserialize(std::vector); }; - struct Keccak256VariableLength { - std::vector inputs; - Program::FunctionInput var_message_size; - std::vector outputs; - - friend bool operator==(const Keccak256VariableLength&, const Keccak256VariableLength&); - std::vector bincodeSerialize() const; - static Keccak256VariableLength bincodeDeserialize(std::vector); - }; - struct Keccakf1600 { std::vector inputs; std::vector outputs; @@ -275,7 +266,7 @@ namespace Program { static Sha256Compression bincodeDeserialize(std::vector); }; - std::variant value; + std::variant value; friend bool operator==(const BlackBoxFuncCall&, const BlackBoxFuncCall&); std::vector bincodeSerialize() const; @@ -2582,6 +2573,7 @@ namespace Program { inline bool operator==(const BlackBoxFuncCall::Keccak256 &lhs, const BlackBoxFuncCall::Keccak256 &rhs) { if (!(lhs.inputs == rhs.inputs)) { return false; } + if (!(lhs.var_message_size == rhs.var_message_size)) { return false; } if (!(lhs.outputs == rhs.outputs)) { return false; } return true; } @@ -2607,6 +2599,7 @@ template <> template void serde::Serializable::serialize(const Program::BlackBoxFuncCall::Keccak256 &obj, Serializer &serializer) { serde::Serializable::serialize(obj.inputs, serializer); + serde::Serializable::serialize(obj.var_message_size, serializer); serde::Serializable::serialize(obj.outputs, serializer); } @@ -2615,49 +2608,6 @@ template Program::BlackBoxFuncCall::Keccak256 serde::Deserializable::deserialize(Deserializer &deserializer) { Program::BlackBoxFuncCall::Keccak256 obj; obj.inputs = serde::Deserializable::deserialize(deserializer); - obj.outputs = serde::Deserializable::deserialize(deserializer); - return obj; -} - -namespace Program { - - inline bool operator==(const BlackBoxFuncCall::Keccak256VariableLength &lhs, const BlackBoxFuncCall::Keccak256VariableLength &rhs) { - if (!(lhs.inputs == rhs.inputs)) { return false; } - if (!(lhs.var_message_size == rhs.var_message_size)) { return false; } - if (!(lhs.outputs == rhs.outputs)) { return false; } - return true; - } - - inline std::vector BlackBoxFuncCall::Keccak256VariableLength::bincodeSerialize() const { - auto serializer = serde::BincodeSerializer(); - serde::Serializable::serialize(*this, serializer); - return std::move(serializer).bytes(); - } - - inline BlackBoxFuncCall::Keccak256VariableLength BlackBoxFuncCall::Keccak256VariableLength::bincodeDeserialize(std::vector input) { - auto deserializer = serde::BincodeDeserializer(input); - auto value = serde::Deserializable::deserialize(deserializer); - if (deserializer.get_buffer_offset() < input.size()) { - throw serde::deserialization_error("Some input bytes were not read"); - } - return value; - } - -} // end of namespace Program - -template <> -template -void serde::Serializable::serialize(const Program::BlackBoxFuncCall::Keccak256VariableLength &obj, Serializer &serializer) { - serde::Serializable::serialize(obj.inputs, serializer); - serde::Serializable::serialize(obj.var_message_size, serializer); - serde::Serializable::serialize(obj.outputs, serializer); -} - -template <> -template -Program::BlackBoxFuncCall::Keccak256VariableLength serde::Deserializable::deserialize(Deserializer &deserializer) { - Program::BlackBoxFuncCall::Keccak256VariableLength obj; - obj.inputs = serde::Deserializable::deserialize(deserializer); obj.var_message_size = serde::Deserializable::deserialize(deserializer); obj.outputs = serde::Deserializable::deserialize(deserializer); return obj; diff --git a/noir/noir-repo/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs b/noir/noir-repo/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs index c955e435b37..d9089578739 100644 --- a/noir/noir-repo/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs +++ b/noir/noir-repo/acvm-repo/acir/src/circuit/opcodes/black_box_function_call.rs @@ -81,10 +81,6 @@ pub enum BlackBoxFuncCall { outputs: (Witness, Witness), }, Keccak256 { - inputs: Vec, - outputs: Vec, - }, - Keccak256VariableLength { inputs: Vec, /// This is the number of bytes to take /// from the input. Note: if `var_message_size` @@ -183,7 +179,6 @@ impl BlackBoxFuncCall { BlackBoxFuncCall::FixedBaseScalarMul { .. } => BlackBoxFunc::FixedBaseScalarMul, BlackBoxFuncCall::EmbeddedCurveAdd { .. } => BlackBoxFunc::EmbeddedCurveAdd, BlackBoxFuncCall::Keccak256 { .. } => BlackBoxFunc::Keccak256, - BlackBoxFuncCall::Keccak256VariableLength { .. } => BlackBoxFunc::Keccak256, BlackBoxFuncCall::Keccakf1600 { .. } => BlackBoxFunc::Keccakf1600, BlackBoxFuncCall::RecursiveAggregation { .. } => BlackBoxFunc::RecursiveAggregation, BlackBoxFuncCall::BigIntAdd { .. } => BlackBoxFunc::BigIntAdd, @@ -206,7 +201,6 @@ impl BlackBoxFuncCall { BlackBoxFuncCall::SHA256 { inputs, .. } | BlackBoxFuncCall::Blake2s { inputs, .. } | BlackBoxFuncCall::Blake3 { inputs, .. } - | BlackBoxFuncCall::Keccak256 { inputs, .. } | BlackBoxFuncCall::Keccakf1600 { inputs, .. } | BlackBoxFuncCall::PedersenCommitment { inputs, .. } | BlackBoxFuncCall::PedersenHash { inputs, .. } @@ -280,7 +274,7 @@ impl BlackBoxFuncCall { inputs.extend(hashed_message.iter().copied()); inputs } - BlackBoxFuncCall::Keccak256VariableLength { inputs, var_message_size, .. } => { + BlackBoxFuncCall::Keccak256 { inputs, var_message_size, .. } => { let mut inputs = inputs.clone(); inputs.push(*var_message_size); inputs @@ -306,9 +300,8 @@ impl BlackBoxFuncCall { BlackBoxFuncCall::SHA256 { outputs, .. } | BlackBoxFuncCall::Blake2s { outputs, .. } | BlackBoxFuncCall::Blake3 { outputs, .. } - | BlackBoxFuncCall::Keccak256 { outputs, .. } | BlackBoxFuncCall::Keccakf1600 { outputs, .. } - | BlackBoxFuncCall::Keccak256VariableLength { outputs, .. } + | BlackBoxFuncCall::Keccak256 { outputs, .. } | BlackBoxFuncCall::Poseidon2Permutation { outputs, .. } | BlackBoxFuncCall::Sha256Compression { outputs, .. } => outputs.to_vec(), BlackBoxFuncCall::AND { output, .. } diff --git a/noir/noir-repo/acvm-repo/acvm/src/pwg/blackbox/mod.rs b/noir/noir-repo/acvm-repo/acvm/src/pwg/blackbox/mod.rs index 6ee926043cd..e7ed402a8eb 100644 --- a/noir/noir-repo/acvm-repo/acvm/src/pwg/blackbox/mod.rs +++ b/noir/noir-repo/acvm-repo/acvm/src/pwg/blackbox/mod.rs @@ -95,15 +95,7 @@ pub(crate) fn solve( blake3, bb_func.get_black_box_func(), ), - BlackBoxFuncCall::Keccak256 { inputs, outputs } => solve_generic_256_hash_opcode( - initial_witness, - inputs, - None, - outputs, - keccak256, - bb_func.get_black_box_func(), - ), - BlackBoxFuncCall::Keccak256VariableLength { inputs, var_message_size, outputs } => { + BlackBoxFuncCall::Keccak256 { inputs, var_message_size, outputs } => { solve_generic_256_hash_opcode( initial_witness, inputs, diff --git a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/acir_gen/acir_ir/generated_acir.rs b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/acir_gen/acir_ir/generated_acir.rs index b43110b2f5b..ba4e03bff95 100644 --- a/noir/noir-repo/compiler/noirc_evaluator/src/ssa/acir_gen/acir_ir/generated_acir.rs +++ b/noir/noir-repo/compiler/noirc_evaluator/src/ssa/acir_gen/acir_ir/generated_acir.rs @@ -240,11 +240,7 @@ impl GeneratedAcir { } }; - BlackBoxFuncCall::Keccak256VariableLength { - inputs: inputs[0].clone(), - var_message_size, - outputs, - } + BlackBoxFuncCall::Keccak256 { inputs: inputs[0].clone(), var_message_size, outputs } } BlackBoxFunc::Keccakf1600 => { BlackBoxFuncCall::Keccakf1600 { inputs: inputs[0].clone(), outputs } diff --git a/noir/noir-repo/tooling/noir_js_backend_barretenberg/package.json b/noir/noir-repo/tooling/noir_js_backend_barretenberg/package.json index 251dd80c2f4..1ea384cdd49 100644 --- a/noir/noir-repo/tooling/noir_js_backend_barretenberg/package.json +++ b/noir/noir-repo/tooling/noir_js_backend_barretenberg/package.json @@ -42,7 +42,7 @@ "lint": "NODE_NO_WARNINGS=1 eslint . --ext .ts --ignore-path ./.eslintignore --max-warnings 0" }, "dependencies": { - "@aztec/bb.js": "0.32.0", + "@aztec/bb.js": "portal:../../../../barretenberg/ts", "@noir-lang/types": "workspace:*", "fflate": "^0.8.0" }, diff --git a/noir/noir-repo/yarn.lock b/noir/noir-repo/yarn.lock index a39ae9921da..b45678f5d8b 100644 --- a/noir/noir-repo/yarn.lock +++ b/noir/noir-repo/yarn.lock @@ -221,19 +221,18 @@ __metadata: languageName: node linkType: hard -"@aztec/bb.js@npm:0.32.0": - version: 0.32.0 - resolution: "@aztec/bb.js@npm:0.32.0" +"@aztec/bb.js@portal:../../../../barretenberg/ts::locator=%40noir-lang%2Fbackend_barretenberg%40workspace%3Atooling%2Fnoir_js_backend_barretenberg": + version: 0.0.0-use.local + resolution: "@aztec/bb.js@portal:../../../../barretenberg/ts::locator=%40noir-lang%2Fbackend_barretenberg%40workspace%3Atooling%2Fnoir_js_backend_barretenberg" dependencies: comlink: ^4.4.1 commander: ^10.0.1 debug: ^4.3.4 tslib: ^2.4.0 bin: - bb.js: dest/node/main.js - checksum: 0919957e141ae0a65cfab961dce122fa06de628a10b7cb661d31d8ed4793ce80980fcf315620ceffffa45581db941bad43c392f4b2aa9becaaf7d2faaba01ffc + bb.js: ./dest/node/main.js languageName: node - linkType: hard + linkType: soft "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.11, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.23.5, @babel/code-frame@npm:^7.8.3": version: 7.23.5 @@ -4396,7 +4395,7 @@ __metadata: version: 0.0.0-use.local resolution: "@noir-lang/backend_barretenberg@workspace:tooling/noir_js_backend_barretenberg" dependencies: - "@aztec/bb.js": 0.32.0 + "@aztec/bb.js": "portal:../../../../barretenberg/ts" "@noir-lang/types": "workspace:*" "@types/node": ^20.6.2 "@types/prettier": ^3