-
Notifications
You must be signed in to change notification settings - Fork 236
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(avm): tagged memory #4213
feat(avm): tagged memory #4213
Conversation
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.
Overall pretty happy with this! let me know when its finished up and i can merge!
@@ -0,0 +1,29 @@ | |||
import { FieldValue, Uint8, Uint32 } from './avm_memory_types.js'; | |||
|
|||
describe('Uint8', () => { |
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 assume more tests are coming for this?
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.
Yes (but not in this PR! lmk if you feel strongly). I'm thinking if it makes sense to test everything here (for the types) AND in the arithmetic+bitwise opcodes, or if there's a less verbose way. (note that there will be massive duplication).
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.
Sounds good i can wait until later!
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 contracts are deployed in the tx.
Transaction processing duration by data writes.
|
Some calls to TaggedMemory were using `Fr` since it respected the defined interface. This was too lax, we really only want specific types in memory. We may allow conversion, but we cannot allow just any type that satisfies the interface. Therefore I'm changing this to specific classes. Ref #4213.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.21.0</summary> ## [0.21.0](aztec-packages-v0.20.0...aztec-packages-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * aztec binary ([#3927](#3927)) * add opcode for sha256 compression function ([#4229](#4229)) * add opcode for poseidon2 permutation ([#4214](#4214)) * remove ec_double opcode ([#4210](#4210)) * Updates singleton usage ([#4186](#4186)) * Add big int opcodes (without implementation) ([#4050](#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([#3881](#3881)) ([457a3f9](457a3f9)), closes [#3996](#3996) * Accrued substate instructions ([#4197](#4197)) ([bfe30d2](bfe30d2)) * Add big int opcodes (without implementation) ([#4050](#4050)) ([bcab9ce](bcab9ce)) * Add comparators to get/view note ([#3136](#3136)) ([#4205](#4205)) ([6de36b3](6de36b3)) * Add inclusion check l1->l2 ([#4141](#4141)) ([bef65c3](bef65c3)) * Add opcode for poseidon2 permutation ([#4214](#4214)) ([53c5ba5](53c5ba5)) * Add opcode for sha256 compression function ([#4229](#4229)) ([ac25ff7](ac25ff7)) * Adding slither to l1-contracts ([#4226](#4226)) ([b4dc31d](b4dc31d)) * **avm:** Add tests for memory and bitwise instructions ([#4184](#4184)) ([6dac650](6dac650)) * **avm:** Bytecode avm control flow ([#4253](#4253)) ([fb1d742](fb1d742)), closes [#4209](#4209) * **avm:** Bytecode parsing and proof generation ([#4191](#4191)) ([6c70548](6c70548)), closes [#3791](#3791) * **avm:** Environment getters ([#4203](#4203)) ([60d2377](60d2377)) * **avm:** Implement comparator opcodes ([#4232](#4232)) ([973ff2f](973ff2f)) * **avm:** Initial external calls ([#4194](#4194)) ([d8aa966](d8aa966)) * **avm:** Link up storage ([#4150](#4150)) ([3e86870](3e86870)) * **avm:** Revert instruction ([#4206](#4206)) ([bd6e797](bd6e797)) * **avm:** Tagged memory ([#4213](#4213)) ([e5ff2f6](e5ff2f6)) * Aztec binary ([#3927](#3927)) ([12356d9](12356d9)) * Contract classes and instances ([#4192](#4192)) ([1858126](1858126)), closes [#4053](#4053) * Deserialize AztecAddress when contract's view function returns it in Aztec.js [#3641](#3641) ([#4224](#4224)) ([11f400f](11f400f)) * **docs:** DIP1: Extract Explanations ([#4228](#4228)) ([3b25737](3b25737)) * **docs:** Historical trees docs ([#3895](#3895)) ([8c3efba](8c3efba)) * **docs:** PXE docs ([#4021](#4021)) ([a656034](a656034)) * Implement bigint in Noir, using bigint opcodes ([#4198](#4198)) ([3720415](3720415)) * Implement Embedded EC add and double opcodes ([#3982](#3982)) ([ccb7bff](ccb7bff)) * Limit exposed functions on note utils ([#4207](#4207)) ([8338f39](8338f39)) * Nullifier key validation ([#4176](#4176)) ([1c72c0d](1c72c0d)) * Produce graph of internal Barretenberg dependencies ([#4225](#4225)) ([88e7923](88e7923)) * Recursive folding and decider verifier for Protogalaxy ([#4156](#4156)) ([9342048](9342048)) * Remove ec_double opcode ([#4210](#4210)) ([75f26c4](75f26c4)) * Replace single bit range constraints with basic bool gates ([#4164](#4164)) ([0a3553b](0a3553b)) * Updates singleton usage ([#4186](#4186)) ([301f0e6](301f0e6)) ### Bug Fixes * **avm:** Fix usage of Fr with tagged memory ([#4240](#4240)) ([b82e70c](b82e70c)) * **bb:** .gitignore ([#4201](#4201)) ([a56e418](a56e418)) * **docs:** Add missing deps to token tutorial references ([#4265](#4265)) ([d7e2d9c](d7e2d9c)) * Generic Honk dependencies ([#4239](#4239)) ([382dfbe](382dfbe)) ### Miscellaneous * Add note getter test to cci ([#4236](#4236)) ([e1184ff](e1184ff)) * **avm-simulator:** Cleanup, tags as first instruction constructor args ([#4244](#4244)) ([e46b865](e46b865)) * **avm:** Remove the state manager in favour of journal ([#4195](#4195)) ([40f9324](40f9324)) * **bb:** Rearrange namespaces ([#4147](#4147)) ([5de0a8e](5de0a8e)) * Cleaning up circuits test setup ([#4235](#4235)) ([fa6915a](fa6915a)), closes [#4237](#4237) * Delete C++ PK circuits ([#4219](#4219)) ([9136d32](9136d32)) * Delete MemoryDB ([#4241](#4241)) ([9e6250a](9e6250a)) * **docs:** Fix a few links to docs ([#4260](#4260)) ([1c8ea49](1c8ea49)) * **docs:** Fix autogen docs ([#4261](#4261)) ([3b9927a](3b9927a)) * **docs:** Fix public and private storage not in docs ([#4257](#4257)) ([48ceafd](48ceafd)) * **docs:** Fix token bridge tutorial ([#3935](#3935)) ([84c9fdb](84c9fdb)) * **docs:** Split contract storage pages ([#4202](#4202)) ([1e05f33](1e05f33)) * Fix typo in yellow paper ([#4247](#4247)) ([ac82e6b](ac82e6b)) * Fixes test file from [#4205](#4205) ([#4216](#4216)) ([18a9b72](18a9b72)) * Git subrepo pull (merge) noir ([#4252](#4252)) ([80be57d](80be57d)) * Nuking old `BlockHeader` ([#4154](#4154)) ([997791a](997791a)), closes [#3937](#3937) [#3564](#3564) [#4134](#4134) * Remove flaky e2e p2p test ([#4181](#4181)) ([688e4af](688e4af)) * Remove mandatory jsdoc ([#4180](#4180)) ([9625b43](9625b43)), closes [#3860](#3860) * Remove stubbed docs ([#4196](#4196)) ([25a4bc4](25a4bc4)) * Replace leveldb with lmdb for merkle trees ([#4119](#4119)) ([84967b2](84967b2)), closes [#3362](#3362) * Replace relative paths to noir-protocol-circuits ([a9839a8](a9839a8)) * Replace relative paths to noir-protocol-circuits ([2ef6e56](2ef6e56)) * Replace relative paths to noir-protocol-circuits ([426c17d](426c17d)) * Replace relative paths to noir-protocol-circuits ([12adb71](12adb71)) * Replace relative paths to noir-protocol-circuits ([fcd048d](fcd048d)) * Unifying Header serialization accross domains ([#4230](#4230)) ([92080a0](92080a0)) * Update .gitrepo with correct parent hash ([#4279](#4279)) ([9253c8a](9253c8a)) ### Documentation * **bb:** How to use docker_interactive.sh ([#4220](#4220)) ([f44c6b1](f44c6b1)) * Update welcome page and dev pages ([#4143](#4143)) ([d2a86ff](d2a86ff)) </details> <details><summary>barretenberg.js: 0.21.0</summary> ## [0.21.0](barretenberg.js-v0.20.0...barretenberg.js-v0.21.0) (2024-01-30) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>barretenberg: 0.21.0</summary> ## [0.21.0](barretenberg-v0.20.0...barretenberg-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * add opcode for sha256 compression function ([#4229](#4229)) * add opcode for poseidon2 permutation ([#4214](#4214)) * remove ec_double opcode ([#4210](#4210)) * Add big int opcodes (without implementation) ([#4050](#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([#3881](#3881)) ([457a3f9](457a3f9)), closes [#3996](#3996) * Add big int opcodes (without implementation) ([#4050](#4050)) ([bcab9ce](bcab9ce)) * Add opcode for poseidon2 permutation ([#4214](#4214)) ([53c5ba5](53c5ba5)) * Add opcode for sha256 compression function ([#4229](#4229)) ([ac25ff7](ac25ff7)) * **avm:** Bytecode avm control flow ([#4253](#4253)) ([fb1d742](fb1d742)), closes [#4209](#4209) * **avm:** Bytecode parsing and proof generation ([#4191](#4191)) ([6c70548](6c70548)), closes [#3791](#3791) * Implement Embedded EC add and double opcodes ([#3982](#3982)) ([ccb7bff](ccb7bff)) * Produce graph of internal Barretenberg dependencies ([#4225](#4225)) ([88e7923](88e7923)) * Recursive folding and decider verifier for Protogalaxy ([#4156](#4156)) ([9342048](9342048)) * Remove ec_double opcode ([#4210](#4210)) ([75f26c4](75f26c4)) * Replace single bit range constraints with basic bool gates ([#4164](#4164)) ([0a3553b](0a3553b)) ### Bug Fixes * **bb:** .gitignore ([#4201](#4201)) ([a56e418](a56e418)) * Generic Honk dependencies ([#4239](#4239)) ([382dfbe](382dfbe)) ### Miscellaneous * **bb:** Rearrange namespaces ([#4147](#4147)) ([5de0a8e](5de0a8e)) * Delete C++ PK circuits ([#4219](#4219)) ([9136d32](9136d32)) ### Documentation * **bb:** How to use docker_interactive.sh ([#4220](#4220)) ([f44c6b1](f44c6b1)) </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-packages: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@aztec-packages-v0.20.0...aztec-packages-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * aztec binary ([#3927](AztecProtocol/aztec-packages#3927)) * add opcode for sha256 compression function ([#4229](AztecProtocol/aztec-packages#4229)) * add opcode for poseidon2 permutation ([#4214](AztecProtocol/aztec-packages#4214)) * remove ec_double opcode ([#4210](AztecProtocol/aztec-packages#4210)) * Updates singleton usage ([#4186](AztecProtocol/aztec-packages#4186)) * Add big int opcodes (without implementation) ([#4050](AztecProtocol/aztec-packages#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([#3881](AztecProtocol/aztec-packages#3881)) ([457a3f9](AztecProtocol/aztec-packages@457a3f9)), closes [#3996](AztecProtocol/aztec-packages#3996) * Accrued substate instructions ([#4197](AztecProtocol/aztec-packages#4197)) ([bfe30d2](AztecProtocol/aztec-packages@bfe30d2)) * Add big int opcodes (without implementation) ([#4050](AztecProtocol/aztec-packages#4050)) ([bcab9ce](AztecProtocol/aztec-packages@bcab9ce)) * Add comparators to get/view note ([#3136](AztecProtocol/aztec-packages#3136)) ([#4205](AztecProtocol/aztec-packages#4205)) ([6de36b3](AztecProtocol/aztec-packages@6de36b3)) * Add inclusion check l1->l2 ([#4141](AztecProtocol/aztec-packages#4141)) ([bef65c3](AztecProtocol/aztec-packages@bef65c3)) * Add opcode for poseidon2 permutation ([#4214](AztecProtocol/aztec-packages#4214)) ([53c5ba5](AztecProtocol/aztec-packages@53c5ba5)) * Add opcode for sha256 compression function ([#4229](AztecProtocol/aztec-packages#4229)) ([ac25ff7](AztecProtocol/aztec-packages@ac25ff7)) * Adding slither to l1-contracts ([#4226](AztecProtocol/aztec-packages#4226)) ([b4dc31d](AztecProtocol/aztec-packages@b4dc31d)) * **avm:** Add tests for memory and bitwise instructions ([#4184](AztecProtocol/aztec-packages#4184)) ([6dac650](AztecProtocol/aztec-packages@6dac650)) * **avm:** Bytecode avm control flow ([#4253](AztecProtocol/aztec-packages#4253)) ([fb1d742](AztecProtocol/aztec-packages@fb1d742)), closes [#4209](AztecProtocol/aztec-packages#4209) * **avm:** Bytecode parsing and proof generation ([#4191](AztecProtocol/aztec-packages#4191)) ([6c70548](AztecProtocol/aztec-packages@6c70548)), closes [#3791](AztecProtocol/aztec-packages#3791) * **avm:** Environment getters ([#4203](AztecProtocol/aztec-packages#4203)) ([60d2377](AztecProtocol/aztec-packages@60d2377)) * **avm:** Implement comparator opcodes ([#4232](AztecProtocol/aztec-packages#4232)) ([973ff2f](AztecProtocol/aztec-packages@973ff2f)) * **avm:** Initial external calls ([#4194](AztecProtocol/aztec-packages#4194)) ([d8aa966](AztecProtocol/aztec-packages@d8aa966)) * **avm:** Link up storage ([#4150](AztecProtocol/aztec-packages#4150)) ([3e86870](AztecProtocol/aztec-packages@3e86870)) * **avm:** Revert instruction ([#4206](AztecProtocol/aztec-packages#4206)) ([bd6e797](AztecProtocol/aztec-packages@bd6e797)) * **avm:** Tagged memory ([#4213](AztecProtocol/aztec-packages#4213)) ([e5ff2f6](AztecProtocol/aztec-packages@e5ff2f6)) * Aztec binary ([#3927](AztecProtocol/aztec-packages#3927)) ([12356d9](AztecProtocol/aztec-packages@12356d9)) * Contract classes and instances ([#4192](AztecProtocol/aztec-packages#4192)) ([1858126](AztecProtocol/aztec-packages@1858126)), closes [#4053](AztecProtocol/aztec-packages#4053) * Deserialize AztecAddress when contract's view function returns it in Aztec.js [#3641](AztecProtocol/aztec-packages#3641) ([#4224](AztecProtocol/aztec-packages#4224)) ([11f400f](AztecProtocol/aztec-packages@11f400f)) * **docs:** DIP1: Extract Explanations ([#4228](AztecProtocol/aztec-packages#4228)) ([3b25737](AztecProtocol/aztec-packages@3b25737)) * **docs:** Historical trees docs ([#3895](AztecProtocol/aztec-packages#3895)) ([8c3efba](AztecProtocol/aztec-packages@8c3efba)) * **docs:** PXE docs ([#4021](AztecProtocol/aztec-packages#4021)) ([a656034](AztecProtocol/aztec-packages@a656034)) * Implement bigint in Noir, using bigint opcodes ([#4198](AztecProtocol/aztec-packages#4198)) ([3720415](AztecProtocol/aztec-packages@3720415)) * Implement Embedded EC add and double opcodes ([#3982](AztecProtocol/aztec-packages#3982)) ([ccb7bff](AztecProtocol/aztec-packages@ccb7bff)) * Limit exposed functions on note utils ([#4207](AztecProtocol/aztec-packages#4207)) ([8338f39](AztecProtocol/aztec-packages@8338f39)) * Nullifier key validation ([#4176](AztecProtocol/aztec-packages#4176)) ([1c72c0d](AztecProtocol/aztec-packages@1c72c0d)) * Produce graph of internal Barretenberg dependencies ([#4225](AztecProtocol/aztec-packages#4225)) ([88e7923](AztecProtocol/aztec-packages@88e7923)) * Recursive folding and decider verifier for Protogalaxy ([#4156](AztecProtocol/aztec-packages#4156)) ([9342048](AztecProtocol/aztec-packages@9342048)) * Remove ec_double opcode ([#4210](AztecProtocol/aztec-packages#4210)) ([75f26c4](AztecProtocol/aztec-packages@75f26c4)) * Replace single bit range constraints with basic bool gates ([#4164](AztecProtocol/aztec-packages#4164)) ([0a3553b](AztecProtocol/aztec-packages@0a3553b)) * Updates singleton usage ([#4186](AztecProtocol/aztec-packages#4186)) ([301f0e6](AztecProtocol/aztec-packages@301f0e6)) ### Bug Fixes * **avm:** Fix usage of Fr with tagged memory ([#4240](AztecProtocol/aztec-packages#4240)) ([b82e70c](AztecProtocol/aztec-packages@b82e70c)) * **bb:** .gitignore ([#4201](AztecProtocol/aztec-packages#4201)) ([a56e418](AztecProtocol/aztec-packages@a56e418)) * **docs:** Add missing deps to token tutorial references ([#4265](AztecProtocol/aztec-packages#4265)) ([d7e2d9c](AztecProtocol/aztec-packages@d7e2d9c)) * Generic Honk dependencies ([#4239](AztecProtocol/aztec-packages#4239)) ([382dfbe](AztecProtocol/aztec-packages@382dfbe)) ### Miscellaneous * Add note getter test to cci ([#4236](AztecProtocol/aztec-packages#4236)) ([e1184ff](AztecProtocol/aztec-packages@e1184ff)) * **avm-simulator:** Cleanup, tags as first instruction constructor args ([#4244](AztecProtocol/aztec-packages#4244)) ([e46b865](AztecProtocol/aztec-packages@e46b865)) * **avm:** Remove the state manager in favour of journal ([#4195](AztecProtocol/aztec-packages#4195)) ([40f9324](AztecProtocol/aztec-packages@40f9324)) * **bb:** Rearrange namespaces ([#4147](AztecProtocol/aztec-packages#4147)) ([5de0a8e](AztecProtocol/aztec-packages@5de0a8e)) * Cleaning up circuits test setup ([#4235](AztecProtocol/aztec-packages#4235)) ([fa6915a](AztecProtocol/aztec-packages@fa6915a)), closes [#4237](AztecProtocol/aztec-packages#4237) * Delete C++ PK circuits ([#4219](AztecProtocol/aztec-packages#4219)) ([9136d32](AztecProtocol/aztec-packages@9136d32)) * Delete MemoryDB ([#4241](AztecProtocol/aztec-packages#4241)) ([9e6250a](AztecProtocol/aztec-packages@9e6250a)) * **docs:** Fix a few links to docs ([#4260](AztecProtocol/aztec-packages#4260)) ([1c8ea49](AztecProtocol/aztec-packages@1c8ea49)) * **docs:** Fix autogen docs ([#4261](AztecProtocol/aztec-packages#4261)) ([3b9927a](AztecProtocol/aztec-packages@3b9927a)) * **docs:** Fix public and private storage not in docs ([#4257](AztecProtocol/aztec-packages#4257)) ([48ceafd](AztecProtocol/aztec-packages@48ceafd)) * **docs:** Fix token bridge tutorial ([#3935](AztecProtocol/aztec-packages#3935)) ([84c9fdb](AztecProtocol/aztec-packages@84c9fdb)) * **docs:** Split contract storage pages ([#4202](AztecProtocol/aztec-packages#4202)) ([1e05f33](AztecProtocol/aztec-packages@1e05f33)) * Fix typo in yellow paper ([#4247](AztecProtocol/aztec-packages#4247)) ([ac82e6b](AztecProtocol/aztec-packages@ac82e6b)) * Fixes test file from [#4205](AztecProtocol/aztec-packages#4205) ([#4216](AztecProtocol/aztec-packages#4216)) ([18a9b72](AztecProtocol/aztec-packages@18a9b72)) * Git subrepo pull (merge) noir ([#4252](AztecProtocol/aztec-packages#4252)) ([80be57d](AztecProtocol/aztec-packages@80be57d)) * Nuking old `BlockHeader` ([#4154](AztecProtocol/aztec-packages#4154)) ([997791a](AztecProtocol/aztec-packages@997791a)), closes [#3937](AztecProtocol/aztec-packages#3937) [#3564](AztecProtocol/aztec-packages#3564) [#4134](AztecProtocol/aztec-packages#4134) * Remove flaky e2e p2p test ([#4181](AztecProtocol/aztec-packages#4181)) ([688e4af](AztecProtocol/aztec-packages@688e4af)) * Remove mandatory jsdoc ([#4180](AztecProtocol/aztec-packages#4180)) ([9625b43](AztecProtocol/aztec-packages@9625b43)), closes [#3860](AztecProtocol/aztec-packages#3860) * Remove stubbed docs ([#4196](AztecProtocol/aztec-packages#4196)) ([25a4bc4](AztecProtocol/aztec-packages@25a4bc4)) * Replace leveldb with lmdb for merkle trees ([#4119](AztecProtocol/aztec-packages#4119)) ([84967b2](AztecProtocol/aztec-packages@84967b2)), closes [#3362](AztecProtocol/aztec-packages#3362) * Replace relative paths to noir-protocol-circuits ([a9839a8](AztecProtocol/aztec-packages@a9839a8)) * Replace relative paths to noir-protocol-circuits ([2ef6e56](AztecProtocol/aztec-packages@2ef6e56)) * Replace relative paths to noir-protocol-circuits ([426c17d](AztecProtocol/aztec-packages@426c17d)) * Replace relative paths to noir-protocol-circuits ([12adb71](AztecProtocol/aztec-packages@12adb71)) * Replace relative paths to noir-protocol-circuits ([fcd048d](AztecProtocol/aztec-packages@fcd048d)) * Unifying Header serialization accross domains ([#4230](AztecProtocol/aztec-packages#4230)) ([92080a0](AztecProtocol/aztec-packages@92080a0)) * Update .gitrepo with correct parent hash ([#4279](AztecProtocol/aztec-packages#4279)) ([9253c8a](AztecProtocol/aztec-packages@9253c8a)) ### Documentation * **bb:** How to use docker_interactive.sh ([#4220](AztecProtocol/aztec-packages#4220)) ([f44c6b1](AztecProtocol/aztec-packages@f44c6b1)) * Update welcome page and dev pages ([#4143](AztecProtocol/aztec-packages#4143)) ([d2a86ff](AztecProtocol/aztec-packages@d2a86ff)) </details> <details><summary>barretenberg.js: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@barretenberg.js-v0.20.0...barretenberg.js-v0.21.0) (2024-01-30) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>barretenberg: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@barretenberg-v0.20.0...barretenberg-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * add opcode for sha256 compression function ([#4229](AztecProtocol/aztec-packages#4229)) * add opcode for poseidon2 permutation ([#4214](AztecProtocol/aztec-packages#4214)) * remove ec_double opcode ([#4210](AztecProtocol/aztec-packages#4210)) * Add big int opcodes (without implementation) ([#4050](AztecProtocol/aztec-packages#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([#3881](AztecProtocol/aztec-packages#3881)) ([457a3f9](AztecProtocol/aztec-packages@457a3f9)), closes [#3996](AztecProtocol/aztec-packages#3996) * Add big int opcodes (without implementation) ([#4050](AztecProtocol/aztec-packages#4050)) ([bcab9ce](AztecProtocol/aztec-packages@bcab9ce)) * Add opcode for poseidon2 permutation ([#4214](AztecProtocol/aztec-packages#4214)) ([53c5ba5](AztecProtocol/aztec-packages@53c5ba5)) * Add opcode for sha256 compression function ([#4229](AztecProtocol/aztec-packages#4229)) ([ac25ff7](AztecProtocol/aztec-packages@ac25ff7)) * **avm:** Bytecode avm control flow ([#4253](AztecProtocol/aztec-packages#4253)) ([fb1d742](AztecProtocol/aztec-packages@fb1d742)), closes [#4209](AztecProtocol/aztec-packages#4209) * **avm:** Bytecode parsing and proof generation ([#4191](AztecProtocol/aztec-packages#4191)) ([6c70548](AztecProtocol/aztec-packages@6c70548)), closes [#3791](AztecProtocol/aztec-packages#3791) * Implement Embedded EC add and double opcodes ([#3982](AztecProtocol/aztec-packages#3982)) ([ccb7bff](AztecProtocol/aztec-packages@ccb7bff)) * Produce graph of internal Barretenberg dependencies ([#4225](AztecProtocol/aztec-packages#4225)) ([88e7923](AztecProtocol/aztec-packages@88e7923)) * Recursive folding and decider verifier for Protogalaxy ([#4156](AztecProtocol/aztec-packages#4156)) ([9342048](AztecProtocol/aztec-packages@9342048)) * Remove ec_double opcode ([#4210](AztecProtocol/aztec-packages#4210)) ([75f26c4](AztecProtocol/aztec-packages@75f26c4)) * Replace single bit range constraints with basic bool gates ([#4164](AztecProtocol/aztec-packages#4164)) ([0a3553b](AztecProtocol/aztec-packages@0a3553b)) ### Bug Fixes * **bb:** .gitignore ([#4201](AztecProtocol/aztec-packages#4201)) ([a56e418](AztecProtocol/aztec-packages@a56e418)) * Generic Honk dependencies ([#4239](AztecProtocol/aztec-packages#4239)) ([382dfbe](AztecProtocol/aztec-packages@382dfbe)) ### Miscellaneous * **bb:** Rearrange namespaces ([#4147](AztecProtocol/aztec-packages#4147)) ([5de0a8e](AztecProtocol/aztec-packages@5de0a8e)) * Delete C++ PK circuits ([#4219](AztecProtocol/aztec-packages#4219)) ([9136d32](AztecProtocol/aztec-packages@9136d32)) ### Documentation * **bb:** How to use docker_interactive.sh ([#4220](AztecProtocol/aztec-packages#4220)) ([f44c6b1](AztecProtocol/aztec-packages@f44c6b1)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
- Added tagged memory model for public VM - Updated opcodes and tests to pass Some things still missing - Checking in/dstTag in most opcodes - Default values for uninitialized memory (had a discussion with @Maddiaa0 for now this is good and might be ok long term but we need to double check) - Of course addressing modes, etc
Some calls to TaggedMemory were using `Fr` since it respected the defined interface. This was too lax, we really only want specific types in memory. We may allow conversion, but we cannot allow just any type that satisfies the interface. Therefore I'm changing this to specific classes. Ref AztecProtocol#4213.
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@aztec-packages-v0.20.0...aztec-packages-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * aztec binary ([AztecProtocol#3927](AztecProtocol#3927)) * add opcode for sha256 compression function ([AztecProtocol#4229](AztecProtocol#4229)) * add opcode for poseidon2 permutation ([AztecProtocol#4214](AztecProtocol#4214)) * remove ec_double opcode ([AztecProtocol#4210](AztecProtocol#4210)) * Updates singleton usage ([AztecProtocol#4186](AztecProtocol#4186)) * Add big int opcodes (without implementation) ([AztecProtocol#4050](AztecProtocol#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([AztecProtocol#3881](AztecProtocol#3881)) ([457a3f9](AztecProtocol@457a3f9)), closes [AztecProtocol#3996](AztecProtocol#3996) * Accrued substate instructions ([AztecProtocol#4197](AztecProtocol#4197)) ([bfe30d2](AztecProtocol@bfe30d2)) * Add big int opcodes (without implementation) ([AztecProtocol#4050](AztecProtocol#4050)) ([bcab9ce](AztecProtocol@bcab9ce)) * Add comparators to get/view note ([AztecProtocol#3136](AztecProtocol#3136)) ([AztecProtocol#4205](AztecProtocol#4205)) ([6de36b3](AztecProtocol@6de36b3)) * Add inclusion check l1->l2 ([AztecProtocol#4141](AztecProtocol#4141)) ([bef65c3](AztecProtocol@bef65c3)) * Add opcode for poseidon2 permutation ([AztecProtocol#4214](AztecProtocol#4214)) ([53c5ba5](AztecProtocol@53c5ba5)) * Add opcode for sha256 compression function ([AztecProtocol#4229](AztecProtocol#4229)) ([ac25ff7](AztecProtocol@ac25ff7)) * Adding slither to l1-contracts ([AztecProtocol#4226](AztecProtocol#4226)) ([b4dc31d](AztecProtocol@b4dc31d)) * **avm:** Add tests for memory and bitwise instructions ([AztecProtocol#4184](AztecProtocol#4184)) ([6dac650](AztecProtocol@6dac650)) * **avm:** Bytecode avm control flow ([AztecProtocol#4253](AztecProtocol#4253)) ([fb1d742](AztecProtocol@fb1d742)), closes [AztecProtocol#4209](AztecProtocol#4209) * **avm:** Bytecode parsing and proof generation ([AztecProtocol#4191](AztecProtocol#4191)) ([6c70548](AztecProtocol@6c70548)), closes [AztecProtocol#3791](AztecProtocol#3791) * **avm:** Environment getters ([AztecProtocol#4203](AztecProtocol#4203)) ([60d2377](AztecProtocol@60d2377)) * **avm:** Implement comparator opcodes ([AztecProtocol#4232](AztecProtocol#4232)) ([973ff2f](AztecProtocol@973ff2f)) * **avm:** Initial external calls ([AztecProtocol#4194](AztecProtocol#4194)) ([d8aa966](AztecProtocol@d8aa966)) * **avm:** Link up storage ([AztecProtocol#4150](AztecProtocol#4150)) ([3e86870](AztecProtocol@3e86870)) * **avm:** Revert instruction ([AztecProtocol#4206](AztecProtocol#4206)) ([bd6e797](AztecProtocol@bd6e797)) * **avm:** Tagged memory ([AztecProtocol#4213](AztecProtocol#4213)) ([e5ff2f6](AztecProtocol@e5ff2f6)) * Aztec binary ([AztecProtocol#3927](AztecProtocol#3927)) ([12356d9](AztecProtocol@12356d9)) * Contract classes and instances ([AztecProtocol#4192](AztecProtocol#4192)) ([1858126](AztecProtocol@1858126)), closes [AztecProtocol#4053](AztecProtocol#4053) * Deserialize AztecAddress when contract's view function returns it in Aztec.js [AztecProtocol#3641](AztecProtocol#3641) ([AztecProtocol#4224](AztecProtocol#4224)) ([11f400f](AztecProtocol@11f400f)) * **docs:** DIP1: Extract Explanations ([AztecProtocol#4228](AztecProtocol#4228)) ([3b25737](AztecProtocol@3b25737)) * **docs:** Historical trees docs ([AztecProtocol#3895](AztecProtocol#3895)) ([8c3efba](AztecProtocol@8c3efba)) * **docs:** PXE docs ([AztecProtocol#4021](AztecProtocol#4021)) ([a656034](AztecProtocol@a656034)) * Implement bigint in Noir, using bigint opcodes ([AztecProtocol#4198](AztecProtocol#4198)) ([3720415](AztecProtocol@3720415)) * Implement Embedded EC add and double opcodes ([AztecProtocol#3982](AztecProtocol#3982)) ([ccb7bff](AztecProtocol@ccb7bff)) * Limit exposed functions on note utils ([AztecProtocol#4207](AztecProtocol#4207)) ([8338f39](AztecProtocol@8338f39)) * Nullifier key validation ([AztecProtocol#4176](AztecProtocol#4176)) ([1c72c0d](AztecProtocol@1c72c0d)) * Produce graph of internal Barretenberg dependencies ([AztecProtocol#4225](AztecProtocol#4225)) ([88e7923](AztecProtocol@88e7923)) * Recursive folding and decider verifier for Protogalaxy ([AztecProtocol#4156](AztecProtocol#4156)) ([9342048](AztecProtocol@9342048)) * Remove ec_double opcode ([AztecProtocol#4210](AztecProtocol#4210)) ([75f26c4](AztecProtocol@75f26c4)) * Replace single bit range constraints with basic bool gates ([AztecProtocol#4164](AztecProtocol#4164)) ([0a3553b](AztecProtocol@0a3553b)) * Updates singleton usage ([AztecProtocol#4186](AztecProtocol#4186)) ([301f0e6](AztecProtocol@301f0e6)) ### Bug Fixes * **avm:** Fix usage of Fr with tagged memory ([AztecProtocol#4240](AztecProtocol#4240)) ([b82e70c](AztecProtocol@b82e70c)) * **bb:** .gitignore ([AztecProtocol#4201](AztecProtocol#4201)) ([a56e418](AztecProtocol@a56e418)) * **docs:** Add missing deps to token tutorial references ([AztecProtocol#4265](AztecProtocol#4265)) ([d7e2d9c](AztecProtocol@d7e2d9c)) * Generic Honk dependencies ([AztecProtocol#4239](AztecProtocol#4239)) ([382dfbe](AztecProtocol@382dfbe)) ### Miscellaneous * Add note getter test to cci ([AztecProtocol#4236](AztecProtocol#4236)) ([e1184ff](AztecProtocol@e1184ff)) * **avm-simulator:** Cleanup, tags as first instruction constructor args ([AztecProtocol#4244](AztecProtocol#4244)) ([e46b865](AztecProtocol@e46b865)) * **avm:** Remove the state manager in favour of journal ([AztecProtocol#4195](AztecProtocol#4195)) ([40f9324](AztecProtocol@40f9324)) * **bb:** Rearrange namespaces ([AztecProtocol#4147](AztecProtocol#4147)) ([5de0a8e](AztecProtocol@5de0a8e)) * Cleaning up circuits test setup ([AztecProtocol#4235](AztecProtocol#4235)) ([fa6915a](AztecProtocol@fa6915a)), closes [AztecProtocol#4237](AztecProtocol#4237) * Delete C++ PK circuits ([AztecProtocol#4219](AztecProtocol#4219)) ([9136d32](AztecProtocol@9136d32)) * Delete MemoryDB ([AztecProtocol#4241](AztecProtocol#4241)) ([9e6250a](AztecProtocol@9e6250a)) * **docs:** Fix a few links to docs ([AztecProtocol#4260](AztecProtocol#4260)) ([1c8ea49](AztecProtocol@1c8ea49)) * **docs:** Fix autogen docs ([AztecProtocol#4261](AztecProtocol#4261)) ([3b9927a](AztecProtocol@3b9927a)) * **docs:** Fix public and private storage not in docs ([AztecProtocol#4257](AztecProtocol#4257)) ([48ceafd](AztecProtocol@48ceafd)) * **docs:** Fix token bridge tutorial ([AztecProtocol#3935](AztecProtocol#3935)) ([84c9fdb](AztecProtocol@84c9fdb)) * **docs:** Split contract storage pages ([AztecProtocol#4202](AztecProtocol#4202)) ([1e05f33](AztecProtocol@1e05f33)) * Fix typo in yellow paper ([AztecProtocol#4247](AztecProtocol#4247)) ([ac82e6b](AztecProtocol@ac82e6b)) * Fixes test file from [AztecProtocol#4205](AztecProtocol#4205) ([AztecProtocol#4216](AztecProtocol#4216)) ([18a9b72](AztecProtocol@18a9b72)) * Git subrepo pull (merge) noir ([AztecProtocol#4252](AztecProtocol#4252)) ([80be57d](AztecProtocol@80be57d)) * Nuking old `BlockHeader` ([AztecProtocol#4154](AztecProtocol#4154)) ([997791a](AztecProtocol@997791a)), closes [AztecProtocol#3937](AztecProtocol#3937) [AztecProtocol#3564](AztecProtocol#3564) [AztecProtocol#4134](AztecProtocol#4134) * Remove flaky e2e p2p test ([AztecProtocol#4181](AztecProtocol#4181)) ([688e4af](AztecProtocol@688e4af)) * Remove mandatory jsdoc ([AztecProtocol#4180](AztecProtocol#4180)) ([9625b43](AztecProtocol@9625b43)), closes [AztecProtocol#3860](AztecProtocol#3860) * Remove stubbed docs ([AztecProtocol#4196](AztecProtocol#4196)) ([25a4bc4](AztecProtocol@25a4bc4)) * Replace leveldb with lmdb for merkle trees ([AztecProtocol#4119](AztecProtocol#4119)) ([84967b2](AztecProtocol@84967b2)), closes [AztecProtocol#3362](AztecProtocol#3362) * Replace relative paths to noir-protocol-circuits ([a9839a8](AztecProtocol@a9839a8)) * Replace relative paths to noir-protocol-circuits ([2ef6e56](AztecProtocol@2ef6e56)) * Replace relative paths to noir-protocol-circuits ([426c17d](AztecProtocol@426c17d)) * Replace relative paths to noir-protocol-circuits ([12adb71](AztecProtocol@12adb71)) * Replace relative paths to noir-protocol-circuits ([fcd048d](AztecProtocol@fcd048d)) * Unifying Header serialization accross domains ([AztecProtocol#4230](AztecProtocol#4230)) ([92080a0](AztecProtocol@92080a0)) * Update .gitrepo with correct parent hash ([AztecProtocol#4279](AztecProtocol#4279)) ([9253c8a](AztecProtocol@9253c8a)) ### Documentation * **bb:** How to use docker_interactive.sh ([AztecProtocol#4220](AztecProtocol#4220)) ([f44c6b1](AztecProtocol@f44c6b1)) * Update welcome page and dev pages ([AztecProtocol#4143](AztecProtocol#4143)) ([d2a86ff](AztecProtocol@d2a86ff)) </details> <details><summary>barretenberg.js: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@barretenberg.js-v0.20.0...barretenberg.js-v0.21.0) (2024-01-30) ### Miscellaneous * **barretenberg.js:** Synchronize aztec-packages versions </details> <details><summary>barretenberg: 0.21.0</summary> ## [0.21.0](AztecProtocol/aztec-packages@barretenberg-v0.20.0...barretenberg-v0.21.0) (2024-01-30) ### ⚠ BREAKING CHANGES * add opcode for sha256 compression function ([AztecProtocol#4229](AztecProtocol#4229)) * add opcode for poseidon2 permutation ([AztecProtocol#4214](AztecProtocol#4214)) * remove ec_double opcode ([AztecProtocol#4210](AztecProtocol#4210)) * Add big int opcodes (without implementation) ([AztecProtocol#4050](AztecProtocol#4050)) ### Features * **3738:** AVM basic arithmetic operations for non ff types ([AztecProtocol#3881](AztecProtocol#3881)) ([457a3f9](AztecProtocol@457a3f9)), closes [AztecProtocol#3996](AztecProtocol#3996) * Add big int opcodes (without implementation) ([AztecProtocol#4050](AztecProtocol#4050)) ([bcab9ce](AztecProtocol@bcab9ce)) * Add opcode for poseidon2 permutation ([AztecProtocol#4214](AztecProtocol#4214)) ([53c5ba5](AztecProtocol@53c5ba5)) * Add opcode for sha256 compression function ([AztecProtocol#4229](AztecProtocol#4229)) ([ac25ff7](AztecProtocol@ac25ff7)) * **avm:** Bytecode avm control flow ([AztecProtocol#4253](AztecProtocol#4253)) ([fb1d742](AztecProtocol@fb1d742)), closes [AztecProtocol#4209](AztecProtocol#4209) * **avm:** Bytecode parsing and proof generation ([AztecProtocol#4191](AztecProtocol#4191)) ([6c70548](AztecProtocol@6c70548)), closes [AztecProtocol#3791](AztecProtocol#3791) * Implement Embedded EC add and double opcodes ([AztecProtocol#3982](AztecProtocol#3982)) ([ccb7bff](AztecProtocol@ccb7bff)) * Produce graph of internal Barretenberg dependencies ([AztecProtocol#4225](AztecProtocol#4225)) ([88e7923](AztecProtocol@88e7923)) * Recursive folding and decider verifier for Protogalaxy ([AztecProtocol#4156](AztecProtocol#4156)) ([9342048](AztecProtocol@9342048)) * Remove ec_double opcode ([AztecProtocol#4210](AztecProtocol#4210)) ([75f26c4](AztecProtocol@75f26c4)) * Replace single bit range constraints with basic bool gates ([AztecProtocol#4164](AztecProtocol#4164)) ([0a3553b](AztecProtocol@0a3553b)) ### Bug Fixes * **bb:** .gitignore ([AztecProtocol#4201](AztecProtocol#4201)) ([a56e418](AztecProtocol@a56e418)) * Generic Honk dependencies ([AztecProtocol#4239](AztecProtocol#4239)) ([382dfbe](AztecProtocol@382dfbe)) ### Miscellaneous * **bb:** Rearrange namespaces ([AztecProtocol#4147](AztecProtocol#4147)) ([5de0a8e](AztecProtocol@5de0a8e)) * Delete C++ PK circuits ([AztecProtocol#4219](AztecProtocol#4219)) ([9136d32](AztecProtocol@9136d32)) ### Documentation * **bb:** How to use docker_interactive.sh ([AztecProtocol#4220](AztecProtocol#4220)) ([f44c6b1](AztecProtocol@f44c6b1)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Some things still missing