Skip to content

feat(blobs): Integrate beacon chain client/web2 blob getter #9101

@MirandaWood

Description

@MirandaWood

Currently we manage DA by publishing all tx effects in calldata and verifying their correctness by hashing them to the TxsEffectsHash and ensuring it matches the one coming from the rollup root proof's public inputs.

We are moving to using blobs, which is cheaper than publishing calldata. Since the actual blob contents are not accessible in the EVM, we verify that the block's tx effects have been published by providing a proof of opening of the blob commitment, using an evaluation calculated in the rollup root (more info here).

This means we can no longer extract the block contents from calldata, as we do in the archiver's data_retrieval.ts. Instead, blobs are published to Ethereum's beacon chain. Unfortunately foundry does not seem to support any test beacon chain and viem doesn't have any methods to connect to it. From some (limited) research it seems like we would need to integrate a new client to extract the blob contents from the beacon chain.

EDIT: Since we can verify a blob of data is a) our data and b) valid (by checking the calculated blob hash against one stored in Rollup.sol, which we would only store once a blob's KZG proof has been verified), we could use a web2 blob store and just read the information in the archiver.


The interim approach will be to continue to publish calldata alongside the blob and extract that calldata in the same way as we do now. This calldata will not be verified against the rollup proof in the contract, but in ts it will be checked it matches the blob we are publishing. Then once we can extract the blob from the beacon chain, the calldata can simply be removed as an input to propose. I will mark all the interim things that need to be removed with //TODO(#9101).


Some hopefully useful links:

Sub-issues

Metadata

Metadata

Assignees

Labels

C-l1-contractsComponent: contracts deployed to L1C-nodeComponent: Aztec Node

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions