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

Reduce QBFT throughput #1552

Closed
corverroos opened this issue Dec 13, 2022 · 0 comments
Closed

Reduce QBFT throughput #1552

corverroos opened this issue Dec 13, 2022 · 0 comments
Labels
protocol Protocol Team tickets

Comments

@corverroos
Copy link
Contributor

corverroos commented Dec 13, 2022

Problem to be solved

QBFT currently uses a lot of bandwidth (network bytes sent and received). So much so, that memory spikes to 1GB when doing block proposals of 300KB. This is due to a lot of duplication in the protocol and wire formats.

Proposed solution

Incorporate these optimisations:

  • use SSZ compression for proposed values (instead of json), saves 50%.
  • Use nested messages with signature wrapper types to avoid copying protos when verifying signatures, saves 50%.
  • QBFT messages should only contain hashes, only include uniq map of hashes to original values in a wrapper type, saves 90%.
  • Avoid all in-memory duplication of original values. Only buffer hash based QBFT messages.

This is a big protocol level refactor, implement this as QBFT v2 and use prioritise to enable/disable.

@thomasheremans thomasheremans added the protocol Protocol Team tickets label Jan 23, 2023
obol-bulldozer bot pushed a commit that referenced this issue Mar 1, 2023
Upgrades the QBFT wire protocol (without breaking backwards compatibility) by adding the whole value to the `ConsensusMsg` envelope and hashes of those values to the `QBFTMsg` itself. This will allow us to remove the values from the QBFT messages, which will reduce network bandwidth usage by a lot (90% for large values; beacon blocks).

This increases the network bandwidth for next release v0.14, but once we remove support for v0.13, it will reduce it by a lot.

category: feature
ticket: #1552
obol-bulldozer bot pushed a commit that referenced this issue Mar 20, 2023
Removes support for backwards compatible duplicate QBFT wire values. Only support "value pointers" in envelope. This decreases QBFT bandwidth by a lot. 

> Note this removes support for v0.13. Only v0.14 is supported.

category: feature
ticket: #1552
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
protocol Protocol Team tickets
Projects
None yet
Development

No branches or pull requests

2 participants