diff --git a/yarn-project/end-to-end/bootstrap.sh b/yarn-project/end-to-end/bootstrap.sh index e127f51bbf27..0ec8781efed3 100755 --- a/yarn-project/end-to-end/bootstrap.sh +++ b/yarn-project/end-to-end/bootstrap.sh @@ -93,6 +93,7 @@ function test_cmds { echo "$prefix simple e2e_p2p/slashing" echo "$prefix simple e2e_p2p/upgrade_governance_proposer" + echo "$prefix simple e2e_pending_note_hashes_contract" echo "$prefix simple e2e_private_voting_contract" echo "$prefix simple e2e_pruned_blocks" echo "$prefix simple e2e_public_testnet_transfer" diff --git a/yarn-project/pxe/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts b/yarn-project/pxe/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts index 0d44b16408f4..342c7dbcc948 100644 --- a/yarn-project/pxe/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts +++ b/yarn-project/pxe/src/kernel_prover/hints/build_private_kernel_reset_private_inputs.ts @@ -4,6 +4,7 @@ import { MAX_NOTE_HASH_READ_REQUESTS_PER_TX, MAX_NULLIFIERS_PER_TX, MAX_NULLIFIER_READ_REQUESTS_PER_TX, + MAX_PRIVATE_LOGS_PER_TX, NULLIFIER_TREE_HEIGHT, VK_TREE_HEIGHT, } from '@aztec/constants'; @@ -367,7 +368,12 @@ export class PrivateKernelResetPrivateInputsBuilder { countAccumulatedItems(this.previousKernel.end.nullifiers) + countAccumulatedItems(this.nextIteration?.nullifiers ?? []); const nullifierWillOverflow = nextAccumNullifiers > MAX_NULLIFIERS_PER_TX; - if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow) { + const nextAccumLogs = + countAccumulatedItems(this.previousKernel.end.privateLogs) + + countAccumulatedItems(this.nextIteration?.privateLogs ?? []); + const logsWillOverflow = nextAccumLogs > MAX_PRIVATE_LOGS_PER_TX; + + if (this.nextIteration && !noteHashWillOverflow && !nullifierWillOverflow && !logsWillOverflow) { return false; } @@ -405,9 +411,14 @@ export class PrivateKernelResetPrivateInputsBuilder { const forceResetAll = true; const canClearReadRequests = (noteHashWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)) || - (nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll)); + (nullifierWillOverflow && this.needsResetNullifierReadRequests(forceResetAll)) || + (logsWillOverflow && this.needsResetNoteHashReadRequests(forceResetAll)); if (!canClearReadRequests) { - const overflownData = noteHashWillOverflow ? 'note hashes' : 'nullifiers'; + const overflownData = noteHashWillOverflow + ? 'note hashes' + : nullifierWillOverflow + ? 'nullifiers' + : 'private logs'; throw new Error(`Number of ${overflownData} exceeds the limit.`); } // Clearing the read requests might not be enough to squash the overflown data.