### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current behaviour

The help text says:

```
  replaceable(=N)
       Set RBF opt-in sequence number for input N (if not provided, opt-in all
       available inputs)
```

but when I don't provide N, I get an error:

```
$ bitcoin-tx -create in=0000000000000000000000000000000000000000000000000000000000000000:0 replaceable
error: Invalid TX input index ''
```

### Expected behaviour

I expect bitcoin-tx to act like its help string describes:

```
$ bitcoin-tx -create in=0000000000000000000000000000000000000000000000000000000000000000:0 replaceable
020000000100000000000000000000000000000000000000000000000000000000000000000000000000fdffffff0000000000
```

The fix is simple:

```
diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp
index a05443a2e5..b9348fcad0 100644
--- a/src/bitcoin-tx.cpp
+++ b/src/bitcoin-tx.cpp
@@ -222,7 +222,7 @@ static void MutateTxRBFOptIn(CMutableTransaction& tx, const std::string& strInId
 {
     // parse requested index
     int64_t inIdx;
-    if (!ParseInt64(strInIdx, &inIdx) || inIdx < 0 || inIdx >= static_cast<int64_t>(tx.vin.size())) {
+    if (strInIdx != "" && (!ParseInt64(strInIdx, &inIdx) || inIdx < 0 || inIdx >= static_cast<int64_t>(tx.vin.size()))) {
         throw std::runtime_error("Invalid TX input index '" + strInIdx + "'");
     }
 
```

### Steps to reproduce

Run the command shown above.

### Relevant log output

_No response_

### How did you obtain Bitcoin Core

Compiled from source

### What version of Bitcoin Core are you using?

master@e3eb3aae3

### Operating system and version

Debian 12

### Machine specifications

_No response_
{
    SetupBitcoinTxArgs(gArgs);
    std::string error;
    if (!gArgs.ParseParameters(argc, argv, error)) {
        tfm::format(std::cerr, "Error parsing command line arguments: %s\n", error);
        return EXIT_FAILURE;
    }
    
    try {
        SelectParams(gArgs.GetChainType());
    } catch (const std::exception& e) {
        tfm::format(std::cerr, "Error: %s\n", e.what());
        return EXIT_FAILURE;
    }
    fCreateBlank = gArgs.GetBoolArg("-create", false);
    if (argc < 2 || HelpRequested(gArgs) || gArgs.IsArgSet("-version")) {
        
        std::string strUsage = PACKAGE_NAME " bitcoin-tx utility version " + FormatFullVersion() + "\n";
        if (gArgs.IsArgSet("-version")) {
            strUsage += FormatParagraph(LicenseInfo());
        } else {
            strUsage += "\n"
                "Usage:  bitcoin-tx [options] <hex-tx> [commands]  Update hex-encoded bitcoin transaction\n"
                "or:     bitcoin-tx [options] -create [commands]   Create hex-encoded bitcoin transaction\n"
                "\n";
            strUsage += gArgs.GetHelpMessage();
        }
        tfm::format(std::cout, "%s", strUsage);