Skip to content

Commit 131d3ef

Browse files
feat: merge-train/barretenberg (#19887)
BEGIN_COMMIT_OVERRIDE feat: support JSON input files for bb verify command (#19800) fix: update bootstrap.sh to use new JSON field names chore: Update `index.js` so that `HAS_ZK` and `PUBLIC_INPUTS` variables must always be set in tests (#19884) chore: pippenger int audit (#19302) chore: deduplicate batch affine addition trick (#19788) chore: transcript+codec+poseidon2 fixes (#19419) chore!: explicitly constrain inputs and intermediate witnesses (#19826) fix: exclude nlohmann/json from WASM builds in json_output.hpp chore: translator circuit builder and flavor audit (#19798) Revert "fix: exclude nlohmann/json from WASM builds in json_output.hpp" Revert "feat: support JSON input files for bb verify command (#19800)" Revert "fix: update bootstrap.sh to use new JSON field names" END_COMMIT_OVERRIDE
2 parents a4fc873 + 52ec5f3 commit 131d3ef

File tree

61 files changed

+3294
-1980
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+3294
-1980
lines changed

barretenberg/acir_tests/sol-test/src/index.js

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ const GEMINI_CHALLENGE_IN_SUBGROUP = "0x835eb8f7";
2727
// 5. Run the test against the deployed contract
2828
// 6. Kill the anvil instance
2929

30-
const getEnvVarCanBeUndefined = (envvar) => {
31-
const varVal = process.env[envvar];
32-
if (!varVal) {
33-
return false;
34-
}
35-
return varVal;
36-
};
37-
3830
const getEnvVar = (envvar) => {
3931
const varVal = process.env[envvar];
4032
if (!varVal) {
@@ -55,7 +47,7 @@ const [test, verifier] = await Promise.all([
5547
fsPromises.readFile(verifierPath, encoding),
5648
]);
5749

58-
const hasZK = getEnvVarCanBeUndefined("HAS_ZK");
50+
const hasZK = getEnvVar("HAS_ZK");
5951

6052
export const compilationInput = {
6153
language: "Solidity",
@@ -230,7 +222,6 @@ const killAnvil = () => {
230222
console.log(testName, " complete");
231223
};
232224

233-
// TODO(https://github.com/AztecProtocol/barretenberg/issues/1316): Clean this code up. We are trying to use this logic for three different flows: bb plonk, bb honk, and bbjs honk, and all three have different setups.
234225
try {
235226
const proofPath = getEnvVar("PROOF");
236227

@@ -239,7 +230,7 @@ try {
239230
const proof = readFileSync(proofPath);
240231
proofStr = proof.toString("hex");
241232

242-
let publicInputsPath = getEnvVarCanBeUndefined("PUBLIC_INPUTS");
233+
let publicInputsPath = getEnvVar("PUBLIC_INPUTS");
243234
var publicInputs = [];
244235
let numExtraPublicInputs = 0;
245236
let extraPublicInputs = [];
@@ -251,15 +242,11 @@ try {
251242
[numExtraPublicInputs, extraPublicInputs] = readPublicInputs(proofAsFields);
252243
}
253244

254-
// Read public inputs from binary file if available
255-
if (publicInputsPath) {
256-
const publicInputsBinary = readFileSync(publicInputsPath);
257-
const innerPublicInputs = binaryToFields(publicInputsBinary);
258-
publicInputs = innerPublicInputs.concat(extraPublicInputs);
259-
} else {
260-
// for plonk, the extraPublicInputs are all of the public inputs
261-
publicInputs = extraPublicInputs;
262-
}
245+
// Read public inputs from binary file
246+
const publicInputsBinary = readFileSync(publicInputsPath);
247+
const innerPublicInputs = binaryToFields(publicInputsBinary);
248+
publicInputs = innerPublicInputs.concat(extraPublicInputs);
249+
263250
proofStr = proofStr.substring(64 * numExtraPublicInputs);
264251
proofStr = "0x" + proofStr;
265252

barretenberg/cpp/CLAUDE.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@ succint aztec-packages cheat sheet.
22

33
THE PROJECT ROOT IS AT TWO LEVELS ABOVE THIS FOLDER. Typically, the repository is at ~/aztec-packages. all advice is from the root.
44

5+
# Git workflow for barretenberg
6+
7+
**IMPORTANT**: When comparing branches or looking at diffs for barretenberg work, use `merge-train/barretenberg` as the base branch, NOT `master`. The master branch is often outdated for barretenberg development.
8+
9+
Examples:
10+
- `git diff merge-train/barretenberg...HEAD` (not `git diff master...HEAD`)
11+
- `git log merge-train/barretenberg..HEAD` (not `git log master..HEAD`)
12+
513
Run ./bootstrap.sh at the top-level to be sure the repo fully builds.
614
Bootstrap scripts can be called with relative paths e.g. ../barretenberg/bootstrap.sh
715

@@ -95,3 +103,24 @@ BB_VERBOSE=1 yarn-project/scripts/run_test.sh ivc-integration/src/rollup_ivc_int
95103
````
96104
97105
When making barretenberg changes, ensure these tests still pass.
106+
107+
## Benchmarking:
108+
109+
**IMPORTANT**: In the barretenberg context, "bench" or "benchmark" almost always means running `benchmark_remote.sh` for the given target on a remote benchmarking machine.
110+
111+
To run benchmarks for a specific target:
112+
```bash
113+
cd barretenberg/cpp
114+
./scripts/benchmark_remote.sh <target_name>
115+
```
116+
117+
Common benchmark targets:
118+
- `pippenger_bench` - MSM/Pippenger benchmarks
119+
- `ultra_honk_bench` - Ultra Honk prover benchmarks
120+
- `commitment_schemes_bench` - Commitment scheme benchmarks
121+
122+
The remote benchmark script:
123+
- Runs on a dedicated benchmarking machine for consistent results
124+
- Automatically builds the target if needed
125+
- Returns performance metrics and timing data
126+
- Should be used instead of local benchmarks for performance validation

barretenberg/cpp/scripts/compare_branch_vs_baseline_remote.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ PRESET=${3:-clang20}
1616
BUILD_DIR=${4:-build}
1717
HARDWARE_CONCURRENCY=${HARDWARE_CONCURRENCY:-16}
1818

19-
BASELINE_BRANCH="master"
19+
BASELINE_BRANCH="${BASELINE_BRANCH:-merge-train/barretenberg}"
2020
BENCH_TOOLS_DIR="$BUILD_DIR/_deps/benchmark-src/tools"
2121

2222
if [ ! -z "$(git status --untracked-files=no --porcelain)" ]; then

barretenberg/cpp/scripts/test_chonk_standalone_vks_havent_changed.sh

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

1919
script_path="$(cd "$(dirname "${BASH_SOURCE[0]}")/scripts" && pwd)/$(basename "${BASH_SOURCE[0]}")"

barretenberg/cpp/src/barretenberg/commitment_schemes/ipa/ipa.test.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ TEST_F(IPATest, ShpleminiIPAWithoutShift)
238238
mle_opening_point,
239239
ck);
240240

241-
auto prover_transcript = NativeTranscript::prover_init_empty();
241+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
242242

243243
// Run the full prover PCS protocol:
244244
// Compute:
@@ -250,7 +250,7 @@ TEST_F(IPATest, ShpleminiIPAWithoutShift)
250250
const auto opening_claim = ShplonkProver::prove(ck, prover_opening_claims, prover_transcript);
251251
PCS::compute_opening_proof(ck, opening_claim, prover_transcript);
252252

253-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
253+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
254254

255255
std::array<Fr, log_n> padding_indicator_array;
256256
std::ranges::fill(padding_indicator_array, Fr{ 1 });
@@ -277,7 +277,7 @@ TEST_F(IPATest, ShpleminiIPAWithShift)
277277
/*num_to_be_shifted*/ 1,
278278
mle_opening_point,
279279
ck);
280-
auto prover_transcript = NativeTranscript::prover_init_empty();
280+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
281281

282282
// Run the full prover PCS protocol:
283283

@@ -289,7 +289,7 @@ TEST_F(IPATest, ShpleminiIPAWithShift)
289289
const auto opening_claim = ShplonkProver::prove(ck, prover_opening_claims, prover_transcript);
290290
PCS::compute_opening_proof(ck, opening_claim, prover_transcript);
291291

292-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
292+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
293293

294294
std::array<Fr, log_n> padding_indicator_array;
295295
std::ranges::fill(padding_indicator_array, Fr{ 1 });
@@ -318,7 +318,7 @@ TEST_F(IPATest, ShpleminiIPAShiftsRemoval)
318318
mle_opening_point,
319319
ck);
320320

321-
auto prover_transcript = NativeTranscript::prover_init_empty();
321+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
322322

323323
// Run the full prover PCS protocol:
324324

@@ -344,7 +344,7 @@ TEST_F(IPATest, ShpleminiIPAShiftsRemoval)
344344
// since commitments to poly2, poly3 and their shifts are the same group elements, we simply combine the scalar
345345
// multipliers of commitment2 and commitment3 in one place and remove the entries of the commitments and scalars
346346
// vectors corresponding to the "shifted" commitment
347-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
347+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
348348

349349
std::array<Fr, log_n> padding_indicator_array;
350350
std::ranges::fill(padding_indicator_array, Fr{ 1 });

barretenberg/cpp/src/barretenberg/commitment_schemes/kzg/kzg.test.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ class KZGTest : public CommitmentTest<Curve> {
4141

4242
auto opening_claim = OpeningClaim<Curve>{ opening_pair, commitment };
4343

44-
auto prover_transcript = NativeTranscript::prover_init_empty();
44+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
4545

4646
PCS::compute_opening_proof(ck, { witness, opening_pair }, prover_transcript);
4747

48-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
48+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
4949
const auto pairing_points = PCS::reduce_verify(opening_claim, verifier_transcript);
5050

5151
EXPECT_EQ(vk.pairing_check(pairing_points[0], pairing_points[1]), true);
@@ -83,12 +83,12 @@ TEST_F(KZGTest, WrongEvaluationFails)
8383
const Fr wrong_evaluation = evaluation + Fr::random_element();
8484
// Prove with the wrong evaluation
8585
Commitment commitment = ck.commit(witness);
86-
auto prover_transcript = NativeTranscript::prover_init_empty();
86+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
8787
PCS::compute_opening_proof(ck, { witness, { challenge, wrong_evaluation } }, prover_transcript);
8888

8989
auto opening_claim = OpeningClaim<Curve>{ { challenge, wrong_evaluation }, commitment };
9090
// Run the verifier
91-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
91+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
9292
auto pairing_point = PCS::reduce_verify(opening_claim, verifier_transcript);
9393
// Make sure that the pairing check fails
9494
EXPECT_EQ(vk.pairing_check(pairing_point[0], pairing_point[1]), false);
@@ -162,11 +162,11 @@ TEST_F(KZGTest, SingleInLagrangeBasis)
162162
auto opening_pair = OpeningPair<Curve>{ challenge, evaluation };
163163
auto opening_claim = OpeningClaim<Curve>{ opening_pair, commitment };
164164

165-
auto prover_transcript = NativeTranscript::prover_init_empty();
165+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
166166

167167
PCS::compute_opening_proof(ck, { witness_polynomial, opening_pair }, prover_transcript);
168168

169-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
169+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
170170
auto pairing_points = PCS::reduce_verify(opening_claim, verifier_transcript);
171171

172172
EXPECT_EQ(vk.pairing_check(pairing_points[0], pairing_points[1]), true);
@@ -183,7 +183,7 @@ TEST_F(KZGTest, ShpleminiKzgWithShift)
183183
mle_opening_point,
184184
ck);
185185

186-
auto prover_transcript = NativeTranscript::prover_init_empty();
186+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
187187

188188
// Run the full prover PCS protocol:
189189

@@ -204,7 +204,7 @@ TEST_F(KZGTest, ShpleminiKzgWithShift)
204204

205205
// Run the full verifier PCS protocol with genuine opening claims (genuine commitment, genuine evaluation)
206206

207-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
207+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
208208

209209
// Gemini verifier output:
210210
// - claim: d+1 commitments to Fold_{r}^(0), Fold_{-r}^(0), Fold^(l), d+1 evaluations a_0_pos, a_l, l = 0:d-1
@@ -238,7 +238,7 @@ TEST_F(KZGTest, ShpleminiKzgWithShiftAndInterleaving)
238238
/*num_interleaved*/ 3,
239239
/*num_to_be_interleaved*/ 2);
240240

241-
auto prover_transcript = NativeTranscript::prover_init_empty();
241+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
242242

243243
// Run the full prover PCS protocol:
244244

@@ -259,7 +259,7 @@ TEST_F(KZGTest, ShpleminiKzgWithShiftAndInterleaving)
259259

260260
// Run the full verifier PCS protocol with genuine opening claims (genuine commitment, genuine evaluation)
261261

262-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
262+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
263263

264264
// Gemini verifier output:
265265
// - claim: d+1 commitments to Fold_{r}^(0), Fold_{-r}^(0), Fold^(l), d+1 evaluations a_0_pos, a_l, l = 0:d-1
@@ -294,7 +294,7 @@ TEST_F(KZGTest, ShpleminiKzgShiftsRemoval)
294294
mle_opening_point,
295295
ck);
296296

297-
auto prover_transcript = NativeTranscript::prover_init_empty();
297+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
298298

299299
// Run the full prover PCS protocol:
300300

@@ -315,7 +315,7 @@ TEST_F(KZGTest, ShpleminiKzgShiftsRemoval)
315315

316316
// Run the full verifier PCS protocol with genuine opening claims (genuine commitment, genuine evaluation)
317317

318-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
318+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
319319
// the index of the first commitment to a polynomial to be shifted in the union of unshifted_commitments and
320320
// shifted_commitments. in our case, it is poly2
321321
const size_t to_be_shifted_commitments_start = 2;

barretenberg/cpp/src/barretenberg/commitment_schemes/shplonk/shplemini.test.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ TYPED_TEST(ShpleminiTest, ShpleminiZKNoSumcheckOpenings)
277277
using CK = typename TypeParam::CommitmentKey;
278278

279279
// Initialize transcript and commitment key
280-
auto prover_transcript = TypeParam::Transcript::prover_init_empty();
280+
auto prover_transcript = TypeParam::Transcript::test_prover_init_empty();
281281

282282
// SmallSubgroupIPAProver requires at least CURVE::SUBGROUP_SIZE + 3 elements in the ck.
283283
static constexpr size_t log_subgroup_size = static_cast<size_t>(numeric::get_msb(Curve::SUBGROUP_SIZE));
@@ -322,7 +322,7 @@ TYPED_TEST(ShpleminiTest, ShpleminiZKNoSumcheckOpenings)
322322
}
323323

324324
// Initialize verifier's transcript
325-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
325+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
326326

327327
// Start populating Verifier's array of Libra commitments
328328
std::array<Commitment, NUM_LIBRA_COMMITMENTS> libra_commitments = {};
@@ -391,7 +391,7 @@ TYPED_TEST(ShpleminiTest, ShpleminiZKWithSumcheckOpenings)
391391
// Generate Sumcheck challenge
392392
std::vector<Fr> challenge = this->random_evaluation_point(this->log_n);
393393

394-
auto prover_transcript = TypeParam::Transcript::prover_init_empty();
394+
auto prover_transcript = TypeParam::Transcript::test_prover_init_empty();
395395

396396
// Generate masking polynomials for Sumcheck Round Univariates
397397
ZKSumcheckData<TypeParam> zk_sumcheck_data(this->log_n, prover_transcript, ck);
@@ -430,7 +430,7 @@ TYPED_TEST(ShpleminiTest, ShpleminiZKWithSumcheckOpenings)
430430
}
431431

432432
// Initialize verifier's transcript
433-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
433+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
434434

435435
std::array<Commitment, NUM_LIBRA_COMMITMENTS> libra_commitments = {};
436436
libra_commitments[0] =
@@ -517,7 +517,7 @@ TYPED_TEST(ShpleminiTest, HighDegreeAttackAccept)
517517
MockClaimGenerator<Curve> mock_claims(
518518
this->n, std::vector{ std::move(poly) }, std::vector<Fr>{ claimed_multilinear_eval }, ck);
519519

520-
auto prover_transcript = NativeTranscript::prover_init_empty();
520+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
521521

522522
// Run Shplemini prover
523523
const auto opening_claim =
@@ -531,7 +531,7 @@ TYPED_TEST(ShpleminiTest, HighDegreeAttackAccept)
531531
}
532532

533533
// Verifier side
534-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
534+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
535535

536536
std::vector<Fr> padding_indicator_array(small_log_n, Fr{ 1 });
537537

@@ -584,7 +584,7 @@ TYPED_TEST(ShpleminiTest, HighDegreeAttackReject)
584584
MockClaimGenerator<Curve> mock_claims(
585585
big_n, std::vector{ std::move(poly) }, std::vector<Fr>{ claimed_multilinear_eval }, ck);
586586

587-
auto prover_transcript = NativeTranscript::prover_init_empty();
587+
auto prover_transcript = NativeTranscript::test_prover_init_empty();
588588

