1
0
Fork 0
mirror of https://github.com/ACINQ/eclair.git synced 2025-02-23 14:40:34 +01:00
A scala implementation of the Lightning Network.
Find a file
Dominique 059f211916 Improve JSON RPC API error handling (#322)
Service pattern matching code visually separates each method and
params to improve the code readability and maintenance. Route completion
is handle on a case by case basis, for each call. This enables better error
management and useful feedback to the caller.

Added custom rejections to handle cases where the given rpc method or
params are not found or not correct.

HTTP code should now be consistent with the error returned.
2017-12-22 21:01:40 +01:00
.readme Updated README 2017-03-21 17:32:15 +01:00
eclair-core Improve JSON RPC API error handling (#322) 2017-12-22 21:01:40 +01:00
eclair-node back to SNAPSHOT 2017-12-14 18:22:39 +01:00
eclair-node-gui Assisted route handling (#279) 2017-12-20 19:14:24 +01:00
travis removed old protobuf dependency and related module 2017-01-31 16:23:35 +01:00
.dockerignore Docker support with repeatable build (#255) 2017-12-05 17:29:47 +01:00
.gitignore temporary test files are now written to target/ directory 2017-03-16 16:46:54 +01:00
.travis.yml Add an experimental SPV mode with bitcoinj (#152) 2017-09-07 17:20:36 +02:00
BUILD.md Added the maven command to build eclair-node only (#250) 2017-12-01 13:56:01 +01:00
Dockerfile Docker: can now set configuration and expose datadir, added doc (#256) 2017-12-08 15:36:50 +01:00
LICENSE now using sonatype repos for acinq-tools 2016-01-21 15:04:42 +01:00
pom.xml Improve JSON RPC API error handling (#322) 2017-12-22 21:01:40 +01:00
README.md Improve JSON RPC API error handling (#322) 2017-12-22 21:01:40 +01:00

Eclair Logo

Build Status License Gitter chat

Eclair (french for Lightning) is a scala implementation of the Lightning Network. It can run with or without a GUI, and a JSON-RPC API is also available.

This software follows the Lightning Network Specifications (BOLTs). Other implementations include lightning-c, lit, and lnd.


🚧 Both the BOLTs and Eclair itself are a work in progress. Expect things to break/change!

⚠️ Eclair currently only runs on regtest or testnet. We recommend testing in regtest, as it allows you to generate blocks manually and not wait for confirmations.

🚨 We had reports of Eclair being tested on various segwit-enabled blockchains. Keep in mind that Eclair is still alpha quality software, by using it with actual coins you are putting your funds at risk!


Lightning Network Specification Compliance

Please see the latest release note for detailed information on BOLT compliance.

Overview

Eclair Demo

Installation

⚠️ Those are valid for the most up-to-date, unreleased, version of eclair. Here are the instructions for Eclair 0.2-alpha5.

Configuring Bitcoin Core

Eclair needs a synchronized, segwit-ready, zeromq-enabled, non-pruning, tx-indexing Bitcoin Core node. This means that on Windows you will need Bitcoin Core 0.14+.

Run bitcoind with the following minimal bitcoin.conf:

regtest=1
server=1
rpcuser=XXX
rpcpassword=XXX
txindex=1
zmqpubrawblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29000

On testnet, you also need to make sure that all your UTXOs are p2sh-of-p2wpkh. To do this, use the debug console, create a new address with getnewaddress, import it as a witness address with addwitnessaddress, and send all your balance to this witness address. If you need to create and send funds manually, don't forget to create and specify a witness address for the change output (this option is avaliable on the GUI once you set the Enable coin control features wallet option).

Installing Eclair

The released binaries can be downloaded here.

Windows

Just use the windows installer, it should create a shortcut on your desktop.

Linux, macOS or manual install on Windows

You need to first install java, more precisely a JRE 1.8.

⚠️ If you are using the OpenJDK JRE, you will need to build OpenJFX yourself, or run the application in headless mode (see below).

Then download the latest fat jar and depending on whether or not you want a GUI run the following command:

  • with GUI:
java -jar eclair-node-gui-<version>-<commit_id>.jar
  • without GUI:
java -jar eclair-node-<version>-<commit_id>.jar

Configuring Eclair

Configuration file

Eclair reads its configuration file, and write its logs, to ~/.eclair by default.

To change your node's configuration, create a file named eclair.conf in ~/.eclair. Here's an example configuration file:

eclair.server.port=9735
eclair.node-alias=eclair
eclair.node-color=49daaa

Here are some of the most common options:

name description default value
eclair.server.port Lightning TCP port 9735
eclair.api.port API HTTP port 8080
eclair.bitcoind.rpcuser Bitcoin Core RPC user foo
eclair.bitcoind.rpcpassword Bitcoin Core RPC password bar
eclair.bitcoind.zmq Bitcoin Core ZMQ address tcp://127.0.0.1:29000

Quotes are not required unless the value contains special characters. Full syntax guide here.

→ see reference.conf for full reference. There are many more options!

Java Environment Variables

Some advanced parameters can be changed with java environment variables. Most users won't need this and can skip this section.

⚠️ Using separate datadir is mandatory if you want to run several instances of eclair on the same machine. You will also have to change ports in eclair.conf (see above).

name description default value
eclair.datadir Path to the data directory ~/.eclair
eclair.headless Run eclair without a GUI
eclair.printToConsole Log to stdout (in addition to eclair.log)

For example, to specify a different data directory you would run the following command:

java -Declair.datadir=/tmp/node1 -jar eclair-node-gui-<version>-<commit_id>.jar

JSON-RPC API

method params description
getinfo return basic node information (id, chain hash, current block height)
connect nodeId, host, port connect to another lightning node through a secure connection
open nodeId, host, port, fundingSatoshis, pushMsat opens a channel with another lightning node
peers list existing local peers
channels list existing local channels
channels nodeId list existing local channels opened with a particular nodeId
channel channelId retrieve detailed information about a given channel
allnodes list all known nodes
allchannels list all known channels
receive description generate a payment request without a required amount (can be useful for donations)
receive amountMsat, description generate a payment request for a given amount
send amountMsat, paymentHash, nodeId send a payment to a lightning node
send paymentRequest send a payment to a lightning node using a BOLT11 payment request
send paymentRequest, amountMsat send a payment to a lightning node using a BOLT11 payment request and a custom amount
checkpayment paymentHash returns true if the payment has been received, false otherwise
checkpayment paymentRequest returns true if the payment has been received, false otherwise
close channelId close a channel
close channelId, scriptPubKey (optional) close a channel and send the funds to the given scriptPubKey
help display available methods

Docker

A Dockerfile images are built on each commit on docker hub for running a dockerized eclair-node.

You can use the JAVA_OPTS environment variable to set arguments to eclair-node.

docker run -ti --rm -e "JAVA_OPTS=-Xmx512m -Declair.api.binding-ip=0.0.0.0 -Declair.node-alias=node-pm -Declair.printToConsole" acinq\eclair

If you want to persist the data directory, you can make the volume to your host with the -v argument, as the following example:

docker run -ti --rm -v "/path_on_host:/data" -e "JAVA_OPTS=-Declair.printToConsole" acinq\eclair

Resources