-
Notifications
You must be signed in to change notification settings - Fork 304
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: Contract classes and instances #4192
Conversation
9a98343
to
ee6f6c6
Compare
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.
|
ee6f6c6
to
da3e6bb
Compare
989140b
to
540b220
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
looks great!
@@ -232,7 +232,7 @@ export class EthAddress { | |||
*/ | |||
static fromBuffer(buffer: Buffer | BufferReader): EthAddress { | |||
const reader = BufferReader.asReader(buffer); | |||
return new EthAddress(reader.readBuffer()); | |||
return new EthAddress(reader.readBytes(32)); |
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.
Nice catch!
// TODO(@spalladino): AztecMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from. | ||
return Promise.resolve(contract && contractArtifactFromBuffer(Buffer.from(contract))); |
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.
It does 🥲. A more efficient conversion would be to create a Buffer that refers to the same slice of memory as the UInt8Array
// TODO(@spalladino): AztecMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from. | |
return Promise.resolve(contract && contractArtifactFromBuffer(Buffer.from(contract))); | |
// TODO(@spalladino): AztecMap lies and returns Uint8Arrays instead of Buffers, hence the extra Buffer.from. | |
return Promise.resolve(contract && contractArtifactFromBuffer(Buffer.from(contract.buffer, contract.byteOffset, contract.length / contract.BYTES_PER_ELEMENT))); | |
``` |
As an aside, I remember adding this conversion to the BufferReader (so it'd work with Buffers and UInt8Arrays), but maybe it got removed?
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.
To be fair, instead of properly serializing the artifact, we're just json stringifying, so there's a much needed pass to improve performance there!
🤖 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).
Adds `ContractInstance` and `ContractClass` interfaces as specified in the yellow paper, with the addition of `PublicFunctions` in `ContractClasses` until we remove them as first class citizens from the protocol. Also includes hashes for contract classes and artifacts. Stores contract classes and instances in the node in new tables, as well as artifacts and instances in the pxe. Fixes AztecProtocol#4053
🤖 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).
Adds
ContractInstance
andContractClass
interfaces as specified in the yellow paper, with the addition ofPublicFunctions
inContractClasses
until we remove them as first class citizens from the protocol. Also includes hashes for contract classes and artifacts. Stores contract classes and instances in the node in new tables, as well as artifacts and instances in the pxe.Fixes #4053