Commit Graph

209 Commits

Author SHA1 Message Date
Ross Savage
dd00a0b328 Return pending payment (#245)
* Return pending payment

* Simplify select loop

* Revert dart pubspec

* Add error logging for payment events without swap ids

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-05-30 17:59:35 +02:00
yse
9554dcad19 feat: add random keypair generation to receive (#255)
* feat: add random keypair generation to receive
* feat: add `get_claim_keypair` method to swap
2024-05-30 16:21:08 +02:00
Erdem Yerebasmaz
e0322c39d6 Remove tokio runtime (#239)
* Remove obsolete Tokio runtime dependency on bindings

* Apply changes on example app

* Update "Getting Started" on README

* Update pubspec.lock
2024-05-30 17:04:58 +03:00
ok300
e5dba1043e Add ability to parse an invoice (#240)
* Add ability to parse an invoice

* Simplify LNInvoice initialization

* Add missing LNInvoice fields

* Cargo fmt

* Re-generate bindings after merging main branch

* Explicitly check the invoice signature

* Remove redundant signature check

* Strip potential lightning: prefix before parsing bolt11
2024-05-30 13:26:00 +00:00
Ross Savage
35561bacc5 Improve stream handling (#244)
* Improve stream management

* Check swap for existing lockup/refund tx

* Set broadcast capacity to 30
2024-05-30 14:54:15 +02:00
ok300
4cd2673d01 Integrate shutdown signal in tokio::select (#247) 2024-05-30 08:45:19 +00:00
ok300
434fb80d49 Add shutdown signal (#238)
* Add shutdown signal handling

Revert periodic sync interval change

Revert keep-alive interval change

CLI: Add disconnect command

SDK: Add scaffolding for is_started, shutdown()

Simplify instance init

* Rebase on savage-async-ws branch

* Avoid waiting when shutdown signal is received in the sync loop

* Directly use shutdown signal in background threads

* Acquire is_started lock at the very beginning of start()

* Fix cargo clippy warnings

* Update RN generator (kt): set bindingLiquidSdk to null on disconnect()

* Update RN generator (swift): set bindingLiquidSdk to nil on disconnect()

* Startup: only run foreground sync() if this could be the first run

* Start a sync() in background, before regular sync() loop

* Remove ensure_started check from start()

* Add bindings for disconnect()

* Remove foreground sync condition from startup

* Simplify background sync loop
2024-05-30 08:04:30 +00:00
Ross Savage
e986f75605 Convert the ws handling to async (#234) 2024-05-28 14:20:12 +02:00
Erdem Yerebasmaz
608f54ea69 Bump flutter_rust_bridge_codegen to 2.0.0-dev.36 and generate bindings (#237) 2024-05-28 14:41:47 +03:00
yse
9d2f6f0839 Fix cooperative refund and improve keypair generation (#223)
* feat: add random keypair generation

* Encapsulate decode_keypair in SendSwap::get_refund_keypair()

* Add refund_tx_id and refund_tx_amount_sat to Payment

* fix: remove blocking on refund

* fix: change `refund_private_key` order

* fix: rebasing

* fix: set `next_unused_address` as refund output

* Handle refunds in `get_info`, `list_payments` (#226)

* Exclude refund txs from payment list

* Adjust balance calculation to account for refunds

* fix: revert boltz changes and fix locktime

* Replace subquery with LEFT JOIN to get refund data

* Rewrite locktime check for more clarity

* Rewrite locktime check for more clarity

* Fix select_payment_query in case of refunds

* Include boltz-client fixes (handling of unwraps for failed broadcasts)

* Cargo.toml: Use boltz-client branch instead of commit

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-05-28 08:07:29 +00:00
yse
2fcefee45e Add option to specify backup path (#228)
* feat: add backup_path to backup method

* Re-generate bindings with flutter_rust_bridge`@ 2.0.0-dev.35

* Rebased on main

* Update backup path description

---------

Co-authored-by: ok300 <106775972+ok300@users.noreply.github.com>
2024-05-27 19:01:49 +00:00
ok300
6ef5701660 Send: persist pseudo-tx after to broadcast the lockup (#233) 2024-05-27 10:49:26 +00:00
Ross Savage
06b848a8f3 SDK events framework (#193)
* Add events framework

* Adapt RN codegen and add synced event

* Only use get_connection internally
2024-05-25 06:20:14 +02:00
Ross Savage
5143aeb1dd Merge pull request #225 from breez/savage-fix-ios-build
Fix broken rust security-framework dependency
2024-05-24 12:08:34 +02:00
ok300
ec88a9fb6a Pin security-framework dependencies in Cargo.toml 2024-05-24 11:48:25 +02:00
Ross Savage
e421b95bef Lock security-framework version 2024-05-24 11:22:49 +02:00
Erdem Yerebasmaz
7b1b78a2d9 Update example app on Flutter plugin (#220)
* Update example app on Flutter plugin

* Expose `empty_wallet_cache` through Dart bindings (#224)
2024-05-24 12:12:29 +03:00
ok300
c7b46314f4 Send: Retrieve and store preimage for non-cooperative claim (#222)
* Bump LWK dependencies to v0.5.1

* Send: Retrieve and store preimage for non-cooperative claim

* Remove branch that could have not succeeded
2024-05-24 06:16:41 +00:00
Erdem Yerebasmaz
a9cc69743d Expose sync through Dart bindings (#221)
Reformat build_other.dart
2024-05-23 17:59:01 +03:00
ok300
9d5097a55c Send: store preimage on Complete 2024-05-23 13:58:40 +00:00
ok300
fcee44b1c2 Swap name consolidation (#218)
* Rename swap_in.rs, swap_out.rs

* Rename SwapIn, SwapOut structs SendSwap, ReceiveSwap

* Rename .*swap_in.* variables and methods to .*send_swap.*

* Rename .*swap_out.* variables and methods to .*receive_swap.*

* Rename Submarine Swap to Send Swap, Reverse Swap to Receive Swap

* Rename rev_swap_id to swap_id
2024-05-23 15:46:38 +02:00
ok300
6214d3d3b2 Send: fix tracking swap type (#217) 2024-05-23 08:13:57 +00:00
Erdem Yerebasmaz
c6e7c537fe Only build core package for Linux/Windows targets (#210)
This PR continues #164
2024-05-23 10:21:59 +03:00
Erdem Yerebasmaz
a861011952 Generate Bindings
- Fix list_payments API on bindings
2024-05-23 10:12:53 +03:00
Erdem Yerebasmaz
1fe5bb353c Stop using singleton instance on Dart bindings
Apply changes to test cases on Dart plugin
2024-05-23 10:10:42 +03:00
ok300
f18f3cb9a6 Uniffi: Add list-payments to UDL (#204)
* Uniffi: Add list-payments to UDL

* Update Payment on uniffi bindings

* Update RN bindings

* Update flutter bindings

---------

Co-authored-by: Erdem Yerebasmaz <erdem@yerebasmaz.com>
2024-05-23 06:19:26 +00:00
ok300
c975da5b3c Payment lifecycle (#184)
* Rename swap tables: remove ongoing_ prefix

* Add swap status enums and filtering

* Swap-in: add claim_txid

* Swap-out: add claim_txid

* resolve_swap: Don't remove swap when complete

* Fixups after rebase

* Remove unused method

* Consider payment as pending based on confirmations

An onchain payment with no confirmations is considered
pending. The previous logic of converting pending swaps
into pending payments is removed, since we may have
pending swaps that should not result in pending
payments (for example on Receive, before the invoice
is paid).

* Fix swap-in query

* GetInfoResponse: fix balance, include pending

* Remove unused method

* Re-generate flutter bridge files

* Re-generate RN bindings

* Fix payment_type detection in list_payments

* Send: persist to DB when claim tx is seen

* Receive: fix occasional error when broadcasting claim

* Remove fixed TODO

* Receive: only rescan on testnet, where Electrum is used to broadcast

* Log more details when broadcasting fails

* Improve AlreadyClaimed error detection and handling

* Rename SubmarineSwapStatus::Initial to Created

* Split pending payment types into separate field status

* Rename swap status enums

* Fix INSERT query

* Bump lwk libraries

* Simplify Receive try_handle_reverse_swap_status loop

* Change resolve_swap to insert_or_update_payment

* Refactor payment data persistence

* Remove unused dependency

* Bump LWK dependencies

* Rename reconcile_payments_with_onchain

* Rename try_claim_v2

* Rename address() to next_unused_address()

* Move all claim persistence writes in try_claim

* Flatten Payment struct

* Re-generate bindings

* Expose sync() in service interface

* Set Send ws stream as nonblocking, use singleton stream

* Send_payment: sync() before handling new state

* Sync() on sdk.connect()

* Remove unused args from list_payments()

* Receive: rename DB field redeem_script to response JSON

* Convert to and from internal structs to persist CreateResponse JSON

* De-duplicate internal CreateResponse structs to prevent storing same field twice

* Schedule a periodic sync() thread on startup

* Persist swap states and add methods to transition between them

* Handle unwrap() when subscribing for WS updates

* Status Stream: handle remaining unwraps() and TODOs

* Consolidate status transitions into two SDK methods

* Status Stream: reconnect and resume tracking on disconnect

* Remove superfluous TODO

* Send swaps: correctly transition to Complete even if app killed during send_payment()

* State transitions: Move SQL queries to persistence layer

* Send: handle edge TransactionClaimed edge-case

* Send: mark as Complete after we check the preimage

* Send: remove marking as Complete on TransactionClaimed
2024-05-22 20:00:38 +00:00
Ross Savage
337b52d40e Change script paths to langs directory 2024-05-21 15:38:13 +02:00
Ross Savage
c6c5755973 Move bindings to langs directory 2024-05-21 15:21:28 +02:00
Ross Savage
cc7a6efd27 Rename bindings directories 2024-05-21 14:42:32 +02:00
Erdem Yerebasmaz
7fc5bd6dcb Merge pull request #203 from breez/pub-upgrade
[Flutter] Update dependencies to latest compatible
2024-05-21 15:31:35 +03:00
Erdem Yerebasmaz
f0f282a584 Update dependencies to latest compatible
Changes on 'justfile' also effects CI step
2024-05-21 14:25:52 +03:00
Ross Savage
7787267275 Build android fixes
Signed-off-by: Ross Savage <hello@satimoto.com>
2024-05-21 12:31:59 +02:00
ok300
fab4be45b5 Use hardcoded random P2TR addresses to estimate fees
Use P2TR address as destination when estimating fees
2024-05-16 23:04:33 +02:00
Erdem Yerebasmaz
e94e866dea Make building libraries optional on bootstrap step 2024-05-16 13:51:14 +03:00
Erdem Yerebasmaz
9b2d281293 Add bash script counterpart of linux/windows targets build script
! This script is not being used by Melos and is added for local testing !
2024-05-16 13:51:14 +03:00
Erdem Yerebasmaz
c2b110f047 Add requirements to build binaries locally on README.md 2024-05-16 13:50:50 +03:00
Ross Savage
f5d4321d2d Use glob to pattern match the linux x86_64 clang directory 2024-05-15 15:22:29 +02:00
ok300
f6c6b0c625 Remove deprecated v1 code 2024-05-15 10:31:56 +02:00
ok300
41fc748d44 Remove duplicated versions of boltz-client 2024-05-15 10:13:44 +02:00
ok300
177127d376 Update flutter bindings 2024-05-15 09:41:06 +02:00
ok300
6b88461341 Add PaymentError::Refunded to UDL 2024-05-15 09:22:47 +02:00
ok300
50a654b49c Merge branch 'main' into yse-remove-api-fields
# Conflicts:
#	packages/dart/lib/src/bindings.dart
#	packages/dart/lib/src/frb_generated.dart
#	packages/dart/lib/src/frb_generated.io.dart
#	packages/dart/lib/src/model.dart
#	packages/flutter/example/lib/main.dart
#	packages/flutter/lib/flutter_breez_liquid_bindings_generated.dart
2024-05-15 09:20:53 +02:00
yse
67aa6a38f8 fix: reword lockup tx error 2024-05-14 15:45:49 +02:00
yse
4496318089 fix: renaming 2024-05-14 15:44:30 +02:00
yse
70e2db708a feat: add better fee estimation 2024-05-14 15:33:26 +02:00
yse
5a9dc1d5ce feat: fix fee calculation issues 2024-05-14 13:05:55 +02:00
yse
55804e88c5 feat: add double lockup checks and resolve on claim details 2024-05-14 13:05:55 +02:00
yse
a92e83a446 feat: improve send and refund 2024-05-14 13:05:54 +02:00
yse
28d4f264eb feat: add refund and improve send flow 2024-05-14 13:05:27 +02:00