Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Public inputs are appended to the proof #1315

Open
signorecello opened this issue Jul 31, 2023 · 4 comments
Open

Public inputs are appended to the proof #1315

signorecello opened this issue Jul 31, 2023 · 4 comments
Labels
C-bb.js Component: bb.js - wrapping bberg in js

Comments

@signorecello
Copy link
Contributor

Noticed this inconsistency, as the Noir smart contract expects proofs to be separate from public inputs:

function verify(bytes calldata _proof, bytes32[] calldata _publicInputs) external view returns (bool)

While bb.js expects them to be appended to the proof. This requires devs to slice them out before making calls to the smart contract:

await api.acirVerifyProof(acirComposer, proof, false); // we can just pass the proof here because it already has the public inputs

const publicInputs = proof.slice(0, 32); 
const slicedProof = proof.slice(32);
await contract.verify(slicedProof, [publicInputs]); // but we have to slice them before calling the contract

Would be a nice devex improvement to make bb.js output (and consume) proof and public inputs separately, to be consistent with the verifier contract

@Savio-Sou
Copy link
Member

cc @rahul-kothari not sure if this is low-hanging, but certainly a neat DevEx fruit for Noir devs making use of bb.js.

@jonybur
Copy link
Contributor

jonybur commented Sep 21, 2023

Can we do it so that the verify function is able to differentiate between the publicInputs and proof by receiving only one argument?

@rahul-kothari
Copy link
Contributor

rahul-kothari commented Sep 25, 2023

yea this seems reasonsable! If it isn't too much work and doesn't break anything in bb.js, let's do it!

Apologies for the late response: was in sandbox mode for the last week

codygunton pushed a commit that referenced this issue Jan 23, 2024
* Audit preperation (#1305)

* compiler warnings

* add solhint + fix small linter issues

* remove skipped tests

* update rollup address

* add underscores on arguments in IVerifier

* JB/Move global error to toast group (#1251)

* Move global error message inside toast group

* Mini refactor

* Mini refactor

* Add deferrals

* Blockchain test jest -> mocha update (#1314)

* run jest-to-mocha script

* Manually fix the last test + add coverage + formatting

* extend mocha timeout + bump optimizer runs

* decrease optimizer runs to deploy old rollup processor in testing

* remove coverage package, install on demand

* make solidity-coverage import a comment in hardhat config

* JB/Fix settlement times (#1315)

Fix batched time, fix button regression

* JB/Allow for debug to be exportable (#1313)

* Allow for debug to be exportable

* Remove exportable debug

* Rollback

* Refactor

* Tweak export logs

* Upgrade to latest bridge clients (#1319)

- Align with interface on latest bridge-clients
- Correct stETH address
- Calc element ROI via getTermAPR
- Calc stETH via getUnderlyingAsset

* Explain when to squash vs merge (#1302)

* Zw/update aztec connect specs (#1048)

* updated account circuit

* updated account circuit formatting

* updated schnorr spec

* updated intro

* fix typo

* updates in line with PR comments and rebase

Co-authored-by: Josh <[email protected]>
Co-authored-by: iAmMichaelConnor <[email protected]>

* Implemented rate limiting of deposits and address blacklist (#1323)

* Implemented rate limiting of deposits and address blacklist

* Cleanup

* Additionally check num deposits in tx receiver (#1326)

* Additionally check num deposits in tx receiver

* Sanity check input

* Additional tests (#1327)

* JB/Connect yearn bridge (#1334)

* Add yearn recipe

* Connect yearn bridge

* Fix toast z-index

* Fix price estimation for yearn bridge

* Take out console log

* Set up yvDAI bridge config

* Add styling for yearn (wip)

* Add price fetcher for yvDAI and yvETH

* Fix icon

* Fix exit modal

* Fixes and improvements

* Add collapse button to Toast component (#1322)

* don't expose blacklist (#1352)

* don't expose blacklist

* don't use delete keyword

* fix status endpoint types

* format

* fix server

* fix server

* Expose blacklist as undefined from public api.

Co-authored-by: Leila Wang <[email protected]>

* Jcf/hotfix yearn exit (#1356)

* - allow exiting via a different bridgeAddressId
- fix incorrect batch info shown for exiting
- more explicit name: useDefaultEnterBridgeCallData
- fix wstETH price fetch regression

* upgrade bridge clients

* explicitly upgrade ethers

* Jcf/element hotfixes (#1377)

- safe number to bigint conversion
- fix default element term apr when entering
- infer async from recipe, not interaction result

Co-authored-by: joss-aztec <[email protected]>
Co-authored-by: Lasse Herskind <[email protected]>
Co-authored-by: Jonathan Bursztyn <[email protected]>
Co-authored-by: Zachary James Williamson <[email protected]>
Co-authored-by: Josh <[email protected]>
Co-authored-by: iAmMichaelConnor <[email protected]>
Co-authored-by: Joe Andrews <[email protected]>
Co-authored-by: Leila Wang <[email protected]>
@Savio-Sou Savio-Sou added the C-bb.js Component: bb.js - wrapping bberg in js label Feb 13, 2024
@Savio-Sou
Copy link
Member

Savio-Sou commented Feb 13, 2024

Update: Following the launch of NoirJS, publicInputs and proof are now split at the Noir level and Noir devs are no longer required to interact with bb.js directly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bb.js Component: bb.js - wrapping bberg in js
Projects
Status: Todo
Development

No branches or pull requests

4 participants