Skip to content

feat: blob transactions#357

Open
letypequividelespoubelles wants to merge 10 commits intomainfrom
356-blob-tx-in-rlp-txn-and-txn-data
Open

feat: blob transactions#357
letypequividelespoubelles wants to merge 10 commits intomainfrom
356-blob-tx-in-rlp-txn-and-txn-data

Conversation

@letypequividelespoubelles
Copy link
Copy Markdown
Contributor

@letypequividelespoubelles letypequividelespoubelles commented Jan 7, 2026

Note

Adds end-to-end support for blob transactions (type 3 / EIP‑4844) across decoding, RLP, and TXN data, plus accounting changes.

  • Introduces typeThreeTx with new RLP phases: IS_MAX_FEE_PER_BLOB_GAS and IS_BLOB_VERSIONED_HASHES, phase transitions/components, and constraints to parse blob hashes and derive NUMBER_OF_BLOBS
  • Extends instruction decoder/stack with BLOB_HASH_FLAG (stackDecBlobHashFlag) and wiring in into_instruction_decoder
  • RLP patterns/utilities: adds rlpProcessBlobHash; specialized processing and phase constraints for blob hash list
  • TXN data: adds RLP view fields (txnDataRlpMaxFeePerBlob, txnDataRlpNumberOfBlobs), HUB view BLOBBASEFEE, cumulative BLOB_GAS_CUMULATIVE, and constraint to enforce maxFeePerBlobGas >= blobBaseFee; updates row counts and shorthands
  • Lookups: RLP→TXNDATA augmented with blob fields; new RLP→BlobHash lookup; TXNDATA→BLOCKDATA lookup for final consumed (blob) gas
  • Hub stateless/WCP: remove separate wcp "resHi=0" constraint and instead set target resHi to 0 in the WCP lookup

Written by Cursor Bugbot for commit a3ce44d. This will update automatically on new commits. Configure here.

Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
@letypequividelespoubelles letypequividelespoubelles linked an issue Jan 7, 2026 that may be closed by this pull request
11 tasks
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/blob_hash.tex Outdated
\begin{enumerate}
\item bla
\item bla
\item bla : bla
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Placeholder text accidentally committed in lookup specification

Medium Severity

The target columns section contains placeholder "bla" text instead of actual column names. This incomplete specification means the lookup into the blob hash module is not properly defined, which would prevent correct verification of blob hash data.

Fix in Cursor Fix in Web

Comment thread rlp_txn/lookups/_inputs.tex Outdated
\loc{storage\_key\_hi} & \define & \rlpTxnComputationColumnExoDataColumn{1} _{i} \\
\loc{storage\_key\_lo} & \define & \rlpTxnComputationColumnExoDataColumn{2} _{i} \\
\loc{storage\_key\_hi} & \define & \rlpTxnComputationColumnExoDataColumn{1} _{i} \\
\loc{storage\_key\_lo} & \define & \rlpTxnComputationColumnCounterConstantAuxiliaryData{1} _{i} \\
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Storage key column conflicts with access list countdown

High Severity

The definition of \loc{storage\_key\_lo} was changed from \rlpTxnComputationColumnExoDataColumn{2} to \rlpTxnComputationColumnCounterConstantAuxiliaryData{1}. However, CounterConstantAuxiliaryData{1} is already used by \locAccessListItemCountdown within the same access list phase. This creates a column conflict where the storage key's low 128 bits and the item countdown counter would occupy the same column, potentially causing either value to be corrupted or incorrect during access list processing.

Additional Locations (1)

Fix in Cursor Fix in Web

Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/definition.tex Outdated
\loc{storage\_key\_hi} & \define & \rlpTxnComputationColumnExoDataColumn{1} _{i} \\
\loc{storage\_key\_lo} & \define & \rlpTxnComputationColumnExoDataColumn{2} _{i} \\
\loc{storage\_key\_hi} & \define & \rlpTxnComputationColumnExoDataColumn{1} _{i} \\
\loc{storage\_key\_lo} & \define & \rlpTxnComputationColumnCounterConstantAuxiliaryData{1} _{i} \\
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Storage key definition change contradicts explanatory comment

Medium Severity

The \loc{storage\_key\_lo} definition was changed from \rlpTxnComputationColumnExoDataColumn{2} to \rlpTxnComputationColumnCounterConstantAuxiliaryData{1}. However, the comment on lines 31-35 still states that the constraint "will end up equating $\rlpTxnComputationColumnExoDataColumn{k}$ with itself for $k = 1, 2$". The comment is now incorrect and suggests the code change may have been unintentional.

Fix in Cursor Fix in Web

Comment thread rlp_txn/columns/shared.tex
Comment thread rlp_txn/phase_constraints/blob_hash.tex
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/blob_hash.tex
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/blob_hash.tex Outdated
Comment thread rlp_txn/phase_constraints/blob_hash.tex
Comment thread pkg/rlp_patterns.sty
\newcommand{\rlpProcessBlobHashName} {\rlpDataProcessingCompoundConstraints{BLOBHASH}}
\newcommand{\rlpProcessBlobHash} [1] {
\setkeys[RLP]{var}{#1}
\rlpProcessBytesThirtyTwoName _{\cmdRLP@var@anchorRow}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Macro uses wrong name for output rendering

Medium Severity

The \rlpProcessBlobHash macro definition uses \rlpProcessBytesThirtyTwoName instead of the newly defined \rlpProcessBlobHashName. This causes the output to render as "BYTES32" instead of "BLOBHASH", making the specification inconsistent and potentially confusing when distinguishing blob hash processing from general 32-byte processing.

Fix in Cursor Fix in Web

Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/access_list/subphases/storage_key.tex
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Comment thread rlp_txn/phase_constraints/_inputs.tex
\begin{enumerate}
\item
\rlpTxnCommonColumnNumberOfBlobs{} \textbf{transaction-constant}
\item $\typeThreeTx_{i} = 0$ \Then $\rlpTxnCommonColumnNumberOfBlobs_{i} = 0$
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing conditional keyword in constraint

Medium Severity

The constraint for non-type-3 transactions is missing the \If keyword. The line reads $\typeThreeTx_{i} = 0$ \Then ... but should be \If $\typeThreeTx_{i} = 0$ \Then .... Without the conditional, this constraint is syntactically malformed and doesn't express the intended conditional logic.

Fix in Cursor Fix in Web

Comment thread rlp_txn/generalities/number_blob_hashes.tex
Comment thread rlp_txn/phase_constraints/blob_hash.tex
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>
\item $\numberr _{j}$
\item[\vspace{\fill}]
\item $consumed gas$
\item $consumed blob gas$
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Target columns are plain text instead of macros

Medium Severity

The target columns "consumed gas" and "consumed blob gas" are written as plain English text instead of proper LaTeX column reference macros like \col{...}. This indicates the lookup specification is incomplete and cannot be properly compiled or processed.

Fix in Cursor Fix in Web

\cumulativeConsumedBlobGas _{i + \locFirstRowOfNewTransactionRoff} & = &
\left[ \begin{array}{ll}
+ & \cumulativeConsumedBlobGas _{i} \\
+ & GASPERBLOB \cdot \txnDataRlpNumberOfBlobs _{i + \firtComputationOfSystemTransactionRowOffset + \rlpViewRowOffset} \\
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GASPERBLOB constant is undefined plain text

Medium Severity

GASPERBLOB is written as plain text rather than a defined LaTeX macro. Throughout the codebase, constants are defined using macros like \numConst{...} or \redm{...}. This undefined constant will render incorrectly and isn't properly linked to the EIP-4844 gas-per-blob value (131072).

Fix in Cursor Fix in Web

\item $\rlpTxnCommonColumnNumberOfBlobs _{i}$
\end{enumerate}
\end{multicols}
\item[\underline{Selector:}] we use $\loc{sel} _{i} = \user _{j} \cdot \isUserTxnRlpView_{j}$;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Target selector uses inconsistent row variable subscripts

High Severity

The newly added target selector line uses $\loc{sel} _{i} = \user _{j} \cdot \isUserTxnRlpView_{j}$, mixing row variable i (source) on the left with j (target) on the right. A selector cannot be defined at row i as an expression evaluated at row j. The subscript should consistently use j if this is a target selector.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

blob tx in rlp txn and txn data

1 participant