589589
// Run Shplemini prover
590590
const auto opening_claim = ShpleminiProver::prove(big_n, mock_claims.polynomial_batcher, u, ck, prover_transcript);
@@ -597,7 +597,7 @@ TYPED_TEST(ShpleminiTest, HighDegreeAttackReject)
597597
}
598598

599599
// Verifier side
600-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
600+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
601601

602602
std::vector<Fr> padding_indicator_array(small_log_n, Fr{ 1 });
603603

@@ -636,7 +636,7 @@ TYPED_TEST(ShpleminiTest, LibraConsistencyCheckFailsOnCorruptedEvaluation)
636636
using CK = typename TypeParam::CommitmentKey;
637637

638638
// Initialize transcript and commitment key
639-
auto prover_transcript = TypeParam::Transcript::prover_init_empty();
639+
auto prover_transcript = TypeParam::Transcript::test_prover_init_empty();
640640

641641
// SmallSubgroupIPAProver requires at least CURVE::SUBGROUP_SIZE + 3 elements in the ck.
642642
static constexpr size_t log_subgroup_size = static_cast<size_t>(numeric::get_msb(Curve::SUBGROUP_SIZE));
@@ -684,7 +684,7 @@ TYPED_TEST(ShpleminiTest, LibraConsistencyCheckFailsOnCorruptedEvaluation)
684684
}
685685

686686
// Initialize verifier's transcript
687-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
687+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
688688

689689
// Start populating Verifier's array of Libra commitments
690690
std::array<Commitment, NUM_LIBRA_COMMITMENTS> libra_commitments = {};
@@ -741,7 +741,7 @@ void run_libra_tampering_test(ShpleminiTest<TypeParam>* test,
741741
using Commitment = typename Curve::AffineElement;
742742
using CK = typename TypeParam::CommitmentKey;
743743

744-
auto prover_transcript = TypeParam::Transcript::prover_init_empty();
744+
auto prover_transcript = TypeParam::Transcript::test_prover_init_empty();
745745

746746
static constexpr size_t log_subgroup_size = static_cast<size_t>(numeric::get_msb(Curve::SUBGROUP_SIZE));
747747
CK ck = create_commitment_key<CK>(std::max<size_t>(test->n, 1ULL << (log_subgroup_size + 1)));
@@ -776,7 +776,7 @@ void run_libra_tampering_test(ShpleminiTest<TypeParam>* test,
776776
KZG<Curve>::compute_opening_proof(test->ck(), opening_claim, prover_transcript);
777777
}
778778

779-
auto verifier_transcript = NativeTranscript::verifier_init_empty(prover_transcript);
779+
auto verifier_transcript = NativeTranscript::test_verifier_init_empty(prover_transcript);
780780

781781
std::array<Commitment, NUM_LIBRA_COMMITMENTS> libra_commitments = {};
782782
libra_commitments[0] =

0 commit comments

Comments
 (0)