2016-10-18 16:37:32 +02:00
![Eclair Logo ](.readme/logo.png )
2016-01-21 15:39:56 +01:00
2017-03-17 19:08:24 +01:00
[![Build Status ](https://travis-ci.org/ACINQ/eclair.svg?branch=master )](https://travis-ci.org/ACINQ/eclair)
2017-03-17 19:07:29 +01:00
[![License ](https://img.shields.io/badge/license-Apache%202.0-blue.svg )](LICENSE)
2017-04-05 14:42:14 +02:00
[![Gitter chat ](https://img.shields.io/badge/chat-on%20gitter-rose.svg )](https://gitter.im/ACINQ/eclair)
2016-01-21 15:39:56 +01:00
2017-03-17 19:07:29 +01:00
**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.
2016-01-21 15:39:56 +01:00
2017-03-17 19:07:29 +01:00
This software follows the [Lightning Network Specifications (BOLTs) ](https://github.com/lightningnetwork/lightning-rfc ). Other implementations include [lightning-c], [lit], and [lnd].
2017-03-21 17:32:15 +01:00
---
2017-03-17 19:07:29 +01:00
:construction: Both the BOLTs and Eclair itself are a work in progress. Expect things to break/change!
2017-03-21 17:32:15 +01:00
:warning: 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.
2017-05-02 11:12:57 +02:00
:rotating_light: 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!
2016-10-18 16:23:31 +02:00
---
2017-03-17 19:07:29 +01:00
## Lightning Network Specification Compliance
2017-04-07 12:04:07 +02:00
Please see the latest [release note ](https://github.com/ACINQ/eclair/releases ) for detailed information on BOLT compliance.
2016-10-18 16:23:31 +02:00
2017-03-17 19:07:29 +01:00
## Overview
2016-10-18 16:23:31 +02:00
![Eclair Demo ](.readme/screen-1.png )
## Installation
2016-01-21 15:39:56 +01:00
2017-07-23 17:11:08 +02:00
:warning: **Those are valid for the most up-to-date, unreleased, version of eclair. Here are the [instructions for Eclair 0.2-alpha4](https://github.com/ACINQ/eclair/blob/v0.2-alpha4/README.md#installation)** .
2017-03-31 18:08:59 +02:00
2017-03-17 19:07:29 +01:00
### Configuring Bitcoin Core
2016-02-16 18:03:40 +01:00
2017-04-25 10:20:21 +02:00
Eclair needs a _synchronized_ , _segwit-ready_ , **_zeromq-enabled_** , _non-pruning_ , _tx-indexing_ [Bitcoin Core ](https://github.com/bitcoin/bitcoin ) node. This means that on Windows you will need Bitcoin Core 0.14+.
2016-02-17 16:45:24 +01:00
2017-03-31 18:08:59 +02:00
Run bitcoind with the following minimal `bitcoin.conf` :
2016-11-14 17:19:29 +01:00
```
2017-03-21 17:32:15 +01:00
regtest=1
2016-10-18 16:23:31 +02:00
server=1
2017-03-17 19:07:29 +01:00
rpcuser=XXX
rpcpassword=XXX
txindex=1
2017-03-31 18:08:59 +02:00
zmqpubrawblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29000
2016-02-16 17:55:10 +01:00
```
2016-10-18 16:23:31 +02:00
2017-03-17 19:07:29 +01:00
### Installing Eclair
2016-10-18 16:23:31 +02:00
2017-08-17 13:04:43 +02:00
The released binaries can be downloaded [here ](https://github.com/ACINQ/eclair/releases ).
2017-03-17 19:07:29 +01:00
#### Windows
Just use the windows installer, it should create a shortcut on your desktop.
2017-03-31 18:19:39 +02:00
#### Linux, macOS or manual install on Windows
2017-03-17 19:07:29 +01:00
2017-03-31 18:19:39 +02:00
You need to first install java, more precisely a [JRE 1.8 ](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html ).
2017-08-30 13:42:58 +02:00
:warning: If you are using the OpenJDK JRE, you will need to build OpenJFX yourself, or run the application in headless mode (see below).
2017-03-17 19:07:29 +01:00
2017-07-26 19:11:44 +02:00
Then download the latest fat jar and depending on whether or not you want a GUI run the following command:
* with GUI:
```shell
2017-08-23 19:28:18 +02:00
java -jar eclair-node-gui-< version > -< commit_id > .jar
2017-07-26 19:11:44 +02:00
```
* without GUI:
2016-10-18 16:23:31 +02:00
```shell
2017-08-23 19:28:18 +02:00
java -jar eclair-node-< version > -< commit_id > .jar
2016-11-14 17:19:29 +01:00
```
2016-02-16 18:03:40 +01:00
2017-03-17 19:07:29 +01:00
### Configuring Eclair
2017-08-30 13:42:58 +02:00
#### Configuration file
2016-02-16 17:55:10 +01:00
2017-08-30 13:42:58 +02:00
Eclair reads its configuration file, and write its logs, to a `datadir` directory, located in `~/.eclair` by default.
2017-03-21 17:32:15 +01:00
2017-08-30 13:42:58 +02:00
To change your node's configuration, create a file named `eclair.conf` in `datadir` . Here's an example configuration file:
2017-03-27 11:14:54 +02:00
2017-08-30 13:42:58 +02:00
```
eclair.server.port=9735
eclair.node-alias=eclair
eclair.node-color=49daaa
```
2017-03-27 11:14:54 +02:00
2017-08-30 13:42:58 +02:00
Here are some of the most common options:
2017-03-17 19:07:29 +01:00
2017-08-30 13:42:58 +02:00
name | description | default value
2017-03-17 19:07:29 +01:00
-----------------------------|---------------------------|--------------
2017-08-30 13:42:58 +02:00
eclair.server.port | Lightning TCP port | 9735
eclair.api.port | API HTTP port | 8080
2016-10-18 16:23:31 +02:00
eclair.bitcoind.rpcuser | Bitcoin Core RPC user | foo
eclair.bitcoind.rpcpassword | Bitcoin Core RPC password | bar
2017-03-31 18:08:59 +02:00
eclair.bitcoind.zmq | Bitcoin Core ZMQ address | tcp://127.0.0.1:29000
2016-10-18 16:23:31 +02:00
2017-08-17 13:04:43 +02:00
→ see [`reference.conf` ](eclair-core/src/main/resources/reference.conf ) for full reference. There are many more options!
2016-10-18 16:23:31 +02:00
2017-08-30 13:42:58 +02:00
#### Java Environment Variables
Some advanced parameters can be changed with java environment variables. Most users won't need this and can skip this section.
:warning: 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:
```shell
java -Declair.datadir=/tmp/node1 -jar eclair-node-gui-< version > -< commit_id > .jar
```
2016-10-18 16:37:32 +02:00
## JSON-RPC API
2017-03-21 17:32:15 +01:00
method | params | description
-------------|-----------------------------------------------|-----------------------------------------------------------
2017-06-27 10:46:30 +02:00
getinfo | | return basic node information (id, chain hash, current block height)
2017-04-25 10:33:41 +02:00
connect | host, port, nodeId | connect to another lightning node through a secure connection
open | host, port, nodeId, fundingSatoshis, pushMsat | opens a channel with another lightning node
2017-03-21 17:32:15 +01:00
peers | | list existing local peers
channels | | list existing local channels
channel | channelId | retrieve detailed information about a given channel
2017-08-23 14:14:33 +02:00
allnodes | | list all known nodes
allchannels | | list all known channels
2017-07-22 18:14:52 +02:00
receive | amountMsat, description | generate a payment request for a given amount
2017-03-21 17:32:15 +01:00
send | amountMsat, paymentHash, nodeId | send a payment to a lightning node
2017-07-26 18:57:31 +02:00
send | paymentRequest | send a payment to a lightning node using a BOLT11 payment request
2017-08-25 13:38:14 +02:00
send | paymentRequest, amountMsat | send a payment to a lightning node using a BOLT11 payment request and a custom amount
2017-03-21 17:32:15 +01:00
close | channelId | close a channel
close | channelId, scriptPubKey (optional) | close a channel and send the funds to the given scriptPubKey
help | | display available methods
2016-02-16 17:55:10 +01:00
2016-07-22 16:33:21 +02:00
## Resources
- [1] [The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments ](https://lightning.network/lightning-network-paper.pdf ) by Joseph Poon and Thaddeus Dryja
- [2] [Reaching The Ground With Lightning ](https://github.com/ElementsProject/lightning/raw/master/doc/deployable-lightning.pdf ) by Rusty Russell
[Amiko-Pay]: https://github.com/cornwarecjp/amiko-pay
[lightning-c]: https://github.com/ElementsProject/lightning
[lnd]: https://github.com/LightningNetwork/lnd
2017-03-17 19:07:29 +01:00
[lit]: https://github.com/mit-dci/lit
2016-07-22 16:33:21 +02:00
[Thunder]: https://github.com/blockchain/thunder
2017-03-17 19:07:29 +01:00