-
Notifications
You must be signed in to change notification settings - Fork 234
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: hash logs inside circuit #5934
Conversation
Docs PreviewHey there! 👋 You can check your preview at https://6633929b48ae560c495b7403--aztec-docs-dev.netlify.app |
Benchmark resultsNo metrics with a significant change found. Detailed resultsAll benchmarks are run on txs on the This benchmark source data is available in JSON format on S3 here. 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 contract classes are registered in the tx.
Transaction size based on fee payment method
Transaction processing duration by data writes.
|
@@ -1,222 +0,0 @@ | |||
import { |
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.
Removed this file as it only tested the collect logs functionality, which is now removed.
@@ -82,7 +82,7 @@ impl PublicContextInterface for AvmContext { | |||
nullifier_exists(unsiloed_nullifier, address.to_field()) == 1 | |||
} | |||
|
|||
fn emit_unencrypted_log<T>(&mut self, log: T) { | |||
fn emit_unencrypted_log<T,N,M>(&mut self, log: T) { |
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.
The AVM context and interface was only changed to allow the public and private contexts to use traits in logs_traits
(these define fixed lengths for many types, so we can sha hash inside the circuit). These don't need to be carried over!
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.
Some suggestions (maybe for future PRs). LGTM!
) -> Field {} | ||
|
||
|
||
unconstrained pub fn emit_contract_class_unencrypted_log_private_internal<N>( |
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.
Doesn't need to be public.
@@ -76,5 +72,7 @@ export async function executePrivateFunction( | |||
enqueuedPublicFunctionCalls, | |||
encryptedLogs, | |||
unencryptedLogs, | |||
allEncryptedLogs: context.getAllEncryptedLogs(), | |||
allUnencryptedLogs: context.getAllUnencryptedLogs(), |
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.
Do we still need encryptedLogs/unencryptedLogs?
Wonder if we should only assign all(Un)EncryptedLogs to the top level execution result 🤔
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.
Or emitting the counter (and note hash counter) along with the log preimage via oracle, then we can gather all logs from all nested calls to sort and squash them. I think you've suggested this? Sorry I am being slow. This is probably better than outputting them all in one go.
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.
Do we still need encryptedLogs/unencryptedLogs?
I'm not sure really, but I'm keeping them as some tests rely on those logs being specific to the inidvidual call (i.e. not inlcuding extra logs from nested child/parent calls). Protocol-wise maybe it would be good to still keep track of logs per call to avoid confusion?
Or emitting the counter (and note hash counter) along with the log preimage via oracle, then we can gather all logs from all nested calls to sort and squash them.
Yep, I can do this! I just went for this method, because it seemed like the cleanest way of utilising the logs cache (which is intended mostly for removing transient logs) without adding too much extra code.
In this PR I can make the oracles also emit the log counter, then gather them from nested executions rather than populate a big array. The next PR will tackle separating note hash logs anyway, so I can add the note hash counter as part of that?
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.
Have implemented the above ^
Changes to circuit sizes
🧾 Summary (100% most significant diffs)
Full diff report 👇
|
return !this.log.data.length && !this.counter; | ||
} | ||
} | ||
|
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.
This implements IsEmpty
so I can take advantage of the existing method sortByCounter
. Happy to move to a new file if it's cleaner.
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.
Great work!
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-package: 0.37.1</summary> ## [0.37.1](aztec-package-v0.37.0...aztec-package-v0.37.1) (2024-05-07) ### Features * Proving benchmark ([#6051](#6051)) ([644bd85](644bd85)) </details> <details><summary>barretenberg.js: 0.37.1</summary> ## [0.37.1](barretenberg.js-v0.37.0...barretenberg.js-v0.37.1) (2024-05-07) ### Features * Honk flows exposed through wasm ([#6096](#6096)) ([c9b3206](c9b3206)) * Run noir-packages-test in Earthly ([#6174](#6174)) ([58e40c9](58e40c9)) ### Miscellaneous * Bump bb.js timeouts ([#6196](#6196)) ([acab3de](acab3de)) * Migrate acir tests to earthly ([#6142](#6142)) ([18c8ea8](18c8ea8)) </details> <details><summary>aztec-packages: 0.37.1</summary> ## [0.37.1](aztec-packages-v0.37.0...aztec-packages-v0.37.1) (2024-05-07) ### Features * Add ciphertext computation for log header ([#6175](#6175)) ([3e05534](3e05534)) * Add proving retries ([#6145](#6145)) ([39ab99c](39ab99c)) * Add public teardown to circuit structs ([#6191](#6191)) ([03e1b93](03e1b93)) * Always including debug data in a function artifact ([#6223](#6223)) ([5d6d22c](5d6d22c)) * **avm:** Add TransactionFee opcode to simulator ([#6210](#6210)) ([fcac844](fcac844)) * Complex outputs from acir call (noir-lang/noir#4952) ([3ed41a0](3ed41a0)) * Expose set_public_teardown_function in private context ([#6199](#6199)) ([4d8b51c](4d8b51c)) * Handle empty response foreign calls without an external resolver (noir-lang/noir#4959) ([3ed41a0](3ed41a0)) * Hash logs inside circuit ([#5934](#5934)) ([6b99527](6b99527)) * Honk flows exposed through wasm ([#6096](#6096)) ([c9b3206](c9b3206)) * Include transaction fee in txreceipt ([#6139](#6139)) ([6785512](6785512)) * Making keys getters complete ([#6171](#6171)) ([e85dde9](e85dde9)) * Move noir-tests to earthly ([#6185](#6185)) ([4daea40](4daea40)) * Note hash read requests fixes and refactoring ([#6125](#6125)) ([9d03f34](9d03f34)) * Optimize array sets in if conditions (alternate version) (noir-lang/noir#4716) ([3ed41a0](3ed41a0)) * Osxcross ([#6099](#6099)) ([6cc924d](6cc924d)) * Parsing non-string assertion payloads in noir js ([#6079](#6079)) ([fbd78fd](fbd78fd)) * Proving benchmark ([#6051](#6051)) ([644bd85](644bd85)) * Proving the private kernels and app circuits ([#6112](#6112)) ([4a43fab](4a43fab)) * Publish transaction_fee ([#6126](#6126)) ([6f3a036](6f3a036)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([#6150](#6150)) ([acc8641](acc8641)) * Run noir-packages-test in Earthly ([#6174](#6174)) ([58e40c9](58e40c9)) * Set aztec private functions to be recursive ([#6192](#6192)) ([22625f8](22625f8)) * Use actual tx fee in gas token when charging fee ([#6166](#6166)) ([8418eac](8418eac)) ### Bug Fixes * **abstract-phase-manager:** Get available gas from latest kernel output ([#6102](#6102)) ([0fa509b](0fa509b)) * Aztec-run not exposing port for builder ([#6241](#6241)) ([a80c091](a80c091)) * Boxes use base image ([#6120](#6120)) ([ef2589a](ef2589a)) * Correct circuit size estimation for UltraHonk ([#6164](#6164)) ([ed84fe3](ed84fe3)) * Docs release ci setup ([#6159](#6159)) ([6d5cfe6](6d5cfe6)) * **docs:** Fix broken link in tree implementations page ([#6143](#6143)) ([b39f1db](b39f1db)) * **docs:** Update sandbox reference ([#6094](#6094)) ([0641085](0641085)) * Increase default number of proving agents ([#6146](#6146)) ([5ade36e](5ade36e)) * Install aztec-builder ([#6149](#6149)) ([0497dcf](0497dcf)) * **public-kernel:** Only validate start-gas for execution requests ([#6100](#6100)) ([3ec9303](3ec9303)) * Scope netlify to yarn bin ([#6162](#6162)) ([be8e3c0](be8e3c0)) * Set up the ci runner for doc deployment ([#6160](#6160)) ([e295900](e295900)) * Sporadic failure of GoblinRecursionTests.Vanilla ([#6218](#6218)) ([f4ecea5](f4ecea5)) * Use annotated type when checking declaration (noir-lang/noir#4966) ([3ed41a0](3ed41a0)) * Use pushed build images. ([#6154](#6154)) ([426f7a7](426f7a7)) * Use random id for proving jobs ([#6084](#6084)) ([0e0fc58](0e0fc58)) * Various aztec-builder issues ([#6233](#6233)) ([9a644ba](9a644ba)) ### Miscellaneous * **avm-simulator:** Avm's nested calls now stay internal and properly track PublicExecutionResult ([#6165](#6165)) ([9fd4f39](9fd4f39)) * **avm-simulator:** Make shifts take u8 ([#5905](#5905)) ([4719ff1](4719ff1)) * **avm-simulator:** Track recursive public execution result in avm-simulator for integration with old kernel ([#6106](#6106)) ([df3bcc6](df3bcc6)) * Bump bb.js timeouts ([#6196](#6196)) ([acab3de](acab3de)) * Check root parity is only enqueued once its deps are ready ([#6015](#6015)) ([c1120d1](c1120d1)) * **ci:** Force earthly prune if corrupted cache ([#6152](#6152)) ([3910314](3910314)) * **ci:** Improve dependency structure ([#6200](#6200)) ([3abc862](3abc862)) * **ci:** Migrate `protocol-circuits-gate-diff` to earthly ([#6204](#6204)) ([4b43295](4b43295)) * **ci:** More stable spot request ([#6212](#6212)) ([00156b5](00156b5)) * **ci:** Optimize e2e build ([#6202](#6202)) ([4614059](4614059)) * **ci:** Rollback earthly prune ([#6208](#6208)) ([3ccc6ac](3ccc6ac)) * **ci:** Try to make base image more stable ([#6144](#6144)) ([979a22d](979a22d)) * E2e workaround ([#6158](#6158)) ([7794d78](7794d78)) * Migrate acir tests to earthly ([#6142](#6142)) ([18c8ea8](18c8ea8)) * Rename instruction checks for side effects (noir-lang/noir#4945) ([3ed41a0](3ed41a0)) * Replace relative paths to noir-protocol-circuits ([cf543a6](cf543a6)) * Replace relative paths to noir-protocol-circuits ([53cf7bb](53cf7bb)) * Replace relative paths to noir-protocol-circuits ([ca29cea](ca29cea)) * Replace relative paths to noir-protocol-circuits ([08e538b](08e538b)) * Speedup static_call test ([#6157](#6157)) ([abe8875](abe8875)) * Switch Noir JS to use execute program instead of circuit (noir-lang/noir#4965) ([3ed41a0](3ed41a0)) * Use correct call type ([#6064](#6064)) ([b3ae289](b3ae289)) ### Documentation * Add GlobalVariables to CombinedConstantData ([#6071](#6071)) ([cf026d2](cf026d2)) * Update fees kernel tracking docs ([#6151](#6151)) ([7d80428](7d80428)) </details> <details><summary>barretenberg: 0.37.1</summary> ## [0.37.1](barretenberg-v0.37.0...barretenberg-v0.37.1) (2024-05-07) ### Features * **avm:** Add TransactionFee opcode to simulator ([#6210](#6210)) ([fcac844](fcac844)) * Honk flows exposed through wasm ([#6096](#6096)) ([c9b3206](c9b3206)) * Osxcross ([#6099](#6099)) ([6cc924d](6cc924d)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([#6150](#6150)) ([acc8641](acc8641)) ### Bug Fixes * Correct circuit size estimation for UltraHonk ([#6164](#6164)) ([ed84fe3](ed84fe3)) * Sporadic failure of GoblinRecursionTests.Vanilla ([#6218](#6218)) ([f4ecea5](f4ecea5)) ### Miscellaneous * Migrate acir tests to earthly ([#6142](#6142)) ([18c8ea8](18c8ea8)) </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.37.1</summary> ## [0.37.1](AztecProtocol/aztec-packages@aztec-package-v0.37.0...aztec-package-v0.37.1) (2024-05-07) ### Features * Proving benchmark ([#6051](AztecProtocol/aztec-packages#6051)) ([644bd85](AztecProtocol/aztec-packages@644bd85)) </details> <details><summary>barretenberg.js: 0.37.1</summary> ## [0.37.1](AztecProtocol/aztec-packages@barretenberg.js-v0.37.0...barretenberg.js-v0.37.1) (2024-05-07) ### Features * Honk flows exposed through wasm ([#6096](AztecProtocol/aztec-packages#6096)) ([c9b3206](AztecProtocol/aztec-packages@c9b3206)) * Run noir-packages-test in Earthly ([#6174](AztecProtocol/aztec-packages#6174)) ([58e40c9](AztecProtocol/aztec-packages@58e40c9)) ### Miscellaneous * Bump bb.js timeouts ([#6196](AztecProtocol/aztec-packages#6196)) ([acab3de](AztecProtocol/aztec-packages@acab3de)) * Migrate acir tests to earthly ([#6142](AztecProtocol/aztec-packages#6142)) ([18c8ea8](AztecProtocol/aztec-packages@18c8ea8)) </details> <details><summary>aztec-packages: 0.37.1</summary> ## [0.37.1](AztecProtocol/aztec-packages@aztec-packages-v0.37.0...aztec-packages-v0.37.1) (2024-05-07) ### Features * Add ciphertext computation for log header ([#6175](AztecProtocol/aztec-packages#6175)) ([3e05534](AztecProtocol/aztec-packages@3e05534)) * Add proving retries ([#6145](AztecProtocol/aztec-packages#6145)) ([39ab99c](AztecProtocol/aztec-packages@39ab99c)) * Add public teardown to circuit structs ([#6191](AztecProtocol/aztec-packages#6191)) ([03e1b93](AztecProtocol/aztec-packages@03e1b93)) * Always including debug data in a function artifact ([#6223](AztecProtocol/aztec-packages#6223)) ([5d6d22c](AztecProtocol/aztec-packages@5d6d22c)) * **avm:** Add TransactionFee opcode to simulator ([#6210](AztecProtocol/aztec-packages#6210)) ([fcac844](AztecProtocol/aztec-packages@fcac844)) * Complex outputs from acir call (noir-lang/noir#4952) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Expose set_public_teardown_function in private context ([#6199](AztecProtocol/aztec-packages#6199)) ([4d8b51c](AztecProtocol/aztec-packages@4d8b51c)) * Handle empty response foreign calls without an external resolver (noir-lang/noir#4959) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Hash logs inside circuit ([#5934](AztecProtocol/aztec-packages#5934)) ([6b99527](AztecProtocol/aztec-packages@6b99527)) * Honk flows exposed through wasm ([#6096](AztecProtocol/aztec-packages#6096)) ([c9b3206](AztecProtocol/aztec-packages@c9b3206)) * Include transaction fee in txreceipt ([#6139](AztecProtocol/aztec-packages#6139)) ([6785512](AztecProtocol/aztec-packages@6785512)) * Making keys getters complete ([#6171](AztecProtocol/aztec-packages#6171)) ([e85dde9](AztecProtocol/aztec-packages@e85dde9)) * Move noir-tests to earthly ([#6185](AztecProtocol/aztec-packages#6185)) ([4daea40](AztecProtocol/aztec-packages@4daea40)) * Note hash read requests fixes and refactoring ([#6125](AztecProtocol/aztec-packages#6125)) ([9d03f34](AztecProtocol/aztec-packages@9d03f34)) * Optimize array sets in if conditions (alternate version) (noir-lang/noir#4716) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Osxcross ([#6099](AztecProtocol/aztec-packages#6099)) ([6cc924d](AztecProtocol/aztec-packages@6cc924d)) * Parsing non-string assertion payloads in noir js ([#6079](AztecProtocol/aztec-packages#6079)) ([fbd78fd](AztecProtocol/aztec-packages@fbd78fd)) * Proving benchmark ([#6051](AztecProtocol/aztec-packages#6051)) ([644bd85](AztecProtocol/aztec-packages@644bd85)) * Proving the private kernels and app circuits ([#6112](AztecProtocol/aztec-packages#6112)) ([4a43fab](AztecProtocol/aztec-packages@4a43fab)) * Publish transaction_fee ([#6126](AztecProtocol/aztec-packages#6126)) ([6f3a036](AztecProtocol/aztec-packages@6f3a036)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([#6150](AztecProtocol/aztec-packages#6150)) ([acc8641](AztecProtocol/aztec-packages@acc8641)) * Run noir-packages-test in Earthly ([#6174](AztecProtocol/aztec-packages#6174)) ([58e40c9](AztecProtocol/aztec-packages@58e40c9)) * Set aztec private functions to be recursive ([#6192](AztecProtocol/aztec-packages#6192)) ([22625f8](AztecProtocol/aztec-packages@22625f8)) * Use actual tx fee in gas token when charging fee ([#6166](AztecProtocol/aztec-packages#6166)) ([8418eac](AztecProtocol/aztec-packages@8418eac)) ### Bug Fixes * **abstract-phase-manager:** Get available gas from latest kernel output ([#6102](AztecProtocol/aztec-packages#6102)) ([0fa509b](AztecProtocol/aztec-packages@0fa509b)) * Aztec-run not exposing port for builder ([#6241](AztecProtocol/aztec-packages#6241)) ([a80c091](AztecProtocol/aztec-packages@a80c091)) * Boxes use base image ([#6120](AztecProtocol/aztec-packages#6120)) ([ef2589a](AztecProtocol/aztec-packages@ef2589a)) * Correct circuit size estimation for UltraHonk ([#6164](AztecProtocol/aztec-packages#6164)) ([ed84fe3](AztecProtocol/aztec-packages@ed84fe3)) * Docs release ci setup ([#6159](AztecProtocol/aztec-packages#6159)) ([6d5cfe6](AztecProtocol/aztec-packages@6d5cfe6)) * **docs:** Fix broken link in tree implementations page ([#6143](AztecProtocol/aztec-packages#6143)) ([b39f1db](AztecProtocol/aztec-packages@b39f1db)) * **docs:** Update sandbox reference ([#6094](AztecProtocol/aztec-packages#6094)) ([0641085](AztecProtocol/aztec-packages@0641085)) * Increase default number of proving agents ([#6146](AztecProtocol/aztec-packages#6146)) ([5ade36e](AztecProtocol/aztec-packages@5ade36e)) * Install aztec-builder ([#6149](AztecProtocol/aztec-packages#6149)) ([0497dcf](AztecProtocol/aztec-packages@0497dcf)) * **public-kernel:** Only validate start-gas for execution requests ([#6100](AztecProtocol/aztec-packages#6100)) ([3ec9303](AztecProtocol/aztec-packages@3ec9303)) * Scope netlify to yarn bin ([#6162](AztecProtocol/aztec-packages#6162)) ([be8e3c0](AztecProtocol/aztec-packages@be8e3c0)) * Set up the ci runner for doc deployment ([#6160](AztecProtocol/aztec-packages#6160)) ([e295900](AztecProtocol/aztec-packages@e295900)) * Sporadic failure of GoblinRecursionTests.Vanilla ([#6218](AztecProtocol/aztec-packages#6218)) ([f4ecea5](AztecProtocol/aztec-packages@f4ecea5)) * Use annotated type when checking declaration (noir-lang/noir#4966) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Use pushed build images. ([#6154](AztecProtocol/aztec-packages#6154)) ([426f7a7](AztecProtocol/aztec-packages@426f7a7)) * Use random id for proving jobs ([#6084](AztecProtocol/aztec-packages#6084)) ([0e0fc58](AztecProtocol/aztec-packages@0e0fc58)) * Various aztec-builder issues ([#6233](AztecProtocol/aztec-packages#6233)) ([9a644ba](AztecProtocol/aztec-packages@9a644ba)) ### Miscellaneous * **avm-simulator:** Avm's nested calls now stay internal and properly track PublicExecutionResult ([#6165](AztecProtocol/aztec-packages#6165)) ([9fd4f39](AztecProtocol/aztec-packages@9fd4f39)) * **avm-simulator:** Make shifts take u8 ([#5905](AztecProtocol/aztec-packages#5905)) ([4719ff1](AztecProtocol/aztec-packages@4719ff1)) * **avm-simulator:** Track recursive public execution result in avm-simulator for integration with old kernel ([#6106](AztecProtocol/aztec-packages#6106)) ([df3bcc6](AztecProtocol/aztec-packages@df3bcc6)) * Bump bb.js timeouts ([#6196](AztecProtocol/aztec-packages#6196)) ([acab3de](AztecProtocol/aztec-packages@acab3de)) * Check root parity is only enqueued once its deps are ready ([#6015](AztecProtocol/aztec-packages#6015)) ([c1120d1](AztecProtocol/aztec-packages@c1120d1)) * **ci:** Force earthly prune if corrupted cache ([#6152](AztecProtocol/aztec-packages#6152)) ([3910314](AztecProtocol/aztec-packages@3910314)) * **ci:** Improve dependency structure ([#6200](AztecProtocol/aztec-packages#6200)) ([3abc862](AztecProtocol/aztec-packages@3abc862)) * **ci:** Migrate `protocol-circuits-gate-diff` to earthly ([#6204](AztecProtocol/aztec-packages#6204)) ([4b43295](AztecProtocol/aztec-packages@4b43295)) * **ci:** More stable spot request ([#6212](AztecProtocol/aztec-packages#6212)) ([00156b5](AztecProtocol/aztec-packages@00156b5)) * **ci:** Optimize e2e build ([#6202](AztecProtocol/aztec-packages#6202)) ([4614059](AztecProtocol/aztec-packages@4614059)) * **ci:** Rollback earthly prune ([#6208](AztecProtocol/aztec-packages#6208)) ([3ccc6ac](AztecProtocol/aztec-packages@3ccc6ac)) * **ci:** Try to make base image more stable ([#6144](AztecProtocol/aztec-packages#6144)) ([979a22d](AztecProtocol/aztec-packages@979a22d)) * E2e workaround ([#6158](AztecProtocol/aztec-packages#6158)) ([7794d78](AztecProtocol/aztec-packages@7794d78)) * Migrate acir tests to earthly ([#6142](AztecProtocol/aztec-packages#6142)) ([18c8ea8](AztecProtocol/aztec-packages@18c8ea8)) * Rename instruction checks for side effects (noir-lang/noir#4945) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Replace relative paths to noir-protocol-circuits ([cf543a6](AztecProtocol/aztec-packages@cf543a6)) * Replace relative paths to noir-protocol-circuits ([53cf7bb](AztecProtocol/aztec-packages@53cf7bb)) * Replace relative paths to noir-protocol-circuits ([ca29cea](AztecProtocol/aztec-packages@ca29cea)) * Replace relative paths to noir-protocol-circuits ([08e538b](AztecProtocol/aztec-packages@08e538b)) * Speedup static_call test ([#6157](AztecProtocol/aztec-packages#6157)) ([abe8875](AztecProtocol/aztec-packages@abe8875)) * Switch Noir JS to use execute program instead of circuit (noir-lang/noir#4965) ([3ed41a0](AztecProtocol/aztec-packages@3ed41a0)) * Use correct call type ([#6064](AztecProtocol/aztec-packages#6064)) ([b3ae289](AztecProtocol/aztec-packages@b3ae289)) ### Documentation * Add GlobalVariables to CombinedConstantData ([#6071](AztecProtocol/aztec-packages#6071)) ([cf026d2](AztecProtocol/aztec-packages@cf026d2)) * Update fees kernel tracking docs ([#6151](AztecProtocol/aztec-packages#6151)) ([7d80428](AztecProtocol/aztec-packages@7d80428)) </details> <details><summary>barretenberg: 0.37.1</summary> ## [0.37.1](AztecProtocol/aztec-packages@barretenberg-v0.37.0...barretenberg-v0.37.1) (2024-05-07) ### Features * **avm:** Add TransactionFee opcode to simulator ([#6210](AztecProtocol/aztec-packages#6210)) ([fcac844](AztecProtocol/aztec-packages@fcac844)) * Honk flows exposed through wasm ([#6096](AztecProtocol/aztec-packages#6096)) ([c9b3206](AztecProtocol/aztec-packages@c9b3206)) * Osxcross ([#6099](AztecProtocol/aztec-packages#6099)) ([6cc924d](AztecProtocol/aztec-packages@6cc924d)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([#6150](AztecProtocol/aztec-packages#6150)) ([acc8641](AztecProtocol/aztec-packages@acc8641)) ### Bug Fixes * Correct circuit size estimation for UltraHonk ([#6164](AztecProtocol/aztec-packages#6164)) ([ed84fe3](AztecProtocol/aztec-packages@ed84fe3)) * Sporadic failure of GoblinRecursionTests.Vanilla ([#6218](AztecProtocol/aztec-packages#6218)) ([f4ecea5](AztecProtocol/aztec-packages@f4ecea5)) ### Miscellaneous * Migrate acir tests to earthly ([#6142](AztecProtocol/aztec-packages#6142)) ([18c8ea8](AztecProtocol/aztec-packages@18c8ea8)) </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.37.1</summary> [0.37.1](AztecProtocol/aztec-packages@aztec-package-v0.37.0...aztec-package-v0.37.1) (2024-05-07) * Proving benchmark ([AztecProtocol#6051](AztecProtocol#6051)) ([644bd85](AztecProtocol@644bd85)) </details> <details><summary>barretenberg.js: 0.37.1</summary> [0.37.1](AztecProtocol/aztec-packages@barretenberg.js-v0.37.0...barretenberg.js-v0.37.1) (2024-05-07) * Honk flows exposed through wasm ([AztecProtocol#6096](AztecProtocol#6096)) ([c9b3206](AztecProtocol@c9b3206)) * Run noir-packages-test in Earthly ([AztecProtocol#6174](AztecProtocol#6174)) ([58e40c9](AztecProtocol@58e40c9)) * Bump bb.js timeouts ([AztecProtocol#6196](AztecProtocol#6196)) ([acab3de](AztecProtocol@acab3de)) * Migrate acir tests to earthly ([AztecProtocol#6142](AztecProtocol#6142)) ([18c8ea8](AztecProtocol@18c8ea8)) </details> <details><summary>aztec-packages: 0.37.1</summary> [0.37.1](AztecProtocol/aztec-packages@aztec-packages-v0.37.0...aztec-packages-v0.37.1) (2024-05-07) * Add ciphertext computation for log header ([AztecProtocol#6175](AztecProtocol#6175)) ([3e05534](AztecProtocol@3e05534)) * Add proving retries ([AztecProtocol#6145](AztecProtocol#6145)) ([39ab99c](AztecProtocol@39ab99c)) * Add public teardown to circuit structs ([AztecProtocol#6191](AztecProtocol#6191)) ([03e1b93](AztecProtocol@03e1b93)) * Always including debug data in a function artifact ([AztecProtocol#6223](AztecProtocol#6223)) ([5d6d22c](AztecProtocol@5d6d22c)) * **avm:** Add TransactionFee opcode to simulator ([AztecProtocol#6210](AztecProtocol#6210)) ([fcac844](AztecProtocol@fcac844)) * Complex outputs from acir call (noir-lang/noir#4952) ([3ed41a0](AztecProtocol@3ed41a0)) * Expose set_public_teardown_function in private context ([AztecProtocol#6199](AztecProtocol#6199)) ([4d8b51c](AztecProtocol@4d8b51c)) * Handle empty response foreign calls without an external resolver (noir-lang/noir#4959) ([3ed41a0](AztecProtocol@3ed41a0)) * Hash logs inside circuit ([AztecProtocol#5934](AztecProtocol#5934)) ([6b99527](AztecProtocol@6b99527)) * Honk flows exposed through wasm ([AztecProtocol#6096](AztecProtocol#6096)) ([c9b3206](AztecProtocol@c9b3206)) * Include transaction fee in txreceipt ([AztecProtocol#6139](AztecProtocol#6139)) ([6785512](AztecProtocol@6785512)) * Making keys getters complete ([AztecProtocol#6171](AztecProtocol#6171)) ([e85dde9](AztecProtocol@e85dde9)) * Move noir-tests to earthly ([AztecProtocol#6185](AztecProtocol#6185)) ([4daea40](AztecProtocol@4daea40)) * Note hash read requests fixes and refactoring ([AztecProtocol#6125](AztecProtocol#6125)) ([9d03f34](AztecProtocol@9d03f34)) * Optimize array sets in if conditions (alternate version) (noir-lang/noir#4716) ([3ed41a0](AztecProtocol@3ed41a0)) * Osxcross ([AztecProtocol#6099](AztecProtocol#6099)) ([6cc924d](AztecProtocol@6cc924d)) * Parsing non-string assertion payloads in noir js ([AztecProtocol#6079](AztecProtocol#6079)) ([fbd78fd](AztecProtocol@fbd78fd)) * Proving benchmark ([AztecProtocol#6051](AztecProtocol#6051)) ([644bd85](AztecProtocol@644bd85)) * Proving the private kernels and app circuits ([AztecProtocol#6112](AztecProtocol#6112)) ([4a43fab](AztecProtocol@4a43fab)) * Publish transaction_fee ([AztecProtocol#6126](AztecProtocol#6126)) ([6f3a036](AztecProtocol@6f3a036)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([AztecProtocol#6150](AztecProtocol#6150)) ([acc8641](AztecProtocol@acc8641)) * Run noir-packages-test in Earthly ([AztecProtocol#6174](AztecProtocol#6174)) ([58e40c9](AztecProtocol@58e40c9)) * Set aztec private functions to be recursive ([AztecProtocol#6192](AztecProtocol#6192)) ([22625f8](AztecProtocol@22625f8)) * Use actual tx fee in gas token when charging fee ([AztecProtocol#6166](AztecProtocol#6166)) ([8418eac](AztecProtocol@8418eac)) * **abstract-phase-manager:** Get available gas from latest kernel output ([AztecProtocol#6102](AztecProtocol#6102)) ([0fa509b](AztecProtocol@0fa509b)) * Aztec-run not exposing port for builder ([AztecProtocol#6241](AztecProtocol#6241)) ([a80c091](AztecProtocol@a80c091)) * Boxes use base image ([AztecProtocol#6120](AztecProtocol#6120)) ([ef2589a](AztecProtocol@ef2589a)) * Correct circuit size estimation for UltraHonk ([AztecProtocol#6164](AztecProtocol#6164)) ([ed84fe3](AztecProtocol@ed84fe3)) * Docs release ci setup ([AztecProtocol#6159](AztecProtocol#6159)) ([6d5cfe6](AztecProtocol@6d5cfe6)) * **docs:** Fix broken link in tree implementations page ([AztecProtocol#6143](AztecProtocol#6143)) ([b39f1db](AztecProtocol@b39f1db)) * **docs:** Update sandbox reference ([AztecProtocol#6094](AztecProtocol#6094)) ([0641085](AztecProtocol@0641085)) * Increase default number of proving agents ([AztecProtocol#6146](AztecProtocol#6146)) ([5ade36e](AztecProtocol@5ade36e)) * Install aztec-builder ([AztecProtocol#6149](AztecProtocol#6149)) ([0497dcf](AztecProtocol@0497dcf)) * **public-kernel:** Only validate start-gas for execution requests ([AztecProtocol#6100](AztecProtocol#6100)) ([3ec9303](AztecProtocol@3ec9303)) * Scope netlify to yarn bin ([AztecProtocol#6162](AztecProtocol#6162)) ([be8e3c0](AztecProtocol@be8e3c0)) * Set up the ci runner for doc deployment ([AztecProtocol#6160](AztecProtocol#6160)) ([e295900](AztecProtocol@e295900)) * Sporadic failure of GoblinRecursionTests.Vanilla ([AztecProtocol#6218](AztecProtocol#6218)) ([f4ecea5](AztecProtocol@f4ecea5)) * Use annotated type when checking declaration (noir-lang/noir#4966) ([3ed41a0](AztecProtocol@3ed41a0)) * Use pushed build images. ([AztecProtocol#6154](AztecProtocol#6154)) ([426f7a7](AztecProtocol@426f7a7)) * Use random id for proving jobs ([AztecProtocol#6084](AztecProtocol#6084)) ([0e0fc58](AztecProtocol@0e0fc58)) * Various aztec-builder issues ([AztecProtocol#6233](AztecProtocol#6233)) ([9a644ba](AztecProtocol@9a644ba)) * **avm-simulator:** Avm's nested calls now stay internal and properly track PublicExecutionResult ([AztecProtocol#6165](AztecProtocol#6165)) ([9fd4f39](AztecProtocol@9fd4f39)) * **avm-simulator:** Make shifts take u8 ([AztecProtocol#5905](AztecProtocol#5905)) ([4719ff1](AztecProtocol@4719ff1)) * **avm-simulator:** Track recursive public execution result in avm-simulator for integration with old kernel ([AztecProtocol#6106](AztecProtocol#6106)) ([df3bcc6](AztecProtocol@df3bcc6)) * Bump bb.js timeouts ([AztecProtocol#6196](AztecProtocol#6196)) ([acab3de](AztecProtocol@acab3de)) * Check root parity is only enqueued once its deps are ready ([AztecProtocol#6015](AztecProtocol#6015)) ([c1120d1](AztecProtocol@c1120d1)) * **ci:** Force earthly prune if corrupted cache ([AztecProtocol#6152](AztecProtocol#6152)) ([3910314](AztecProtocol@3910314)) * **ci:** Improve dependency structure ([AztecProtocol#6200](AztecProtocol#6200)) ([3abc862](AztecProtocol@3abc862)) * **ci:** Migrate `protocol-circuits-gate-diff` to earthly ([AztecProtocol#6204](AztecProtocol#6204)) ([4b43295](AztecProtocol@4b43295)) * **ci:** More stable spot request ([AztecProtocol#6212](AztecProtocol#6212)) ([00156b5](AztecProtocol@00156b5)) * **ci:** Optimize e2e build ([AztecProtocol#6202](AztecProtocol#6202)) ([4614059](AztecProtocol@4614059)) * **ci:** Rollback earthly prune ([AztecProtocol#6208](AztecProtocol#6208)) ([3ccc6ac](AztecProtocol@3ccc6ac)) * **ci:** Try to make base image more stable ([AztecProtocol#6144](AztecProtocol#6144)) ([979a22d](AztecProtocol@979a22d)) * E2e workaround ([AztecProtocol#6158](AztecProtocol#6158)) ([7794d78](AztecProtocol@7794d78)) * Migrate acir tests to earthly ([AztecProtocol#6142](AztecProtocol#6142)) ([18c8ea8](AztecProtocol@18c8ea8)) * Rename instruction checks for side effects (noir-lang/noir#4945) ([3ed41a0](AztecProtocol@3ed41a0)) * Replace relative paths to noir-protocol-circuits ([cf543a6](AztecProtocol@cf543a6)) * Replace relative paths to noir-protocol-circuits ([53cf7bb](AztecProtocol@53cf7bb)) * Replace relative paths to noir-protocol-circuits ([ca29cea](AztecProtocol@ca29cea)) * Replace relative paths to noir-protocol-circuits ([08e538b](AztecProtocol@08e538b)) * Speedup static_call test ([AztecProtocol#6157](AztecProtocol#6157)) ([abe8875](AztecProtocol@abe8875)) * Switch Noir JS to use execute program instead of circuit (noir-lang/noir#4965) ([3ed41a0](AztecProtocol@3ed41a0)) * Use correct call type ([AztecProtocol#6064](AztecProtocol#6064)) ([b3ae289](AztecProtocol@b3ae289)) * Add GlobalVariables to CombinedConstantData ([AztecProtocol#6071](AztecProtocol#6071)) ([cf026d2](AztecProtocol@cf026d2)) * Update fees kernel tracking docs ([AztecProtocol#6151](AztecProtocol#6151)) ([7d80428](AztecProtocol@7d80428)) </details> <details><summary>barretenberg: 0.37.1</summary> [0.37.1](AztecProtocol/aztec-packages@barretenberg-v0.37.0...barretenberg-v0.37.1) (2024-05-07) * **avm:** Add TransactionFee opcode to simulator ([AztecProtocol#6210](AztecProtocol#6210)) ([fcac844](AztecProtocol@fcac844)) * Honk flows exposed through wasm ([AztecProtocol#6096](AztecProtocol#6096)) ([c9b3206](AztecProtocol@c9b3206)) * Osxcross ([AztecProtocol#6099](AztecProtocol#6099)) ([6cc924d](AztecProtocol@6cc924d)) * Recursive folding verifier and decider as ultra circuits and circuit simulator ([AztecProtocol#6150](AztecProtocol#6150)) ([acc8641](AztecProtocol@acc8641)) * Correct circuit size estimation for UltraHonk ([AztecProtocol#6164](AztecProtocol#6164)) ([ed84fe3](AztecProtocol@ed84fe3)) * Sporadic failure of GoblinRecursionTests.Vanilla ([AztecProtocol#6218](AztecProtocol#6218)) ([f4ecea5](AztecProtocol@f4ecea5)) * Migrate acir tests to earthly ([AztecProtocol#6142](AztecProtocol#6142)) ([18c8ea8](AztecProtocol@18c8ea8)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
A follow-up to #5718:
Complete, with some caveats. In most cases, whatever log is being broadcast can be converted to bytes with one of the traits (in
log_traits
) and sha hashed. Note we now need these traits becausesha256_slice
has (understandably) been removed, so we must define a fixed length input for generic types.The one exception to this is broadcasting a contract class which ends up emitting up to 518,400 bytes. This is still hashed in ts via a new oracle method
emit_contract_class_unencrypted_log
. I believe it's fine to hash this outside of the circuit, because correctness will be guaranteed by the bytecode commitment (as opposed to a generic log, where we need the hash to come from the circuit to trust it).Complete, perhaps we should track lengths of each log to more easily split them into revertible/non-revertible later on?
tail
+ update documentationNow that
sha256_slice
is removed, we would have to flat hash all the empty space up to max logs - unsure whether this would give us any benefit?EDIT: After some testing, it is more efficient for larger numbers of logs (~9+) in both the circuit and L1, so I have implemented flat hashing.
logsCache
, likenoteCache
, to track logs + ordering in ts in nested executionsNote that the
logsCache
is only implemented (and required) in the private context for now.Public calls don't require squashing and removal of logs representing nullified notes, so an array (
allUnencryptedLogs
) will do. It currently just keeps track of ordering when we have nested calls, but will be useful for removing transient logs (#1641).tx.ts
error not throwingI'm not sure why this check exists - the comment:
implies that functions must emit both types of logs? A tx with one private call, which emits one encrypted log, should fail here, and I don't see why.
EDIT: Have removed the check as it seems redundant.
Note that in nested calls that have more than one side effect, logs will have duplicate side effect counters and so cannot be sorted correctly (#6052). Currently the logs collected in
allUnencryptedLogs
are the only place that have correctly ordered logs in this case.