Skip to content
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!: rename storage inclusion proof to historical storage read #5379

Merged
merged 8 commits into from
Mar 22, 2024

Conversation

nventuro
Copy link
Contributor

@nventuro nventuro commented Mar 21, 2024

prove_public_value_inclusion forces the caller to produce and pass a historical public storage value. This is subpar because it introduces an oracle requirement for no good reason - there is only one correct value that can be passed.

This PR renames public_value_inclusion to history::storage, and prove_public_value_inclusion to storage_historical_read. The function now returns the historical storage value, so no oracles are needed. If comparison with some value is required, the caller can still manually do this against the return value (though this seems an unlikely use case).

I also updated slightly some of the docs, added some notes, and liberally touched the tests a little bit. This is another example of how annoying it is to not be able to return anything from a private call (forcing us to to perform the assertion inside noir, which makes the test obscure).

@AztecBot
Copy link
Collaborator

AztecBot commented Mar 21, 2024

Docs Preview

Hey there! 👋 You can check your preview at https://65fdc460622a353cff3fc87b--aztec-docs-dev.netlify.app

@nventuro nventuro marked this pull request as ready for review March 21, 2024 21:49
@nventuro nventuro enabled auto-merge (squash) March 21, 2024 21:49
@AztecBot
Copy link
Collaborator

AztecBot commented Mar 21, 2024

Benchmark results

No metrics with a significant change found.

Detailed results

All benchmarks are run on txs on the Benchmarking contract on the repository. Each tx consists of a batch call to create_note and increment_balance, which guarantees that each tx has a private call, a nested private call, a public call, and a nested public call, as well as an emitted private note, an unencrypted log, and public storage read and write.

This benchmark source data is available in JSON format on S3 here.

Values are compared against data from master at commit 0f09b63d and shown if the difference exceeds 1%.

L2 block published to L1

Each column represents the number of txs on an L2 block published to L1.

Metric 8 txs 32 txs 64 txs
l1_rollup_calldata_size_in_bytes 676 676 676
l1_rollup_calldata_gas 6,388 (-1%) 6,400 (-1%) 6,424
l1_rollup_execution_gas 585,721 (+1%) 585,733 (+1%) 585,757 (+1%)
l2_block_processing_time_in_ms 1,356 (+3%) 4,710 (-3%) 9,018 (-1%)
note_successful_decrypting_time_in_ms 194 521 (-7%) 964 (-7%)
note_trial_decrypting_time_in_ms 97.8 (-5%) 41.6 (-48%) 95.0 (+72%)
l2_block_building_time_in_ms 17,276 (-3%) 65,069 (-3%) 128,973 (-3%)
l2_block_rollup_simulation_time_in_ms 8,032 (-1%) 28,421 (-1%) 56,151
l2_block_public_tx_process_time_in_ms 9,223 (-5%) 36,595 (-5%) 72,725 (-6%)

L2 chain processing

Each column represents the number of blocks on the L2 chain where each block has 16 txs.

Metric 5 blocks 10 blocks
node_history_sync_time_in_ms 13,693 (-4%) 26,375 (-2%)
note_history_successful_decrypting_time_in_ms 1,243 (-1%) 2,396 (-3%)
note_history_trial_decrypting_time_in_ms 89.8 (-8%) 143 (-26%)
node_database_size_in_bytes 18,649,168 34,984,016
pxe_database_size_in_bytes 29,859 59,414

Circuits stats

Stats on running time and I/O sizes collected for every circuit run across all benchmarks.

Circuit circuit_simulation_time_in_ms circuit_input_size_in_bytes circuit_output_size_in_bytes
private-kernel-init 246 (-13%) 44,302 28,181
private-kernel-ordering 212 (-3%) 52,805 14,263
base-parity 1,829 128 311
base-rollup 703 (-2%) 165,724 861 (-7%)
root-parity 1,512 (-6%) 1,244 311
root-rollup 49.9 (-4%) 4,359 (-3%) 725
private-kernel-inner 590 (-10%) 73,644 28,181
public-kernel-app-logic 396 (-9%) 35,164 28,151
public-kernel-tail 171 (-2%) 40,862 28,151
merge-rollup 7.02 (-19%) 2,568 (-5%) 861 (-7%)

Tree insertion stats

The duration to insert a fixed batch of leaves into each tree type.

