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: save writes needed for tree in state keeper #1965

Merged
merged 12 commits into from
May 28, 2024

Conversation

perekopskiy
Copy link
Contributor

What ❔

State keeper saves data about L1 batch write logs into DB that is needed for tree. Then metadata calculator loads this data.

Why ❔

Currently, data loading in metadata calculator takes significant time, mostly because it needs enumeration indices for repeated writes and to get those it needs to perform a lot random reads against Postgres. But VM already knows these indices (they are needed to construct pubdata input and are loaded from RocksDB), so it can pass it to state_keeper and data can be persisted improving metadata calculator data load time.

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.

core/lib/dal/src/blocks_dal.rs Outdated Show resolved Hide resolved
core/lib/dal/src/blocks_dal.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Show resolved Hide resolved
@perekopskiy perekopskiy requested a review from slowli May 20, 2024 11:17
core/lib/dal/src/blocks_dal.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Outdated Show resolved Hide resolved
core/lib/types/src/storage/writes/mod.rs Outdated Show resolved Hide resolved
core/node/metadata_calculator/src/helpers.rs Outdated Show resolved Hide resolved
core/node/state_keeper/src/io/seal_logic/mod.rs Outdated Show resolved Hide resolved
itegulov
itegulov previously approved these changes May 22, 2024
Copy link
Contributor

@itegulov itegulov left a comment

Choose a reason for hiding this comment

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

Looks good on my side

## What ❔

Refactors state keeper, so tree writes are saved in a separate output
handler.

## Why ❔

Code quality: split `seal_l1_batch` method which is already huge.

## 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`.
@perekopskiy perekopskiy requested a review from slowli May 23, 2024 13:48
Copy link
Contributor

@slowli slowli left a comment

Choose a reason for hiding this comment

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

Generally, looks really good 👍

core/node/metadata_calculator/src/helpers.rs Outdated Show resolved Hide resolved
core/lib/dal/src/storage_logs_dedup_dal.rs Outdated Show resolved Hide resolved
core/lib/dal/src/storage_logs_dedup_dal.rs Outdated Show resolved Hide resolved
core/node/metadata_calculator/src/helpers.rs Outdated Show resolved Hide resolved
@perekopskiy perekopskiy requested review from itegulov and slowli May 28, 2024 10:26
@perekopskiy perekopskiy added this pull request to the merge queue May 28, 2024
github-merge-queue bot pushed a commit that referenced this pull request May 28, 2024
## What ❔

State keeper saves data about L1 batch write logs into DB that is needed
for tree. Then metadata calculator loads this data.

## Why ❔

Currently, data loading in metadata calculator takes significant time,
mostly because it needs enumeration indices for repeated writes and to
get those it needs to perform a lot random reads against Postgres. But
VM already knows these indices (they are needed to construct pubdata
input and are loaded from RocksDB), so it can pass it to state_keeper
and data can be persisted improving metadata calculator data load time.

## 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`.
Merged via the queue into main with commit 471af53 May 28, 2024
44 checks passed
@perekopskiy perekopskiy deleted the sk-prepare-tree-writes branch May 28, 2024 16:41
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 <zksync-era-bot@users.noreply.github.com>
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.

3 participants