From 56d857a41f9aef6f2d6e148e7fc2e5413bbd4dee Mon Sep 17 00:00:00 2001 From: htteot <148553549+htteot@users.noreply.github.com> Date: Mon, 16 Jun 2025 20:12:23 +0200 Subject: [PATCH 1/4] Update 07-wallets.md --- docs/_pages/docs/03-understand/07-wallets.md | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/docs/_pages/docs/03-understand/07-wallets.md b/docs/_pages/docs/03-understand/07-wallets.md index 5de96664..f5d01f4c 100644 --- a/docs/_pages/docs/03-understand/07-wallets.md +++ b/docs/_pages/docs/03-understand/07-wallets.md @@ -40,9 +40,7 @@ This is a non-exhaustive compilation based on past experience of users. We have |[Electrum](#electrum-mobile--desktop)|[4.5.8](https://github.com/spesmilo/electrum)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.unclear}}|| |[LND](#lnd-cli-interface)|[v0.14.2](https://github.com/LightningNetwork/lnd)|{{page.cli}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[Mash](https://app.mash.com/wallet)|[Beta](https://mash.com/consumer-experience/)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} | {{page.thumbsup}}| -|[Mutiny](#mutiny-mobile--web-browser-wallet)|[1.7.1](https://www.mutinywallet.com/)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsdown}}|| |[Muun](#muun-mobile)|[2.8.0](https://muun.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.soso}}|{{page.soso}}|{{page.thumbsdown}}| -|[Phoenix](#phoenix-mobile)|[35-1.4.20](https://phoenix.acinq.co/)|{{page.phone}}|{{page.good}}|{{page.bad}}|{{page.soso}}|{{page.soso}}|{{page.thumbsdown}}| |[SBW](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[2.4.27](https://github.com/btcontract/wallet/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[WoS](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[1.15.0](https://www.walletofsatoshi.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[Zeus](#zeus-mobile-lnd-cln-eclair-remote-backend)|[v0.6.0-rc3](https://github.com/ZeusLN/zeus)|{{page.phone}}{{page.remote}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| @@ -63,14 +61,15 @@ Instructions to install Alby in Tor Browser: ### Aqua (Mobile) Overall the wallet works as expected. -Self-custodial Lightning+Liquid wallet with low fees and the option to swap directly to Tether. +Self-custodial Lightning and Liquid wallet with the option to swap in and out of USDT. Developed by Samson Mow's company JAN3. ### Bitkit (Mobile) Overall the wallet works as expected. Self-custodial Lightning wallet. ### Blink (Mobile, former Bitcoin Beach Wallet) -Works well with RoboSats. Hodl invoices (Bonds) show as "Pending" in the transaction history. Payouts to the Blink wallet function as intended. Custodial wallet by Galoy which originated from the Bitcoin Beach project in El Salvador (formerly known as "Bitcoin Beach Wallet"). +Overall the wallet works as expected. +Offers option to swap in and out of synthetic USD. Custodial wallet developed by Galoy, El Salvador. Originated from the Bitcoin Beach project. ### Blixt (Android/iOS, LND light backend on device) Most development testing for RoboSats has been done using Blixt. This is one of the most complete Lightning wallets around. However, it does lead to misunderstanding when hold invoices are locked, as it shows a spinner with payment in transit. The user needs to check on the website for confirmation. Blixt allows for multiple pending HTLCs; this is necessary as a seller since you need to lock a taker/maker bond and then a trade escrow (2 pending concurrent HTLCs). It might eventually also display as paid/charged invoices that are still pending, especially if the user force closes Blixt and reopens it. Occasionally, it can display fidelity bonds as charged that have in fact been returned. @@ -101,13 +100,6 @@ Raw; it shows exactly what is happening and what it knows "IN_FLIGHT". It is not ### Mash Wallet App (Mobile PWA & Desktop Web-Wallet) Overall the [Mash](https://mash.com/consumer-experience/) wallet works end2end with Robosats on both selling & buying over lightning. Majority of relevant invoice details in the mash wallet are shown and clear to users throughout the process. When the transactions are complete, they open in the mobile app on both sender/receiver sides to highlight that the transactions are completed.The one UX hick-up is that the pending invoices list doesn't explicitly show HOLD invoices and there is a "spinning" screen on first HOLD invoice payment. The team has a bug open to fix this issue shortly (this note is from Aug 21st 2023). -### Mutiny (Mobile & Web Browser Wallet) -The wallet should work as expected, but the interface, transaction states, and the structure of the funds can sometimes be very confusing in the current release version. -Use the default free Fedimint(Chaumian eCash) account, with the possibility to use zero fee Lightning transfers. -What is inconvenient: -- occasionally wallet restart is needed -- more than two pending hold invoices at the same time may cause a rejection of the new transaction - ### Muun (Mobile) Self-custodial wallet with a minimalist interface. Similar to Blixt or LND, Muun plays nicely with hold invoices. You can be a seller in RoboSats using Muun and the user experience will be great. However, in order to be a buyer when using Muun, you need to submit an on-chain address for the payout as a Lightning invoice won't work. Muun is _fee siphoning attacking_ any sender to Muun wallet. There is a mandatory hop through a private channel with a fee of +1500ppm. RoboSats will strictly not route a buyer payout for a net loss. Given that RoboSats trading fees are {{site.robosats.total_fee}}% and it needs to cover the routing fees, **RoboSats will never find a suitable route to a Muun wallet user**. At the moment, RoboSats will scan your invoice for routing hints that can potentially encode a _fee siphoning attack_. If this trick is found, then the invoice will be rejected: submit an on-chain address instead for an on-the-fly swap. Refer to [Understand > On-Chain Payouts](/docs/on-chain-payouts/) for more information about on-the-fly swaps. Important to note that Muun has issues during times of high on chain fee spikes. Regardless, the workaround to receive to Muun is: either submit an on chain address or choose a higher routing budget after enabling the "Advanced Options" switch. @@ -116,9 +108,6 @@ Similar to Blixt or LND, Muun plays nicely with hold invoices. You can be a sell One of the simplest and one of the best. The hodl invoice shows as "on fly", it is not custodial and can create your own channels. Buy one from a liquidity provider or use Hosted Channels. It is maintained by the great Fiatjaf and it is a fork of the abandoned SBW. *Update 26-10-23: At this moment it has no development or support -### Phoenix (Mobile) -This wallet does not support invoice lock. - ### SBW (Mobile) From 2.5 it doesn't support lightning anymore. From 3a63fea656d1daf92786529b9fccd44f80999808 Mon Sep 17 00:00:00 2001 From: htteot <148553549+htteot@users.noreply.github.com> Date: Thu, 19 Jun 2025 20:06:25 +0200 Subject: [PATCH 2/4] Update 07-wallets.md --- docs/_pages/docs/03-understand/07-wallets.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/_pages/docs/03-understand/07-wallets.md b/docs/_pages/docs/03-understand/07-wallets.md index f5d01f4c..e9565f8c 100644 --- a/docs/_pages/docs/03-understand/07-wallets.md +++ b/docs/_pages/docs/03-understand/07-wallets.md @@ -41,6 +41,7 @@ This is a non-exhaustive compilation based on past experience of users. We have |[LND](#lnd-cli-interface)|[v0.14.2](https://github.com/LightningNetwork/lnd)|{{page.cli}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[Mash](https://app.mash.com/wallet)|[Beta](https://mash.com/consumer-experience/)|{{page.laptop}}{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}} | {{page.thumbsup}}| |[Muun](#muun-mobile)|[2.8.0](https://muun.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.soso}}|{{page.soso}}|{{page.thumbsdown}}| +|[Phoenix](#phoenix-mobile)|[35-1.4.20](https://phoenix.acinq.co/)|{{page.phone}}|{{page.good}}|{{page.bad}}|{{page.soso}}|{{page.soso}}|{{page.thumbsdown}}| |[SBW](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[2.4.27](https://github.com/btcontract/wallet/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[WoS](https://github.com/RoboSats/robosats/issues/44#issue-1135544303)|[1.15.0](https://www.walletofsatoshi.com/)|{{page.phone}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| |[Zeus](#zeus-mobile-lnd-cln-eclair-remote-backend)|[v0.6.0-rc3](https://github.com/ZeusLN/zeus)|{{page.phone}}{{page.remote}}|{{page.soso}}|{{page.good}}|{{page.good}}|{{page.good}}|{{page.thumbsup}}| @@ -108,6 +109,9 @@ Similar to Blixt or LND, Muun plays nicely with hold invoices. You can be a sell One of the simplest and one of the best. The hodl invoice shows as "on fly", it is not custodial and can create your own channels. Buy one from a liquidity provider or use Hosted Channels. It is maintained by the great Fiatjaf and it is a fork of the abandoned SBW. *Update 26-10-23: At this moment it has no development or support +### Phoenix (Mobile) +This wallet does not support invoice lock. + ### SBW (Mobile) From 2.5 it doesn't support lightning anymore. From 4599cdc9b4ccec0cc77eaeb2e55c98b45188b66f Mon Sep 17 00:00:00 2001 From: htteot <148553549+htteot@users.noreply.github.com> Date: Thu, 19 Jun 2025 20:11:27 +0200 Subject: [PATCH 3/4] Update 07-wallets.md --- docs/_pages/docs/03-understand/07-wallets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/_pages/docs/03-understand/07-wallets.md b/docs/_pages/docs/03-understand/07-wallets.md index e9565f8c..21c4a7a6 100644 --- a/docs/_pages/docs/03-understand/07-wallets.md +++ b/docs/_pages/docs/03-understand/07-wallets.md @@ -70,7 +70,7 @@ Self-custodial Lightning wallet. ### Blink (Mobile, former Bitcoin Beach Wallet) Overall the wallet works as expected. -Offers option to swap in and out of synthetic USD. Custodial wallet developed by Galoy, El Salvador. Originated from the Bitcoin Beach project. +Offers the option to swap in and out of synthetic USD. Custodial wallet developed by Galoy, El Salvador. Originated from the Bitcoin Beach project. ### Blixt (Android/iOS, LND light backend on device) Most development testing for RoboSats has been done using Blixt. This is one of the most complete Lightning wallets around. However, it does lead to misunderstanding when hold invoices are locked, as it shows a spinner with payment in transit. The user needs to check on the website for confirmation. Blixt allows for multiple pending HTLCs; this is necessary as a seller since you need to lock a taker/maker bond and then a trade escrow (2 pending concurrent HTLCs). It might eventually also display as paid/charged invoices that are still pending, especially if the user force closes Blixt and reopens it. Occasionally, it can display fidelity bonds as charged that have in fact been returned. From 3a164f95d9bdeef9ec7fa8141e2415e871c33c21 Mon Sep 17 00:00:00 2001 From: htteot <148553549+htteot@users.noreply.github.com> Date: Thu, 19 Jun 2025 21:00:26 +0200 Subject: [PATCH 4/4] Update logics.py Remove word RoboSats from transaction description --- api/logics.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/api/logics.py b/api/logics.py index 1fec0ccc..e93879d8 100644 --- a/api/logics.py +++ b/api/logics.py @@ -1308,9 +1308,9 @@ class Logics: bond_satoshis = int(order.last_satoshis * order.bond_size / 100) if user.robot.wants_stealth: - description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on RoboSats if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." + description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on the trading platform if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." else: - description = f"{config("NODE_ALIAS")} - Publishing '{str(order)}' - Maker bond - This payment WILL FREEZE IN YOUR WALLET, check on RoboSats if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." + description = f"{config("NODE_ALIAS")} - Publishing '{str(order)}' - Maker bond - This payment WILL FREEZE IN YOUR WALLET, check on the trading platform if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." # Gen hold Invoice try: @@ -1450,11 +1450,11 @@ class Logics: bond_satoshis = int(take_order.last_satoshis * order.bond_size / 100) pos_text = "Buying" if cls.is_buyer(order, user) else "Selling" if user.robot.wants_stealth: - description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on RoboSats if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." + description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on the trading platform if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." else: description = ( f"{config("NODE_ALIAS")} - Taking 'Order {order.id}' {pos_text} BTC for {str(float(take_order.amount)) + Currency.currency_dict[str(order.currency.currency)]}" - + " - Taker bond - This payment WILL FREEZE IN YOUR WALLET, check on RoboSats if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." + + " - Taker bond - This payment WILL FREEZE IN YOUR WALLET, check on the trading platform if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." ) # Gen hold Invoice @@ -1551,7 +1551,7 @@ class Logics: order.log(f"Escrow invoice amount is calculated as {escrow_satoshis} Sats") if user.robot.wants_stealth: - description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on RoboSats if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." + description = f"{config("NODE_ALIAS")} - Payment reference: {order.reference}. This payment WILL FREEZE IN YOUR WALLET, check on the trading platform if the lock was successful. It will be unlocked (fail) unless you cheat or cancel unilaterally." else: description = f"{config("NODE_ALIAS")} - Escrow amount for '{str(order)}' - It WILL FREEZE IN YOUR WALLET. It will be released to the buyer once you confirm you received the fiat. It will automatically return if buyer does not confirm the payment."