Skip to content

fix: Don't consider skipping#10598

Merged
iakovenkos merged 8 commits intomasterfrom
cg/consider-skipping
Feb 19, 2025
Merged

fix: Don't consider skipping#10598
iakovenkos merged 8 commits intomasterfrom
cg/consider-skipping

Conversation

@codygunton
Copy link
Contributor

@codygunton codygunton commented Dec 10, 2024

The relation accumulation method accumulate_relation_evaluations_without_skipping used by the verifier has been erroneously allowing the verifier to use the skip mechanism via /*consider_skipping=*/true.

Fixing this uncovered an issue with the EccOpQueueRelation skip condition which has been resolved.

@codygunton codygunton self-assigned this Dec 10, 2024
@ledwards2225 ledwards2225 self-assigned this Feb 12, 2025
// blinded rows
std::array<FF, multivariate_n> skipping_disabler = { 0, 0, 0, 0, 0, 1, 1, 1 };
full_polynomials.z_perm = bb::Polynomial<FF>(z_perm);
full_polynomials.lookup_inverses = bb::Polynomial<FF>(lookup_inverses);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the current skipping condition in ecc_op_queue_relation conflicts with the masking mechanism. for now, I un-masked the ecc op wire, but we'll have to find a way to make it more robust (when merge protocol is completed)

@ledwards2225 ledwards2225 self-requested a review February 18, 2025 18:10
@ledwards2225
Copy link
Contributor

@dbanks12 @fcarreiro As I understand it, this is a log standing bug originally identified by Facundo. Basically it was allowing the verifier to utilize skipping in relations, which is never valid. Resolving it initially led to a failure in some of our internal tests (fixes for this have gone in separately) but it looks like maybe it's triggering a real failure in the AVM?

FYI The failure we had was due to a skip condition in a particular relation that was virtually always true, thus the verifier was not identifying an invalid witness. Once we corrected the skip condition, the tests passed with skipping correctly turned OFF for the verifier.

Would you guys mind taking a look at the failures on this PR to evaluate?

@fcarreiro
Copy link
Contributor

@dbanks12 @fcarreiro As I understand it, this is a log standing bug originally identified by Facundo. Basically it was allowing the verifier to utilize skipping in relations, which is never valid. Resolving it initially led to a failure in some of our internal tests (fixes for this have gone in separately) but it looks like maybe it's triggering a real failure in the AVM?

FYI The failure we had was due to a skip condition in a particular relation that was virtually always true, thus the verifier was not identifying an invalid witness. Once we corrected the skip condition, the tests passed with skipping correctly turned OFF for the verifier.

Would you guys mind taking a look at the failures on this PR to evaluate?

I'll take a look tomorrow! It might be that one of our skippable conditions was not right, but was not failing verification due to the verifier skipping that :)

@fcarreiro
Copy link
Contributor

@dbanks12 @fcarreiro As I understand it, this is a log standing bug originally identified by Facundo. Basically it was allowing the verifier to utilize skipping in relations, which is never valid. Resolving it initially led to a failure in some of our internal tests (fixes for this have gone in separately) but it looks like maybe it's triggering a real failure in the AVM?
FYI The failure we had was due to a skip condition in a particular relation that was virtually always true, thus the verifier was not identifying an invalid witness. Once we corrected the skip condition, the tests passed with skipping correctly turned OFF for the verifier.
Would you guys mind taking a look at the failures on this PR to evaluate?

I'll take a look tomorrow! It might be that one of our skippable conditions was not right, but was not failing verification due to the verifier skipping that :)

Should be fixed once #12099 is merged. I tried it on top of this branch.

fcarreiro added a commit that referenced this pull request Feb 19, 2025
There used to be a long standing BB bug where the verifier was (wrongly)
skipping. The branch with the fix
(#10598) fails with
an AVM2 test. I tracked it down to the skippable condition in sha256.
I'm disabling it and also updating the lookups skippable to a simpler
condition that Kesha had suggested.
@iakovenkos iakovenkos merged commit 6fd8b49 into master Feb 19, 2025
12 checks passed
@iakovenkos iakovenkos deleted the cg/consider-skipping branch February 19, 2025 15:07
TomAFrench added a commit that referenced this pull request Feb 19, 2025
* master: (264 commits)
  chore(p2p): log if rate limit was peer or global (#12116)
  chore: @aztec/stdlib pt1 -> cleanup circuits js (#12039)
  chore(tests): shorten block times in e2e p2p tests (#12073)
  fix: darwin properly erroring (#12113)
  chore: add missing import (#12111)
  fix: yarn remake-constants (#12109)
  chore: fix error in oracle definition (#12090)
  fix: Don't consider skipping (#10598)
  fix: Use gas billed in block header building (#12101)
  fix(avm): disable wrong sha skippable (#12099)
  chore: Provide defaults for bb and acvm in release image (#12105)
  fix(avm): break TS dependency cycle (#12103)
  feat: IVC gates command in WASM (#11792)
  fix: SharedMutable compilation warnings (#12098)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  chore: replace relative paths to noir-protocol-circuits
  git subrepo push --branch=master barretenberg
  feat: Sync from noir (#12064)
  chore: Fix unbound CI variable on release image bootstrap (#12095)
  ...
TomAFrench added a commit that referenced this pull request Feb 19, 2025
* master: (264 commits)
  chore(p2p): log if rate limit was peer or global (#12116)
  chore: @aztec/stdlib pt1 -> cleanup circuits js (#12039)
  chore(tests): shorten block times in e2e p2p tests (#12073)
  fix: darwin properly erroring (#12113)
  chore: add missing import (#12111)
  fix: yarn remake-constants (#12109)
  chore: fix error in oracle definition (#12090)
  fix: Don't consider skipping (#10598)
  fix: Use gas billed in block header building (#12101)
  fix(avm): disable wrong sha skippable (#12099)
  chore: Provide defaults for bb and acvm in release image (#12105)
  fix(avm): break TS dependency cycle (#12103)
  feat: IVC gates command in WASM (#11792)
  fix: SharedMutable compilation warnings (#12098)
  git subrepo push --branch=master noir-projects/aztec-nr
  git_subrepo.sh: Fix parent in .gitrepo file. [skip ci]
  chore: replace relative paths to noir-protocol-circuits
  git subrepo push --branch=master barretenberg
  feat: Sync from noir (#12064)
  chore: Fix unbound CI variable on release image bootstrap (#12095)
  ...
AztecBot pushed a commit to AztecProtocol/barretenberg that referenced this pull request Feb 20, 2025
There used to be a long standing BB bug where the verifier was (wrongly)
skipping. The branch with the fix
(AztecProtocol/aztec-packages#10598) fails with
an AVM2 test. I tracked it down to the skippable condition in sha256.
I'm disabling it and also updating the lookups skippable to a simpler
condition that Kesha had suggested.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants