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: Protocol semantic version #2059

Merged
merged 25 commits into from
May 30, 2024
Merged

Conversation

perekopskiy
Copy link
Contributor

@perekopskiy perekopskiy commented May 27, 2024

What ❔

Adds support for protocol semantic versions. Major version is always 0. Minor version has the same meaning as the previous concept of protocol version we used. Patch version can be bumped only for vks upgrades.
Adds new DB table protocol_vk_patches that keeps track of patch versions.

  • eth watcher was updated correspondingly to L1 contracts changes, now it also saves data to protocol_vk_patches
  • proof data handler passes and accepts protocol semantic version for each batch/final proof
  • eth sender determines patch version for batch proofs from L1 and waits for the proof generated for the patch to be present in GCS

Why ❔

It makes it possible to upgrade vks without bumping minor part of protocol version.

Checklist

  • PR title corresponds to the body of PR (we generate changelog entries from PRs).
  • Tests for the changes have been added / updated.
  • Documentation comments have been added / updated.
  • Code has been formatted via zk fmt and zk lint.
  • Spellcheck has been run via zk spellcheck.

Part of EVM-648

core/bin/genesis_generator/src/main.rs Outdated Show resolved Hide resolved
core/lib/basic_types/src/protocol_version.rs Outdated Show resolved Hide resolved
core/lib/basic_types/src/protocol_version.rs Outdated Show resolved Hide resolved
core/lib/dal/src/protocol_versions_dal.rs Show resolved Hide resolved
core/lib/dal/src/protocol_versions_dal.rs Outdated Show resolved Hide resolved
core/node/api_server/src/web3/namespaces/en.rs Outdated Show resolved Hide resolved
infrastructure/zk/src/config.ts Show resolved Hide resolved
prover/prover_fri_gateway/src/proof_gen_data_fetcher.rs Outdated Show resolved Hide resolved
core/lib/env_config/src/genesis.rs Show resolved Hide resolved
core/lib/prover_interface/src/outputs.rs Show resolved Hide resolved
core/lib/types/src/protocol_upgrade.rs Outdated Show resolved Hide resolved
core/node/eth_sender/src/aggregator.rs Outdated Show resolved Hide resolved
core/node/eth_sender/src/aggregator.rs Outdated Show resolved Hide resolved
core/node/eth_sender/src/eth_tx_aggregator.rs Show resolved Hide resolved
core/lib/basic_types/src/protocol_version.rs Show resolved Hide resolved
core/lib/basic_types/src/protocol_version.rs Show resolved Hide resolved
perekopskiy and others added 6 commits May 28, 2024 12:02
## What ❔

We'll store the semantic version of the protocol in the `common.json`.
For the upgrade itself we'll have to use packed format, but for the l2
transaction we'll use only the `minor` version (for compatibility with
the server). It is expected that the upgrade transaction is only present
during at least `minor` upgrades and never present during `patch` ones

## Why ❔

<!-- Why are these changes done? What goal do they contribute to? What
are the principles behind them? -->
<!-- Example: PR templates ensure PR reviewers, observers, and future
iterators are in context about the evolution of repos. -->

## Checklist

<!-- Check your PR fulfills the following items. -->
<!-- For draft PRs check the boxes as you complete them. -->

- [ ] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [ ] Tests for the changes have been added / updated.
- [ ] Documentation comments have been added / updated.
- [ ] Code has been formatted via `zk fmt` and `zk lint`.
- [ ] Spellcheck has been run via `zk spellcheck`.
## What ❔

Adjust prover subsystems to take into account patch versions.

## Why ❔

<!-- Why are these changes done? What goal do they contribute to? What
are the principles behind them? -->
<!-- Example: PR templates ensure PR reviewers, observers, and future
iterators are in context about the evolution of repos. -->

## Checklist

<!-- Check your PR fulfills the following items. -->
<!-- For draft PRs check the boxes as you complete them. -->

- [x] PR title corresponds to the body of PR (we generate changelog
entries from PRs).
- [x] Tests for the changes have been added / updated.
- [x] Documentation comments have been added / updated.
- [x] Code has been formatted via `zk fmt` and `zk lint`.
- [x] Spellcheck has been run via `zk spellcheck`.
mm-zk
mm-zk previously approved these changes May 29, 2024
core/lib/dal/src/protocol_versions_dal.rs Show resolved Hide resolved
core/lib/dal/src/protocol_versions_dal.rs Show resolved Hide resolved
core/lib/dal/src/protocol_versions_dal.rs Show resolved Hide resolved
core/node/eth_sender/src/aggregator.rs Show resolved Hide resolved
core/node/eth_sender/src/aggregator.rs Show resolved Hide resolved
mm-zk
mm-zk previously approved these changes May 29, 2024
Artemka374
Artemka374 previously approved these changes May 30, 2024
Artemka374
Artemka374 previously approved these changes May 30, 2024
@perekopskiy perekopskiy added this pull request to the merge queue May 30, 2024
Merged via the queue into main with commit 3984dcf May 30, 2024
52 checks passed
@perekopskiy perekopskiy deleted the sb-semver-for-protocol-version branch May 30, 2024 09:31
github-merge-queue bot pushed a commit that referenced this pull request May 30, 2024
🤖 I have created a release *beep* *boop*
---


##
[24.5.0](core-v24.4.0...core-v24.5.0)
(2024-05-30)


### Features

* Add protocol_version label to WG jobs metric
([#2009](#2009))
([e0a3393](e0a3393))
* **config:** remove zksync home
([#2022](#2022))
([d08fe81](d08fe81))
* **en:** Improve tree snapshot recovery
([#1938](#1938))
([5bc8234](5bc8234))
* Make house keeper emit correct protocol version
([#2062](#2062))
([a58a7e8](a58a7e8))
* **node_framework:** Migrate main node to the framework
([#1997](#1997))
([27a26cb](27a26cb))
* **node_framework:** Synchronize pools layer with logic in
initialize_components
([#2079](#2079))
([3202461](3202461))
* Protocol semantic version
([#2059](#2059))
([3984dcf](3984dcf))
* **prover:** Adnotate prover queue metrics with protocol version
([#1893](#1893))
([d1e1004](d1e1004))
* save writes needed for tree in state keeper
([#1965](#1965))
([471af53](471af53))
* **test:** Add filebased config support for integration tests
([#2043](#2043))
([be3ded9](be3ded9))
* **vm-runner:** implement VM runner main body
([#1955](#1955))
([bf5b6c2](bf5b6c2))


### Bug Fixes

* **API:** polish web3 api block-related types
([#1994](#1994))
([6cd3c53](6cd3c53))
* **en:** chunk factory deps
([#2077](#2077))
([4b9e6fa](4b9e6fa))
* **en:** Fix recovery-related metrics
([#2014](#2014))
([86355d6](86355d6))
* **eth-watch:** Do not track for stm, only for diamond proxy
([#2080](#2080))
([87adac9](87adac9))
* fix metrics reporting wrong values
([#2065](#2065))
([2ec010a](2ec010a))
* **loadtest:** resolve unit conversion error in loadtest metrics
([#1987](#1987))
([b5870a0](b5870a0))
* **merkle-tree:** Fix incoherent Merkle tree view
([#2071](#2071))
([2fc9a6c](2fc9a6c))
* **metadata-calculator:** protective reads sort
([#2087](#2087))
([160c13c](160c13c))
* **node_framework:** Fix the connection pool size for the catchup task
([#2046](#2046))
([c00a2eb](c00a2eb))
* **node_framework:** Use custom pool for commitiment generator
([#2076](#2076))
([994df8f](994df8f))
* **protocol_version:** Add backward compatibility
([#2097](#2097))
([391624b](391624b))
* **pruning:** Fix DB pruner responsiveness during shutdown
([#2058](#2058))
([0a07312](0a07312))
* **zk_toolbox:** Use both folders for loading contracts
([#2030](#2030))
([97c6d5c](97c6d5c))


### Performance Improvements

* **commitment-generator:** Run commitment generation for multiple
batches in parallel
([#1984](#1984))
([602bf67](602bf67))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: zksync-era-bot <[email protected]>
github-merge-queue bot pushed a commit that referenced this pull request May 30, 2024
🤖 I have created a release *beep* *boop*
---


##
[14.4.0](prover-v14.3.0...prover-v14.4.0)
(2024-05-30)


### Features

* Make house keeper emit correct protocol version
([#2062](#2062))
([a58a7e8](a58a7e8))
* **pli:** add support for persistent config
([#1907](#1907))
([9d5631c](9d5631c))
* Protocol semantic version
([#2059](#2059))
([3984dcf](3984dcf))
* **prover:** Add `prover_version` binary.
([#2089](#2089))
([e1822f6](e1822f6))


### Bug Fixes

* fix null protocol version error
([#2094](#2094))
([aab3a7f](aab3a7f))
* fix query for proof compressor metrics
([#2103](#2103))
([d23d24e](d23d24e))
* **prover_dal:** fix `save_prover_protocol_version` query
([#2096](#2096))
([d8dd1ae](d8dd1ae))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: perekopskiy <[email protected]>
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.

4 participants