A scala implementation of the Lightning Network. Eclair is french for Lightning.
This software follows the BOLT specifications, therefore it is compatible with Blockstream's lightning-c.
The general idea is to have an actor per channel, everything being non-blocking.
A "blockchain watcher" is responsible for monitoring the blockchain, and sending events (eg. when the anchor is spent).
- lightning-types: scala code generation using protobuf's compiler (wire protocol)
- eclair-demo: actual implementation
Prerequisites:
- A JRE or JDK depending on wether you want to compile yourself or not (preferably > 1.8)
- A running bitcoin-demo (testnet or regtest)
Either run from source:
mvn exec:java -Dexec.mainClass=fr.acinq.eclair.Boot
Or grab the latest released jar and run:
java -jar eclair-demo_2.11-*-capsule-fat.jar
See TESTING.md for more details on how to use this software.
Available jvm options (see application.conf
for full reference):
eclair.server.port (default: 45000)
eclair.http.port (default: 8080)
eclair.bitcoind.rpcuser (default: foo)
eclair.bitcoind.rpcpassword (default: bar)
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 |
- Network
- Routing
- Channel protocol
- HTLC Scripts
- Unilateral close handling
- Relaying Payment
- Fee management
- Blockchain watcher
- Storing states in a database
- [1] The Bitcoin Lightning Network: Scalable Off-Chain Instant Payments by Joseph Poon and Thaddeus Dryja
- [2] Reaching The Ground With Lightning by Rusty Russell
Name | Language | Compatible |
---|---|---|
Amiko-Pay | Python | no |
lightning-c | C | yes |
lnd | Go | no |
Thunder | Java | no |