public static Transaction decodeOpaqueBytes(
      final Bytes opaqueBytes, final EncodingContext context) {
    var transactionType = getTransactionType(opaqueBytes);
    if (transactionType.isPresent()) {
      return decodeTypedTransaction(opaqueBytes, transactionType.get(), context);
    } else {
      // If the transaction type is not present, decode the opaque bytes as RLP
      return decodeRLP(RLP.input(opaqueBytes), context);
    }
  }
Decodes a transaction from opaque bytes. The method first determines the transaction type from
the bytes. If the type is present, it delegates the decoding process to the appropriate decoder
for that type. If the type is not present, it decodes the bytes as an RLP input.

@param opaqueBytes the opaque bytes
@param context the encoding context
@return the decoded transaction
ethereum/core/src/main/java/org/hyperledger/besu/ethereum/core/encoding/TransactionDecoder.java