feat: initial integration avm prover#4878
Conversation
Benchmark resultsMetrics with a significant change:
Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. Values are compared against data from master at commit L2 block published to L1Each column represents the number of txs on an L2 block published to L1.
L2 chain processingEach column represents the number of blocks on the L2 chain where each block has 16 txs.
Circuits statsStats on running time and I/O sizes collected for every circuit run across all benchmarks.
Tree insertion statsThe duration to insert a fixed batch of leaves into each tree type.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
Transaction processing duration by data writes.
|
| // new Add(/*indirect=*/ 0, TypeTag.FIELD, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2), | ||
| // new Return(/*indirect=*/ 0, /*returnOffset=*/ 2, /*copySize=*/ 1), | ||
| // ]); | ||
| const bytecode: Buffer = Buffer.from('HwAAAAAAAAAAAgAAAAAAAAYAAAAAAAAAAQAAAAI3AAAAAAIAAAAB', 'base64'); |
There was a problem hiding this comment.
Do you think we should we create this from an opcode array then call serialize; rather than hard coding the string?
There was a problem hiding this comment.
I would rather use HEX encoding. The goal is not to save space but make it readable for the developer.
There was a problem hiding this comment.
Do you think we should we create this from an opcode array then call serialize; rather than hard coding the string?
He might be trying to avoid introducing a dependency to the instructions and the simulator. I think that's right because at this level of abstraction that shouldn't matter. However, having the hardcoded bytecode is also a pain if we ever change anything.
I'd suggest just removing this test and relying on the one(s) using "AvmTestContractArtifact."
There was a problem hiding this comment.
Yep i was hesitant to introduce the dependency on the simulator here.
The plan would be to use the one from the AvmTestContractArtifact when the AVM supports the MOV opcode(it's skipped below this test until then).
Once that is supported I'll happily remove this test.
In terms of the encoding, the bytecode stored in the transpiled noir contract is base64 encoded, so im keeping it consistent here with what it would receive from retrieving the contract artifact
jeanmon
left a comment
There was a problem hiding this comment.
LGTM. Please have a look at my comments.
| // new Add(/*indirect=*/ 0, TypeTag.FIELD, /*aOffset=*/ 0, /*bOffset=*/ 1, /*dstOffset=*/ 2), | ||
| // new Return(/*indirect=*/ 0, /*returnOffset=*/ 2, /*copySize=*/ 1), | ||
| // ]); | ||
| const bytecode: Buffer = Buffer.from('HwAAAAAAAAAAAgAAAAAAAAYAAAAAAAAAAQAAAAI3AAAAAAIAAAAB', 'base64'); |
There was a problem hiding this comment.
I would rather use HEX encoding. The goal is not to save space but make it readable for the developer.
75a8dbf to
585b270
Compare
d8c94d1 to
50f9f67
Compare
50f9f67 to
50031e9
Compare
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.27.0</summary> ## [0.27.0](aztec-package-v0.26.6...aztec-package-v0.27.0) (2024-03-12) ### Features * Add api for inclusion proof of outgoing message in block [#4562](#4562) ([#4899](#4899)) ([26d2643](26d2643)) ### Miscellaneous * Pin foundry ([#5151](#5151)) ([69bd7dd](69bd7dd)) * Remove old contract deployment flow ([#4970](#4970)) ([6d15947](6d15947)) </details> <details><summary>barretenberg.js: 0.27.0</summary> ## [0.27.0](barretenberg.js-v0.26.6...barretenberg.js-v0.27.0) (2024-03-12) ### Miscellaneous * Move alpine containers to ubuntu ([#5026](#5026)) ([d483e67](d483e67)), closes [#4708](#4708) </details> <details><summary>aztec-cli: 0.27.0</summary> ## [0.27.0](aztec-cli-v0.26.6...aztec-cli-v0.27.0) (2024-03-12) ### Miscellaneous * Remove old contract deployment flow ([#4970](#4970)) ([6d15947](6d15947)) </details> <details><summary>aztec-packages: 0.27.0</summary> ## [0.27.0](aztec-packages-v0.26.6...aztec-packages-v0.27.0) (2024-03-12) ### ⚠ BREAKING CHANGES * Remove open keyword from Noir ([#4967](#4967)) ### Features * Add api for inclusion proof of outgoing message in block [#4562](#4562) ([#4899](#4899)) ([26d2643](26d2643)) * **avm-simulator:** External calls + integration ([#5051](#5051)) ([dde33f4](dde33f4)) * **avm-simulator:** External static calls + integration ([#5089](#5089)) ([428d950](428d950)) * **avm:** Equivalence check between Main trace and Mem trace ([#5032](#5032)) ([7f216eb](7f216eb)), closes [#4955](#4955) * **avm:** Fix some Brillig problems ([#5091](#5091)) ([07dd821](07dd821)) * Initial integration avm prover ([#4878](#4878)) ([2e2554e](2e2554e)) * Noir pull action ([#5062](#5062)) ([b2d7d14](b2d7d14)) * Restore contract inclusion proofs ([#5141](#5141)) ([a39cd61](a39cd61)) * Update the core of SMT Circuit class ([#5096](#5096)) ([1519d3b](1519d3b)) * Updating archiver with new inbox ([#5025](#5025)) ([f6d17c9](f6d17c9)), closes [#4828](#4828) ### Bug Fixes * Duplicate factory code temporarily to unblock ([#5099](#5099)) ([8b10600](8b10600)) * Remove hard coded canonical gas address ([#5106](#5106)) ([dc2fd9e](dc2fd9e)) ### Miscellaneous * **avm-simulator:** Enable compressed strings unencrypted log test ([#5083](#5083)) ([8f7519b](8f7519b)) * **avm-simulator:** Formatting and fixes ([#5092](#5092)) ([b3fa084](b3fa084)) * **AVM:** Negative unit tests for inter table relations ([#5143](#5143)) ([a74dccb](a74dccb)), closes [#5033](#5033) * Aztec-macros refactor ([#5127](#5127)) ([2195441](2195441)) * **ci:** Fail on clippy warnings in noir ([#5101](#5101)) ([54af648](54af648)) * Extract bb binary in bs fast ([#5128](#5128)) ([9ca41ef](9ca41ef)) * Increase bytecode size limit ([#5098](#5098)) ([53b2381](53b2381)) * Increase permitted bytecode size ([#5136](#5136)) ([6865c34](6865c34)) * Join-split example Part 2 ([#5016](#5016)) ([0718320](0718320)) * Move alpine containers to ubuntu ([#5026](#5026)) ([d483e67](d483e67)), closes [#4708](#4708) * Nicer snapshots ([#5133](#5133)) ([9a737eb](9a737eb)) * Pin foundry ([#5151](#5151)) ([69bd7dd](69bd7dd)) * Remove old contract deployment flow ([#4970](#4970)) ([6d15947](6d15947)) * Remove open keyword from Noir ([#4967](#4967)) ([401557e](401557e)) * Run nargo fmt on each nargo project ([#5102](#5102)) ([b327254](b327254)) * Use context interface in mark-as-initialized ([#5142](#5142)) ([932c1d5](932c1d5)) </details> <details><summary>barretenberg: 0.27.0</summary> ## [0.27.0](barretenberg-v0.26.6...barretenberg-v0.27.0) (2024-03-12) ### Features * **avm:** Equivalence check between Main trace and Mem trace ([#5032](#5032)) ([7f216eb](7f216eb)), closes [#4955](#4955) * Initial integration avm prover ([#4878](#4878)) ([2e2554e](2e2554e)) * Update the core of SMT Circuit class ([#5096](#5096)) ([1519d3b](1519d3b)) ### Miscellaneous * **AVM:** Negative unit tests for inter table relations ([#5143](#5143)) ([a74dccb](a74dccb)), closes [#5033](#5033) * Extract bb binary in bs fast ([#5128](#5128)) ([9ca41ef](9ca41ef)) * Join-split example Part 2 ([#5016](#5016)) ([0718320](0718320)) * Move alpine containers to ubuntu ([#5026](#5026)) ([d483e67](d483e67)), closes [#4708](#4708) * Pin foundry ([#5151](#5151)) ([69bd7dd](69bd7dd)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.27.0</summary> ## [0.27.0](AztecProtocol/aztec-packages@aztec-package-v0.26.6...aztec-package-v0.27.0) (2024-03-12) ### Features * Add api for inclusion proof of outgoing message in block [#4562](AztecProtocol/aztec-packages#4562) ([#4899](AztecProtocol/aztec-packages#4899)) ([26d2643](AztecProtocol/aztec-packages@26d2643)) ### Miscellaneous * Pin foundry ([#5151](AztecProtocol/aztec-packages#5151)) ([69bd7dd](AztecProtocol/aztec-packages@69bd7dd)) * Remove old contract deployment flow ([#4970](AztecProtocol/aztec-packages#4970)) ([6d15947](AztecProtocol/aztec-packages@6d15947)) </details> <details><summary>barretenberg.js: 0.27.0</summary> ## [0.27.0](AztecProtocol/aztec-packages@barretenberg.js-v0.26.6...barretenberg.js-v0.27.0) (2024-03-12) ### Miscellaneous * Move alpine containers to ubuntu ([#5026](AztecProtocol/aztec-packages#5026)) ([d483e67](AztecProtocol/aztec-packages@d483e67)), closes [#4708](AztecProtocol/aztec-packages#4708) </details> <details><summary>aztec-cli: 0.27.0</summary> ## [0.27.0](AztecProtocol/aztec-packages@aztec-cli-v0.26.6...aztec-cli-v0.27.0) (2024-03-12) ### Miscellaneous * Remove old contract deployment flow ([#4970](AztecProtocol/aztec-packages#4970)) ([6d15947](AztecProtocol/aztec-packages@6d15947)) </details> <details><summary>aztec-packages: 0.27.0</summary> ## [0.27.0](AztecProtocol/aztec-packages@aztec-packages-v0.26.6...aztec-packages-v0.27.0) (2024-03-12) ### ⚠ BREAKING CHANGES * Remove open keyword from Noir ([#4967](AztecProtocol/aztec-packages#4967)) ### Features * Add api for inclusion proof of outgoing message in block [#4562](AztecProtocol/aztec-packages#4562) ([#4899](AztecProtocol/aztec-packages#4899)) ([26d2643](AztecProtocol/aztec-packages@26d2643)) * **avm-simulator:** External calls + integration ([#5051](AztecProtocol/aztec-packages#5051)) ([dde33f4](AztecProtocol/aztec-packages@dde33f4)) * **avm-simulator:** External static calls + integration ([#5089](AztecProtocol/aztec-packages#5089)) ([428d950](AztecProtocol/aztec-packages@428d950)) * **avm:** Equivalence check between Main trace and Mem trace ([#5032](AztecProtocol/aztec-packages#5032)) ([7f216eb](AztecProtocol/aztec-packages@7f216eb)), closes [#4955](AztecProtocol/aztec-packages#4955) * **avm:** Fix some Brillig problems ([#5091](AztecProtocol/aztec-packages#5091)) ([07dd821](AztecProtocol/aztec-packages@07dd821)) * Initial integration avm prover ([#4878](AztecProtocol/aztec-packages#4878)) ([2e2554e](AztecProtocol/aztec-packages@2e2554e)) * Noir pull action ([#5062](AztecProtocol/aztec-packages#5062)) ([b2d7d14](AztecProtocol/aztec-packages@b2d7d14)) * Restore contract inclusion proofs ([#5141](AztecProtocol/aztec-packages#5141)) ([a39cd61](AztecProtocol/aztec-packages@a39cd61)) * Update the core of SMT Circuit class ([#5096](AztecProtocol/aztec-packages#5096)) ([1519d3b](AztecProtocol/aztec-packages@1519d3b)) * Updating archiver with new inbox ([#5025](AztecProtocol/aztec-packages#5025)) ([f6d17c9](AztecProtocol/aztec-packages@f6d17c9)), closes [#4828](AztecProtocol/aztec-packages#4828) ### Bug Fixes * Duplicate factory code temporarily to unblock ([#5099](AztecProtocol/aztec-packages#5099)) ([8b10600](AztecProtocol/aztec-packages@8b10600)) * Remove hard coded canonical gas address ([#5106](AztecProtocol/aztec-packages#5106)) ([dc2fd9e](AztecProtocol/aztec-packages@dc2fd9e)) ### Miscellaneous * **avm-simulator:** Enable compressed strings unencrypted log test ([#5083](AztecProtocol/aztec-packages#5083)) ([8f7519b](AztecProtocol/aztec-packages@8f7519b)) * **avm-simulator:** Formatting and fixes ([#5092](AztecProtocol/aztec-packages#5092)) ([b3fa084](AztecProtocol/aztec-packages@b3fa084)) * **AVM:** Negative unit tests for inter table relations ([#5143](AztecProtocol/aztec-packages#5143)) ([a74dccb](AztecProtocol/aztec-packages@a74dccb)), closes [#5033](AztecProtocol/aztec-packages#5033) * Aztec-macros refactor ([#5127](AztecProtocol/aztec-packages#5127)) ([2195441](AztecProtocol/aztec-packages@2195441)) * **ci:** Fail on clippy warnings in noir ([#5101](AztecProtocol/aztec-packages#5101)) ([54af648](AztecProtocol/aztec-packages@54af648)) * Extract bb binary in bs fast ([#5128](AztecProtocol/aztec-packages#5128)) ([9ca41ef](AztecProtocol/aztec-packages@9ca41ef)) * Increase bytecode size limit ([#5098](AztecProtocol/aztec-packages#5098)) ([53b2381](AztecProtocol/aztec-packages@53b2381)) * Increase permitted bytecode size ([#5136](AztecProtocol/aztec-packages#5136)) ([6865c34](AztecProtocol/aztec-packages@6865c34)) * Join-split example Part 2 ([#5016](AztecProtocol/aztec-packages#5016)) ([0718320](AztecProtocol/aztec-packages@0718320)) * Move alpine containers to ubuntu ([#5026](AztecProtocol/aztec-packages#5026)) ([d483e67](AztecProtocol/aztec-packages@d483e67)), closes [#4708](AztecProtocol/aztec-packages#4708) * Nicer snapshots ([#5133](AztecProtocol/aztec-packages#5133)) ([9a737eb](AztecProtocol/aztec-packages@9a737eb)) * Pin foundry ([#5151](AztecProtocol/aztec-packages#5151)) ([69bd7dd](AztecProtocol/aztec-packages@69bd7dd)) * Remove old contract deployment flow ([#4970](AztecProtocol/aztec-packages#4970)) ([6d15947](AztecProtocol/aztec-packages@6d15947)) * Remove open keyword from Noir ([#4967](AztecProtocol/aztec-packages#4967)) ([401557e](AztecProtocol/aztec-packages@401557e)) * Run nargo fmt on each nargo project ([#5102](AztecProtocol/aztec-packages#5102)) ([b327254](AztecProtocol/aztec-packages@b327254)) * Use context interface in mark-as-initialized ([#5142](AztecProtocol/aztec-packages#5142)) ([932c1d5](AztecProtocol/aztec-packages@932c1d5)) </details> <details><summary>barretenberg: 0.27.0</summary> ## [0.27.0](AztecProtocol/aztec-packages@barretenberg-v0.26.6...barretenberg-v0.27.0) (2024-03-12) ### Features * **avm:** Equivalence check between Main trace and Mem trace ([#5032](AztecProtocol/aztec-packages#5032)) ([7f216eb](AztecProtocol/aztec-packages@7f216eb)), closes [#4955](AztecProtocol/aztec-packages#4955) * Initial integration avm prover ([#4878](AztecProtocol/aztec-packages#4878)) ([2e2554e](AztecProtocol/aztec-packages@2e2554e)) * Update the core of SMT Circuit class ([#5096](AztecProtocol/aztec-packages#5096)) ([1519d3b](AztecProtocol/aztec-packages@1519d3b)) ### Miscellaneous * **AVM:** Negative unit tests for inter table relations ([#5143](AztecProtocol/aztec-packages#5143)) ([a74dccb](AztecProtocol/aztec-packages@a74dccb)), closes [#5033](AztecProtocol/aztec-packages#5033) * Extract bb binary in bs fast ([#5128](AztecProtocol/aztec-packages#5128)) ([9ca41ef](AztecProtocol/aztec-packages@9ca41ef)) * Join-split example Part 2 ([#5016](AztecProtocol/aztec-packages#5016)) ([0718320](AztecProtocol/aztec-packages@0718320)) * Move alpine containers to ubuntu ([#5026](AztecProtocol/aztec-packages#5026)) ([d483e67](AztecProtocol/aztec-packages@d483e67)), closes [#4708](AztecProtocol/aztec-packages#4708) * Pin foundry ([#5151](AztecProtocol/aztec-packages#5151)) ([69bd7dd](AztecProtocol/aztec-packages@69bd7dd)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Basic shim to integrate avm simulator with the avm witgen/prover.
Currently uses the bb binary and supports proving(including passing in calldata) and verifying (although both are currently WIP in the avm prover).
Built on top of #4877