Skip to content

fix: omit zero-fee private tx fee writes#24710

Draft
AztecBot wants to merge 1 commit into
nextfrom
cb/kernels-audit-remediation-733-zero-fee-private-tx
Draft

fix: omit zero-fee private tx fee writes#24710
AztecBot wants to merge 1 commit into
nextfrom
cb/kernels-audit-remediation-733-zero-fee-private-tx

Conversation

@AztecBot

Copy link
Copy Markdown
Collaborator

Summary

Zero-fee private txs were still emitting a FeeJuice public-data write and forcing the private tx base rollup to prove membership of an existing fee-payer balance leaf. That made valid zero-fee private txs from fee payers without an initialized FeeJuice slot unprovable. This change treats the fee-payer write as absent when the computed transaction fee is zero.

Fix

  • Emit zero private tx public-data writes when transaction_fee == 0.
  • Skip the fee-payer public-data-tree update in that case, while keeping the existing membership update for positive fees.
  • Add regressions for absent zero-balance fee leaves and the zero public-data-write blob encoding.

Testing

  • ../../noir/noir-repo/target/debug/nargo test --package rollup_lib zero_fee_absent_fee_payer_balance_leaf_succeeds (failed before the fix with Membership check failed: public data leaf preimage does not exist in tree, passes after)
  • ../../noir/noir-repo/target/debug/nargo test --package rollup_lib tx_base::tests::private_tx_base
  • ../../noir/noir-repo/target/debug/nargo test --package rollup_lib zero_fee_omits_fee_payer_public_data_write
  • git diff --check

Issues

  • Closes AztecProtocol/aztec-claude#733 — zero-fee private txs require an existing FeeJuice public-data leaf.

Created by claudebox · group: kernels-audit-remediation

@AztecBot AztecBot added ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR. labels Jul 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant