-
Notifications
You must be signed in to change notification settings - Fork 233
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(avm): initial external calls #4194
Conversation
Current dependencies on/for this PR:
This stack of pull requests is managed by Graphite. |
yarn-project/acir-simulator/src/avm/opcodes/external_calls.test.ts
Outdated
Show resolved
Hide resolved
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.
|
7c55079
to
780fc53
Compare
80ad0d9
to
4027633
Compare
yarn-project/acir-simulator/src/avm/avm_execution_environment.ts
Outdated
Show resolved
Hide resolved
yarn-project/acir-simulator/src/avm/avm_execution_environment.ts
Outdated
Show resolved
Hide resolved
} | ||
|
||
// TODO(https://github.com/AztecProtocol/aztec-packages/issues/3992): there is no concept of remaining / available gas at this moment | ||
async execute(machineState: AvmMachineState, journal: AvmJournal): Promise<void> { |
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.
IIUC this does not conform to the execute
in the Instruction
interface. In particular the interpreter run()
is not awaiting on execute
.
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.
Ah yes correct, I will need to make everything async, will update ( I forgot to do 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.
I think the concepts of ExecutionEnvironment, Context, State, are getting a bit unclear to me. For example, a "context" in this line is actually a state:
aztec-packages/yarn-project/acir-simulator/src/avm/interpreter/interpreter.test.ts
Line 31 in 4027633
const context = new AvmMachineState(calldata, executionEnvironment); |
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.
On the same line, it's getting less clear what the "entry point" would be for a client. First I expected it to be the interpreter, but it needs some pre-processing so no.
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.
Ah the line above hangs from a pr where everything had different names, but were changed to line up with the yellow paper's definitions - I can rename the offending line.
The entry point would be instantiating a context, from the kernels function inputs, which will execute an interpreter.
Let me know if this model blows and we can get back to pen and paper
|
||
const avmContext = AvmContext.prepExternalStaticCall(callAddress, machineState.executionEnvironment, journal); | ||
|
||
const returnObject = await avmContext.call(calldata); |
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.
In principle it feels strange that an instruction ends up transitively using an Interpreter, and that an interpreter uses Instructions. I understand that conceptually you "switch context" and "start a new execution" but this kind of breaks the elegance of having instructions be basically just a lambda.
I'm a bit surprised that this works, but we could leave it like this until we find a better way (which likely involve a more complex design).
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 agree here, it feels a little recursive. But in my mind a nested instruction call is somewhat recursive, in this case the downstream call needs a completely fresh context to work within
machineState.writeMemory(1, addr); | ||
machineState.writeMemoryChunk(2, args); | ||
|
||
const otherContextInstructions: [Opcode, any[]][] = [ |
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.
Encoding like this will not work mid/long term. I'd expect an encode_bytecode
that takes Instruction[]
to be more maintainable (but then Instruction
needs a different design).
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 agree, i was following a pattern laid out in another pr. I will alter this in future work and not this exact pr ( as it will be an annoyance later too )
yarn-project/acir-simulator/src/avm/opcodes/external_calls.test.ts
Outdated
Show resolved
Hide resolved
|
||
// Check that the storage call has been merged into the parent journal | ||
const { storageWrites } = journal.flush(); | ||
expect(storageWrites.size).toEqual(1); |
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.
Better .haveLength(1)
?
In general using more specific matchers gives better error messages.
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 gave this ago, but the Map type does not have a property with .length on it as both keys(), values() and entries() return iterators, sadly we cant use it in this case; although i agree it looks much nicer
yarn-project/acir-simulator/src/avm/opcodes/external_calls.test.ts
Outdated
Show resolved
Hide resolved
f0a9fae
to
265e90d
Compare
4027633
to
9ec7ef2
Compare
265e90d
to
d6cfa11
Compare
2b38bdf
to
e87334a
Compare
🤖 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).
🤖 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).
Note: there is alot of code duplication in these implementations
closes: #4127