Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error (Invalid Character '<' Looking For Beginning Of Value) when trying to use RTL to swap in / swap out #1485

Open
Crumb5 opened this issue Feb 9, 2025 · 1 comment

Comments

@Crumb5
Copy link

Crumb5 commented Feb 9, 2025

Describe the bug
Error (Invalid Character '<' Looking For Beginning Of Value) when trying to use RTL to swap in / swap out

To Reproduce

Steps to reproduce the behavior:

  1. Have a local instance of RTL and a remote instance of boltzd
  2. Add the remote boltz address and path to admin.macaroon @ /rtl/config/services/boltz
  3. Visit /rtl/services/boltz/swapout and click "Start Swap Out"
  4. Error appears on RTL and on Boltzd
  5. Note: boltzd transactions made on the remote instance via cli DO appear in History table on RTL

Screenshots
RTL:

ERROR
Error Code
500
Error Message
Invalid Character '<' Looking For Beginning Of Value
API URL
./api/boltz/serviceInfo

Boltzd:

[WARN ] RPC request failed: invalid character '<' looking for beginning of value

Your environment

  • Version of RTL - (docker) shahanafarooqui/rtl:v0.15.4
  • Version of lnd/core lightning/eclair - "version": "v24.11.1",
  • Version of btcd, bitcoind, or other backend - Bitcoin Core version 28.1
  • Browser & browser version - Firefox v134.0.1
  • Operating system (uname -a on *Nix) - Ubuntu Server: 22.04 on local, 24.04 on remote
@0ceanSlim
Copy link

0ceanSlim commented Feb 13, 2025

I have this same issue. Something is not working right with boltz/cln

I don't see a v1/serviceinfo anywhere in the boltz docs for the api.

If it's using macaroons then it should be using the boltz rest server and not the grpc server. I've been trying to fix the issue so long I've confused myself now... Anyways I don't see any auth configuration for boltz in the example config nor in the cln one. boltz needs a macaroon header auth for rest communication and the grpc needs boltz tls info, Maybe boltz default install folder gives that but i cant tell what's wrong after troubleshooting for a day

boltzcli works fine

user@linux:~$ boltzcli getinfo
{
  "version": "v2.3.7-cc13544",
  "node": "CLN",
  "network": "mainnet",
  "nodePubkey": "*************************",
  "blockHeights": {
    "btc": 883586,
    "liquid": 3249713
  },
  "tenant": {
    "id": "1",
    "name": "admin"
  }
}

RTL-config.json

{
  "port": "3031",
  "defaultNodeIndex": 1,
  "dbDirectoryPath": "/home/user/RTL",
  "SSO": {
    "rtlSSO": 0,
    "rtlCookiePath": "",
    "logoutRedirectLink": ""
  },
  "nodes": [
    {
      "index": 1,
      "lnNode": "Core Lightning Node",
      "lnImplementation": "CLN",
      "authentication": {
        "runePath": "/home/user/.lightning/master-rune",
        "configPath": "/home/user/.lightning/config",
        "boltzMacaroonPath": "/home/user/.boltz/macaroons"
      },
      "settings": {
        "blockExplorerUrl": "https://mempool.space",
        "lnServerUrl": "http://127.0.0.1:3030",
        "userPersona": "OPERATOR",
        "themeMode": "NIGHT",
        "themeColor": "YELLOW",
        "unannouncedChannels": false,
        "logLevel": "INFO",
        "fiatConversion": false,
        "boltzServerUrl": "https://127.0.0.1:9003",
        "enableOffers": false,
        "enablePeerswap": false,
        "bitcoindConfigPath": "/home/user/.bitcoin/bitcoin.conf",
        "channelBackupPath": "/home/user/RTL/channels-backup/node-1",
        "logFile": "/home/user/RTL/logs/RTL-Node-1.log"
      }
    }
  ],
  "multiPassHashed": "*******************************************************"
}

boltz.toml

# Path to the log file
logfile = "debug.log"

