Add an Eclair node to the regtest docker fixture

Completes backend coverage of RTL's three implementations in the docker/
dev fixture: an eclair node (polarlightning/eclair 0.13.1) joins the three
LND nodes and the CLN node, wired to RTL over its HTTP API with basic auth,
and the seed opens an eclair->bob channel (3.5M sats, 1M pushed), sends two
direct payments and leaves one open invoice.

Non-obvious plumbing this needed:

- polarlightning/eclair instead of acinq/eclair: the official image is
  amd64-only (useless on Apple Silicon) and its newest versioned tag is
  years stale; Polar builds the same ACINQ source multi-arch.
- Eclair has no on-chain wallet of its own -- it drives a bitcoind wallet.
  A new eclair-wallet-init container creates a dedicated "eclair" wallet
  before the node starts; without it eclair attaches to "the default
  loaded wallet", i.e. the rtldev mining wallet.
- bitcoind now also publishes a zmqpubhashblock endpoint (28336): eclair's
  bitcoind.zmqblock consumes the hashblock topic, not the rawblock one LND
  uses. Wired to rawblock, eclair never sees new blocks and channels hang
  in WAIT_FOR_FUNDING_CONFIRMED.
- Eclair confirms channels at 8 blocks (channel.min-depth-blocks), not 6,
  and 'open' returns before the funding tx is broadcast -- the seed waits
  for the mempool and mines 8 blocks for this channel.

Adds a bin/e-cli helper (eclair-cli with the API password), updates the
README, and verified end-to-end: seed completes, the channel reaches
NORMAL, both payments settle, and RTL's /rtl/api/ecl endpoints return the
node, channel and invoice data.
This commit is contained in:
saubyk 2026-07-18 00:23:08 -07:00 committed by Suheb
parent c2b8670099
commit 6e55059fe2
6 changed files with 243 additions and 18 deletions

View file

@ -133,3 +133,14 @@ this release should add its entry under the appropriate section below.
a `cln→alice` channel. This gives RTL's Core Lightning screens a real backend for local
development and testing — it was used to verify the CLN channel-connection fix above
end-to-end. See `docker/README.md`.
- **Added an Eclair node to the regtest docker fixture**
([#TBD](https://github.com/Ride-The-Lightning/RTL/pull/TBD)).
The `docker/` fixture now runs an `eclair` node alongside the LND and Core Lightning nodes,
completing backend coverage of all three implementations RTL supports. RTL talks to its HTTP
API with basic auth (`lnApiPassword`), and the seed opens an `eclair→bob` channel plus
payments and an open invoice so RTL's Eclair screens have data. Polar's multi-arch
`polarlightning/eclair` image is used because the official `acinq/eclair` image is amd64-only
and its versioned tags are years stale. Since Eclair drives a bitcoind wallet rather than its
own, an init container creates a dedicated `eclair` wallet before the node starts — otherwise
it would attach to the fixture's mining wallet. A `bin/e-cli` helper wraps `eclair-cli`.