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

Spike: Blob measurements and questions #11526

Open
iAmMichaelConnor opened this issue Jan 27, 2025 · 1 comment
Open

Spike: Blob measurements and questions #11526

iAmMichaelConnor opened this issue Jan 27, 2025 · 1 comment
Assignees
Labels
team-turing Leila's team

Comments

@iAmMichaelConnor
Copy link
Contributor

Hi Leila's team!

Please could you help answer some Q's and collect some data about block root rollup circuit times, to inform some decisions about blobs?

Perhaps the data could be presented in comments below, or in a hackmd; whatever works for you.

  • Q1: Would it be possible to have various precomputed "sizes" of block root rollup circuit, for different numbers of blobs (e.g. 1,2,3,4,5,6,...)? How much engineering effort would this be?
  • Q2: How much engineering pain would it be to enable different blocks to be able to have differing numbers of blobs?
  • Q3: Currently, can side effects (such as contract bytecode) span a blob boundary?
  • Q4: how easy would it be to measure versions of the block root rollup circuit with different numbers of blobs?
    • Request: please could you create table of values:
      • 1, 2, 3, 4, 5, 6 along one axis ("# blobs in block root rollup") (maybe also 8, 10, 12 if the process of updating constants doesn't take too long)
      • Against categories:
        • Witness generation time
        • Proving time
        • Witness generation time + proving time
        • Gate count
        • Maybe RAM, if it becomes an issue for the bigger circuits.
      • It'll be interesting to see if witgen/proving times grow linearly or worse-than-linearly.
  • Request: please could you provide an up-to-date approximation of the number of gates that relate to "blob stuff" vs "other stuff" in the block root rollup circuit?
  • Q5: It would be interesting to understand how we would upgrade the Aztec protocol to support more blobs in future. Would it be feasible after launch? What would it entail? If our current design doesn't support upgrades easily, what should we do to improve it?
@MirandaWood
Copy link
Contributor

  • Q1 - This should be fine and not too difficult. I made the code generic over the constant BLOBS_PER_BLOCK to ensure it's easy to switch if we ever want to change that number.
  • Q2 - As above really - if we have seperate circuits for different numbers of blobs, we have achieved this. The most difficult part would be on L1 I think since gathering and storing public inputs for root proof verification is pretty complex and very close to stack too deep. If we have different cases for verifying this proof then we would have to rejig it even more. Not impossible or a bad idea though!
  • Q3 - Yes, it works today with no problem. The only part of this I'm not aware of is reconstructing blocks over separate blobs as @Maddiaa0 is handling that.
  • Q4 - Yep, I can do this. I do have 4-5 things on my todo list though so not sure when I can get to it. Do remember that in simulation (i.e. all e2e tests) we use an oracle to save time (feat(blobs): Remove ts blob oracle #10323).
  • Request: Yep, I can make an up to date flamegraph.
  • Q5 - As above, the circuits would be easy. Just requires changing BLOBS_PER_BLOCK. I'm not sure how reconstructing blocks from blobs in the node would work or whether having the L1 verification custom on this constant would be difficult to maintain though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
team-turing Leila's team
Projects
None yet
Development

No branches or pull requests

4 participants