# possible values: fatal, error, warn, info, debug, silly
loglevel = "info"

# possible values: "mainnet", "testnet" or "regtest"
network = "mainnet"

# you will have to set this to "cln" or "lnd" if you have configuration values >
node = "CLN"

[BOLTZ]
# By default the daemon automatically connects to the official Boltz Backend fo>
# This value is used to overwrite that
# url = "https://api.boltz.exchange"

[DATABASE]
# Path to the SQLite database file
# path = "~/test.db"

[CLN]
# Host of the gRPC interface of CLN
host = "127.0.0.1"

# Port of the gRPC interface of CLN
port = 8001

# Path to the data directory of CLN
datadir = "~/.lightning"

# Paths to TLS certificates and keys of CLN. Not required if datadir is specifi>
rootcert = "~/.lightning/bitcoin/ca.pem"
privatekey = "~/.lightning/bitcoin/client-key.pem"
certchain =  "~/.lightning/bitcoin/client.pem"

[RPC]
# Host of the gRPC interface
host = "127.0.0.1"

# Port of the gRPC interface
port = 9002

# Whether the REST proxy for the gRPC interface should be disabled
restDisabled = false

# Host of the REST proxy
restHost = "127.0.0.1"

# Port of the REST proxy
restPort = 9003

# Path to the TLS cert for the gRPC and REST interface
tlsCert = ""

# Path to the TLS private key for the gRPC and REST interface
tlsKey = ""

# Whether the macaroon authentication for the gRPC and REST interface should be>
noMacaroons = false

# Path to the admin macaroon for the gRPC and REST interface
adminMacaroonPath = ""

# Path to the read-only macaroon for the gRPC and REST interface
readOnlyMacaroonPath = ""

The log for RTL shows it making a request to the REST server with a GRPC macaroon metadata header. I think this is the issue.

logs

[2/13/2025, 9:30:16 AM] INFO: Boltz => Getting Boltz Information...
[2/13/2025, 9:30:16 AM] INFO: Common => Boltz Options.
[2/13/2025, 9:30:16 AM] INFO: Boltz => Getting List Swaps...
[2/13/2025, 9:30:16 AM] INFO: Common => Boltz Options.
[2/13/2025, 9:30:16 AM] INFO: Boltz => Boltz List Swaps Received.
[2/13/2025, 9:30:16 AM] INFO: Boltz => Boltz Information Received.
[2/13/2025, 9:30:34 AM] INFO: Boltz => Getting Service Information...
[2/13/2025, 9:30:34 AM] INFO: Common => Boltz Options.
[2/13/2025, 9:30:35 AM] ERROR: Boltz => Get Service Information Error: {"name":"StatusCodeError","statusCode":500,"message":"500 - {\"code\":2,\"message\":\"invalid character '<' looking for beginning of value\",\"details\":[]}","error":{"code":2,"message":"invalid character '<' looking for beginning of value","details":[]},"options":{"url":"https://127.0.0.1:9003/v1/serviceinfo","rejectUnauthorized":false,"json":true,"headers":{"Grpc-Metadata-macaroon":"my macaroon is here"},"simple":true,"resolveWithFullResponse":false,"transform2xxOnly":false},"response":{"statusCode":500,"body":{"code":2,"message":"invalid character '<' looking for beginning of value","details":[]},"headers":{"content-type":"application/json","vary":"Origin","date":"Thu, 13 Feb 2025 14:30:35 GMT","content-length":"88","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"127.0.0.1:9003","port":"9003","hostname":"127.0.0.1","hash":null,"search":null,"query":null,"pathname":"/v1/serviceinfo","path":"/v1/serviceinfo","href":"https://127.0.0.1:9003/v1/serviceinfo"},"method":"GET","headers":{"Grpc-Metadata-macaroon":"my macaroon is here","accept":"application/json"}}}}

It gets information and swaps just fine but when I click on a start swap in or out in RTL I get the 500

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants