Commit Graph

177 Commits

Author SHA1 Message Date
Ross Savage
2446751bc4 Remove transaction (#493) 2024-09-18 14:36:10 +02:00
ok300
75aa988546 Bump boltz client library (#486)
* Bump boltz client library

* Fix tests
2024-09-13 10:45:39 +00:00
ok300
e8cd66f81f prepare-pay-onchain: add option for drain (#464)
* prepare-pay-onchain: add option for drain in req

* Fix clippy

* ChainSwapStateHandler: gracefully handle building both drain and non-drain lockups

* Send Chain swap: use standard feerate when estimating lockup tx fee

* UDL: move new drain field above the last PreparePayOnchainRequest optional field

* UDL: move new drain field optional

* prepare-pay-onchain: treat normal payment as drain if receiver amount is high enough

If the receiver amount is as high as it would be in case of drain, treat the current prepare-pay-onchain as drain, even if the drain flag is not set.

* build_drain_tx: add optional amount validation

* Add PayOnchainAmount enum to cover amount types (drain, receiver)

* Add ability to find max_receiver_amount_sat for non-drain sends

* Revert "Add ability to find max_receiver_amount_sat for non-drain sends"

This reverts commit 60ee1c768021810f72bc64a8ada69d35b638185e.

* prepare_pay_onchain: treat drain and non-drain cases separately

If the non-drain case is chosen with a receiver_amount equivalent to what drain would have calculated, it results in an error. For drain, the caller has to explicitly choose PayOnchainAmount::Drain.

* CLI: send-onchain-payment accepts optional amount

* CLI: add docs for send-onchain-payment drain arg

* SDK: expand docs for prepare_pay_onchain

* Re-generate RN bindings

* Re-generate flutter bindings
2024-09-11 15:52:56 +00:00
Ross Savage
c141d8e0a4 Change short_channel_id to string (#484)
* Change short_channel_id to string

* Bump sdk-common
2024-09-11 12:54:39 +02:00
Ross Savage
801a929437 Fix payment details rebase (#483)
* Fix payment details rebase

* Fix Flutter
2024-09-09 14:03:13 +02:00
yse
2dc3d57309 fix: set PaymentDetails as mandatory, default to LiquidAddress (#474) 2024-09-09 13:00:22 +02:00
ok300
fc820176a1 sync: correctly detect payment by refund tx ID (#470)
* sync: correctly detect payment by refund tx ID

* Payment: extract get_refund_tx_id() as own method
2024-09-08 20:12:32 +00:00
yse
b20c27a399 test: fix swap handlers tests by switching to mock chain service (#475) 2024-09-06 21:58:12 +02:00
Erdem Yerebasmaz
c2db7ebfea Update flutter_rust_bridge to 2.3.0 (#465) 2024-09-02 16:30:12 +03:00
Roei Erez
e912147408 Merge pull request #462 from breez/emit-pending-confirmation
Emit pending confirmation for liquid transactions
2024-09-01 11:30:44 +03:00
Roei Erez
cd35a63fe0 fix typo 2024-09-01 11:30:02 +03:00
ok300
5f74b9df4b Restore: Associate swap tx IDs from onchain data (#399)
* Add extend_incomplete_failed_send_swaps() on first sync

* Find lockup txs

* Send Swaps: find refund txs

* Simplify recover_send_swap_tx_ids, add recover_receive_swap_tx_ids

* recover_receive_swap_tx_ids: batch tx lookups

* Move onchain-restore methods to own module

* Store restored data in own struct

* Fix CI: bump pubspec.lock dependencies

* LiquidChainService: add get_scripts_history_electrum()

* restore_onchain: rely on batch call to fetch histories of all known swaps

* Rename get_scripts_history_electrum

* Rename restore_onchain.rs, flatten onchain inner module

* Rename ImmutableDb to SwapsList

* Simplify logic in restore.rs

* restore.rs: Add chain swap support, simplify logic

* restore.rs: add logging when script retrieval fails

* restore.rs: remove unused field create_resp

* restore.rs: rename SwapCompositeData to SwapHistory

* restore.rs: allow unused fields in simulated immutable data

* restore.rs: cargo fmt

* Cargo fmt

* Fix failing test

* When fetching script history, also fetch if tx is confirmed or not

* Recover send swaps: fetch claim tx IDs

* Recover onchain data: persist reconstructed swaps

* Simplify recover_from_onchain: store swap txs per swap ID

* Receive swaps: do not treat lockup/claim txs as pair

* Clarify meaning of partial swap state

* Cargo clippy

* Receive Chain Swap: distinguish BTC lockup from claim/refund tx

* Send Chain Swap: distinguish BTC lockup/claim by vout, not by history order

* get_partial_state: default to Created when state is unclear

* Receive Chain Swaps: differentiate BTC refund from BTC claim txs

* Send Swaps: clarify reason for defaulting to TimedOut on no lockup

* Chain swaps: add docs for meaning of server, user txs

* Recover Receive swaps: cover the case when only the lockup is available

* HistoryTxId: store confirmation block height

* Receive swaps: differentiate claim tx from swapper refund tx

* recover_from_onchain: extract immutable DB (swaps list) as arg

* Rename get_partial_state to derive_partial_state

* Restore: remove validation steps

* Restore chain swaps: treat as Complete only when claim is confirmed

* Fix clippy warnings

* Remove restore call from sync call
2024-08-30 17:18:25 +00:00
Roei Erez
59aefee0ef emit pending confirmation for liquid transactions 2024-08-29 17:37:30 +03:00
yse
0053007000 fix: ensure non-MRH invoices use lockup amount for fee calculation (#461) 2024-08-29 14:32:39 +02:00
Ross Savage
6b78919df8 Add sign_message and check_message (#443)
* Add sign and check message methods

* Use lightning message_signing module to verify the message signature

* Use hash engine
2024-08-29 08:42:16 +02:00
Ross Savage
deb9ed1b09 Add description hash to receive payment (#440)
* Add option to hash description

* Fix Flutter gen

* Switch to upstream boltz-rust

* Address feedback
2024-08-29 08:17:10 +02:00
Ross Savage
34774647bf Integrate webhooks (#410)
* Integrate webhooks

* Make hash_swap_id optional

* Hash and store the swap id

* Add webhook status include lists

* Remove superfluous webhook statuses

* Verify and fetch user_lockup_tx_id if missing

* Fix tests

* Use bitcoin sha256

* Fix flutter CI
2024-08-29 08:03:50 +02:00
ok300
ab63064343 Fix chain swap limits validation (#456)
* validate_chain_pairs: use payer_amount instead of ambiguous amount_sat

* validate_submarine_pairs: add comment

* prepare_receive_payment: clarify pair handling for PaymentMethod::Lightning

* Chain pair validation: use user_lockup_amount instead of payer_amount
2024-08-28 10:38:41 +00:00
ok300
152032dd82 pay-onchain: fix user lockup fee calculation, boltz fee calculation (#459) 2024-08-28 10:21:29 +00:00
yse
7b3085df8d send: consider request amount when preparing the payment (#454) 2024-08-27 01:37:56 +02:00
yse
1a89bcd6c1 feat: add BIP21 support (#414)
Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-08-22 12:23:36 +02:00
Erdem Yerebasmaz
5248dfc235 Depend on sdk-common with liquid feature (#452)
* Add copy script to packages/react-native makefile
  * Reorder scripts
* Depend on sdk-common with liquid feature
  * chore: cargo update
* Generate Dart bindings
* Generate UniFFI bindings
* Simplify import resolution by using prelude::*
  * Applies changes from https://github.com/breez/breez-sdk-greenlight/pull/1078
2024-08-20 18:50:27 +03:00
Ross Savage
9c683761e6 Confirm chain swap claims (#450)
* Confirm chain swap claims before setting to complete

* Fix tests

* Address feedback

* Apply suggestions from code review

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>

---------

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
2024-08-19 09:35:42 +02:00
ok300
44ee969e43 Receive payment: remove MRH BIP21 amount validation (#448)
* Receive payment: remove MRH BIP21 amount validation

* Fix CI: bump dependency in pubspec.lock
2024-08-15 17:47:19 +00:00
Erdem Yerebasmaz
265724101c Bump flutter_rust_bridge to 2.2.0 (#442) 2024-08-13 11:46:08 +03:00
Erdem Yerebasmaz
852b712277 Address cargo clippy warnings (#439)
Fix indentations on documentations.
2024-08-08 17:23:34 +03:00
ok300
6373ac2be3 Receive payment: remove retry backoff, reduce wait time to 1 sec (#431) 2024-08-06 15:55:55 +00:00
ok300
37d625c2b6 Pause event notifications on first sync (#424)
* Add cache flag for is_first_sync_complete

* Event Manager: add ability to pause and resume event notifications

* Pause event notifications on first sync

* Fix CI: bump pubspec.lock dependencies

* CI: Bump win32 transitive dependency in pubspec.lock

* CI: Set dependency hash in quotes
2024-08-01 08:45:14 +00:00
yse
c113f5ec35 fix: show regular onchain fees when mrh payment is detected (#421) 2024-07-26 18:51:38 +02:00
yse
0f636784a1 feat: split storage based on network (#419) 2024-07-26 11:01:42 +02:00
yse
14da84bd64 fear: add per-wallet directory structure for persister and lwk (#413) 2024-07-25 13:59:14 +02:00
Ross Savage
baa8096852 Update boltz-rust and add receive payment description (#409)
* Update boltz-rust

* Store description and add to Payment struct

* Fix examples
2024-07-25 12:46:40 +02:00
yse
a8613eca49 test: complete chain swap tests (#392)
Co-authored-by: Ross Savage <hello@satimoto.com>
2024-07-23 13:58:10 +02:00
ok300
7c45500f70 Fix payment position fluctuation in list_payments for Send (#404) 2024-07-22 15:34:02 +00:00
ok300
9ee5a04a91 Remove sync() call when handling Boltz update (#401) 2024-07-22 07:47:14 +00:00
Ross Savage
091fc50270 Add rustdocs generation to CI (#402)
* Add rustdocs CI

* Flutter gen

* Add link to README
2024-07-19 17:35:59 +02:00
Ross Savage
bfeb785221 Buy Bitcoin (#398)
* Add fiat on-ramp service

* Use sdk-common MoonpayProvider

* Bump flutter qr dependency

* Bump sdk-common dependency
2024-07-19 14:57:51 +02:00
ok300
970489ccfa Persistence: consolidate state filter (#400)
* Simplify sync_payments_with_chain_data loop

* Extract get_where_clause_state_in() util

* Bump flutter transitive dependency
2024-07-18 07:48:48 +00:00
Ross Savage
a3eb4caaf2 Add validate url success action param (#395) 2024-07-16 10:08:30 +02:00
Ross Savage
0da35259fe Allow custom pay_onchain claim fees (#391)
* Allow optional fee rate for pay onchain BTC claim

* Add recommended_fees method

* Fix example Config

* Address review comments
2024-07-15 17:38:10 +02:00
Ross Savage
ae7f8c74c0 Map Lwk InsufficientFunds error to PaymentError::InsufficientFunds (#386) 2024-07-11 19:28:05 +02:00
Ross Savage
143993fd3a List payments filtering and paging (#369)
* List payments in reverse chonological order

* Add payment filtering and paging

* Fix examples

* Apply suggestions from code review

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>

* Set timestamp for pseudo payments

* Filter by the first non-null timestamp from the join query

---------

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
2024-07-10 17:50:53 +02:00
Ross Savage
da43f7ff78 Rename namespace (#345)
* Rename namespace

* Fix flutter build

* Fix kotlin-multiplatform CI

* Rename repositories
2024-07-09 17:25:05 +02:00
Ross Savage
05507063f0 Change Config param to zero_conf_min_fee_rate_msat (#374)
* Change Config param to zero_conf_min_fee_rate_msat

* Fix Flutter example
2024-07-09 14:13:42 +02:00
ok300
cac8c315fa Remove duplicate refund_send, refund_send_non_cooperative (#361) 2024-07-08 16:18:14 +00:00
yse
50be093230 fix: refund InsufficientFunds error when calculating broadcast fee (#360)
Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-07-08 17:30:17 +02:00
ok300
4cd5b96aed Update list-payments: exclude chain swap refunds (#366)
If not excluded, they appear as separate Receive payments.
2024-07-08 11:07:54 +00:00
ok300
1a539d3de0 Include RefundPending state in list_pending (#367)
This is done for swaps that can be refunded, like Chain Swaps and Send Swaps.

Without this, refunded payments never transition away from RefundPending to Failed (refunded), because they're not considered a pending swap when handling the final transition
2024-07-08 07:21:14 +00:00
ok300
08b2e5a6e2 Add fetch_onchain_limits service method (#343)
* Add pay_onchain_limits service method

* Add receive_onchain_limits service method

* Merge pay/receive_onchain_limits

* Update field names

* Split swapper method in get_chain_pair and get_chain_pairs

* Fix test

* Introduce and re-use Limits model

* Add fetch_lightning_limits SDK method

* Fix CI: propagate latest sdk-common changes
2024-07-03 09:22:29 +00:00
yse
709c6dfa4a tests: Add unit tests for primary SDK methods (#346) 2024-07-01 17:24:22 +02:00