NethermindEth / NethermindEth/Catalyst

[Epic] Multi-block Blob Support

Open
#124 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Contracts EPIC Node
Dominant language
Rust
Stars
44
Forks
18
PR merge metrics
No merged PRs in 30d

Description

Problem:

A recent fork of Taiko's contracts added support for including multiple L2 blocks within a single blob. However, our PoC implementation relies on an earlier version before this multi-block support (i.e., we use BlockParams instead of BlockParamsV2).

Supporting multi-block would require reconsideration of design, most notably around preconfirmation slashing. As outlined in our design doc, our current slashing logic (code) works by comparing the txListHash of the preconfirmed block with that of the proposed block. However, with the introduction of multi-block support, the hash of individual proposed blocks is no longer easily accessible on-chain. This is because the Taiko inbox now stores only the blob hash of the entire blob—which contains multiple blocks—along with offset information to introspect the blob.

Potential Solution(s):

  • Wait until the L2 tx list is settled in L1, then utilize the settled metadata of the individual L2 blocks for slashing.
  • Instead of slashing by comparing the whole tx list hash (or blob hash), we slash by comparing specific bytes within the tx list. E.g., Disputes look like “the preconfer preconfed an L2 block that has txListBytes[42]=0xAB, but the proposed blob had blobBytes[block offset within blob + 42]=0xFF". This would require each preconfirmation to include some commitment (likely KZG?) to the individual L2 blocks.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read Docs/design-doc.md, TaikoData.sol, and SmartContracts/src/avs/PreconfTaskManager.sol, starting with the current txListHash comparison and the BlockParams versus BlockParamsV2 distinction. The work is done when a multi-block slashing design is selected and its required implementation scope is documented.

Written by the indexing model from the issue text.

Assessment

Tech stack
solidity
Domain
blockchain
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.