bitcoin-s/docs/rpc/eclair.md
2024-05-10 12:37:02 -05:00

2.9 KiB

id title
rpc-eclair Eclair

This is a RPC client for Eclair. It assumes that a bitcoind instance is running.

Currently this RPC client is written for v0.10.0 version of Eclair.

Configuration of Eclair

Please see the configuration secion of the Eclair README.

You can find the configuration we use for our testing infrastrture for eclair here.

Starting Eclair

You need to download the jar from the eclair's github.

To run Eclair by unzipping the eclair-node-0.10.0-a63d2c2-bin.zip and then running

$ ./eclair-node-0.5.0-ac08560/bin/eclair-node.sh

If you wish to start Eclair from the RPC client, you can do one of the following:

  1. Construct a EclairRpcClient.binary field set
  2. Set the ECLAIR_PATH environment variable to the directory where the Eclair Jar is located.

We will default to using the binary field first when trying to start the jar, and the fallback to ECLAIR_PATH.

Here is an example of how to start eclair:

import org.apache.pekko.actor.ActorSystem
import org.bitcoins.eclair.rpc.client.EclairRpcClient
import org.bitcoins.eclair.rpc.config.EclairInstanceLocal
import java.nio.file.Paths
import scala.concurrent.ExecutionContext

implicit val system: ActorSystem = ActorSystem(s"eclair-rpc-${System.currentTimeMillis}")
implicit val ec: ExecutionContext = system.dispatcher

val datadirPath = Paths.get("path", "to", "datadir")
val binaryPath = Paths.get("path", "to", "eclair-node-0.10.0-a63d2c2", "bin", "eclair-node.sh")
val instance = EclairInstanceLocal.fromDatadir(datadirPath.toFile, logbackXml = None, proxyParams = None)
val client = new EclairRpcClient(instance, Some(binaryPath.toFile))

val startedF = client.start()

for {
  eclair <- startedF
  info <- eclair.getInfo
} yield {
  println(s"Eclair info: $info")
}

Connecting to the websocket

As of v0.10.0 eclair supports a websocket endpoint. This means you can receive updates of what is happening with eclair in real time. You can see an example of us testing this here