1
0
mirror of https://github.com/ACINQ/eclair.git synced 2024-11-19 09:54:02 +01:00
Commit Graph

75 Commits

Author SHA1 Message Date
n1bor
1a8cb2a694 Addition of API calls checkinvoice and findroute (#475)
* Add api call to check invoice/paymentRequest and return details in json

* Adding in API call to allow user to check route before making send call

* Added a serializer for route response

* Update README to include new checkinvoice and findroute API calls
2018-03-24 10:51:15 +01:00
Fabrice Drouin
2a879f6b0c Update link to latest release (#492)
And specify that we will soon drop support for older (< 0.16) versions of Bitcoin Core
2018-03-20 17:23:34 +01:00
pm47
8721eebc4f
removed lit from Readme.MD (they don't follow the BOLTs) 2018-03-16 17:14:33 +01:00
Pierre-Marie Padiou
dceb6b9b06 Better handling of force-closing of channels (#483)
As soon as we receive a valid closing signature, we will publish the
resulting closing tx instead of our commitment tx if we need to
immediately close the channel (before end of negotiation, e.g. in case
of errors, or in case the counterparty goes OFFLINE).

When the closing signature didn't correspond to one we sent ourselves, we
weren't properly recognizing the publishing tx and went into
`ERR_INFORMATION_LEAK` state.

CMD_CLOSE is now split it to commands: 
* `CMD_CLOSE`: this command will succeed only if the current
channel state is in NORMAL, or if the channel hasn't yet been created.
* `CMD_FORCECLOSE`: the channel will publish its current local
commitment (or its best signed closing tx if it has one).

Using `CMD_FORCECLOSE` is more expensive and it incurs a delay before
funds are spendable, but this can be useful in some situations, for
example when the counterparty isn't responding anymore.

Added a new `forceclose` method to the API and a force close button in 
the GUI.
2018-03-15 18:53:14 +01:00
Stadicus
86bc8761e3 Update README to work with Bitcoin Core 0.16+ (#468)
The Bitcoin Core `addwitnessaddress` rpc command is deprecated in version 0.16.0. Thus, the example `bitcoin.conf` needs to be extended to with the option `deprecatedrpc=addwitnessaddress`.

Without this change, Eclair will not be able to open new channels and the following error message will be written to eclair.log: 

```
WARN akka.actor.OneForOneStrategy akka://default/user/$h/switchboard/peer-0390b6fbf04dd277955ce454c87b270d3c910fa96ef3d78afa4bf17d3b733fb877 - addwitnessaddress is deprecated and will be fully removed in v0.17. To use addwitnessaddress in v0.16, restart bitcoind with -deprecatedrpc=addwitnessaddress. Projects should transition to using the address_type argument of getnewaddress, or option -addresstype=[bech32|p2sh-segwit] instead. (code: -32)
```
2018-03-02 17:12:56 +01:00
Pierre-Marie Padiou
43128636ce Improvements & fixes (#459)
* moved CoinUtils to eclair-core to expose conversion methods

Parsing and converting string amount to BtcAmount objects, and
displaying BtcAmount as well formatted string is a common use case.
Methods that were developed for the gui module should be exposed from
eclair-core so that they can be reused elsewhere.

* increased timeouts in integration tests

* have bitcoin wallet and watcher use a separate client

* return more information on channel opening

* removed `storedChannels` from `Peer` constructor

1) so that they can be garbage-collected
2) that was a memory leak because closed channel would stay forever

* OpenChannel now accepts a feerate param for the funding Tx

User should be able to override the fee rate of the funding tx that he
sends when he opens a channel. This custom fee is entered as a fee rate
in satoshi per byte, and converted to a fee rate per kw.

The default value of this fee rate does not change, and still aims for
the funding tx to be included in a block within the next 6 blocks,
estimation which is made through the FeeProvider class.

* reworked payment events

and made sure we send events even when `PaymentLifecycle` disappeared, e.g.
when we restart right after having sent a payment.
2018-02-27 19:36:56 +01:00
pm47
1b247ae613 back to SNAPSHOT 2018-02-16 18:10:35 +01:00
practicalswift
7a6fa8a619 Fix typos (#417) 2018-01-29 18:42:07 +01:00
Dimitris Tsapakidis
e55e1e0dab Added quotes to eclair.bitcoind.zmq parameter value in README.md (#394)
The sample value for eclair.bitcoind.zmq requires quotes to comply with HOCON specifications.
2018-01-29 18:41:40 +01:00
Dimitris Tsapakidis
d5b0afb9e0 Clarify that Eclair uses Bitcoin Core as bitcoin wallet. (#395) 2018-01-29 18:40:24 +01:00
Dominique
af7d7b164a Various GUI Improvements (#396)
* (gui) Added funding tx id to channel panel

fixes #335

* (gui) close channel button hidden when CLOSING or CLOSED

fixes #332

* (gui) User can define a preferred display unit

On startup FxApp reads the configuration from `eclair.conf` and sets
a unit to which all the amounts in the UI must be converted.

This unit is a CoinUnit object. Only `sat`, `mbtc` and `btc` are accepted.
`msat` is not accepted because it's an internal accounting unit which
should be invisible to the user. Default unit is `btc`

The gui does not expose any ui feature to update this unit at runtime.

* (gui) Notification message wraps and can now be copied

Notification message should be readable especially when an error occurs.
The message can be copied for easier issue reporting.

* Payment attempts is limited to 1

* (gui) consistent order in status bar contextual actions

* (gui) fixed unit parsing

* (gui) added menu shortcuts

fixes #347

* Revert "Payment attempts is limited to 1"

This reverts commit 1f4168aacb.

* (gui) BtcAmount are convertible to raw big decimal without loss

Fix issue where the decimal part of a BtcAmount could be lost.
Millisatoshi is now accepted as a user preferred unit.

* Set a minimum htlc amount of 1 mSat by default

By default, the node configuration should be permissive and accept low
value payments. It is up to the node admin to set up a restrictive
configuration if he needs it.

* (gui) port in node uri is optional

* (gui) added reactive errors in open channel window

* (gui) format max pr amount to user preferred unit

* (gui) Payment Request QR should be uppercased

see #375

* (gui) added a conf for the gui module

* Added eclair.gui.unit option in README
2018-01-23 15:25:53 +01:00
Kevin Kelbie
35011d3eca Updated username and password in readme (#371)
Set the same rpc user/password in the example bitcoin core config than the default ones used by eclair.
2018-01-18 15:25:12 +01:00
Benoît Verret
2804e8a919 Remove api.user (#370)
It is not verified in the code.
2018-01-15 21:21:54 +01:00
Pierre-Marie Padiou
a1d69af597
Fixed eclair-cli (#354)
* reworked eclair-cli

* API is disabled by default, disabled CORS and require basic auth password

* better error handling

* Fixed latest version in README

* Increased connection timeout to 15s in electrum client test

* Rgb in NodeAnnouncement is now a Color object

Makes the color field more practical to handle and enable finer
serialization with a more readable code.

allnodes command in api now exports a list with node announcements.

* Added api call to list all the channels updates

This call can also filter the channels for a given nodeId

This fixes #344.
2018-01-11 19:23:17 +01:00
Benoît Verret
0781eb7a40 Specify that Bitcoin Core must have wallet enabled (#361) 2018-01-08 23:21:53 +01:00
Pierre-Marie Padiou
0ef43bb3b8
Update README.md 2017-12-23 18:32:13 +01:00
fresheneesz
38add65895 Adding link to https://explorer.acinq.co in README (#331) 2017-12-23 18:30:29 +01:00
Dominique
8197747913
[gui] Various gui fixes (#327)
Fixes #318, #317, #306

* README should recommend TESTNET

* (gui) ui can parse lightning: and lightning:// schemes

* (gui) Relaxed decimal amount regex: accepts no leading int

* (gui) Added a node info modal displaying node URI as QR code

* (gui) Logging throwable when gui can not start
2017-12-22 23:26:29 +01:00
Pierre-Marie Padiou
fe5416d2df Reworked peer management (#316)
* reworked peer management

- connection and channel opening are now separated, simplified
  `switchboard`

- use a single authenticator for both incoming and outgoing connections

- `peers` api call now returns current state and channel count

* fixed last commit

* fixed last merge

* added inetsocketaddress serializer
2017-12-22 23:06:35 +01:00
Dominique
059f211916 Improve JSON RPC API error handling (#322)
Service pattern matching code visually separates each method and
params to improve the code readability and maintenance. Route completion
is handle on a case by case basis, for each call. This enables better error
management and useful feedback to the caller.

Added custom rejections to handle cases where the given rpc method or
params are not found or not correct.

HTTP code should now be consistent with the error returned.
2017-12-22 21:01:40 +01:00
Pierre-Marie Padiou
d3d51e10a0
Clarify that datadir=.eclair (#309) 2017-12-21 10:28:35 +01:00
Nicolas Dorier
d0da3d3899 Docker: can now set configuration and expose datadir, added doc (#256) 2017-12-08 15:36:50 +01:00
Dominique
44e7c3ba31 Handling optional amount in a Payment Request (#241)
* Enable generation of a payment request without amount

The amount field in a `PaymentRequest` was already optional but eclair
did not permit the generation of such a request.

Added a new `receive` service with no required amount field.

In the GUI, the parsing of the amount field and its conversion to
`MilliSatoshi` are reworked to better handle decimals.

* (gui) Amount's can be overriden when sending a payment request

The amount of a payment request can be changed and it is up to the
receiving node to accept or deny the payment according to its
implementation.

This also enables the user to pay through the GUI a payment request
where the amount has not been set, such as a donation. The amount is still
required!

The description field has also been added in the GUI. It is empty if the
description has not been set.

* (gui) Properly parse amounts from open channel form

* (gui) added optional `lightning:` scheme to payment request
2017-11-30 15:55:29 +01:00
Fabrice Drouin
86133db5f7 Check that all UTXOS are p2sh on testnet (#228)
To avoid malleability issues, ask users to only have p2sh-of-p2wkh outputs.
on testnet, on startup we check that all UTXOs are p2sh (we cannot check that the
p2sh script is a p2wpkh script). It is not needed on regtest since there is no
chance that wallet tx will be malleated.
2017-11-27 18:30:59 +01:00
Pierre-Marie Padiou
df67157119 fix doc for api call connect/open (#220)
Fixes #215.
2017-11-21 19:11:07 +01:00
Dominique
a68a06fd38 Readme: added help for options syntax (#212)
* (README) updated link to release readme
* (README) added a link to HOCON readme for options syntax

This closes #209
2017-11-14 10:56:10 +01:00
Fabrice Drouin
a066e0d042 Switch to java environment variables instead of command line options (#149)
* added an eclair.printToconsole is defined log to stdout
* datadir is now eclair.datadir if defined, or user.home/.eclair
* update README.md
2017-08-30 13:42:58 +02:00
Anton Kumaigorodski
4cd081c11c Add API method to accept requests with custom amount (closes #134) (#135)
* Add API method to accept requests with custom amount
- can be used to send up to 2x higher amount than requested according to BOLT11
- should be used for payment requests without amounts
* Refactor 'send' method in API
* Add comments and description for 'send' API method
2017-08-25 13:38:14 +02:00
dpad85
305420bd37 Renamed javafx module to eclair-node-gui and updated binaries name (#137)
* Renamed eclair-node-javafx module to eclair-node-gui

* (build) javafx installer uses project version

* (build) Streamlined capsule names

* (build) mvn generates installer only with `installer` profile. The windows installer does not need to be created in common cases. Decreases `eclair-node-gui` module building time by ~ 1 min

* (readme) updated the `run eclair` commands with the new capsule names
2017-08-23 19:28:18 +02:00
dpad85
7acb75d50c (API) Added a method to return all known channels (closes #126) (#133)
* Added an 'allchannels' call that returns local and non-local channels
* Added API calls `allchannels` and `allnodes` to documentation
2017-08-23 14:14:33 +02:00
dpad85
3e81fce898 (gui) Fix direction icons in the list of the known channels in network (#119)
* (gui) channel direction is built from current item state

* using an objectproperty binding with the cell value instead of a string so
  that we can directly access the state within the factory

* (gui) Using option for direction boolean instead of dedicated state

* Tell explicitly in readme that `eclair.conf` must be manually created (#129)

* also added an explicit link to the binaries
* fix #125
2017-08-17 13:04:43 +02:00
Pierre-Marie Padiou
0440096f95 Clarified node/node-javafx distinction in README 2017-07-26 19:11:44 +02:00
Pierre-Marie Padiou
c6dc33e8bf Bugfixes and minor improvements (#117)
* reworked payment lifecycle

* fixed retry logic (infinite loop in some cases)
* check update signature
* keep track of the list of errors and routes tried

* added support for sending bolt11 payment request in the API

* updated eclair-cli and deleted deprecated TESTING.md (closes #112)

* removed useless application.conf in eclair-node

* now handling CMD_CLOSE in shutdown/negotiating/closing states

* added no-op handlers for FundingLocked and CurrentFeeRate messages

* cleaning up stale announcements on restart

* more informative/less spam logs in Channel

* (gui) Wrapping payment events to display date of event

* Also added controls to item content in cell factory overrides. This
  should prevent prevent duplicates as reported in #115
2017-07-26 18:57:31 +02:00
Pierre-Marie Padiou
f321d3e4ec Fixed links in README 2017-07-23 17:11:08 +02:00
rem0g
f51be77ab1 Update README with description to receive method (closed #111) (#113)
Description is mandatory when using receive as method to generate payment request.
2017-07-22 18:14:52 +02:00
Fabrice Drouin
12c90a7efe api: add a simple getinfo method (closes #98) (#100)
* api: add a simple getinfo method returning node id, node alias, port, chain hash and current block height
* api: add short description of getinfo [ci skip]
2017-06-27 10:46:30 +02:00
Pierre-Marie Padiou
766af1484e Update README.md 2017-05-02 11:12:57 +02:00
pm47
598c7a99ee set version to 0.2-alpha3 2017-04-25 18:04:48 +02:00
pm47
8589294933 fixed naming inconsistencies pubkey->nodeId 2017-04-25 10:33:41 +02:00
Pierre-Marie Padiou
66cb538ed3 clarify version requirement of bitcoin core 2017-04-25 10:20:21 +02:00
dpad85
fe22572976 New PaymentRequest object + HTLC verification (#72)
* Added a PaymentRequest object
* A `PaymentRequest` can be serialized/deserialized with `write`/`read`
  static functions in companion
* Amount validation is handled in constructor
* `ReceivePayment` message in payment handler generates a `PaymentRequest`
* Updated tests
* HTLC succeeds if amount is equal or greater than requested amount
* If the amount paid is more than twice the amount expected, the HTLC fails
* (gui) display payment failed cause in notification
* Improved payment request validation messages
2017-04-20 17:26:30 +02:00
Pierre-Marie Padiou
6e98fccc5d replaced compliance status by a link to releases 2017-04-07 12:04:07 +02:00
pm47
1e792f63d7 set version to 0.2-alpha2 2017-04-07 11:27:05 +02:00
Pierre-Marie Padiou
ede49d0a66 added gitter badge (#58) 2017-04-05 14:42:14 +02:00
dpad85
c3bfbf4a14 Added warning for openJDK in README.md (#48) 2017-03-31 18:19:39 +02:00
Pierre-Marie Padiou
72a14914fc Added integration tests on htlc relaying in on-chain scenarios (#51)
* using scodec for failure messages

* we now update routing info and retry payments in case of Update failure

* properly implemented BOLT4/'Receiving Failure Codes' (also fixed a bug with UnknownPaymentHash)

* added integration tests on htlc timeout

* relayer now sends an UpdateFail to downstream when an htlc timeout hits the blockchain

* added integration tests on extracting preimage from blockchain

* cleaning up of htlc bindings in relayer

* router now doesn't send a 2nd request to bitcoind when it is notified of a new channel twice in a short amount of time

* peerclient now asks for witness when retrieving blocks from bitcoind

* getTxBlockHash now returns None instead of an error when tx is in the mempool

* we now look into the mempool when checking for WatchSpent

* fixed FundingSigned been sent twice when deferring an early FundingLocked

* added zeromq listener, removed predefined eclair.conf files in test, limited concurrent rpc calls to 5 for the router

* Update README.md with ZMQ configuration

* Added a warning and link to alpha2 install instructions

* removed PeerClient

* improved PeerWatcher performance
2017-03-31 18:08:59 +02:00
dpad85
e728cad4ac Access to version/commit id at runtime (#42)
* Added help option in command line; added version in logs

* Version and commit id added in manifest (use Specification-Version for commitId)

* (gui) version in about is now dynamic; ESC key closes about

* Excluded unused protobuf dependency

* Update README.md
2017-03-27 11:14:54 +02:00
pm47
d16fe045cc clarify that we only support java 1.8, not 1.9 (closes #47) 2017-03-26 14:08:04 +02:00
Pierre-Marie Padiou
9d962e6571 Updated README 2017-03-21 17:32:15 +01:00
Fabrice Drouin
2612c4845c Update README.md 2017-03-17 19:08:24 +01:00