mirror of
https://github.com/ACINQ/eclair.git
synced 2025-01-19 05:33:59 +01:00
Update README.md and add build.md
This commit is contained in:
parent
f7e8d531fa
commit
c0a8edb598
20
BUILD.md
Normal file
20
BUILD.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Building Eclair
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
- [Java Development Kit](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html) 1.8+
|
||||||
|
- [Maven](https://maven.apache.org/download.cgi) 3.3.x
|
||||||
|
- [Inno Setup](http://www.jrsoftware.org/isdl.php) 5.5.9 (optional, if you want to generate the windows installer)
|
||||||
|
|
||||||
|
## Build
|
||||||
|
To build the project, simply run:
|
||||||
|
```shell
|
||||||
|
$ mvn package
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```shell
|
||||||
|
$ mvn package -DskipTests
|
||||||
|
```
|
||||||
|
To generate the windows installer:
|
||||||
|
```shell
|
||||||
|
$ mvn jfx:native
|
||||||
|
```
|
121
README.md
121
README.md
@ -1,84 +1,80 @@
|
|||||||
![Eclair Logo](.readme/logo.png)
|
![Eclair Logo](.readme/logo.png)
|
||||||
|
|
||||||
**Eclair** is a scala implementation of the Lightning Network. Eclair is french for Lightning.
|
|
||||||
|
|
||||||
:construction: This branch implements the [Lightning Network Specifications](https://github.com/lightningnetwork/lightning-rfc), it is a work in progress.
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/ACINQ/eclair.svg?branch=wip-bolts)](https://travis-ci.org/ACINQ/eclair)
|
[![Build Status](https://travis-ci.org/ACINQ/eclair.svg?branch=wip-bolts)](https://travis-ci.org/ACINQ/eclair)
|
||||||
|
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
|
||||||
|
|
||||||
|
**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)](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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 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):
|
||||||
|
|
||||||
|
- [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
|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
This software creates a node compatible with a Lightning network and provides a GUI to manage the node. A JSON-RPC API is available if you prefer to run it headless.
|
|
||||||
|
|
||||||
Available actions:
|
|
||||||
- Open a channel with another eclair or lightningd instance
|
|
||||||
- Display opened channels with the node (status, balance, capacity, ...)
|
|
||||||
- Receive payments from another node
|
|
||||||
- Send payments to another node
|
|
||||||
|
|
||||||
![Eclair Demo](.readme/screen-1.png)
|
![Eclair Demo](.readme/screen-1.png)
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
The project is under heavy development and no release is available yet. Still you can download the sources, compile the project with Maven (cf §Development) and run it on localhost.
|
### Configuring Bitcoin Core
|
||||||
|
|
||||||
---
|
Eclair needs a _synchronized_, _segwit-ready_, _non-pruning_, _tx-indexing_ [Bitcoin-core](https://github.com/bitcoin/bitcoin) node.
|
||||||
|
|
||||||
## Development
|
Run bitcoind with the following `bitcoin.conf`:
|
||||||
|
|
||||||
#### Set up the environment
|
|
||||||
- JDK 1.8+
|
|
||||||
- [Latest Scala installation](http://www.scala-lang.org/download/)
|
|
||||||
- [Maven](https://maven.apache.org/download.cgi)
|
|
||||||
- A segwit version of bitcoin core in testnet or regtest mode
|
|
||||||
|
|
||||||
:warning: eclair currently runs on regtest/segnet only. **Do not try and modify it to run on bitcoin mainnet!**
|
|
||||||
|
|
||||||
- Make sure that bitcoin-cli is on the path and edit ~/.bitcoin/bitcoin.conf and add:
|
|
||||||
```
|
```
|
||||||
|
testnet=1
|
||||||
server=1
|
server=1
|
||||||
regtest=1
|
rpcuser=XXX
|
||||||
rpcuser=***
|
rpcpassword=XXX
|
||||||
rpcpassword=***
|
txindex=1
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Run
|
### Installing Eclair
|
||||||
|
|
||||||
- Download the sources and build the executable JAR with the following command:
|
#### 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:
|
||||||
```shell
|
```shell
|
||||||
$ mvn package -DskipTests
|
java -jar eclair-node_xxxxxx-fat.jar
|
||||||
```
|
|
||||||
- Start bitcoind
|
|
||||||
- Mine enough blocks to activate segwit blocks:
|
|
||||||
```shell
|
|
||||||
$ bitcoin-cli generate 500
|
|
||||||
```
|
|
||||||
- Navigate to `eclair-node/target` and execute the jar `eclair-node_2.11-0.2-SNAPSHOT-xxxxxx-capsule-fat.jar`
|
|
||||||
````shell
|
|
||||||
$ java
|
|
||||||
-Declair.bitcoind.rpcuser=foo
|
|
||||||
-Declair.bitcoind.rpcpassword=bar
|
|
||||||
-jar eclair-node_2.11-0.2-SNAPSHOT-xxxxxx-capsule-fat.jar
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### JVM Options
|
### Configuring Eclair
|
||||||
|
|
||||||
option | default value | description
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
option | description | default value
|
||||||
|
-----------------------------|---------------------------|--------------
|
||||||
eclair.server.port | TCP port | 9735
|
eclair.server.port | TCP port | 9735
|
||||||
eclair.http.port | HTTP port | 8080
|
eclair.http.port | HTTP port | 8080
|
||||||
eclair.bitcoind.rpcuser | Bitcoin Core RPC user | foo
|
eclair.bitcoind.rpcuser | Bitcoin Core RPC user | foo
|
||||||
eclair.bitcoind.rpcpassword | Bitcoin Core RPC password | bar
|
eclair.bitcoind.rpcpassword | Bitcoin Core RPC password | bar
|
||||||
|
|
||||||
|
|
||||||
→ see [`application.conf`](eclair-node/src/main/resources/application.conf) for full reference.
|
→ see [`application.conf`](eclair-node/src/main/resources/application.conf) for full reference.
|
||||||
|
|
||||||
#### Testing with lightningd
|
|
||||||
|
|
||||||
→ Checkout [our guide](TESTING.md)
|
|
||||||
|
|
||||||
## JSON-RPC API
|
## JSON-RPC API
|
||||||
|
|
||||||
method | params | description
|
method | params | description
|
||||||
@ -90,32 +86,13 @@ option | default value | description
|
|||||||
close | channel_id | closes a channel
|
close | channel_id | closes a channel
|
||||||
help | | displays available methods
|
help | | displays available methods
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Project Status
|
|
||||||
- [X] Network
|
|
||||||
- [X] Routing (simple IRC prototype)
|
|
||||||
- [X] Channel protocol
|
|
||||||
- [X] HTLC Scripts
|
|
||||||
- [X] Unilateral close handling
|
|
||||||
- [X] Relaying Payment
|
|
||||||
- [ ] Fee management
|
|
||||||
- [X] Blockchain watcher
|
|
||||||
- [ ] Storing states in a database
|
|
||||||
|
|
||||||
## Resources
|
## Resources
|
||||||
- [1] [The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments](https://lightning.network/lightning-network-paper.pdf) by Joseph Poon and Thaddeus Dryja
|
- [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
|
- [2] [Reaching The Ground With Lightning](https://github.com/ElementsProject/lightning/raw/master/doc/deployable-lightning.pdf) by Rusty Russell
|
||||||
|
|
||||||
## Other implementations
|
|
||||||
Name | Language | Compatible
|
|
||||||
-------------|----------|------------
|
|
||||||
[Amiko-Pay] | Python | no
|
|
||||||
[lightning-c]| C | yes
|
|
||||||
[lnd] | Go | no
|
|
||||||
[Thunder] | Java | no
|
|
||||||
|
|
||||||
[Amiko-Pay]: https://github.com/cornwarecjp/amiko-pay
|
[Amiko-Pay]: https://github.com/cornwarecjp/amiko-pay
|
||||||
[lightning-c]: https://github.com/ElementsProject/lightning
|
[lightning-c]: https://github.com/ElementsProject/lightning
|
||||||
[lnd]: https://github.com/LightningNetwork/lnd
|
[lnd]: https://github.com/LightningNetwork/lnd
|
||||||
|
[lit]: https://github.com/mit-dci/lit
|
||||||
[Thunder]: https://github.com/blockchain/thunder
|
[Thunder]: https://github.com/blockchain/thunder
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user