Skip to content

Commit 0738287

Browse files
authored
feat: merge-train/barretenberg (#16631)
BEGIN_COMMIT_OVERRIDE chore!: Merge two ecdsa verification functions (#16509) fix(bb): grumpkin_srs_gen debug-build linking chore: remove no-longer-used lookup grand prod delta (#16543) feat!: share transcript between pg and decider (#16642) END_COMMIT_OVERRIDE
2 parents 470f10c + 16295c3 commit 0738287

File tree

19 files changed

+342
-371
lines changed

19 files changed

+342
-371
lines changed

barretenberg/cpp/scripts/test_civc_standalone_vks_havent_changed.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ cd ..
1111
# - Generate a hash for versioning: sha256sum bb-civc-inputs.tar.gz
1212
# - Upload the compressed results: aws s3 cp bb-civc-inputs.tar.gz s3://aztec-ci-artifacts/protocol/bb-civc-inputs-[hash(0:8)].tar.gz
1313
# Note: In case of the "Test suite failed to run ... Unexpected token 'with' " error, need to run: docker pull aztecprotocol/build:3.0
14-
pinned_short_hash="dba43b65"
14+
pinned_short_hash="f22d116f"
1515
pinned_civc_inputs_url="https://aztec-ci-artifacts.s3.us-east-2.amazonaws.com/protocol/bb-civc-inputs-${pinned_short_hash}.tar.gz"
1616

1717
function compress_and_upload {

barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ ClientIVC::perform_recursive_verification_and_databus_consistency_checks(
205205
prev_accum_hash,
206206
verifier_inputs.is_kernel);
207207
// Perform recursive decider verification
208-
DeciderRecursiveVerifier decider{ &circuit, final_verifier_accumulator };
208+
DeciderRecursiveVerifier decider{ &circuit, final_verifier_accumulator, accumulation_recursive_transcript };
209209
decider_pairing_points = decider.verify_proof(decider_proof);
210210

211211
BB_ASSERT_EQ(output_verifier_accumulator, nullptr);
@@ -496,7 +496,7 @@ void ClientIVC::accumulate(ClientCircuit& circuit, const std::shared_ptr<MegaVer
496496
break;
497497
case QUEUE_TYPE::PG_FINAL:
498498
proof = construct_pg_proof(proving_key, honk_vk, prover_accumulation_transcript, is_kernel);
499-
decider_proof = construct_decider_proof();
499+
decider_proof = construct_decider_proof(prover_accumulation_transcript);
500500
break;
501501
case QUEUE_TYPE::MEGA:
502502
proof = construct_mega_proof_for_hiding_kernel(circuit);
@@ -614,11 +614,11 @@ bool ClientIVC::verify(const Proof& proof) const
614614
*
615615
* @return HonkProof
616616
*/
617-
HonkProof ClientIVC::construct_decider_proof()
617+
HonkProof ClientIVC::construct_decider_proof(const std::shared_ptr<Transcript>& transcript)
618618
{
619619
vinfo("prove decider...");
620620
fold_output.accumulator->commitment_key = bn254_commitment_key;
621-
MegaDeciderProver decider_prover(fold_output.accumulator);
621+
MegaDeciderProver decider_prover(fold_output.accumulator, transcript);
622622
decider_prover.construct_proof();
623623
return decider_prover.export_proof();
624624
}

barretenberg/cpp/src/barretenberg/client_ivc/client_ivc.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ class ClientIVC {
279279

280280
bool prove_and_verify();
281281

282-
HonkProof construct_decider_proof();
282+
HonkProof construct_decider_proof(const std::shared_ptr<Transcript>& transcript);
283283

284284
VerificationKey get_vk() const;
285285

barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256k1.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void create_ecdsa_k1_verify_constraints(Builder& builder,
5151

5252
auto new_sig = ecdsa_convert_signature(builder, input.signature);
5353

54-
byte_array_ct message = ecdsa_array_of_bytes_to_byte_array(builder, input.hashed_message);
54+
byte_array_ct hashed_message = ecdsa_array_of_bytes_to_byte_array(builder, input.hashed_message);
5555
auto pub_key_x_byte_arr = ecdsa_array_of_bytes_to_byte_array(builder, input.pub_x_indices);
5656
auto pub_key_y_byte_arr = ecdsa_array_of_bytes_to_byte_array(builder, input.pub_y_indices);
5757

@@ -74,16 +74,15 @@ void create_ecdsa_k1_verify_constraints(Builder& builder,
7474
pub_key_y_byte_arr[i].assert_equal(field_ct::from_witness_index(&builder, input.pub_y_indices[i]));
7575
}
7676
for (size_t i = 0; i < input.hashed_message.size(); ++i) {
77-
message[i].assert_equal(field_ct::from_witness_index(&builder, input.hashed_message[i]));
77+
hashed_message[i].assert_equal(field_ct::from_witness_index(&builder, input.hashed_message[i]));
7878
}
7979

8080
bool_ct signature_result =
81-
stdlib::ecdsa_verify_signature_prehashed_message_noassert<Builder,
82-
secp256k1_ct,
83-
typename secp256k1_ct::fq_ct,
84-
typename secp256k1_ct::bigfr_ct,
85-
typename secp256k1_ct::g1_bigfr_ct>(
86-
message, public_key, sig);
81+
stdlib::ecdsa_verify_signature<Builder,
82+
secp256k1_ct,
83+
typename secp256k1_ct::fq_ct,
84+
typename secp256k1_ct::bigfr_ct,
85+
typename secp256k1_ct::g1_bigfr_ct>(hashed_message, public_key, sig);
8786
bool_ct signature_result_normalized = signature_result.normalize();
8887
builder.assert_equal(signature_result_normalized.witness_index, input.result);
8988
}

barretenberg/cpp/src/barretenberg/dsl/acir_format/ecdsa_secp256r1.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void create_ecdsa_r1_verify_constraints(Builder& builder,
4949

5050
auto new_sig = ecdsa_convert_signature(builder, input.signature);
5151

52-
byte_array_ct message = ecdsa_array_of_bytes_to_byte_array(builder, input.hashed_message);
52+
byte_array_ct hashed_message = ecdsa_array_of_bytes_to_byte_array(builder, input.hashed_message);
5353
auto pub_key_x_byte_arr = ecdsa_array_of_bytes_to_byte_array(builder, input.pub_x_indices);
5454
auto pub_key_y_byte_arr = ecdsa_array_of_bytes_to_byte_array(builder, input.pub_y_indices);
5555

@@ -72,16 +72,15 @@ void create_ecdsa_r1_verify_constraints(Builder& builder,
7272
pub_key_y_byte_arr[i].assert_equal(field_ct::from_witness_index(&builder, input.pub_y_indices[i]));
7373
}
7474
for (size_t i = 0; i < input.hashed_message.size(); ++i) {
75-
message[i].assert_equal(field_ct::from_witness_index(&builder, input.hashed_message[i]));
75+
hashed_message[i].assert_equal(field_ct::from_witness_index(&builder, input.hashed_message[i]));
7676
}
7777

7878
bool_ct signature_result =
79-
stdlib::ecdsa_verify_signature_prehashed_message_noassert<Builder,
80-
secp256r1_ct,
81-
typename secp256r1_ct::fq_ct,
82-
typename secp256r1_ct::bigfr_ct,
83-
typename secp256r1_ct::g1_bigfr_ct>(
84-
message, public_key, sig);
79+
stdlib::ecdsa_verify_signature<Builder,
80+
secp256r1_ct,
81+
typename secp256r1_ct::fq_ct,
82+
typename secp256r1_ct::bigfr_ct,
83+
typename secp256r1_ct::g1_bigfr_ct>(hashed_message, public_key, sig);
8584
bool_ct signature_result_normalized = signature_result.normalize();
8685
builder.assert_equal(signature_result_normalized.witness_index, input.result);
8786
}

barretenberg/cpp/src/barretenberg/eccvm/eccvm_trace_checker.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ bool ECCVMTraceChecker::check(Builder& builder,
3535
.beta = beta,
3636
.gamma = gamma,
3737
.public_input_delta = 0,
38-
.lookup_grand_product_delta = 0,
3938
.beta_sqr = beta_sqr,
4039
.beta_cube = beta_cube,
4140
.eccvm_set_permutation_delta = eccvm_set_permutation_delta,

barretenberg/cpp/src/barretenberg/flavor/grand_product_library.test.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ template <class FF> class GrandProductTests : public testing::Test {
5555
.beta = beta,
5656
.gamma = gamma,
5757
.public_input_delta = 1,
58-
.lookup_grand_product_delta = 1,
5958
};
6059

6160
compute_grand_product<Flavor, typename bb::UltraPermutationRelation<FF>>(prover_polynomials, params);

barretenberg/cpp/src/barretenberg/grumpkin_srs_gen/CMakeLists.txt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,16 @@ if (NOT(FUZZING))
1111
ecc
1212
crypto_sha256
1313
)
14-
endif()
14+
if(CHECK_CIRCUIT_STACKTRACES OR ENABLE_STACKTRACES)
15+
target_link_libraries(
16+
grumpkin_srs_gen
17+
PUBLIC
18+
Backward::Interface
19+
)
20+
target_link_options(
21+
grumpkin_srs_gen
22+
PRIVATE
23+
-ldw -lelf
24+
)
25+
endif()
26+
endif()

barretenberg/cpp/src/barretenberg/relations/relation_parameters.hpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,14 @@ template <typename T> struct RelationParameters {
2121
static constexpr int NUM_BINARY_LIMBS_IN_GOBLIN_TRANSLATOR = 4;
2222
static constexpr int NUM_NATIVE_LIMBS_IN_GOBLIN_TRANSLATOR = 1;
2323
static constexpr int NUM_CHALLENGE_POWERS_IN_GOBLIN_TRANSLATOR = 4;
24-
static constexpr int NUM_TO_FOLD = 7;
24+
static constexpr int NUM_TO_FOLD = 6;
2525

26-
T eta{ 0 }; // Lookup + Aux Memory
27-
T eta_two{ 0 }; // Lookup + Aux Memory
28-
T eta_three{ 0 }; // Lookup + Aux Memory
29-
T beta{ 0 }; // Permutation + Lookup
30-
T gamma{ 0 }; // Permutation + Lookup
31-
T public_input_delta{ 0 }; // Permutation
32-
T lookup_grand_product_delta{ 0 }; // Lookup
26+
T eta{ 0 }; // Lookup + Aux Memory
27+
T eta_two{ 0 }; // Lookup + Aux Memory
28+
T eta_three{ 0 }; // Lookup + Aux Memory
29+
T beta{ 0 }; // Permutation + Lookup
30+
T gamma{ 0 }; // Permutation + Lookup
31+
T public_input_delta{ 0 }; // Permutation
3332
T beta_sqr{ 0 };
3433
T beta_cube{ 0 };
3534
// eccvm_set_permutation_delta is used in the set membership gadget in eccvm/ecc_set_relation.hpp
@@ -48,12 +47,12 @@ template <typename T> struct RelationParameters {
4847

4948
RefArray<T, NUM_TO_FOLD> get_to_fold()
5049
{
51-
return RefArray{ eta, eta_two, eta_three, beta, gamma, public_input_delta, lookup_grand_product_delta };
50+
return RefArray{ eta, eta_two, eta_three, beta, gamma, public_input_delta };
5251
}
5352

5453
RefArray<const T, NUM_TO_FOLD> get_to_fold() const
5554
{
56-
return RefArray{ eta, eta_two, eta_three, beta, gamma, public_input_delta, lookup_grand_product_delta };
55+
return RefArray{ eta, eta_two, eta_three, beta, gamma, public_input_delta };
5756
}
5857

5958
static RelationParameters get_random()
@@ -67,7 +66,6 @@ template <typename T> struct RelationParameters {
6766
result.beta_cube = result.beta_sqr * result.beta;
6867
result.gamma = T::random_element();
6968
result.public_input_delta = T::random_element();
70-
result.lookup_grand_product_delta = T::random_element();
7169
result.eccvm_set_permutation_delta = result.gamma * (result.gamma + result.beta_sqr) *
7270
(result.gamma + result.beta_sqr + result.beta_sqr) *
7371
(result.gamma + result.beta_sqr + result.beta_sqr + result.beta_sqr);
@@ -92,6 +90,6 @@ template <typename T> struct RelationParameters {
9290
return result;
9391
}
9492

95-
MSGPACK_FIELDS(eta, eta_two, eta_three, beta, gamma, public_input_delta, lookup_grand_product_delta);
93+
MSGPACK_FIELDS(eta, eta_two, eta_three, beta, gamma, public_input_delta);
9694
};
9795
} // namespace bb

barretenberg/cpp/src/barretenberg/solidity_helpers/circuits/ecdsa_circuit.hpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,20 +75,22 @@ class EcdsaCircuit {
7575
stdlib::ecdsa_signature<Builder> sig{ typename curve::byte_array_ct(&builder, rr),
7676
typename curve::byte_array_ct(&builder, ss) };
7777

78+
stdlib::byte_array<Builder> hashed_message =
79+
static_cast<stdlib::byte_array<Builder>>(stdlib::SHA256<Builder>::hash(input_buffer));
80+
7881
// IN CIRCUIT: verify the signature
7982
typename curve::bool_ct signature_result = stdlib::ecdsa_verify_signature<Builder,
8083
curve,
8184
typename curve::fq_ct,
8285
typename curve::bigfr_ct,
8386
typename curve::g1_bigfr_ct>(
84-
// input_buffer, public_key, sig);
85-
input_buffer,
87+
// hashed_message, public_key, sig);
88+
hashed_message,
8689
public_key,
8790
sig);
8891

89-
// Assert the signature is true, we hash the message inside the verify sig stdlib call
90-
bool_ct is_true = bool_ct(true);
91-
signature_result.must_imply(is_true, "signature verification failed");
92+
// Assert the signature is true
93+
signature_result.assert_equal(bool_ct(true));
9294

9395
return builder;
9496
}

0 commit comments

Comments
 (0)