### 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_
if (argc < 2) {
            tfm::format(std::cerr, "Error: too few parameters\n");
            return EXIT_FAILURE;
        }
        return EXIT_SUCCESS;
    }
    return CONTINUE_EXECUTION;
}
static void RegisterSetJson(const std::string& key, const std::string& rawJson)
{
    UniValue val;
    if (!val.read(rawJson)) {
        std::string strErr = "Cannot parse JSON for key " + key;
        throw std::runtime_error(strErr);
    }
    registers[key] = val;
}
static void RegisterSet(const std::string& strInput)
{
    
    size_t pos = strInput.find(':');
    if ((pos == std::string::npos) ||
        (pos == 0) ||
        (pos == (strInput.size() - 1)))
        throw std::runtime_error("Register input requires NAME:VALUE");
    std::string key = strInput.substr(0, pos);
    std::string valStr = strInput.substr(pos + 1, std::string::npos);
    RegisterSetJson(key, valStr);
}
static void RegisterLoad(const std::string& strInput)