-
Notifications
You must be signed in to change notification settings - Fork 235
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: DataBus PoC (UltraHonk as extension of Ultra) #3181
Conversation
4362af5
to
b42af2d
Compare
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. 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.
MiscellaneousTransaction sizes based on how many contracts are deployed in the tx.
|
// Add mock data to op queue to simulate interaction with a previous circuit | ||
op_queue->populate_with_mock_initital_data(); | ||
|
||
auto builder = proof_system::GoblinUltraCircuitBuilder(op_queue); |
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.
nit: This feels like an unidiomatic way to declare a variable, more C++ish is:
proof_system::GoblinUltraCircuitBuilder builder{op_queue};
(or, before {} syntax, proof_system::GoblinUltraCircuitBuilder builder(op_queue);, but the less parser-ambiguous {} syntax is a Good Thing(tm) to me)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good. When I first learned C++ I was taught (and got in the habit of) always using brace initialization. I got a bit of pushback when I started using it in this codebase since it wasn't used anywhere else. I guess it's time to get back in the habit.
@@ -138,6 +139,7 @@ void UltraCircuitBuilder_<Arithmetization>::create_add_gate(const add_triple_<FF | |||
q_lookup_type.emplace_back(0); | |||
q_elliptic.emplace_back(0); | |||
q_aux.emplace_back(0); | |||
pad_additional_selectors(); |
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.
Does this mean we're calling a virtual function now for every gate added? Might be ok but worth discussing
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.
Moved this functionality to the Arithmetization
classes so we're more consistent in how we're achieving polymorphism
351eab6
to
de63b6d
Compare
4360e77
to
d05d274
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.
LGTM
🤖 I have created a release *beep* *boop* --- <details><summary>aztec-packages: 0.15.1</summary> ## [0.15.1](aztec-packages-v0.15.0...aztec-packages-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](#3335)) ([c99862c](c99862c)) * DataBus PoC (UltraHonk as extension of Ultra) ([#3181](#3181)) ([dd9dd84](dd9dd84)) * Deploy docs from CCI w/ netlify-cli ([#3348](#3348)) ([624d733](624d733)) * Fold batching challenge (alpha) ([#3291](#3291)) ([bc99a4f](bc99a4f)) * Open transcript polys as univariates in ECCVM ([#3331](#3331)) ([436b22e](436b22e)) * Sandbox packages ([#3360](#3360)) ([0dc2d58](0dc2d58)) * Slow updates experimentation ([#2732](#2732)) ([193e6c8](193e6c8)) * ZM updates for Translator concatenated polys ([#3343](#3343)) ([0e425db](0e425db)) ### Bug Fixes * Bootstrap bbjs. ([#3337](#3337)) ([06aedcb](06aedcb)) * Noir-compiler breadth-first resolver ([#3307](#3307)) ([02348cf](02348cf)) * Update command looks at devDeps ([#3276](#3276)) ([54ee38d](54ee38d)), closes [#3275](#3275) * Updating pedersen benchmarks ([#3211](#3211)) ([7e89ff3](7e89ff3)) * Warn on circular imports. ([#3350](#3350)) ([5bfbddb](5bfbddb)) ### Miscellaneous * All hashes in ts ([#3333](#3333)) ([6307e12](6307e12)) * Compute function tree root in ts. ([#3326](#3326)) ([48d8c7f](48d8c7f)) * **docs:** Suggest CLI install per project ([#3267](#3267)) ([b4c967b](b4c967b)) * Enforce bracing around blocks. Generally considered easier to read and less error prone. ([#3349](#3349)) ([ee11dec](ee11dec)) * Fix circulars in foundation. Also cleanup fields and optimise to be buffer underlying. ([#3351](#3351)) ([c4bf8d3](c4bf8d3)) * Public kernel tests ([#3325](#3325)) ([bace972](bace972)) ### Documentation * Fixed errors in Gas and Fees yellow paper ([#3363](#3363)) ([d818206](d818206)) * Initial network section of yellow paper ([#3341](#3341)) ([5a18615](5a18615)) * Yellow paper section on Gas and Fees ([#3327](#3327)) ([caa7e10](caa7e10)) </details> <details><summary>barretenberg.js: 0.15.1</summary> ## [0.15.1](barretenberg.js-v0.15.0...barretenberg.js-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](#3335)) ([c99862c](c99862c)) ### Miscellaneous * All hashes in ts ([#3333](#3333)) ([6307e12](6307e12)) </details> <details><summary>barretenberg: 0.15.1</summary> ## [0.15.1](barretenberg-v0.15.0...barretenberg-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](#3335)) ([c99862c](c99862c)) * DataBus PoC (UltraHonk as extension of Ultra) ([#3181](#3181)) ([dd9dd84](dd9dd84)) * Fold batching challenge (alpha) ([#3291](#3291)) ([bc99a4f](bc99a4f)) * Open transcript polys as univariates in ECCVM ([#3331](#3331)) ([436b22e](436b22e)) * ZM updates for Translator concatenated polys ([#3343](#3343)) ([0e425db](0e425db)) ### Bug Fixes * Bootstrap bbjs. ([#3337](#3337)) ([06aedcb](06aedcb)) * Updating pedersen benchmarks ([#3211](#3211)) ([7e89ff3](7e89ff3)) ### Miscellaneous * All hashes in ts ([#3333](#3333)) ([6307e12](6307e12)) </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.15.1</summary> ## [0.15.1](AztecProtocol/aztec-packages@aztec-packages-v0.15.0...aztec-packages-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](AztecProtocol/aztec-packages#3335)) ([c99862c](AztecProtocol/aztec-packages@c99862c)) * DataBus PoC (UltraHonk as extension of Ultra) ([#3181](AztecProtocol/aztec-packages#3181)) ([dd9dd84](AztecProtocol/aztec-packages@dd9dd84)) * Deploy docs from CCI w/ netlify-cli ([#3348](AztecProtocol/aztec-packages#3348)) ([624d733](AztecProtocol/aztec-packages@624d733)) * Fold batching challenge (alpha) ([#3291](AztecProtocol/aztec-packages#3291)) ([bc99a4f](AztecProtocol/aztec-packages@bc99a4f)) * Open transcript polys as univariates in ECCVM ([#3331](AztecProtocol/aztec-packages#3331)) ([436b22e](AztecProtocol/aztec-packages@436b22e)) * Sandbox packages ([#3360](AztecProtocol/aztec-packages#3360)) ([0dc2d58](AztecProtocol/aztec-packages@0dc2d58)) * Slow updates experimentation ([#2732](AztecProtocol/aztec-packages#2732)) ([193e6c8](AztecProtocol/aztec-packages@193e6c8)) * ZM updates for Translator concatenated polys ([#3343](AztecProtocol/aztec-packages#3343)) ([0e425db](AztecProtocol/aztec-packages@0e425db)) ### Bug Fixes * Bootstrap bbjs. ([#3337](AztecProtocol/aztec-packages#3337)) ([06aedcb](AztecProtocol/aztec-packages@06aedcb)) * Noir-compiler breadth-first resolver ([#3307](AztecProtocol/aztec-packages#3307)) ([02348cf](AztecProtocol/aztec-packages@02348cf)) * Update command looks at devDeps ([#3276](AztecProtocol/aztec-packages#3276)) ([54ee38d](AztecProtocol/aztec-packages@54ee38d)), closes [#3275](AztecProtocol/aztec-packages#3275) * Updating pedersen benchmarks ([#3211](AztecProtocol/aztec-packages#3211)) ([7e89ff3](AztecProtocol/aztec-packages@7e89ff3)) * Warn on circular imports. ([#3350](AztecProtocol/aztec-packages#3350)) ([5bfbddb](AztecProtocol/aztec-packages@5bfbddb)) ### Miscellaneous * All hashes in ts ([#3333](AztecProtocol/aztec-packages#3333)) ([6307e12](AztecProtocol/aztec-packages@6307e12)) * Compute function tree root in ts. ([#3326](AztecProtocol/aztec-packages#3326)) ([48d8c7f](AztecProtocol/aztec-packages@48d8c7f)) * **docs:** Suggest CLI install per project ([#3267](AztecProtocol/aztec-packages#3267)) ([b4c967b](AztecProtocol/aztec-packages@b4c967b)) * Enforce bracing around blocks. Generally considered easier to read and less error prone. ([#3349](AztecProtocol/aztec-packages#3349)) ([ee11dec](AztecProtocol/aztec-packages@ee11dec)) * Fix circulars in foundation. Also cleanup fields and optimise to be buffer underlying. ([#3351](AztecProtocol/aztec-packages#3351)) ([c4bf8d3](AztecProtocol/aztec-packages@c4bf8d3)) * Public kernel tests ([#3325](AztecProtocol/aztec-packages#3325)) ([bace972](AztecProtocol/aztec-packages@bace972)) ### Documentation * Fixed errors in Gas and Fees yellow paper ([#3363](AztecProtocol/aztec-packages#3363)) ([d818206](AztecProtocol/aztec-packages@d818206)) * Initial network section of yellow paper ([#3341](AztecProtocol/aztec-packages#3341)) ([5a18615](AztecProtocol/aztec-packages@5a18615)) * Yellow paper section on Gas and Fees ([#3327](AztecProtocol/aztec-packages#3327)) ([caa7e10](AztecProtocol/aztec-packages@caa7e10)) </details> <details><summary>barretenberg.js: 0.15.1</summary> ## [0.15.1](AztecProtocol/aztec-packages@barretenberg.js-v0.15.0...barretenberg.js-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](AztecProtocol/aztec-packages#3335)) ([c99862c](AztecProtocol/aztec-packages@c99862c)) ### Miscellaneous * All hashes in ts ([#3333](AztecProtocol/aztec-packages#3333)) ([6307e12](AztecProtocol/aztec-packages@6307e12)) </details> <details><summary>barretenberg: 0.15.1</summary> ## [0.15.1](AztecProtocol/aztec-packages@barretenberg-v0.15.0...barretenberg-v0.15.1) (2023-11-21) ### Features * **bb:** Add ability to write pk to file or stdout ([#3335](AztecProtocol/aztec-packages#3335)) ([c99862c](AztecProtocol/aztec-packages@c99862c)) * DataBus PoC (UltraHonk as extension of Ultra) ([#3181](AztecProtocol/aztec-packages#3181)) ([dd9dd84](AztecProtocol/aztec-packages@dd9dd84)) * Fold batching challenge (alpha) ([#3291](AztecProtocol/aztec-packages#3291)) ([bc99a4f](AztecProtocol/aztec-packages@bc99a4f)) * Open transcript polys as univariates in ECCVM ([#3331](AztecProtocol/aztec-packages#3331)) ([436b22e](AztecProtocol/aztec-packages@436b22e)) * ZM updates for Translator concatenated polys ([#3343](AztecProtocol/aztec-packages#3343)) ([0e425db](AztecProtocol/aztec-packages@0e425db)) ### Bug Fixes * Bootstrap bbjs. ([#3337](AztecProtocol/aztec-packages#3337)) ([06aedcb](AztecProtocol/aztec-packages@06aedcb)) * Updating pedersen benchmarks ([#3211](AztecProtocol/aztec-packages#3211)) ([7e89ff3](AztecProtocol/aztec-packages@7e89ff3)) ### Miscellaneous * All hashes in ts ([#3333](AztecProtocol/aztec-packages#3333)) ([6307e12](AztecProtocol/aztec-packages@6307e12)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This work adds some basic PoC DataBus functionality to the GoblinUltra/UltraHonk arithmetization. In particular, it allows for proving lookups/reads from a new
calldata
column in the execution trace. The corresponding relation has been set up to share logic with the existing log-derivative lookup relation implemented in the ECCVM proving system.This work also establishes the mechanism for reusing the conventional
Ultra
arithmetization/builder logic (e.g. gate creation) in builders that extend this basic functionality. This same mechanism will be used shortly by @lucasxia01 to add a custom gate for poseidon hashing.Checklist:
Remove the checklist to signal you've completed it. Enable auto-merge if the PR is ready to merge.