Metric 1 leaves 16 leaves 64 leaves 128 leaves 512 leaves 1024 leaves 2048 leaves 4096 leaves 32 leaves
batch_insert_into_append_only_tree_16_depth_ms 9.91 (-2%) 15.9 (-1%) N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_count 16.8 31.6 N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_16_depth_hash_ms 0.577 (-2%) 0.491 (-1%) N/A N/A N/A N/A N/A N/A N/A
batch_insert_into_append_only_tree_32_depth_ms N/A N/A 45.4 (-4%) 72.5 232 441 (-3%) 866 1,716 N/A
batch_insert_into_append_only_tree_32_depth_hash_count N/A N/A 96.0 159 543 1,055 2,079 4,127 N/A
batch_insert_into_append_only_tree_32_depth_hash_ms N/A N/A 0.466 (-4%) 0.447 0.422 0.411 (-4%) 0.412 0.412 N/A
batch_insert_into_indexed_tree_20_depth_ms N/A N/A 53.3 (-5%) 106 (-1%) 336 (-1%) 650 (-3%) 1,311 (-1%) 2,612 N/A
batch_insert_into_indexed_tree_20_depth_hash_count N/A N/A 104 207 691 1,363 2,707 5,395 N/A
batch_insert_into_indexed_tree_20_depth_hash_ms N/A N/A 0.474 (-4%) 0.478 0.457 (-1%) 0.447 (-3%) 0.454 0.452 N/A
batch_insert_into_indexed_tree_40_depth_ms N/A N/A N/A N/A N/A N/A N/A N/A 61.1 (-3%)
batch_insert_into_indexed_tree_40_depth_hash_count N/A N/A N/A N/A N/A N/A N/A N/A 109
batch_insert_into_indexed_tree_40_depth_hash_ms N/A N/A N/A N/A N/A N/A N/A N/A 0.534 (-3%)

Miscellaneous

Transaction sizes based on how many contract classes are registered in the tx.

Metric 0 registered classes
tx_size_in_bytes 21,949

Transaction processing duration by data writes.

Metric 0 new note hashes 1 new note hashes
tx_pxe_processing_time_ms 3,069 (-4%) 1,637 (-8%)
Metric 0 public data writes 1 public data writes
tx_sequencer_processing_time_ms 10.5 (-21%) 1,138 (-7%)

@benesjan benesjan disabled auto-merge March 22, 2024 09:49
Copy link
Contributor

@benesjan benesjan left a comment

Choose a reason for hiding this comment

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

It's a nice improvement. Feel free to merge once you address my nits

Copy link
Contributor

@LHerskind LHerskind left a comment

Choose a reason for hiding this comment

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

Few comments on the naming, think it could be more clear that is is public storage.

@nventuro nventuro enabled auto-merge March 22, 2024 17:09
@nventuro nventuro added this pull request to the merge queue Mar 22, 2024
auto-merge was automatically disabled March 22, 2024 18:26

Merge queue setting changed

@ludamad ludamad removed this pull request from the merge queue due to the queue being cleared Mar 22, 2024
@nventuro nventuro merged commit b6e7216 into master Mar 22, 2024
104 checks passed
@nventuro nventuro deleted the nv/historical-api-return branch March 22, 2024 18:27
rahul-kothari pushed a commit that referenced this pull request Mar 26, 2024
🤖 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 -&gt; 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).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this pull request Mar 27, 2024
🤖 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 -&gt; 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).
nventuro added a commit that referenced this pull request Apr 10, 2024
(Large) part of
#4761.

This is an initial implementation of `SharedMutableStorage`, with some
limitations. I think those are best worked on in follow-up PRs, once we
have the bones working.

The bulk of the SharedMutable pattern is in `ScheduledValueChange`, a
pure Noir struct that has all of the block number related logic.
`SharedMutable` then makes a state variable out of that struct, adding
public storage access both in public and private (via historical reads -
see #5379), and using the new `request_max_block_number` function (from
#5251).

I made an effort to test as much as I could of these in Noir, with
partial success in the case of `SharedMutable` due to lack of certain
features, notably noir-lang/noir#4652. There
is also an end-to-end test that goes through two scheuled value changes,
showing that scheduled values do not affect the current one.

I added some inline docs but didn't include proper docsite pages yet so
that we can discuss the implementation, API, etc., and make e.g.
renamings less troublesome.

### Notable implementation details

I chose to make the delay a type parameter instead of a value mostly
because of two reasons:
- it lets us nicely serialize and deserialize `ScheduledValueChange`
without including this field (which we are not currently interested in
storing)
- it lets us declare a state variable of type `SharedMutable<T, DELAY>`
without having to change the signature of the `new` function, which is
automatically injected by the macro.

Overall I think this is fine, especially since we may later make the
delay mutable (see below), but still worth noting.

Additionally, I created a simple `public_storage` module to get slightly
nicer API and encapsulation. This highlighted a Noir issue
(noir-lang/noir#4633), which currently only
affects public historical reads but will also affect current reads once
we migrate to using the AVM opcodes.

### Future work

- #5491
- #5492 (this
takes care of padding during storage slot allocation)
- #5501
- #5493

---------

Co-authored-by: Jan Beneš <[email protected]>
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