Skip to content

Comments

fix(rpc-types): don't return EIP-4844 type for max_fee_per_blob_gas alone#3651

Merged
mattsse merged 1 commit intomainfrom
fix/tx-type-for-blob-fee-only
Feb 6, 2026
Merged

fix(rpc-types): don't return EIP-4844 type for max_fee_per_blob_gas alone#3651
mattsse merged 1 commit intomainfrom
fix/tx-type-for-blob-fee-only

Conversation

@gakonst
Copy link
Member

@gakonst gakonst commented Feb 6, 2026

When only max_fee_per_blob_gas is set without blob_versioned_hashes or sidecar, the transaction should not be classified as EIP-4844.

This matches go-ethereum behavior where ToTransaction() only returns BlobTxType if BlobHashes is set:
https://github.com/ethereum/go-ethereum/blob/master/internal/ethapi/transaction_args.go#L377-L379

case args.BlobHashes != nil || defaultType == types.BlobTxType:
    usedType = types.BlobTxType

The issue was causing eth_simulateV1 to fail in reth with Transaction is not buildable when processing transactions with just maxFeePerBlobGas set, while other clients (geth, besu, nethermind, erigon) handled it correctly.

Changes:

  • Add has_eip4844_blob_data() method that only checks for sidecar or blob_versioned_hashes (not just max_fee_per_blob_gas)
  • Update preferred_type() and minimal_tx_type() to use the new method
  • Update documentation to clarify the behavior

Fixes: paradigmxyz/reth#21809

…lone

When only max_fee_per_blob_gas is set without blob_versioned_hashes or
sidecar, the transaction should not be classified as EIP-4844.

This matches go-ethereum behavior where ToTransaction() only returns
BlobTxType if BlobHashes is set:
https://github.com/ethereum/go-ethereum/blob/master/internal/ethapi/transaction_args.go

The issue was causing eth_simulateV1 to fail with 'Transaction is not
buildable' when processing transactions with just maxFeePerBlobGas set,
while other clients (geth, besu, nethermind, erigon) handled it correctly.

Changes:
- Add has_eip4844_blob_data() method that only checks for sidecar or
  blob_versioned_hashes (not just max_fee_per_blob_gas)
- Update preferred_type() and minimal_tx_type() to use the new method
- Update documentation to clarify the behavior

Fixes: paradigmxyz/reth#21809
Amp-Thread-ID: https://ampcode.com/threads/T-019c32bb-6721-779b-ad46-b1cbcace664a
Co-authored-by: Amp <[email protected]>
gakonst added a commit to paradigmxyz/reth that referenced this pull request Feb 6, 2026
…data

Adds an e2e test that verifies eth_simulateV1 correctly handles
transactions with maxFeePerBlobGas set but no blob_versioned_hashes
or sidecar. The transaction should be treated as EIP-1559.

This test reproduces the issue where reth returned 'Transaction is
not buildable' while geth, besu, nethermind, and erigon all succeeded.

The root cause is fixed in alloy-rs/alloy#3651.

Closes #21809

Amp-Thread-ID: https://ampcode.com/threads/T-019c32bb-6721-779b-ad46-b1cbcace664a
Co-authored-by: Amp <[email protected]>
@github-project-automation github-project-automation bot moved this to Reviewed in Alloy Feb 6, 2026
@mattsse mattsse merged commit baf1f13 into main Feb 6, 2026
30 checks passed
@mattsse mattsse deleted the fix/tx-type-for-blob-fee-only branch February 6, 2026 12:51
@github-project-automation github-project-automation bot moved this from Reviewed to Done in Alloy Feb 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Inconsistency of eth_simulateV1

2 participants