-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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(state-keeper): miniblock max payload size (BFT-417) #1284
Conversation
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.
Future work: It would probably make sense to somehow de-prioritize / space out large transactions so that they don't significantly increase latency of processing other transactions. (Miniblocks must have distinct timestamps, so if a large transaction causes a miniblock to be sealed early, the latency of the transactions following it in the mempool would suffer.)
core/lib/zksync_core/src/state_keeper/updates/miniblock_updates.rs
Outdated
Show resolved
Hide resolved
e8805ef
to
a5e83d1
Compare
The newly applied config are:
|
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.
Generally LGTM except for public models module.
# Conflicts: # core/lib/config/src/testonly.rs # core/lib/dal/src/consensus_dal.rs # core/lib/dal/src/lib.rs # core/lib/dal/src/models/mod.rs # core/lib/protobuf_config/src/proto/chain.proto # core/lib/zksync_core/src/state_keeper/io/mempool.rs # etc/env/base/chain.toml
# Conflicts: # core/lib/protobuf_config/src/proto/chain.proto
🤖 I have created a release *beep* *boop* --- ## [23.1.0](core-v23.0.0...core-v23.1.0) (2024-04-22) ### Features * **en:** Add boxed L2 client and use it in DI ([#1627](#1627)) ([9948187](9948187)) * Extract block_reverter into separate crate ([#1632](#1632)) ([8ab2488](8ab2488)) * Extract house keeper into separate crate ([#1685](#1685)) ([f6f49b7](f6f49b7)) * remove enum index migration ([#1734](#1734)) ([13c0f52](13c0f52)) * **state-keeper:** miniblock max payload size (BFT-417) ([#1284](#1284)) ([a3c8e81](a3c8e81)) ### Bug Fixes * **en:** Fix miscellaneous snapshot recovery nits ([#1701](#1701)) ([13bfecc](13bfecc)) * ensure two connections for both executor and async catchup ([#1755](#1755)) ([3b14a9f](3b14a9f)) * made consensus store certificates asynchronously from statekeeper ([#1711](#1711)) ([d1032ab](d1032ab)) * **merkle_tree:** don't panic in `BlockOutputWithProofs::verify_proofs` ([#1717](#1717)) ([a44fac9](a44fac9)) * **types:** fix LegacyCall type ([#1739](#1739)) ([712919f](712919f)) ### Performance Improvements * **en:** Monitor recovery latency by stage ([#1725](#1725)) ([d7efdd5](d7efdd5)) ### Reverts * **env:** Remove `ZKSYNC_HOME` env var from server ([#1713](#1713)) ([aed23e1](aed23e1)) --- 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 <mikeson.dp@gmail.com> Co-authored-by: perekopskiy <53865202+perekopskiy@users.noreply.github.com>
What ❔
Adding miniblock sealing according to max payload size.
Why ❔
Compliance with max payload size imposed in consensus modules.
Notes
MiniblockUpdates
is just a heuristic done by encoding every executed transaction only to find out the estimated encoding size.miniblock_max_payload_size
was added toStateKeeperConfig
, decoupled frommax_payload_size
inconsensus::config::Config
. It is possible to only use the latter, or to make the latter define/override the former. The state keeper max size should be less than 1/2 the consensus max size, because it never rejects the latest transaction, and doesn’t account for some metadata fields. Actual value in that respect was not set yet, because I wasn’t sure about values used for different non-test environments, or if we even want to keep this approach.MiniblockMaxPayloadSizeSealer
was added, implementingshould_seal_miniblock()
alone (withoutshould_seal_l1_batch_unconditionally
, as in traitIoSealCriteria
). This isn’t an ideal solution, so other ideas are welcome.The applied config are:
Closing BFT-417
Checklist
zk fmt
andzk lint
.zk spellcheck
.zk linkcheck
.