Skip to content

Title: bb 0.87.4-starknet.1 drops multiple public inputs when using --output_format bytes #18460

@CulperCypher

Description

@CulperCypher

I am running into an issue with the Starknet build of Barretenberg where public inputs are not being written out as expected, and the verification key (VK) does not reflect the correct number of public inputs.

What I’m doing:

Noir circuit (Noir 1.0.0-beta.5) with 10 pub parameters.
bb prove --scheme ultra_honk --oracle_hash starknet --output_format bytes -b target/private_unlocks.json -w target/witness.gz -o target/proof/
bb write_vk --scheme ultra_honk --oracle_hash starknet -b target/private_unlocks.json -o target/proof/
garaga calldata --system ultra_starknet_honk ...
Expected:

target/proof/public_inputs is 320 bytes (10 × 32).
VK bytes 16–23 (public_inputs_size) = 26 (10 circuit inputs + 16 pairing).
Garaga calldata succeeds.
What is happening:

target/proof/public_inputs is empty (0 bytes).
VK bytes 16–23 = 00 00 00 00 00 00 00 10 → public_inputs_size = 16.
Garaga crashes: AssertionError len(public_inputs) == n_public_inputs == vk.public_inputs_size - 16.
If I patch the VK to 26, pairing check fails because proof/VK mismatch.
Environment:

bb --version: 0.87.4-starknet.1
garaga: 0.18.1
noir: 1.0.0-beta.5
Using WSL
Request: Please fix the Starknet build so that bb prove --oracle_hash starknet --output_format bytes writes all circuit public inputs and sets public_inputs_size = circuit_inputs + 16.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions