From e622c11e26aa44230e72bb9b83da923ffda8dc2d Mon Sep 17 00:00:00 2001 From: skyc1e Date: Wed, 1 Apr 2026 22:32:13 +0200 Subject: [PATCH] feat(transaction-controller): add EIP-4844 blob transaction type (0x03) Add `blob = '0x3'` to the `TransactionEnvelopeType` enum so that EIP-4844 blob-carrying transactions are no longer rejected by validation. Blob transactions use EIP-1559 fee market parameters, so the type is also added to `TRANSACTION_ENVELOPE_TYPES_FEE_MARKET`. Closes MetaMask/core#8331 --- packages/transaction-controller/src/types.ts | 8 ++++++++ .../transaction-controller/src/utils/validation.test.ts | 4 ++-- packages/transaction-controller/src/utils/validation.ts | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/transaction-controller/src/types.ts b/packages/transaction-controller/src/types.ts index 3282ce2cebb..9da2656b1b8 100644 --- a/packages/transaction-controller/src/types.ts +++ b/packages/transaction-controller/src/types.ts @@ -1321,6 +1321,14 @@ export enum TransactionEnvelopeType { */ feeMarket = '0x2', + /** + * EIP-4844 defined the blob transaction type that allows for submitting + * binary large objects (blobs) to be persisted in the beacon node for a + * limited period of time. Blob transactions use EIP-1559 fee market + * parameters plus an additional `maxFeePerBlobGas` field. + */ + blob = '0x3', + /** * Adds code to externally owned accounts according to the signed authorizations * in the new `authorizationList` parameter. diff --git a/packages/transaction-controller/src/utils/validation.test.ts b/packages/transaction-controller/src/utils/validation.test.ts index 05e1b802160..918c5c6878e 100644 --- a/packages/transaction-controller/src/utils/validation.test.ts +++ b/packages/transaction-controller/src/utils/validation.test.ts @@ -44,9 +44,9 @@ describe('validation', () => { describe('validateTxParams', () => { it('should throw if unknown transaction envelope type is specified', () => { // eslint-disable-next-line @typescript-eslint/no-explicit-any - expect(() => validateTxParams({ type: '0x3' } as any)).toThrow( + expect(() => validateTxParams({ type: '0x5' } as any)).toThrow( rpcErrors.invalidParams( - 'Invalid transaction envelope type: "0x3". Must be one of: 0x0, 0x1, 0x2, 0x4', + 'Invalid transaction envelope type: "0x5". Must be one of: 0x0, 0x1, 0x2, 0x3, 0x4', ), ); }); diff --git a/packages/transaction-controller/src/utils/validation.ts b/packages/transaction-controller/src/utils/validation.ts index 203aaf075a0..4a30ac52bc9 100644 --- a/packages/transaction-controller/src/utils/validation.ts +++ b/packages/transaction-controller/src/utils/validation.ts @@ -21,6 +21,7 @@ export enum ErrorCode { const TRANSACTION_ENVELOPE_TYPES_FEE_MARKET = [ TransactionEnvelopeType.feeMarket, + TransactionEnvelopeType.blob, TransactionEnvelopeType.setCode, ];