-
Notifications
You must be signed in to change notification settings - Fork 233
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
fix: enforce parity of sequencer tx validation and node tx validation #7951
fix: enforce parity of sequencer tx validation and node tx validation #7951
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Proof generationEach column represents the number of threads used in proof generation.
L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 8 txs.
Circuits statsStats on running time and I/O sizes collected for every kernel circuit run across all benchmarks.
Stats on running time collected for app circuits
AVM SimulationTime to simulate various public functions in the AVM.
Public DB AccessTime to access various public DBs.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contract classes are registered in the tx.
Transaction size based on fee payment method | Metric | | |
0f933e1
to
56b7ddc
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we add a test that checks the node is properly rejecting these?
56b7ddc
to
ae58744
Compare
ae58744
to
ffb3fe1
Compare
ffb3fe1
to
30d2493
Compare
6d1ef00
to
9f14a97
Compare
fix: fixing private voting by correctly throwing an error if simulation fails (#7840) This PR makes a simulation of a tx fail, if the tx cannot be included in a block and added to the state. e.g. If a simulation produces duplicate nullifiers, or nullifiers that already exist in a state tree, the results of this simulation should not be returned, but should warn users that the transaction simulated is impossible to actually be added to a block due to being an invalid transaction. The method for achieving the above is that a new API on the node was created, used for validating the correctness of the metadata and side-effects produced by a transaction. A transaction is deemed valid if and only if the transaction can be added to a block that can be used to advance state. Note: this update does not make this validation necessary, and defaults to offline simulation. Offline simulation is previous non-validated behavior, and is potentially useful if we ever move to a model where a node is optional to a pxe. Another note just for reference: there is weirdness in e2e_prover, that fails the proof validation. Resolves #4781. Apply suggestions from code review Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
fix: fixing private voting by correctly throwing an error if simulation fails (#7840) This PR makes a simulation of a tx fail, if the tx cannot be included in a block and added to the state. e.g. If a simulation produces duplicate nullifiers, or nullifiers that already exist in a state tree, the results of this simulation should not be returned, but should warn users that the transaction simulated is impossible to actually be added to a block due to being an invalid transaction. The method for achieving the above is that a new API on the node was created, used for validating the correctness of the metadata and side-effects produced by a transaction. A transaction is deemed valid if and only if the transaction can be added to a block that can be used to advance state. Note: this update does not make this validation necessary, and defaults to offline simulation. Offline simulation is previous non-validated behavior, and is potentially useful if we ever move to a model where a node is optional to a pxe. Another note just for reference: there is weirdness in e2e_prover, that fails the proof validation. Resolves #4781. Apply suggestions from code review Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
9f14a97
to
159fe3b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm 👍
FYI @spypsy is also working on validating tx proofs on the p2p layer.
…#7951) Part of #4781 by having parity between sequencer tx validation and node tx validation. Note that we are using the validators from the sequencer, and they should match. We are omitting `phases` and `gas` tx validator which is in the sequencer and not here is because those tx validators are customizable by the sequencer and not uniform between all sequencers. --------- Co-authored-by: Nicolás Venturo <nicolas.venturo@gmail.com>
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.52.0</summary> ## [0.52.0](aztec-package-v0.51.1...aztec-package-v0.52.0) (2024-09-01) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.52.0</summary> ## [0.52.0](barretenberg.js-v0.51.1...barretenberg.js-v0.52.0) (2024-09-01) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.52.0</summary> ## [0.52.0](aztec-packages-v0.51.1...aztec-packages-v0.52.0) (2024-09-01) ### ⚠ BREAKING CHANGES * Check unused generics are bound (noir-lang/noir#5840) ### Features * Add `Expr::as_assert` (noir-lang/noir#5857) ([cf5b667](cf5b667)) * Add `Expr::resolve` and `TypedExpr::as_function_definition` (noir-lang/noir#5859) ([cf5b667](cf5b667)) * Add `FunctionDef::body` (noir-lang/noir#5825) ([cf5b667](cf5b667)) * Add `FunctionDef::has_named_attribute` (noir-lang/noir#5870) ([cf5b667](cf5b667)) * Add `Type::as_string` (noir-lang/noir#5871) ([cf5b667](cf5b667)) * Clarify state in Protogalaxy 3 ([#8181](#8181)) ([4a9bb9d](4a9bb9d)) * LSP signature help for assert and assert_eq (noir-lang/noir#5862) ([cf5b667](cf5b667)) * **meta:** Comptime keccak (noir-lang/noir#5854) ([cf5b667](cf5b667)) * **optimization:** Avoid merging identical (by ID) arrays (noir-lang/noir#5853) ([cf5b667](cf5b667)) * **perf:** Simplify poseidon2 cache zero-pad (noir-lang/noir#5869) ([cf5b667](cf5b667)) * Populate epoch 0 from initial validator set ([#8286](#8286)) ([cbdec54](cbdec54)) * Remove unnecessary copying of vector size during reversal (noir-lang/noir#5852) ([cf5b667](cf5b667)) * Removing `is_dev_net` flag ([#8275](#8275)) ([fc1f307](fc1f307)) * Show backtrace on comptime assertion failures (noir-lang/noir#5842) ([cf5b667](cf5b667)) * Simplify constant calls to `poseidon2_permutation`, `schnorr_verify` and `embedded_curve_add` (noir-lang/noir#5140) ([cf5b667](cf5b667)) * Sync from aztec-packages (noir-lang/noir#5790) ([cf5b667](cf5b667)) * Warn on unused imports (noir-lang/noir#5847) ([cf5b667](cf5b667)) ### Bug Fixes * Check unused generics are bound (noir-lang/noir#5840) ([cf5b667](cf5b667)) * Enforce parity of sequencer tx validation and node tx validation ([#7951](#7951)) ([c7eaf92](c7eaf92)) * Make simulations validate resulting tx by default ([#8157](#8157)) ([f5e388d](f5e388d)) * **nargo:** Resolve Brillig assertion payloads (noir-lang/noir#5872) ([cf5b667](cf5b667)) * Prevent honk proof from getting stale inputs on syncs ([#8293](#8293)) ([2598108](2598108)) * Remove fee juice mint public ([#8260](#8260)) ([2395af3](2395af3)) * **sha256:** Add extra checks against message size when constructing msg blocks (noir-lang/noir#5861) ([cf5b667](cf5b667)) * **sha256:** Fix upper bound when building msg block and delay final block compression under certain cases (noir-lang/noir#5838) ([cf5b667](cf5b667)) * **sha256:** Perform compression per block and utilize ROM instead of RAM when setting up the message block (noir-lang/noir#5760) ([cf5b667](cf5b667)) ### Miscellaneous * Add documentation to `to_be_bytes`, etc. (noir-lang/noir#5843) ([cf5b667](cf5b667)) * Add missing cases to arithmetic generics (noir-lang/noir#5841) ([cf5b667](cf5b667)) * Add test to reproduce [#8306](#8306) ([41d418c](41d418c)) * Alert slack on Sepolia test ([#8263](#8263)) ([6194b94](6194b94)) * **bb:** Make compile on stock mac clang ([#8278](#8278)) ([7af80ff](7af80ff)) * **bb:** More graceful pippenger on non-powers-of-2 ([#8279](#8279)) ([104ea85](104ea85)) * Bump noir-bignum to 0.3.2 ([#8276](#8276)) ([4c6fe1a](4c6fe1a)) * **ci:** Try to debug 'command brotli not found' ([#8305](#8305)) ([9ee8dd6](9ee8dd6)) * Don't require empty `Prover.toml` for programs with zero arguments but a return value (noir-lang/noir#5845) ([cf5b667](cf5b667)) * Fix a bunch of generics issues in aztec-nr ([#8295](#8295)) ([6e84970](6e84970)) * Fix more issues with generics ([#8302](#8302)) ([4e2ce80](4e2ce80)) * Fix warnings in `avm-transpiler` ([#8307](#8307)) ([359fe05](359fe05)) * Introduce the Visitor pattern (noir-lang/noir#5868) ([cf5b667](cf5b667)) * **perf:** Simplify poseidon2 algorithm (noir-lang/noir#5811) ([cf5b667](cf5b667)) * **perf:** Update to stdlib keccak for reduced Brillig code size (noir-lang/noir#5827) ([cf5b667](cf5b667)) * Redo typo PR by nnsW3 (noir-lang/noir#5834) ([cf5b667](cf5b667)) * Renaming around Protogalaxy Prover ([#8272](#8272)) ([be2169d](be2169d)) * Replace relative paths to noir-protocol-circuits ([56e3fbf](56e3fbf)) * Replace relative paths to noir-protocol-circuits ([1b245c4](1b245c4)) * Replace relative paths to noir-protocol-circuits ([9c3bc43](9c3bc43)) * **revert:** Earthfile accidental change ([#8309](#8309)) ([2d3e0b6](2d3e0b6)) * Underconstrained check in parallel (noir-lang/noir#5848) ([cf5b667](cf5b667)) ### Documentation * **bb:** Transcript spec ([#8301](#8301)) ([18abf37](18abf37)) </details> <details><summary>barretenberg: 0.52.0</summary> ## [0.52.0](barretenberg-v0.51.1...barretenberg-v0.52.0) (2024-09-01) ### Features * Clarify state in Protogalaxy 3 ([#8181](#8181)) ([4a9bb9d](4a9bb9d)) ### Bug Fixes * Prevent honk proof from getting stale inputs on syncs ([#8293](#8293)) ([2598108](2598108)) ### Miscellaneous * **bb:** Make compile on stock mac clang ([#8278](#8278)) ([7af80ff](7af80ff)) * **bb:** More graceful pippenger on non-powers-of-2 ([#8279](#8279)) ([104ea85](104ea85)) * Renaming around Protogalaxy Prover ([#8272](#8272)) ([be2169d](be2169d)) * **revert:** Earthfile accidental change ([#8309](#8309)) ([2d3e0b6](2d3e0b6)) ### Documentation * **bb:** Transcript spec ([#8301](#8301)) ([18abf37](18abf37)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.52.0</summary> ## [0.52.0](AztecProtocol/aztec-packages@aztec-package-v0.51.1...aztec-package-v0.52.0) (2024-09-01) ### Miscellaneous * **aztec-package:** Synchronize aztec-packages versions </details> <details><summary>barretenberg.js: 0.52.0</summary> ## [0.52.0](AztecProtocol/aztec-packages@barretenberg.js-v0.51.1...barretenberg.js-v0.52.0) (2024-09-01) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>aztec-packages: 0.52.0</summary> ## [0.52.0](AztecProtocol/aztec-packages@aztec-packages-v0.51.1...aztec-packages-v0.52.0) (2024-09-01) ### ⚠ BREAKING CHANGES * Check unused generics are bound (noir-lang/noir#5840) ### Features * Add `Expr::as_assert` (noir-lang/noir#5857) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add `Expr::resolve` and `TypedExpr::as_function_definition` (noir-lang/noir#5859) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add `FunctionDef::body` (noir-lang/noir#5825) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add `FunctionDef::has_named_attribute` (noir-lang/noir#5870) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add `Type::as_string` (noir-lang/noir#5871) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Clarify state in Protogalaxy 3 ([#8181](AztecProtocol/aztec-packages#8181)) ([4a9bb9d](AztecProtocol/aztec-packages@4a9bb9d)) * LSP signature help for assert and assert_eq (noir-lang/noir#5862) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **meta:** Comptime keccak (noir-lang/noir#5854) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **optimization:** Avoid merging identical (by ID) arrays (noir-lang/noir#5853) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **perf:** Simplify poseidon2 cache zero-pad (noir-lang/noir#5869) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Populate epoch 0 from initial validator set ([#8286](AztecProtocol/aztec-packages#8286)) ([cbdec54](AztecProtocol/aztec-packages@cbdec54)) * Remove unnecessary copying of vector size during reversal (noir-lang/noir#5852) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Removing `is_dev_net` flag ([#8275](AztecProtocol/aztec-packages#8275)) ([fc1f307](AztecProtocol/aztec-packages@fc1f307)) * Show backtrace on comptime assertion failures (noir-lang/noir#5842) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Simplify constant calls to `poseidon2_permutation`, `schnorr_verify` and `embedded_curve_add` (noir-lang/noir#5140) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Sync from aztec-packages (noir-lang/noir#5790) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Warn on unused imports (noir-lang/noir#5847) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) ### Bug Fixes * Check unused generics are bound (noir-lang/noir#5840) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Enforce parity of sequencer tx validation and node tx validation ([#7951](AztecProtocol/aztec-packages#7951)) ([c7eaf92](AztecProtocol/aztec-packages@c7eaf92)) * Make simulations validate resulting tx by default ([#8157](AztecProtocol/aztec-packages#8157)) ([f5e388d](AztecProtocol/aztec-packages@f5e388d)) * **nargo:** Resolve Brillig assertion payloads (noir-lang/noir#5872) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Prevent honk proof from getting stale inputs on syncs ([#8293](AztecProtocol/aztec-packages#8293)) ([2598108](AztecProtocol/aztec-packages@2598108)) * Remove fee juice mint public ([#8260](AztecProtocol/aztec-packages#8260)) ([2395af3](AztecProtocol/aztec-packages@2395af3)) * **sha256:** Add extra checks against message size when constructing msg blocks (noir-lang/noir#5861) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **sha256:** Fix upper bound when building msg block and delay final block compression under certain cases (noir-lang/noir#5838) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **sha256:** Perform compression per block and utilize ROM instead of RAM when setting up the message block (noir-lang/noir#5760) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) ### Miscellaneous * Add documentation to `to_be_bytes`, etc. (noir-lang/noir#5843) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add missing cases to arithmetic generics (noir-lang/noir#5841) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Add test to reproduce [#8306](AztecProtocol/aztec-packages#8306) ([41d418c](AztecProtocol/aztec-packages@41d418c)) * Alert slack on Sepolia test ([#8263](AztecProtocol/aztec-packages#8263)) ([6194b94](AztecProtocol/aztec-packages@6194b94)) * **bb:** Make compile on stock mac clang ([#8278](AztecProtocol/aztec-packages#8278)) ([7af80ff](AztecProtocol/aztec-packages@7af80ff)) * **bb:** More graceful pippenger on non-powers-of-2 ([#8279](AztecProtocol/aztec-packages#8279)) ([104ea85](AztecProtocol/aztec-packages@104ea85)) * Bump noir-bignum to 0.3.2 ([#8276](AztecProtocol/aztec-packages#8276)) ([4c6fe1a](AztecProtocol/aztec-packages@4c6fe1a)) * **ci:** Try to debug 'command brotli not found' ([#8305](AztecProtocol/aztec-packages#8305)) ([9ee8dd6](AztecProtocol/aztec-packages@9ee8dd6)) * Don't require empty `Prover.toml` for programs with zero arguments but a return value (noir-lang/noir#5845) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Fix a bunch of generics issues in aztec-nr ([#8295](AztecProtocol/aztec-packages#8295)) ([6e84970](AztecProtocol/aztec-packages@6e84970)) * Fix more issues with generics ([#8302](AztecProtocol/aztec-packages#8302)) ([4e2ce80](AztecProtocol/aztec-packages@4e2ce80)) * Fix warnings in `avm-transpiler` ([#8307](AztecProtocol/aztec-packages#8307)) ([359fe05](AztecProtocol/aztec-packages@359fe05)) * Introduce the Visitor pattern (noir-lang/noir#5868) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **perf:** Simplify poseidon2 algorithm (noir-lang/noir#5811) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * **perf:** Update to stdlib keccak for reduced Brillig code size (noir-lang/noir#5827) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Redo typo PR by nnsW3 (noir-lang/noir#5834) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) * Renaming around Protogalaxy Prover ([#8272](AztecProtocol/aztec-packages#8272)) ([be2169d](AztecProtocol/aztec-packages@be2169d)) * Replace relative paths to noir-protocol-circuits ([56e3fbf](AztecProtocol/aztec-packages@56e3fbf)) * Replace relative paths to noir-protocol-circuits ([1b245c4](AztecProtocol/aztec-packages@1b245c4)) * Replace relative paths to noir-protocol-circuits ([9c3bc43](AztecProtocol/aztec-packages@9c3bc43)) * **revert:** Earthfile accidental change ([#8309](AztecProtocol/aztec-packages#8309)) ([2d3e0b6](AztecProtocol/aztec-packages@2d3e0b6)) * Underconstrained check in parallel (noir-lang/noir#5848) ([cf5b667](AztecProtocol/aztec-packages@cf5b667)) ### Documentation * **bb:** Transcript spec ([#8301](AztecProtocol/aztec-packages#8301)) ([18abf37](AztecProtocol/aztec-packages@18abf37)) </details> <details><summary>barretenberg: 0.52.0</summary> ## [0.52.0](AztecProtocol/aztec-packages@barretenberg-v0.51.1...barretenberg-v0.52.0) (2024-09-01) ### Features * Clarify state in Protogalaxy 3 ([#8181](AztecProtocol/aztec-packages#8181)) ([4a9bb9d](AztecProtocol/aztec-packages@4a9bb9d)) ### Bug Fixes * Prevent honk proof from getting stale inputs on syncs ([#8293](AztecProtocol/aztec-packages#8293)) ([2598108](AztecProtocol/aztec-packages@2598108)) ### Miscellaneous * **bb:** Make compile on stock mac clang ([#8278](AztecProtocol/aztec-packages#8278)) ([7af80ff](AztecProtocol/aztec-packages@7af80ff)) * **bb:** More graceful pippenger on non-powers-of-2 ([#8279](AztecProtocol/aztec-packages#8279)) ([104ea85](AztecProtocol/aztec-packages@104ea85)) * Renaming around Protogalaxy Prover ([#8272](AztecProtocol/aztec-packages#8272)) ([be2169d](AztecProtocol/aztec-packages@be2169d)) * **revert:** Earthfile accidental change ([#8309](AztecProtocol/aztec-packages#8309)) ([2d3e0b6](AztecProtocol/aztec-packages@2d3e0b6)) ### Documentation * **bb:** Transcript spec ([#8301](AztecProtocol/aztec-packages#8301)) ([18abf37](AztecProtocol/aztec-packages@18abf37)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Part of #4781 by having parity between sequencer tx validation and node tx validation.
Note that we are using the validators from the sequencer, and they should match. We are omitting
phases
andgas
tx validator which is in the sequencer and not here is because those tx validators are customizable by the sequencer and not uniform between all sequencers.