public static RawTransaction decode(final String hexTransaction) {
        final byte[] transaction = Numeric.hexStringToByteArray(hexTransaction);
        TransactionType transactionType = getTransactionType(transaction);

        switch (transactionType) {
            case EIP1559:
                return decodeEIP1559Transaction(transaction);
            case EIP4844:
                return decodeEIP4844Transaction(transaction);
            case EIP2930:
                return decodeEIP2930Transaction(transaction);
            default:
                return decodeLegacyTransaction(transaction);
        }
    }
@Test
    public void testDecodingPreSigned4844() throws Exception {

        for (int i = 1; i < 3; i++) {
            String signedHexMessage = loadResourceAsString("blob_data/blob_tx_" + i + ".txt");
            SignedRawTransaction result =
                    (SignedRawTransaction) TransactionDecoder.decode(signedHexMessage);
            assertTrue(result.getTransaction() instanceof Transaction4844);
            Transaction4844 resultTransaction4844 = (Transaction4844) result.getTransaction();

            assertNotNull(result);
            assertEquals(
                    loadResourceAsString("blob_data/blob_data_" + i + ".txt"),
                    Numeric.toHexString(
                            resultTransaction4844.getBlobs().get().get(0).getData().toArray()));
            assertEquals(7L, resultTransaction4844.getChainId());
            assertEquals(BigInteger.valueOf(i - 1), resultTransaction4844.getNonce());
            assertEquals(BigInteger.valueOf(30000000000L), resultTransaction4844.getMaxFeePerGas());
            assertEquals(
                    BigInteger.valueOf(1000000000L),
                    resultTransaction4844.getMaxPriorityFeePerGas());
            assertEquals(BigInteger.valueOf(100000L), resultTransaction4844.getGasLimit());
            assertEquals(
                    "0x0000000000000000000000000000000000020000", resultTransaction4844.getTo());
            assertEquals(BigInteger.ZERO, resultTransaction4844.getValue());
            assertEquals("", resultTransaction4844.getData());
            assertEquals(BigInteger.ONE, resultTransaction4844.getMaxFeePerBlobGas());
            assertEquals("0x47b62d14c5d04d5b1489a4e46cee3ada098b1839", result.getFrom());
        }
    }