2016-02-15 14:49:23 +01:00
[![Build Status ](https://travis-ci.org/ACINQ/eclair.svg?branch=master )](https://travis-ci.org/ACINQ/eclair)
2015-08-19 13:47:01 +02:00
# eclair
2016-01-21 15:39:56 +01:00
A scala implementation of the Lightning Network. Eclair is french for Lightning.
More precisely, this is an implementation of Rusty's [deployable lightning ](https://github.com/ElementsProject/lightning/raw/master/doc/deployable-lightning.pdf ). In particular it uses the same wire protocol, and almost the same state machine.
## Overview
2016-01-21 15:40:51 +01:00
The general idea is to have an actor per channel, everything being non-blocking.
2016-01-21 15:39:56 +01:00
A "blockchain watcher" is responsible for monitoring the blockchain, and sending events (eg. when the anchor is spent).
2016-01-21 15:40:51 +01:00
## Modules
* lightning-types: scala code generation using protobuf's compiler (wire protocol)
2016-01-21 15:47:10 +01:00
* eclair-demo: actual implementation
2016-01-21 15:40:51 +01:00
2016-01-21 15:39:56 +01:00
## Usage
2016-02-16 17:55:10 +01:00
- Either run from source:
```
mvn exec:java -Dexec.mainClass=fr.acinq.eclair.Boot
```
- Or compile and execute the jar:
```
mvn install
java -jar eclair-demo/target/eclair-demo_2.11-*-capsule-fat.jar
```
*See [TESTING.md ](TESTING.md ) for more details on how to use this software.*
## 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
2016-01-21 15:39:56 +01:00
## Status
2016-02-15 16:04:07 +01:00
- [X] Network
2016-01-21 15:39:56 +01:00
- [ ] Routing
- [X] Channel state machine
- [X] HTLC Scripts
2016-01-22 10:21:05 +01:00
- [ ] Unilateral close handling
2016-01-21 15:39:56 +01:00
- [ ] Relaying Payment
- [X] Blockchain watcher
2016-01-22 10:21:05 +01:00
- [ ] Storing states in a database
2016-01-21 15:39:56 +01:00
## Ressources
- [1] Lightning Network by Joseph Poon and Thaddeus Dryja ([website](http://lightning.network)), [github repository (golang) ](https://github.com/LightningNetwork/lnd )
2016-01-21 15:42:36 +01:00
- [2] Deployable Lightning by Rusty Russel (Blockstream), [github repository (C) ](https://github.com/ElementsProject/lightning )
2016-01-21 15:39:56 +01:00
- [3] Thunder Network by Mats Jerratsch (Blockchain.info), [github repository (Java) ](https://github.com/matsjj/thundernetwork )