45 Commits

Author SHA1 Message Date
3ec3a3a4e1 JVM vsock compiles, connect and binds 2024-08-16 04:27:21 +02:00
86c21cbab3 Fall back to Eclair test node details 2024-08-14 22:05:24 +02:00
a15db45e13 Vsock stuff for phoenixd 2024-08-14 21:44:24 +02:00
26bfc7d3f9 Onchain wallets information endpoints 2024-07-11 10:10:10 +02:00
d7333c87ad Swap-in wallet functionalities 2024-07-09 11:53:16 +02:00
Pierre-Marie Padiou
c2bd9f287c
Add support for optional payer note (#63)
Usage:

```shell
./phoenix-cli payoffer --offer lnoxxxxxx --amountSat 2100 --message "Hello from phoenixd!"
```
2024-07-02 14:56:34 +02:00
Pierre-Marie Padiou
18ade318cd
Add BOLT12 support (#60)
BOLT12 introduces "offers", which are reusable payment requests (a.k.a. static invoices).

Add the following phoenix-cli/api methods:
- `getoffer`
- `payoffer`
- `decodeinvoice` (supersedes #56)
- `decodeoffer`

---------

Co-authored-by: Dominique Padiou <5765435+dpad85@users.noreply.github.com>
2024-07-02 14:19:24 +02:00
Pierre-Marie Padiou
4a7e2a4921
Use lightning-kmp 1.7.0-FEECREDIT-8 (#62)
It supports BOLT12 but proper integration will be done in a follow-up PR.
2024-07-02 14:05:59 +02:00
Dominique Padiou
38a236a338
Add list incoming and outgoing payments calls (#53)
- added `GET /payments/outgoing` endpoint: returns a list of 
outgoing payments. Only Lightning outgoing payments are listed. 
Other types of outgoing payments (splice, channel close, ...)
are ignored.

- updated `GET /payments/incoming` endpoint to accept new
parameters for paging and date filtering.
2024-05-16 18:18:12 +02:00
Pierre-Marie Padiou
a97e5776b1
Update lightning-kmp to 1.6.2-FEECREDIT-7 (#51) 2024-05-16 18:07:36 +02:00
Pierre-Marie Padiou
dec1c59c80
Add descriptionHash parameter to createinvoice (#50)
A new parameter `descriptionHash` has been added to `createinvoice`, which takes a 32-bytes hex string.

Either `description` or `descriptionHash` must be provided.

The `description` field is now limited to 128 characters.
2024-05-15 10:55:16 +02:00
Pierre-Marie Padiou
18035566f8
Add authentication to webhook calls (#34)
A new `X-Phoenix-Signature` header is added to webhook calls, which contains the HMAC-SHA256 signature of the whole json body, encoded in utf-8, using the `webhook-secret` configuration parameter, also encoded in utf-8. 

For example:
- webhook request body:
```
{
    "type": "payment_received",
    "timestamp": 1712785550079,
    "amountSat": 8,
    "paymentHash": "e628f8a516e9d3ee5e212a675f8d0c9dc5e7a5d500c5f4f91c62e9e921492653",
    "externalId": null
}
```
- `webhook-secret` in `phoenix.conf`:`ef72d3b96324106dfbf83f2a4efeff7dddb4ce923e9664cb56baf34cc52936b6`

Will produce the header `X-Phoenix-Signature: 77ffc40401024fb417e45fdd002de06bdbf3b48b90d09d05cccd06462920aed7`

A `timestamp` has been added to the events, to provide protection against replay attacks. Users should check that the timestamp is not too old. Stripe uses a [5 min default tolerance](https://docs.stripe.com/webhooks#replay-attacks).

Suggested by @danielcharrua in #33.
2024-04-23 16:57:03 +02:00
Pierre-Marie Padiou
5e1ab0d5d9
Replace --max-absolute-fee by --max-mining-fee (#32)
It makes much more sense to consider only the mining fee, for the absolute fee check, as it is volatile and amount-independent. The service fee is in % and predictable.

The default value is equivalent as before (1% of the default `auto-liquidity`, given that the previous value of 2% included the 1% liquidity service fee). Previous option is deprecated and explicitly rejected.
2024-04-10 16:47:15 +02:00
Pierre-Marie Padiou
ce86e82854
Factor initialization of datadir (#15)
Fixes #14.
2024-03-27 10:16:15 +01:00
Fabrice Drouin
3fc693e722
Add phoenix-cli script to the JVM distribution (#8)
* Add phoenix-cli script to the JVM distribution

* Close http client after use (otherwise it hangs on the JVM)
2024-03-26 16:37:25 +01:00
pm47
f3251e78e5
explicit message in case of 4XX failures
```
$ curl -u :bad-password http://127.0.0.1:9740/getinfo
Invalid authentication (use basic auth with the http password set in
phoenix.conf)

$ curl -u :4034..8232 http://127.0.0.1:9740/getinfowithtypo
Unknown endpoint (check api doc)

$ curl -u :4034..8232 -X POST http://127.0.0.1:9740/getinfowithtypo
Invalid http method (use the correct GET/POST)

```
2024-03-25 18:14:20 +01:00
pm47
df91b9604f
get user consent from command line 2024-03-25 12:07:26 +01:00
pm47
f2b378484a
optionnally provide an external seed
usage: `PHOENIX_SEED="focus certain canvas rude exist sausage chuckle
forget bronze brown warm comic" ./phoenixd`
2024-03-25 12:03:41 +01:00
pm47
0432da38e5
optionnally set datadir with env var
ex: `PHOENIX_DATADIR=/my/phoenix/dir ./phoenixd`
2024-03-25 11:37:33 +01:00
Dominique Padiou
cc0d042927
Improve error message when payment is rejected 2024-03-22 17:49:55 +01:00
pm47
d36ad92ed5
use lightning-kmp 1.6.2-FEECREDIT-4 2024-03-22 17:42:00 +01:00
pm47
0698418f09
rework liquidity options 2024-03-22 15:03:25 +01:00
pm47
a181fac6be
nit in --help 2024-03-22 11:04:12 +01:00
pm47
920943d49b
remove unused in-memory payments db 2024-03-21 16:21:26 +01:00
pm47
a012a7098b
use lightning-kmp 1.6.2-FEECREDIT-3 2024-03-21 16:21:24 +01:00
pm47
91e1ea6055
make invoice amount optional 2024-03-21 14:24:05 +01:00
pm47
97b6afce7c
name db with chain+nodeId 2024-03-21 13:20:43 +01:00
pm47
fef5aadcf7
move cli options classes inside command class 2024-03-21 11:14:57 +01:00
pm47
bfe6b982b7
cosmetic changes 2024-03-20 18:57:55 +01:00
pm47
a869bc3f37
default to mainnet 2024-03-20 18:53:48 +01:00
pm47
5598a57acc
rework onboarding 2024-03-20 16:30:41 +01:00
Dominique Padiou
9d460eeee5
Add version in log, command and api
A task has been added to generate a BuildVersions file
when building the project. Project's version can be
found in that file at runtime.

Also centralized declaration of the dependencies
versions to buildSrc.
2024-03-20 16:02:48 +01:00
pm47
6bffd418e8
add timestamps to logs 2024-03-20 14:04:41 +01:00
pm47
f0e21be318
use mempool.space instead of electrum 2024-03-19 21:50:19 +01:00
Dominique Padiou
026b8138ef
Rename amountSat->balanceSat in balance response 2024-03-19 18:05:14 +01:00
Dominique Padiou
83dd62a98c
Add externalId to PaymentReceived event
PaymentSent is also not a ApiEvent anymore.
2024-03-19 11:58:47 +01:00
Dominique Padiou
d872fc3573
Rename id of PaymentSent to paymentId for consistency 2024-03-19 11:29:27 +01:00
Dominique Padiou
3d37e0adc7
(cli) Add PhoenixCliCommand class for convenience
This abstract class catches errors and echoes a short message
instead of printing a stacktrace. This is especially useful
when the CLI cannot connect to phoenixd (e.g. wrong port). We
can also factorise some of the code.
2024-03-18 19:33:37 +01:00
Dominique Padiou
4b59be44b5
Add payment's UUID to /payinvoice response
The UUID is required to query details for the payment later
on, and should thus be exposed by the API when the payment
has been sent successfully.
2024-03-18 19:31:04 +01:00
Dominique Padiou
64775d2fd5
Merge channels and payments database
There is now only one database file, phoenix.db. This
makes database backup easier.

Legacy channels closing parts have been removed (we
use a dedicated table to store closings).

The tables storing lightning outgoing payments have
been renamed for consistency by addingd a "lightning"
prefix. The related kotlin classes have been renamed
as well.
2024-03-18 18:34:25 +01:00
Dominique Padiou
9d984591bc
Add API endpoint to list payments by external id
Creating an invoice now accepts an optional external id.
Also added new payment endpoints to the CLI.
2024-03-11 21:04:10 +01:00
Dominique Padiou
3027bd1aca
Add table storing payments metadata 2024-03-11 17:59:20 +01:00
pm47
e6e6707685
do not explicitly reference client impl 2024-03-11 15:25:32 +01:00
pm47
f843c0dcc2
remove fee-credit feature 2024-03-11 14:10:02 +01:00
Pierre-Marie Padiou
d791179125
Initial commit 2024-03-08 19:23:23 +01:00