-
Notifications
You must be signed in to change notification settings - Fork 298
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
feat!: Mark transactions as reverted on L1 #5226
feat!: Mark transactions as reverted on L1 #5226
Conversation
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. Values are compared against data from master at commit 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 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
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 processing duration by data writes.
|
Why not just include the revert flag as part of the TxEffect? It's data that gets published on chain and that needs to be passed into the rollup circuits, just like any other tx effect. I think I'm not seeing why it's different from a public write, for instance. Aside from that, +1 from me! |
@spalladino Totally can all be in the same place. The separation was just for more clear semantics in TS: I didn't like putting the So maybe the solution is to put them all together, but just rename Edit: I'm also fine with leaving it and putting the reverted flag plus fee/gas info in |
@just-mitch I personally really like the name For this reason I would prefer just including the revert flag in the |
Can we not add it to the private kernel public inputs with value always |
I cna understand the motivation with splitting things out. As other say though I suspect it's simpler to keep as is. |
@benesjan If the revert flag is set, then all revertible side effects have been stripped out, but non-revertible side effects will be present in @PhilWindle I think we will need a separate circuit for private in the event when there is no public execution regardless because the base rollup expects recombined non/revertible (#5013). So I can imagine two tails for private- one that splits non/revertible (as we currently have), and another that says "oh there's nothing to split, I'll reformat this for the base rollup". I expect we'd choose in typescript after executing all required init/inner private kernels which tail to choose. Regardless, I think I've also convinced myself that it is okay to put the flag in |
9eefad0
to
cd89676
Compare
Okay, updated the design above to reflect the conversations. Also, added a section on documentation. Also, updated the L1 encoding to reflect that we will need to publish the |
a62ed6a
to
c0e0a24
Compare
@@ -146,6 +146,7 @@ pub fn compute_tx_effects_hash(combined: CombinedAccumulatedData) -> [Field; NUM | |||
// 1 unencrypted logs hash --> 1 sha256 hash -> 32 bytes -> 2 fields | Beware when populating bytes that it is only 32! | |||
let mut txs_effects_hash_input = [0; TX_EFFECTS_HASH_INPUT_FIELDS]; | |||
|
|||
let reverted = combined.reverted; |
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.
This was the primary impetus for me simply adding the reverted
code to CombinedAccumulatedData
. This way we get the flag as an out from the private circuits as well.
...ts/crates/types/src/abis/kernel_circuit_public_inputs/public_kernel_circuit_public_inputs.nr
Show resolved
Hide resolved
@@ -48,7 +48,7 @@ struct PublicCircuitPublicInputs{ | |||
|
|||
prover_address: AztecAddress, | |||
|
|||
reverted: bool, | |||
reverted: Field, |
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.
Because the base rollup computes its content commitment based on accumulating Field
s, I felt this was appropriate for a first implementation. Ideally we will trim down the size, but that will require specialization of compute_tx_effects_hash
Built to spec, barring the caveat that we publish a full Updated design comment to reflect the implementation. |
Docs PreviewHey there! 👋 You can check your preview at https://65fb255af29d6900aba9068e--aztec-docs-dev.netlify.app |
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.
This all looks ok. I think @LeilaWang should probably look over it.
Are we using a full field for the revert code in anticipation of encoding more data into it?
} | ||
|
||
pub fn initialize_reverted_flag( | ||
previous_kernel: PublicKernelData, | ||
public_call: PublicCallData, | ||
circuit_outputs: &mut PublicKernelCircuitPublicInputsBuilder | ||
) { | ||
circuit_outputs.reverted = previous_kernel.public_inputs.reverted | public_call.call_stack_item.public_inputs.reverted; | ||
if previous_kernel.public_inputs.end_non_revertible.reverted != 0 { |
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.
So, we always take the revert code of the previous kernel if non-zero. If zero we take the result of this iteration.
Sounds correct.
@@ -11,6 +11,7 @@ export enum TxStatus { | |||
DROPPED = 'dropped', | |||
MINED = 'mined', |
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.
Not for this PR but I can't help but think we should rename 'MINED'. Reverted transactions are also 'mined'.
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.
Very true. I think they should roughly correspond with the RevertCode options. I added a TODO on #4096
I added a comment but marked it resolved, so it was probably invisible to you when you reviewed. I "unresolved" here But yes, we'll want to encode more data into it if there isn't an easy way to break up the way we compute the commitment in the base rollup to have more granular elements than whole fields. |
/** | ||
* Wrapper class over a field to safely represent a revert code. | ||
*/ | ||
export class RevertCode { |
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.
I like the parallel to unix's exit code, 0 for success, != 0 for failure!
yarn-project/update-snapshots.sh
Outdated
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.
❤️
This stack of pull requests is managed by Graphite. Learn more about stacking. Join @just-mitch and the rest of your teammates on Graphite |
1be8576
to
fa55d79
Compare
fa55d79
to
3e52e95
Compare
Changes to circuit sizes
🧾 Summary (100% most significant diffs)
Full diff report 👇
|
3e52e95
to
30cf6cb
Compare
30cf6cb
to
820c489
Compare
Merge activity
|
820c489
to
96f7e63
Compare
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.31.0</summary> ## [0.31.0](aztec-package-v0.30.1...aztec-package-v0.31.0) (2024-03-26) ### Features * Add batched signerless contract calls ([#5313](#5313)) ([be60eb3](be60eb3)) * Dynamic proving ([#5346](#5346)) ([6a7ccca](6a7ccca)) * Less earthly runners + e2e GA runners, bb bench ([#5356](#5356)) ([2136a66](2136a66)) </details> <details><summary>barretenberg.js: 0.31.0</summary> ## [0.31.0](barretenberg.js-v0.30.1...barretenberg.js-v0.31.0) (2024-03-26) ### Features * Earthly bb tests + arm + satellites ([#5268](#5268)) ([eca12b3](eca12b3)) * Less earthly runners + e2e GA runners, bb bench ([#5356](#5356)) ([2136a66](2136a66)) * Simplified bb Honk interface ([#5319](#5319)) ([a2d138f](a2d138f)) </details> <details><summary>aztec-cli: 0.31.0</summary> ## [0.31.0](aztec-cli-v0.30.1...aztec-cli-v0.31.0) (2024-03-26) ### Features * Capture broadcasted functions in node ([#5353](#5353)) ([bc05db2](bc05db2)) ### Bug Fixes * **cli:** Support initializers not named constructor in cli ([#5397](#5397)) ([85f14c5](85f14c5)) </details> <details><summary>aztec-packages: 0.31.0</summary> ## [0.31.0](aztec-packages-v0.30.1...aztec-packages-v0.31.0) (2024-03-26) ### ⚠ BREAKING CHANGES * **avm:** per function avm run ([#5421](#5421)) * rename storage inclusion proof to historical storage read ([#5379](#5379)) * plug-in new outbox and update examples to use api to fetch inclusion proofs #4769 ([#5292](#5292)) * Mark transactions as reverted on L1 ([#5226](#5226)) ### Features * Add batched signerless contract calls ([#5313](#5313)) ([be60eb3](be60eb3)) * Add specific error for attempting `string[x] = ".."` (noir-lang/noir#4611) ([13a12d5](13a12d5)) * **AuthWit:** Chain_id and version in hash ([#5331](#5331)) ([5235c95](5235c95)) * **Authwit:** Lookup the validity of authwits ([#5316](#5316)) ([7c24870](7c24870)) * Avm lookup and/or/xor ([#5338](#5338)) ([489bc2c](489bc2c)) * **avm:** Add AvmContextInputs ([#5396](#5396)) ([12e2844](12e2844)) * **avm:** Per function avm run ([#5421](#5421)) ([f024751](f024751)) * **avm:** Track gas usage in AVM simulator ([#5438](#5438)) ([4884d83](4884d83)) * Capture broadcasted functions in node ([#5353](#5353)) ([bc05db2](bc05db2)) * Dynamic proving ([#5346](#5346)) ([6a7ccca](6a7ccca)) * Earthly bb tests + arm + satellites ([#5268](#5268)) ([eca12b3](eca12b3)) * Fix awkward snippet indention in docs ([#5367](#5367)) ([c55d3da](c55d3da)) * Fold proving key polys instead of prover polys ([#5436](#5436)) ([239ebfb](239ebfb)) * Implement serdes for u64 [#4990](#4990) ([#5411](#5411)) ([5a6bcef](5a6bcef)) * Introduce max_block_number ([#5251](#5251)) ([6573173](6573173)) * Less earthly runners + e2e GA runners, bb bench ([#5356](#5356)) ([2136a66](2136a66)) * Mark transactions as reverted on L1 ([#5226](#5226)) ([40ecc02](40ecc02)) * Plug-in new outbox and update examples to use api to fetch inclusion proofs [#4769](#4769) ([#5292](#5292)) ([fec1008](fec1008)) * Read_calldata ([#5409](#5409)) ([034fbf0](034fbf0)) * Remove NUM_FIELDS_PER_SHA256 ([#5392](#5392)) ([86a181b](86a181b)) * Rename storage inclusion proof to historical storage read ([#5379](#5379)) ([b6e7216](b6e7216)) * Returning non-nullified messages only ([#5390](#5390)) ([4c671be](4c671be)) * Simplified bb Honk interface ([#5319](#5319)) ([a2d138f](a2d138f)) * Simplify offsets and sizing using new block structure ([#5404](#5404)) ([efa0842](efa0842)) * Throw by default when awaiting a tx that reverted ([#5431](#5431)) ([c9113ec](c9113ec)) * Truncate SHA hashes inside circuits ([#5160](#5160)) ([9dc0d2a](9dc0d2a)) * Unified CircuitChecker interface ([#5343](#5343)) ([13cef1f](13cef1f)) * ZeroMorph working with IPA and integration with ECCVM ([#5246](#5246)) ([c4dce94](c4dce94)) ### Bug Fixes * Addressing flakiness of `uniswap_trade_on_l1_from_l2.test.ts` ([#5443](#5443)) ([2db9cad](2db9cad)) * **avm-simulator:** Hashing opcodes indirection ([#5376](#5376)) ([a4b1ebc](a4b1ebc)) * Broadcasting unconstrained function with empty sibling ([#5429](#5429)) ([933145e](933145e)) * **ci:** Disable uniswap test in earthly build ([#5344](#5344)) ([0d69162](0d69162)) * **cli:** Support initializers not named constructor in cli ([#5397](#5397)) ([85f14c5](85f14c5)) * Copy and deploy complete contents of l1-contracts ([#5447](#5447)) ([501c5e9](501c5e9)) * Don't cancel protocol-circuits-gate-diff in master ([#5441](#5441)) ([6894a78](6894a78)) * E2e_static_calls.test.ts bad merge ([#5405](#5405)) ([4c56536](4c56536)) * Generate noir interface for constructors ([#5352](#5352)) ([8434d2f](8434d2f)) * Limit earthly to few users ([#5375](#5375)) ([71e8ab4](71e8ab4)) * Login to dockerhub before 'docker compose' ([#5440](#5440)) ([4f7696b](4f7696b)) * Revert cbind breakage ([#5348](#5348)) ([c237193](c237193)) * **ssa:** Use accurate type during SSA AsSlice simplficiation (noir-lang/noir#4610) ([13a12d5](13a12d5)) * Track class registered count in tx stats ([#5417](#5417)) ([ff8eafc](ff8eafc)) * Watch command should not spawn more than one tsc watch ([#5391](#5391)) ([25caf4d](25caf4d)) ### Miscellaneous * Always use serialize function to get hash preimage in noir circuits or when comparing structs etc [#3595](#3595) ([#5439](#5439)) ([22e0f0d](22e0f0d)) * **aztec-nr:** Unify contexts behind interfaces ([#5294](#5294)) ([36e0f59](36e0f59)) * **bb:** Removed powers of eta in lookup and auxiliary relations ([#4695](#4695)) ([f4e62ae](f4e62ae)) * CamelCase in noir-projects -> snake_case ([#5381](#5381)) ([eea711f](eea711f)) * **ci:** Create a dedicated job for the AVM unit tests ([#5369](#5369)) ([59ca2ac](59ca2ac)), closes [#5366](#5366) * Clean out prover instance and remove instance from oink ([#5314](#5314)) ([a83368c](a83368c)) * Cleaning up messaging types ([#5442](#5442)) ([dfffe5d](dfffe5d)), closes [#5420](#5420) * Compute registerer address on the fly ([#5394](#5394)) ([5d669b9](5d669b9)) * Delete slither output from version control ([#5393](#5393)) ([41107e3](41107e3)) * Fix migration notes ([#5452](#5452)) ([8c4e576](8c4e576)) * **github:** Improve PR template "document later" checkbox description (noir-lang/noir#4625) ([13a12d5](13a12d5)) * Make get_notes fail if returning no notes [#4988](#4988) ([#5320](#5320)) ([be86ed3](be86ed3)) * Meld flavor and and circuit builder modules ([#5406](#5406)) ([f0d9d1b](f0d9d1b)) * Messaging naming fixes ([#5383](#5383)) ([0226102](0226102)) * Moving public inputs back to instance ([#5315](#5315)) ([9cbe368](9cbe368)) * Name change: gen perm sort to delta range constraint ([#5378](#5378)) ([841855f](841855f)) * Nuking l1 to l2 messages from block body ([#5272](#5272)) ([ee176d2](ee176d2)), closes [#5072](#5072) * Reduce size of revert code from Field to u8 ([#5309](#5309)) ([1868e25](1868e25)) * Remove mocking function in `EccOpQueue` again ([#5413](#5413)) ([6fb4a75](6fb4a75)) * Remove snapshots from protocol-contracts ([#5342](#5342)) ([31ca344](31ca344)) * Remove unused FunctionLeafPreimage struct ([#5354](#5354)) ([dc51c2b](dc51c2b)) * Rename reverted to revertCode ([#5301](#5301)) ([950a96d](950a96d)) * Replace relative paths to noir-protocol-circuits ([262ae02](262ae02)) * Replace relative paths to noir-protocol-circuits ([91a60db](91a60db)) * Replace relative paths to noir-protocol-circuits ([9fc9fbd](9fc9fbd)) * Replace relative paths to noir-protocol-circuits ([9939e99](9939e99)) * Replace relative paths to noir-protocol-circuits ([0b24aae](0b24aae)) * Replace relative paths to noir-protocol-circuits ([c4d89d5](c4d89d5)) * Reverting accidental changes ([#5371](#5371)) ([c1484ce](c1484ce)) * Skip foundry install if possible ([#5398](#5398)) ([060fa1e](060fa1e)) * Skip slither in docker ([#5384](#5384)) ([8a76068](8a76068)) * Update docs with function names to match version 0.25.0 specifications (noir-lang/noir#4466) ([13a12d5](13a12d5)) * Update integers.md to note support for Fields using `from_integer` (noir-lang/noir#4536) ([13a12d5](13a12d5)) * Update min compiler version of contracts ([#5305](#5305)) ([dcf6bb3](dcf6bb3)) * Use random tmp directory and cleanup afterwards ([#5368](#5368)) ([5c0e15d](5c0e15d)) ### Documentation * Update versions-updating.md ([#5358](#5358)) ([0f09b63](0f09b63)) </details> <details><summary>barretenberg: 0.31.0</summary> ## [0.31.0](barretenberg-v0.30.1...barretenberg-v0.31.0) (2024-03-26) ### Features * Avm lookup and/or/xor ([#5338](#5338)) ([489bc2c](489bc2c)) * Earthly bb tests + arm + satellites ([#5268](#5268)) ([eca12b3](eca12b3)) * Fold proving key polys instead of prover polys ([#5436](#5436)) ([239ebfb](239ebfb)) * Less earthly runners + e2e GA runners, bb bench ([#5356](#5356)) ([2136a66](2136a66)) * Read_calldata ([#5409](#5409)) ([034fbf0](034fbf0)) * Simplified bb Honk interface ([#5319](#5319)) ([a2d138f](a2d138f)) * Simplify offsets and sizing using new block structure ([#5404](#5404)) ([efa0842](efa0842)) * Unified CircuitChecker interface ([#5343](#5343)) ([13cef1f](13cef1f)) * ZeroMorph working with IPA and integration with ECCVM ([#5246](#5246)) ([c4dce94](c4dce94)) ### Bug Fixes * Revert cbind breakage ([#5348](#5348)) ([c237193](c237193)) ### Miscellaneous * **bb:** Removed powers of eta in lookup and auxiliary relations ([#4695](#4695)) ([f4e62ae](f4e62ae)) * **ci:** Create a dedicated job for the AVM unit tests ([#5369](#5369)) ([59ca2ac](59ca2ac)), closes [#5366](#5366) * Clean out prover instance and remove instance from oink ([#5314](#5314)) ([a83368c](a83368c)) * Meld flavor and and circuit builder modules ([#5406](#5406)) ([f0d9d1b](f0d9d1b)) * Moving public inputs back to instance ([#5315](#5315)) ([9cbe368](9cbe368)) * Name change: gen perm sort to delta range constraint ([#5378](#5378)) ([841855f](841855f)) * Remove mocking function in `EccOpQueue` again ([#5413](#5413)) ([6fb4a75](6fb4a75)) </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.31.0</summary> ## [0.31.0](AztecProtocol/aztec-packages@aztec-package-v0.30.1...aztec-package-v0.31.0) (2024-03-26) ### Features * Add batched signerless contract calls ([#5313](AztecProtocol/aztec-packages#5313)) ([be60eb3](AztecProtocol/aztec-packages@be60eb3)) * Dynamic proving ([#5346](AztecProtocol/aztec-packages#5346)) ([6a7ccca](AztecProtocol/aztec-packages@6a7ccca)) * Less earthly runners + e2e GA runners, bb bench ([#5356](AztecProtocol/aztec-packages#5356)) ([2136a66](AztecProtocol/aztec-packages@2136a66)) </details> <details><summary>barretenberg.js: 0.31.0</summary> ## [0.31.0](AztecProtocol/aztec-packages@barretenberg.js-v0.30.1...barretenberg.js-v0.31.0) (2024-03-26) ### Features * Earthly bb tests + arm + satellites ([#5268](AztecProtocol/aztec-packages#5268)) ([eca12b3](AztecProtocol/aztec-packages@eca12b3)) * Less earthly runners + e2e GA runners, bb bench ([#5356](AztecProtocol/aztec-packages#5356)) ([2136a66](AztecProtocol/aztec-packages@2136a66)) * Simplified bb Honk interface ([#5319](AztecProtocol/aztec-packages#5319)) ([a2d138f](AztecProtocol/aztec-packages@a2d138f)) </details> <details><summary>aztec-cli: 0.31.0</summary> ## [0.31.0](AztecProtocol/aztec-packages@aztec-cli-v0.30.1...aztec-cli-v0.31.0) (2024-03-26) ### Features * Capture broadcasted functions in node ([#5353](AztecProtocol/aztec-packages#5353)) ([bc05db2](AztecProtocol/aztec-packages@bc05db2)) ### Bug Fixes * **cli:** Support initializers not named constructor in cli ([#5397](AztecProtocol/aztec-packages#5397)) ([85f14c5](AztecProtocol/aztec-packages@85f14c5)) </details> <details><summary>aztec-packages: 0.31.0</summary> ## [0.31.0](AztecProtocol/aztec-packages@aztec-packages-v0.30.1...aztec-packages-v0.31.0) (2024-03-26) ### ⚠ BREAKING CHANGES * **avm:** per function avm run ([#5421](AztecProtocol/aztec-packages#5421)) * rename storage inclusion proof to historical storage read ([#5379](AztecProtocol/aztec-packages#5379)) * plug-in new outbox and update examples to use api to fetch inclusion proofs #4769 ([#5292](AztecProtocol/aztec-packages#5292)) * Mark transactions as reverted on L1 ([#5226](AztecProtocol/aztec-packages#5226)) ### Features * Add batched signerless contract calls ([#5313](AztecProtocol/aztec-packages#5313)) ([be60eb3](AztecProtocol/aztec-packages@be60eb3)) * Add specific error for attempting `string[x] = ".."` (noir-lang/noir#4611) ([13a12d5](AztecProtocol/aztec-packages@13a12d5)) * **AuthWit:** Chain_id and version in hash ([#5331](AztecProtocol/aztec-packages#5331)) ([5235c95](AztecProtocol/aztec-packages@5235c95)) * **Authwit:** Lookup the validity of authwits ([#5316](AztecProtocol/aztec-packages#5316)) ([7c24870](AztecProtocol/aztec-packages@7c24870)) * Avm lookup and/or/xor ([#5338](AztecProtocol/aztec-packages#5338)) ([489bc2c](AztecProtocol/aztec-packages@489bc2c)) * **avm:** Add AvmContextInputs ([#5396](AztecProtocol/aztec-packages#5396)) ([12e2844](AztecProtocol/aztec-packages@12e2844)) * **avm:** Per function avm run ([#5421](AztecProtocol/aztec-packages#5421)) ([f024751](AztecProtocol/aztec-packages@f024751)) * **avm:** Track gas usage in AVM simulator ([#5438](AztecProtocol/aztec-packages#5438)) ([4884d83](AztecProtocol/aztec-packages@4884d83)) * Capture broadcasted functions in node ([#5353](AztecProtocol/aztec-packages#5353)) ([bc05db2](AztecProtocol/aztec-packages@bc05db2)) * Dynamic proving ([#5346](AztecProtocol/aztec-packages#5346)) ([6a7ccca](AztecProtocol/aztec-packages@6a7ccca)) * Earthly bb tests + arm + satellites ([#5268](AztecProtocol/aztec-packages#5268)) ([eca12b3](AztecProtocol/aztec-packages@eca12b3)) * Fix awkward snippet indention in docs ([#5367](AztecProtocol/aztec-packages#5367)) ([c55d3da](AztecProtocol/aztec-packages@c55d3da)) * Fold proving key polys instead of prover polys ([#5436](AztecProtocol/aztec-packages#5436)) ([239ebfb](AztecProtocol/aztec-packages@239ebfb)) * Implement serdes for u64 [#4990](AztecProtocol/aztec-packages#4990) ([#5411](AztecProtocol/aztec-packages#5411)) ([5a6bcef](AztecProtocol/aztec-packages@5a6bcef)) * Introduce max_block_number ([#5251](AztecProtocol/aztec-packages#5251)) ([6573173](AztecProtocol/aztec-packages@6573173)) * Less earthly runners + e2e GA runners, bb bench ([#5356](AztecProtocol/aztec-packages#5356)) ([2136a66](AztecProtocol/aztec-packages@2136a66)) * Mark transactions as reverted on L1 ([#5226](AztecProtocol/aztec-packages#5226)) ([40ecc02](AztecProtocol/aztec-packages@40ecc02)) * Plug-in new outbox and update examples to use api to fetch inclusion proofs [#4769](AztecProtocol/aztec-packages#4769) ([#5292](AztecProtocol/aztec-packages#5292)) ([fec1008](AztecProtocol/aztec-packages@fec1008)) * Read_calldata ([#5409](AztecProtocol/aztec-packages#5409)) ([034fbf0](AztecProtocol/aztec-packages@034fbf0)) * Remove NUM_FIELDS_PER_SHA256 ([#5392](AztecProtocol/aztec-packages#5392)) ([86a181b](AztecProtocol/aztec-packages@86a181b)) * Rename storage inclusion proof to historical storage read ([#5379](AztecProtocol/aztec-packages#5379)) ([b6e7216](AztecProtocol/aztec-packages@b6e7216)) * Returning non-nullified messages only ([#5390](AztecProtocol/aztec-packages#5390)) ([4c671be](AztecProtocol/aztec-packages@4c671be)) * Simplified bb Honk interface ([#5319](AztecProtocol/aztec-packages#5319)) ([a2d138f](AztecProtocol/aztec-packages@a2d138f)) * Simplify offsets and sizing using new block structure ([#5404](AztecProtocol/aztec-packages#5404)) ([efa0842](AztecProtocol/aztec-packages@efa0842)) * Throw by default when awaiting a tx that reverted ([#5431](AztecProtocol/aztec-packages#5431)) ([c9113ec](AztecProtocol/aztec-packages@c9113ec)) * Truncate SHA hashes inside circuits ([#5160](AztecProtocol/aztec-packages#5160)) ([9dc0d2a](AztecProtocol/aztec-packages@9dc0d2a)) * Unified CircuitChecker interface ([#5343](AztecProtocol/aztec-packages#5343)) ([13cef1f](AztecProtocol/aztec-packages@13cef1f)) * ZeroMorph working with IPA and integration with ECCVM ([#5246](AztecProtocol/aztec-packages#5246)) ([c4dce94](AztecProtocol/aztec-packages@c4dce94)) ### Bug Fixes * Addressing flakiness of `uniswap_trade_on_l1_from_l2.test.ts` ([#5443](AztecProtocol/aztec-packages#5443)) ([2db9cad](AztecProtocol/aztec-packages@2db9cad)) * **avm-simulator:** Hashing opcodes indirection ([#5376](AztecProtocol/aztec-packages#5376)) ([a4b1ebc](AztecProtocol/aztec-packages@a4b1ebc)) * Broadcasting unconstrained function with empty sibling ([#5429](AztecProtocol/aztec-packages#5429)) ([933145e](AztecProtocol/aztec-packages@933145e)) * **ci:** Disable uniswap test in earthly build ([#5344](AztecProtocol/aztec-packages#5344)) ([0d69162](AztecProtocol/aztec-packages@0d69162)) * **cli:** Support initializers not named constructor in cli ([#5397](AztecProtocol/aztec-packages#5397)) ([85f14c5](AztecProtocol/aztec-packages@85f14c5)) * Copy and deploy complete contents of l1-contracts ([#5447](AztecProtocol/aztec-packages#5447)) ([501c5e9](AztecProtocol/aztec-packages@501c5e9)) * Don't cancel protocol-circuits-gate-diff in master ([#5441](AztecProtocol/aztec-packages#5441)) ([6894a78](AztecProtocol/aztec-packages@6894a78)) * E2e_static_calls.test.ts bad merge ([#5405](AztecProtocol/aztec-packages#5405)) ([4c56536](AztecProtocol/aztec-packages@4c56536)) * Generate noir interface for constructors ([#5352](AztecProtocol/aztec-packages#5352)) ([8434d2f](AztecProtocol/aztec-packages@8434d2f)) * Limit earthly to few users ([#5375](AztecProtocol/aztec-packages#5375)) ([71e8ab4](AztecProtocol/aztec-packages@71e8ab4)) * Login to dockerhub before 'docker compose' ([#5440](AztecProtocol/aztec-packages#5440)) ([4f7696b](AztecProtocol/aztec-packages@4f7696b)) * Revert cbind breakage ([#5348](AztecProtocol/aztec-packages#5348)) ([c237193](AztecProtocol/aztec-packages@c237193)) * **ssa:** Use accurate type during SSA AsSlice simplficiation (noir-lang/noir#4610) ([13a12d5](AztecProtocol/aztec-packages@13a12d5)) * Track class registered count in tx stats ([#5417](AztecProtocol/aztec-packages#5417)) ([ff8eafc](AztecProtocol/aztec-packages@ff8eafc)) * Watch command should not spawn more than one tsc watch ([#5391](AztecProtocol/aztec-packages#5391)) ([25caf4d](AztecProtocol/aztec-packages@25caf4d)) ### Miscellaneous * Always use serialize function to get hash preimage in noir circuits or when comparing structs etc [#3595](AztecProtocol/aztec-packages#3595) ([#5439](AztecProtocol/aztec-packages#5439)) ([22e0f0d](AztecProtocol/aztec-packages@22e0f0d)) * **aztec-nr:** Unify contexts behind interfaces ([#5294](AztecProtocol/aztec-packages#5294)) ([36e0f59](AztecProtocol/aztec-packages@36e0f59)) * **bb:** Removed powers of eta in lookup and auxiliary relations ([#4695](AztecProtocol/aztec-packages#4695)) ([f4e62ae](AztecProtocol/aztec-packages@f4e62ae)) * CamelCase in noir-projects -> snake_case ([#5381](AztecProtocol/aztec-packages#5381)) ([eea711f](AztecProtocol/aztec-packages@eea711f)) * **ci:** Create a dedicated job for the AVM unit tests ([#5369](AztecProtocol/aztec-packages#5369)) ([59ca2ac](AztecProtocol/aztec-packages@59ca2ac)), closes [#5366](AztecProtocol/aztec-packages#5366) * Clean out prover instance and remove instance from oink ([#5314](AztecProtocol/aztec-packages#5314)) ([a83368c](AztecProtocol/aztec-packages@a83368c)) * Cleaning up messaging types ([#5442](AztecProtocol/aztec-packages#5442)) ([dfffe5d](AztecProtocol/aztec-packages@dfffe5d)), closes [#5420](AztecProtocol/aztec-packages#5420) * Compute registerer address on the fly ([#5394](AztecProtocol/aztec-packages#5394)) ([5d669b9](AztecProtocol/aztec-packages@5d669b9)) * Delete slither output from version control ([#5393](AztecProtocol/aztec-packages#5393)) ([41107e3](AztecProtocol/aztec-packages@41107e3)) * Fix migration notes ([#5452](AztecProtocol/aztec-packages#5452)) ([8c4e576](AztecProtocol/aztec-packages@8c4e576)) * **github:** Improve PR template "document later" checkbox description (noir-lang/noir#4625) ([13a12d5](AztecProtocol/aztec-packages@13a12d5)) * Make get_notes fail if returning no notes [#4988](AztecProtocol/aztec-packages#4988) ([#5320](AztecProtocol/aztec-packages#5320)) ([be86ed3](AztecProtocol/aztec-packages@be86ed3)) * Meld flavor and and circuit builder modules ([#5406](AztecProtocol/aztec-packages#5406)) ([f0d9d1b](AztecProtocol/aztec-packages@f0d9d1b)) * Messaging naming fixes ([#5383](AztecProtocol/aztec-packages#5383)) ([0226102](AztecProtocol/aztec-packages@0226102)) * Moving public inputs back to instance ([#5315](AztecProtocol/aztec-packages#5315)) ([9cbe368](AztecProtocol/aztec-packages@9cbe368)) * Name change: gen perm sort to delta range constraint ([#5378](AztecProtocol/aztec-packages#5378)) ([841855f](AztecProtocol/aztec-packages@841855f)) * Nuking l1 to l2 messages from block body ([#5272](AztecProtocol/aztec-packages#5272)) ([ee176d2](AztecProtocol/aztec-packages@ee176d2)), closes [#5072](AztecProtocol/aztec-packages#5072) * Reduce size of revert code from Field to u8 ([#5309](AztecProtocol/aztec-packages#5309)) ([1868e25](AztecProtocol/aztec-packages@1868e25)) * Remove mocking function in `EccOpQueue` again ([#5413](AztecProtocol/aztec-packages#5413)) ([6fb4a75](AztecProtocol/aztec-packages@6fb4a75)) * Remove snapshots from protocol-contracts ([#5342](AztecProtocol/aztec-packages#5342)) ([31ca344](AztecProtocol/aztec-packages@31ca344)) * Remove unused FunctionLeafPreimage struct ([#5354](AztecProtocol/aztec-packages#5354)) ([dc51c2b](AztecProtocol/aztec-packages@dc51c2b)) * Rename reverted to revertCode ([#5301](AztecProtocol/aztec-packages#5301)) ([950a96d](AztecProtocol/aztec-packages@950a96d)) * Replace relative paths to noir-protocol-circuits ([262ae02](AztecProtocol/aztec-packages@262ae02)) * Replace relative paths to noir-protocol-circuits ([91a60db](AztecProtocol/aztec-packages@91a60db)) * Replace relative paths to noir-protocol-circuits ([9fc9fbd](AztecProtocol/aztec-packages@9fc9fbd)) * Replace relative paths to noir-protocol-circuits ([9939e99](AztecProtocol/aztec-packages@9939e99)) * Replace relative paths to noir-protocol-circuits ([0b24aae](AztecProtocol/aztec-packages@0b24aae)) * Replace relative paths to noir-protocol-circuits ([c4d89d5](AztecProtocol/aztec-packages@c4d89d5)) * Reverting accidental changes ([#5371](AztecProtocol/aztec-packages#5371)) ([c1484ce](AztecProtocol/aztec-packages@c1484ce)) * Skip foundry install if possible ([#5398](AztecProtocol/aztec-packages#5398)) ([060fa1e](AztecProtocol/aztec-packages@060fa1e)) * Skip slither in docker ([#5384](AztecProtocol/aztec-packages#5384)) ([8a76068](AztecProtocol/aztec-packages@8a76068)) * Update docs with function names to match version 0.25.0 specifications (noir-lang/noir#4466) ([13a12d5](AztecProtocol/aztec-packages@13a12d5)) * Update integers.md to note support for Fields using `from_integer` (noir-lang/noir#4536) ([13a12d5](AztecProtocol/aztec-packages@13a12d5)) * Update min compiler version of contracts ([#5305](AztecProtocol/aztec-packages#5305)) ([dcf6bb3](AztecProtocol/aztec-packages@dcf6bb3)) * Use random tmp directory and cleanup afterwards ([#5368](AztecProtocol/aztec-packages#5368)) ([5c0e15d](AztecProtocol/aztec-packages@5c0e15d)) ### Documentation * Update versions-updating.md ([#5358](AztecProtocol/aztec-packages#5358)) ([0f09b63](AztecProtocol/aztec-packages@0f09b63)) </details> <details><summary>barretenberg: 0.31.0</summary> ## [0.31.0](AztecProtocol/aztec-packages@barretenberg-v0.30.1...barretenberg-v0.31.0) (2024-03-26) ### Features * Avm lookup and/or/xor ([#5338](AztecProtocol/aztec-packages#5338)) ([489bc2c](AztecProtocol/aztec-packages@489bc2c)) * Earthly bb tests + arm + satellites ([#5268](AztecProtocol/aztec-packages#5268)) ([eca12b3](AztecProtocol/aztec-packages@eca12b3)) * Fold proving key polys instead of prover polys ([#5436](AztecProtocol/aztec-packages#5436)) ([239ebfb](AztecProtocol/aztec-packages@239ebfb)) * Less earthly runners + e2e GA runners, bb bench ([#5356](AztecProtocol/aztec-packages#5356)) ([2136a66](AztecProtocol/aztec-packages@2136a66)) * Read_calldata ([#5409](AztecProtocol/aztec-packages#5409)) ([034fbf0](AztecProtocol/aztec-packages@034fbf0)) * Simplified bb Honk interface ([#5319](AztecProtocol/aztec-packages#5319)) ([a2d138f](AztecProtocol/aztec-packages@a2d138f)) * Simplify offsets and sizing using new block structure ([#5404](AztecProtocol/aztec-packages#5404)) ([efa0842](AztecProtocol/aztec-packages@efa0842)) * Unified CircuitChecker interface ([#5343](AztecProtocol/aztec-packages#5343)) ([13cef1f](AztecProtocol/aztec-packages@13cef1f)) * ZeroMorph working with IPA and integration with ECCVM ([#5246](AztecProtocol/aztec-packages#5246)) ([c4dce94](AztecProtocol/aztec-packages@c4dce94)) ### Bug Fixes * Revert cbind breakage ([#5348](AztecProtocol/aztec-packages#5348)) ([c237193](AztecProtocol/aztec-packages@c237193)) ### Miscellaneous * **bb:** Removed powers of eta in lookup and auxiliary relations ([#4695](AztecProtocol/aztec-packages#4695)) ([f4e62ae](AztecProtocol/aztec-packages@f4e62ae)) * **ci:** Create a dedicated job for the AVM unit tests ([#5369](AztecProtocol/aztec-packages#5369)) ([59ca2ac](AztecProtocol/aztec-packages@59ca2ac)), closes [#5366](AztecProtocol/aztec-packages#5366) * Clean out prover instance and remove instance from oink ([#5314](AztecProtocol/aztec-packages#5314)) ([a83368c](AztecProtocol/aztec-packages@a83368c)) * Meld flavor and and circuit builder modules ([#5406](AztecProtocol/aztec-packages#5406)) ([f0d9d1b](AztecProtocol/aztec-packages@f0d9d1b)) * Moving public inputs back to instance ([#5315](AztecProtocol/aztec-packages#5315)) ([9cbe368](AztecProtocol/aztec-packages@9cbe368)) * Name change: gen perm sort to delta range constraint ([#5378](AztecProtocol/aztec-packages#5378)) ([841855f](AztecProtocol/aztec-packages@841855f)) * Remove mocking function in `EccOpQueue` again ([#5413](AztecProtocol/aztec-packages#5413)) ([6fb4a75](AztecProtocol/aztec-packages@6fb4a75)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Introduction
Presently, if a transaction is reverted, the base rollup does not mark it as reverted: it merely has its revertible side effects dropped. This issue will update the base rollup to mark reverted transactions.
Solution Design
New
RevertCode
inTxEffect
Create a new class in
circuits.js
to hold aRevertCode
. It will be a safe wrapper around anFr
that will be used to store the revert code of a transaction.0
will indicate success, and any other value will indicate failure. Presently, only1
is used to indicate general failure, but we'll leave the door open for future expansion.TxEffect
will be updated to include aRevertCode
.Ethereum
status
Ethereum stores their
status
in auint64
, but only currently use0
to indicate failure and1
for success. More info (Thanks @spalladino !)Size considerations
We'll eventually want to add
gasUsed
andgasPrice
toTxEffect
. Using a full field is wasteful, but using a smaller size will make the encoding and hashing more complex (see below). We'll implement with a full field and have a stacked PR to optimize the size.Kernel Constraints
The
RevertCode
will become part of the content commitment for a transaction.The content commitment is computed by the base rollup in
compute_tx_effects_hash
, which:CombinedAccumulatedData
Field
sWe will therefore update the
CombinedAccumulatedData
to include theRevertCode
.A fallout from that is we will move the current
reverted
flag fromPublicKernelCircuitPublicInputs
to be part of:PrivateAccumulatedNonRevertibleData
PublicAccumulatedNonRevertibleData
This is because we:
CombinedAccumulatedData
during private executionPrivateAccumulatedNonRevertibleData
andPrivateAccumulatedRevertibleData
in the private kernel tailPrivateAccumulated...
intoPublicAccumulated...
during public kernel execution as neededCombinedAccumulatedData
before feeding back into base rollupEncoding
The
RevertCode
will come first in the encodedTxEffect
.That is we will publish:
L1 Tx Decoder
We'll need to update the availability oracle to compensate for the new flag.
TxReceipt
We'll add a new
TxStatus
that isREVERTED = 'reverted'
.We need to update
getSettledTxReceipt
to inspect theTxEffect
and set thestatus
accordingly.Test Plan
Unit Tests
TxEffect
in TS and solidity.E2E Tests
REVERTED
in thee2e_fees
,e2e_deploy_contract
, anddapp_testing
.Documentation Plan
Will start a page in the "Data publication and availability" section of the yellow paper describing the format of the block submitted.
Especially Relevant Parties
Plan Approvals
👋 Please add a +1 or comment to express your approval or disapproval of the plan above.