Skip to content
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(prover)!: Add EIP4844 support for provers subsystem #1200

Merged
merged 55 commits into from
Mar 1, 2024

Conversation

EmilLuta
Copy link
Contributor

@EmilLuta EmilLuta commented Feb 22, 2024

This PR adds support for EIP4844 as part of 1.4.2 release.

To support EIP4844, the prover needs to:

  • prove EIP4844 blobs
  • inject the result into scheduler proof

EIP4844 is special cased for 1.4.2. Later (1.5.0) it will behave like any other circuit.

How EIP4844 works?

Blob proofs are generated at basic/ aggregation_round 0 stage and are marked as final nodes to be inserted into scheduler. If there is a single blob, the witness for the second blob needs to be zeroed out whilst the proof still needs to be injected (any proof will work). Blobs are stored in witness_inputs_fri and scheduler_dependency_tracker is aware of the proofs as circuit_255_final_prover_job_id_0 for the first blob and circuit_255_final_prover_job_id_1 for the second blob. (circuit id 255 is blob, until the code-base migrates to 1.5.0, when it will become a regular circuit).

prover/witness_generator/src/scheduler.rs Outdated Show resolved Hide resolved
prover/witness_generator/src/basic_circuits.rs Outdated Show resolved Hide resolved
prover/witness_generator/src/basic_circuits.rs Outdated Show resolved Hide resolved
core/lib/dal/src/fri_scheduler_dependency_tracker_dal.rs Outdated Show resolved Hide resolved
@EmilLuta EmilLuta changed the title (WIP) Dirty initial commit feature!(prover): Add EIP4844 support for provers subsystem Feb 26, 2024
Copy link
Contributor

@perekopskiy perekopskiy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall looks good! Left some minor comments

Copy link
Collaborator

@RomanBrodetski RomanBrodetski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good work!

core/lib/basic_types/src/basic_fri_types.rs Outdated Show resolved Hide resolved
core/lib/basic_types/src/basic_fri_types.rs Show resolved Hide resolved
core/lib/dal/src/fri_prover_dal.rs Outdated Show resolved Hide resolved
core/lib/dal/src/fri_witness_generator_dal.rs Outdated Show resolved Hide resolved
prover/witness_generator/src/scheduler.rs Outdated Show resolved Hide resolved
EmilLuta and others added 4 commits February 27, 2024 18:29
Co-authored-by: Roman Brodetski <rb@matterlabs.dev>
Co-authored-by: Roman Brodetski <rb@matterlabs.dev>
perekopskiy
perekopskiy previously approved these changes Feb 27, 2024
@EmilLuta
Copy link
Contributor Author

Had a sync with @RomanBrodetski, he's approving, but doesn't have access to github ATM.

zksync-admin-bot2 and others added 2 commits February 29, 2024 10:33
…e01b13f

chore: Update generated Prover FRI GPU setup-data keys from branch evl-4844-branch
Deniallugo
Deniallugo previously approved these changes Feb 29, 2024
zksync-admin-bot2 and others added 2 commits February 29, 2024 20:44
…e776783

chore: Update generated Prover FRI GPU setup-data keys from branch evl-4844-branch
@EmilLuta EmilLuta added this pull request to the merge queue Mar 1, 2024
Merged via the queue into main with commit 6953e89 Mar 1, 2024
36 checks passed
@EmilLuta EmilLuta deleted the evl-4844-branch branch March 1, 2024 07:04
RomanBrodetski pushed a commit that referenced this pull request Mar 1, 2024
🤖 I have created a release *beep* *boop*
---


##
[21.0.0](core-v20.8.0...core-v21.0.0)
(2024-03-01)


### ⚠ BREAKING CHANGES

* **prover:** Add EIP4844 support for provers subsystem
([#1200](#1200))
* Set 21 as latest protocol version
([#1262](#1262))

### Features

* A way to disable slow query logging for some queries
([#1297](#1297))
([13b82a0](13b82a0))
* **aggregator:** support two operator addresses in sender and
aggregator
([#1201](#1201))
([7be56e5](7be56e5))
* change EN main node fetcher concurrency factor
([#1317](#1317))
([d4235b5](d4235b5))
* **commitment-generator:** Commitment for 1.4.2
([#1234](#1234))
([9b773eb](9b773eb))
* **config:** add pubdata sending method to config
([#1261](#1261))
([cebf55a](cebf55a))
* **config:** Added blobs to commit batches and made da source part of
config ([#1243](#1243))
([e01d1b6](e01d1b6))
* **config:** update eth_sender to use blobs
([#1295](#1295))
([e81f080](e81f080))
* **core:** Adds support for 4844 transaction signing and rlp encoding
([#1254](#1254))
([10e3a3e](10e3a3e))
* **dal:** `zksync_types::Transaction` to use protobuf for wire encoding
(BFT-407)
([#1047](#1047))
([ee94bee](ee94bee))
* **eth_sender:** set blob gas fee when blobs DA is used
([#1285](#1285))
([57c5526](57c5526))
* **gas-adjuster:** gas adjuster for EIP4844
([#1255](#1255))
([1da97ed](1da97ed))
* Metrics for block tip
([#1144](#1144))
([85d4b12](85d4b12))
* **node_framework:** Add Web3 API layers
([#1258](#1258))
([105f4cc](105f4cc))
* **node_framework:** Support Proof Data Handler in the framework
([#1233](#1233))
([2191218](2191218))
* **prover:** Add EIP4844 support for provers subsystem
([#1200](#1200))
([6953e89](6953e89))
* Remove methods to sign an arbitraty message
([#1294](#1294))
([8904123](8904123))
* Set 21 as latest protocol version
([#1262](#1262))
([30579ef](30579ef))
* support loading verifier and protocol version from db
([#1293](#1293))
([533f013](533f013))


### Bug Fixes

* Add EIP4844 to fri_prover_group_config
([#1309](#1309))
([edf9397](edf9397))
* **api:** Use better gas per pubdata in API (pure server changes)
([#1311](#1311))
([54f8d8c](54f8d8c))
* **docker:** change default password for postgres
([#1250](#1250))
([f6bff74](f6bff74))
* **en:** fail fast if we don't request correct number of txs from man
node ([#1269](#1269))
([1bcbf17](1bcbf17))
* Fix scheduler enqueuer bug
([#1322](#1322))
([95deb92](95deb92))
* **snapshots_creator:** Fix snapshot generation query
([#1289](#1289))
([e279456](e279456))
* **vm:** fix match clause in `get_max_gas_per_pubdata_byte`
([#1292](#1292))
([eaf5a50](eaf5a50))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
github-merge-queue bot pushed a commit that referenced this pull request Mar 5, 2024
🤖 I have created a release *beep* *boop*
---


##
[12.0.0](prover-v11.0.0...prover-v12.0.0)
(2024-03-04)


### ⚠ BREAKING CHANGES

* **prover:** Add EIP4844 support for provers subsystem
([#1200](#1200))
* Set 21 as latest protocol version
([#1262](#1262))

### Features

* Adding ability to generate 4844 setup key and refactor
([#1143](#1143))
([975f54b](975f54b))
* **api:** Remove unused and obsolete token info
([#1071](#1071))
([e920897](e920897))
* **dal:** `zksync_types::Transaction` to use protobuf for wire encoding
(BFT-407)
([#1047](#1047))
([ee94bee](ee94bee))
* **db:** Soft-remove `storage` table
([#982](#982))
([601f893](601f893))
* **en:** Integrate snapshots recovery into EN
([#1032](#1032))
([c7cfaf9](c7cfaf9))
* **healthcheck:** Various healthcheck improvements
([#1166](#1166))
([1e34148](1e34148))
* improving verification key generation
([#1050](#1050))
([6f715c8](6f715c8))
* Prover interface and L1 interface crates
([#959](#959))
([4f7e107](4f7e107))
* **prover:** Add EIP4844 support for provers subsystem
([#1200](#1200))
([6953e89](6953e89))
* **prover:** Added --recompute-if-missing option to key generator
([#1151](#1151))
([cad7278](cad7278))
* **prover:** Added 4844 circuit to verification keys
([#1141](#1141))
([8b0cc4a](8b0cc4a))
* **prover:** Adding first support for 4844 circuit
([#1155](#1155))
([6f63c53](6f63c53))
* **prover:** adding keystore object to handle reading and writing of
prover keys
([#1132](#1132))
([1471615](1471615))
* **prover:** merging key generation into a single binary
([#1101](#1101))
([6de8b84](6de8b84))
* **prover:** Moved setup key generation logic to test harness
([#1113](#1113))
([469ab06](469ab06))
* **prover:** Use new shivini function for 4844 circuits
([#1205](#1205))
([376c09e](376c09e))
* Set 21 as latest protocol version
([#1262](#1262))
([30579ef](30579ef))
* **vlog:** Remove env getters from vlog
([#1077](#1077))
([00d3429](00d3429))


### Bug Fixes

* fix link
([#1007](#1007))
([f1424ce](f1424ce))
* make `zk status prover` use the new prover table
([#1044](#1044))
([9b21d7f](9b21d7f))
* **prover:** Decouple core/ prover database management
([#1029](#1029))
([37674fd](37674fd))
* **prover:** Fix initial prover migration
([#1083](#1083))
([6d54010](6d54010))
* **prover:** QoL socket utilization
([#1020](#1020))
([13a6816](13a6816))
* update harness to include fix to new boojum OOM
([#1053](#1053))
([4976941](4976941))


### Performance Improvements

* bump harness version
([#1003](#1003))
([1cbb4c9](1cbb4c9))
* reduce memory consumption of witness generation
([#696](#696))
([dea6768](dea6768))
* upgrade harness version to improve witness generation memory spike
([#1034](#1034))
([09bbb84](09bbb84))
* use jemalloc in witness generator
([#1014](#1014))
([917b2dc](917b2dc))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants