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)
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].
:construction: Both the BOLTs and Eclair itself are a work in progress. Expect things to break/change!
:warning: Eclair currently only runs on regtest or testnet.
2016-10-18 16:23:31 +02:00
---
2017-03-17 19:07:29 +01:00
## Lightning Network Specification Compliance
Eclair 0.2-Alpha1 is fully compliant with the BOLTs at commit [06a5e6cbdbb4c6f8b8dab444de497cdb9c7d7f02 ](https://github.com/lightningnetwork/lightning-rfc/commit/06a5e6cbdbb4c6f8b8dab444de497cdb9c7d7f02 ):
2016-01-21 15:39:56 +01:00
2017-03-17 19:07:29 +01:00
- [X] BOLT 1: Base Protocol
- [X] BOLT 2: Peer Protocol for Channel Management
- [X] BOLT 3: Bitcoin Transaction and Script Formats
- [X] BOLT 4: Onion Routing Protocol
- [X] BOLT 5: Recommendations for On-chain Transaction Handling
- [X] BOLT 7: P2P Node and Channel Discovery
- [X] BOLT 8: Encrypted and Authenticated Transport
- [X] BOLT 9: Assigned Feature Flags
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-03-17 19:07:29 +01:00
### Configuring Bitcoin Core
2016-02-16 18:03:40 +01:00
2017-03-17 19:07:29 +01:00
Eclair needs a _synchronized_ , _segwit-ready_ , _non-pruning_ , _tx-indexing_ [Bitcoin-core ](https://github.com/bitcoin/bitcoin ) node.
2016-02-17 16:45:24 +01:00
2017-03-17 19:07:29 +01:00
Run bitcoind with the following `bitcoin.conf` :
2016-11-14 17:19:29 +01:00
```
2017-03-17 19:07:29 +01:00
testnet=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
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-03-17 19:07:29 +01:00
#### 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+.
Then just grab the latest fat jar and run:
2016-10-18 16:23:31 +02:00
```shell
2017-03-17 19:07:29 +01:00
java -jar eclair-node_xxxxxx-fat.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
Eclair will create a directory in `~/.eclair` by default. You may change this directory's location using `--datadir <dir>` command line argument.
If you want to change configuration parameters, create a file named `eclair.conf` in eclair's home directory.
2016-02-16 17:55:10 +01:00
2017-03-17 19:07:29 +01:00
option | description | default value
-----------------------------|---------------------------|--------------
2016-10-18 16:23:31 +02:00
eclair.server.port | TCP port | 9735
eclair.http.port | HTTP port | 8080
eclair.bitcoind.rpcuser | Bitcoin Core RPC user | foo
eclair.bitcoind.rpcpassword | Bitcoin Core RPC password | bar
2016-10-18 16:37:32 +02:00
→ see [`application.conf` ](eclair-node/src/main/resources/application.conf ) for full reference.
2016-10-18 16:23:31 +02:00
2016-10-18 16:37:32 +02:00
## JSON-RPC API
method | params | description
-------------|-------------------------------------|-----------------------------------------------------------
connect | host, port, anchor_amount | opens a channel with another eclair or lightningd instance
list | | lists existing channels
addhtlc | channel_id, amount, rhash, locktime | sends an htlc
fulfillhtlc | channel_id, r | fulfills an htlc
close | channel_id | closes a channel
help | | displays 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