nbd-wtf / obw Goto Github PK
View Code? Open in Web Editor NEWOpen Bitcon Wallet (OBW) is a lightweight Android Bitcoin and Lightning wallet
License: Apache License 2.0
Open Bitcon Wallet (OBW) is a lightweight Android Bitcoin and Lightning wallet
License: Apache License 2.0
I just did the update from 0.1.5 to 0.1.8 (missed some releases). And now it's always offline, impossible to use it. I tried to downgrade to a previous version but it's always saying that I'm in 0.1.8-9, is there a mechanism that prevent the downgrade?
Hi there. As the title says it would be nice to hide/move this option into a more "privacy oriented" submenu. Leaving it in the homepage can cause involontary exposition of the seed phrase. Thank you for the support.
I traced adb logcat
logs during the error and caught the below error line.
I also noticed the wallet is syncing during this time. My tx actually went through after a few minutes so I'm wondering is it possible the broadcast failed because wallet is not synced to chaintip?
Maybe UI should not allow broadcast tx if wallet needs to be fully synced prior to sending?
04-01 22:28:26.952 17961 17996 W System.err: [debug][chain-sync] got headers from 72577 to 74593
04-01 22:28:27.392 17961 18020 W System.err: [debug][pool] got header 136811 from signet-electrumx.wakiyamap.dev
04-01 22:28:27.632 17961 17996 W System.err: [debug][chain-sync] requesting headers from 74593 to 76609
...
04-01 22:28:49.983 17961 17996 W System.err: [debug][chain-sync] got headers from 86689 to 88705
...
04-01 22:28:50.078 17961 17996 W System.err: [debug][chain-sync] requesting headers from 88705 to 90721
...
04-01 22:28:51.555 17961 17996 W System.err: [eee][warn] error broadcasting transaction: Error(-1,wallet is not connected)
I was trying OBW, receiving and sending payments with the Jiraiya HC, and notice that is impossible to receive the micropayments from thndr games... Its weird because its possible to receive them with SBW, WoS, Muun, so the problem is not at their end.
When i tap OBW on the game to claim the sats, OBW opens but then nothing happens...
Mentioned here: https://twitter.com/fiatjaf/status/1586772128279543808
Currently is not so easy to find OBW using a search engine; "obw" and "open bitcoin wallet" usually bring the user to other resources. These are just some suggestions aimed to improve OBW searchability and discoverability:
Change the repo name to "obw-open-bitcoin-wallet": this wil promote the keyword "(open) bitcoin wallet"; it is a competitive key of course, but why not try? Github manages trasparently the redirects (301), so no problem for the old links around.
Change the repo description to "Open Bitcon Wallet (OBW) is a lightweight Android Bitcoin and Lightning wallet": this string is used in the html <title> and Open Graph tags, so it is picked up in a lot of contexts.
Update the readme to increase keywords frequency, as per my pull request: #29
This improvents should works nicely non only for the mainstream search engines but a wider search context, starting from the internal Github search, and have effect on the repo accessibility/usability too.
A channel that I opened with my routing node went offline. After trying to get it back online for a while I decided I'd just force-close it from my node's side. That has all resolved itself, including the on-chain transaction for OBW's local balance and the delayed on-chain transaction to my node, but the channel still shows in OBW's channel list.
How can I get the channel to disappear from OBW? I still have an option to force-close the already force-closed non-existent channel from OBW, will that cause any issues?
Hello!
I installed v0.1.4 first time and sent to bitcoin address some funds. But after this I don't see any transaction. I think your wallet doesn't show mempool transactions. Right? For example the SBW shows any transactions - mempool and blockchain ones. And other difference against the SBW wallet - when I press the Receive button I cannot choose bitcoin method. I see warning that I don't have LN channels. Both of these moments are confusing...
I know that by default OBW is sending MPP, using all available channels and paths.
We have also option to receive to specific channel.
But sometimes, user don't want to use a specific HC for example, using only normal channels to send a payment.
A. In the LN channels section, when you click on a LN channel, have the option "send from this channel". Once is clicked the sending payment modal will popup and user have to scan or add manually the details for the payment.
or
B. In the sending screen modal, add a simple drop down option to select online and active channel that you want to use for that specific payment.
Currently the backgroundsytle when I enter my pin to acces OBW is completly white.
Would be nice to style it the same way like the rest of the wallet. Dark.
Or to give the user the oppertunity to switch between dark and light mode.
Are these kind of "Issues" /feedback welcome?
Trying to open a lightning channel with v0.1.6-7 but it fails due to low channel balance. Problem is the error is so small that minimum channel size doesn't fit and isn't visible, so I can't tell how large channel I should create :|
Add the option to swap funds from a LN channel (HC or normal) into onchain address, using a swap service like deezy or boltz.
Nowadays many users are buying or receiving sats through LN. So these users often need to move those sats into a HODL onchain wallet and empty their LN channels or keep them at a certain level empty to be able to receive more. Imagine a small merchant with 2-3 channels in OBW, taking sats every day. End of day they need to move those sats into their onchain wallet.
Users do not have to close channels or make complicated tasks with external swaps or moving funds from one wallet to another etc.
Add a simple feature, clicking on a specific channel and offering the option "swap to onchain".
Then ask the following:
Done. Inform the user that should wait with the app open until the swap is finished, to avoid any communication issues.
Option to push funds from the Poncho side of the node towards OBW client. Like an internal keysend.
Consider you are running your own node with Poncho and connect your OBW to your Poncho as HCP (hosted channel provider).
Yes, you can set your own size of the HC but what about the case when as OBW user, that HC is drained and you need more funds, that are already in your LN node?
Or your familiy/friends are requesting you more funds into that HC.
Add the options on both sides of the HC:
When I tap "Boost", after choosing the fee, the following message appears: "A transaction could not be transmitted, please make sure the wallet has a network connection and try again" But my phone is connected to the network.
OBW v0.1.5 and v0.1.6
Right after invoice creation, a blackscreen is displayed with nothing instead of displaying qrcode of the invoice.
There isn't any error displayed
To display the invoice we need to select view invoice on the main screen since it's not displayed right after invoice creation.
Android 12
Samsung S10e One UI 4.1
Edit : logcat added
When sending Sats to OBW using HC Jiraiya, the amount is debited from the sender but never reaches the destination. It remains "waiting" forever and get lost.
I tested it on March 22nd and today, April 11th, and the behavior is the same. If the problem is in HC Jiraiya,
I suggest removing it from the list of Hosted Channel Providers, as remaining causes users to lose precious sats.
OBW v0.1.6
When a withdrawRequest
is being processed right after step 6 on LUD-03)
OBW crashes and unexpectly closes.
I tried with lnbits (withdraw extension) and another custom implementation of withdrawRequest
LN SERVICE
, others wallets (Pheonix, SBW, Blue Wallet, LNBits itself) don't have this problem.
When we open OBW again, we can see the invoice has been created, but is not paid.
On the LN SERVICE
side, all steps are done and {"status": "OK"}
is sent, but the invoice is never claimed (not sure about the vocabulary here).
LNBits withdraw extension confirms that the invoice has been processed (callback http get is also done).
10-30 10:59:31.846 966 2620 D MdnieScenarioControlService: packageName : wtf.nbd.obw className : wtf.nbd.obw.EmergencyActivity
10-30 10:59:31.847 966 2620 V MdnieScenarioControlService: setUIMode from UI function(3)
10-30 10:59:31.850 27714 27739 I libEGL : EGL_ANDROID_blob_cache_path advertised, but unable to get eglSetBlobCachePathANDROID
10-30 10:59:31.857 27714 27739 D OpenGLRenderer: RenderThread::setGrContext()
10-30 10:59:31.864 27714 27714 I DecorView: [INFO] isPopOver=false, config=true
10-30 10:59:31.864 27714 27714 I DecorView: updateCaptionType >> DecorView@d6b233a[], isFloating=false, isApplication=true, hasWindowControllerCallback=true, hasWindowDecorCaption=false
10-30 10:59:31.864 27714 27714 D DecorView: setCaptionType = 0, this = DecorView@d6b233a[]
10-30 10:59:31.865 27714 27714 I DecorView: getCurrentDensityDpi: from real metrics. densityDpi=420 msg=resources_loaded
10-30 10:59:31.885 966 988 D InputTransport: Input channel constructed: '9aa22a8', fd=921
10-30 10:59:31.885 966 988 D InputTransport: Input channel constructed: '9aa22a8', fd=922
10-30 10:59:31.885 966 988 D InputTransport: Input channel constructed: '9aa22a8', fd=925
10-30 10:59:31.888 629 1302 I SurfaceFlinger: id=797280 createSurf (0x0),-1 flag=80004, 9aa22a8 wtf.nbd.obw/wtf.nbd.obw.EmergencyActivity#0
10-30 10:59:31.889 966 988 D RestrictionPolicy: isScreenCaptureEnabled : ret=true userId=0
10-30 10:59:31.889 966 988 D InputTransport: Input channel destroyed: '9aa22a8', fd=925
10-30 10:59:31.893 27714 27714 I ViewRootImpl@be995db[EmergencyActivity]: setView = com.android.internal.policy.DecorView@d6b233a TM=true
10-30 10:59:31.896 27714 27714 D AndroidRuntime: Shutting down VM
10-30 10:59:31.896 27714 27714 E AndroidRuntime: FATAL EXCEPTION: main
10-30 10:59:31.896 27714 27714 E AndroidRuntime: Process: wtf.nbd.obw, PID: 27714
10-30 10:59:31.896 27714 27714 E AndroidRuntime: java.lang.RuntimeException: Unable to start service wtf.nbd.obw.utils.AwaitService@e33e424 with Intent { act=actionShow cmp=wtf.nbd.obw/.utils.AwaitService (has extras) }: java.lang.IllegalArgumentException: wtf.nbd.obw: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
10-30 10:59:31.896 27714 27714 E AndroidRuntime: Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5110)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.ActivityThread.access$2200(ActivityThread.java:310)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2319)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:106)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:226)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.os.Looper.loop(Looper.java:313)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8663)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:567)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: wtf.nbd.obw: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
10-30 10:59:31.896 27714 27714 E AndroidRuntime: Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.PendingIntent.checkFlags(PendingIntent.java:382)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.PendingIntent.getActivityAsUser(PendingIntent.java:465)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.PendingIntent.getActivity(PendingIntent.java:451)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.PendingIntent.getActivity(PendingIntent.java:415)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at wtf.nbd.obw.utils.AwaitService.processServiceIntent(AwaitService.scala:49)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at wtf.nbd.obw.utils.AwaitService.onStartCommand(AwaitService.scala:35)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:5092)
10-30 10:59:31.896 27714 27714 E AndroidRuntime: ... 9 more
Android 12
Samsung S10e
Weird channels names appeared after udpate OBW to v0.2.0-11.
After update OBW to 0.2.0-11 some weird gossip sync happen:
Jiraiya HC appeared to be etleneum,com (I never open with etleneum.com and is also another IP)
Eternal.Sovereign node appeared now as [onion] with displaying his old onion address (no longer available)
Eternal said that only changed the alias few days ago and other wallets / channels are connected well.
Notice in Amboss its old onion address
Will wait few days more to see if the gossip will sync correctly and will report back here.
Hello,
is it on the roadmap to add NFC Boltcard compatibility? Would be awesome.
Best regards
It shows values far from reality. F.e.: 0.18% in a payment to a node with which you have a channel (so 1 hope 0 fees)
Hi there. As the title says, it would be great if this wonderful app could sign messages for all the services which requires to validate the btc address. Thank you very much!
OBW works with Electrs, but it remains offline with Fulcrum
Hi, the wallet has bugs in RTL devices (Arabic, Persian, Hebrew..).
as long as there isn't support for Arabic language for now, I think it would be better to restrict the RTL layout and force it to be LTR on Arabic devices.
For reference: akumaigorodski/wallet#134
Thanks.
The problem accour in the final step of PSBT, when the seedsigner generates the qr containing the signed txo. OBW isnt able to recognize the qr and shows an error. It shows a load screen when scanning qr that end at 99% with the fatal error.
The seesigner signin seems to work (no error reported, no unexpected behaviour and the final qr is correctly generated).
The same issue is present in SBW.
In "Paid Lightning Channel providers" the links to "Zero Fee Routing" and "BlockTank" point to a 404 page. Github link too.
Hi there,
It seems I am able to use the random node option to use the wallet after I recovered my backup from SBW, but when I attempt to use my custom electrum backend over an onion address the "Offline" status never goes away. SBW continues to work fine with the custom backend.
Steps I have tried so far:
Any idea what could cause this?
If you'd like me to provide logs or more info, please let me know how.
Hi, the problem accour only with the "use tor connection" option enable (without setting any custom electrum server).
When I close the app the tor connections terminate, but after 1-2 seconds new connections spawns like if I'm starting the app.
They then remain in backgroung for long time, until android kills the process correlated. If I start OBW when these connections are running in background, it will uses them and no connections are killed or spawn during the startup and sync process (2 times over 3 it fails to fetch data and results "offline").
At this point if I close the app, the connections will be closed; after 1-2 seconds new tor connections will spawn and the cicle will goes on. ..
If I force-close OBW killing all the prcessess the cicle ends, connections are killed and no connections will start unless I decide to start the app.
When on clearnet (default servers), when I close OBW all the connections stop as expected and nothing strange spawn.
This different behaviour of tor and clearnet make me think that the problem is not related to my specific android-ui/launcher/process-killer, but could be something broken with handling tor connections.
I analized the internet traffic on-the-go with the app from fdroid "PCAPdroid", a useful and simple tool.
NOTE: _@fiatjaf this is just a proposal, no rush or bug, is just an observation to improve the noob experience with OBW.
So please before closing it, think about.
EDIT: Maybe is a bug, in the end. after 12h waiting for mempool to clear up, the tx is not confirmed but the channel is still in pending.
The peer confirmed also that have the channel in pending but no tx confirmed. Weird.
Add more details in the opening channel procedure.
The onchain balance remain the same after the channel opening is initiated and also the sats for the new channel are reflected into LN balance (and is not right).
The sats from onchain should be gone, or at least in the brackets or other color, to indicate that are in pending or something.
Or make the onchain balance 0 (was sent all sats available) but add in LN balance, in the brackets the opening channel amount, next to the real LN balance.
I don't know how you can fit into that small space, but at least inform the user that those funds are STILL NOT available.
This is what I get when I click on pending channel:
Channel details
Remote peer node ID
03bf5f69adc41b4757e2ee88840f167398f4ab3a619fa73b7b25491f6ef349ea16
Local wallet node ID
03d3bd0165b830486b697e76d01a1fb1db30de3c114c43536342bb7abec59b0b7e
Channel short ID
unknown
Funding txid
91d01018593d3b8e1f626b9d3537ef0039e72d049f3968689852292bab098bd0
Channel started
26 Nov 2022
As old tester for wallets, I understand what is going on, but a newbie that will install first time OBW will not know that will have to wait and will do crazy things and/or complain where his sats...
so people can install OBW easily from F-Droid store.
SBW was added to F-Droid here: https://f-droid.org/en/packages/com.btcontract.wallet/
I can help with the inclusion, but I need the permission of the upstream to include it. What do you think @fiatjaf?
I am unable to pay an Invoice (generated in OBW) with a CLN node over a private channel as CLN has introduced an abort-early mechanism (ElementsProject/lightning#4404) which refuses to even attempt the payment.
As IMMORTAN uses random public keys for invoices, CLN cannot find the pubkey in the public channel graph and aborts the payment attempt with message: Destination <pubkey> is not reachable directly and all routehints were unusable.
This is the reason I opened #4, which is not the issue though.
(CLN issue is ElementsProject/lightning#5586)
OBW should be able to include route-hints into its invoices in order to facilitate receiving through private channels
Is there any upstream integration necessary for this in IMMORTAN?
The function to save a channels backup is not doing anything.
OBW vers. 0.2.0-11
Android 8.1 and Android 11, 12
In SBW, when you click on the option "Local channel backup is enabled" it trigger a channels backup file into your "downloads" folder on the device.
In OBW is NOT doing anything, it just open the app details.
So right now with this version, IT IS NOT POSSIBLE TO BACKUP AND RESTORE a OBW wallet if something bad could happen.
I discovered this bug when I tried to do a full backup / restore because of the issue #34 (gossip do not sync correctly).
The click on the backup option should popup a file explorer modal to choose where the file should be saved.
Or just a simple button that will save the backup file and a simple message like "file saved" if is success.
I initiated a channel open yesterday, and it still shows as "Opening..." in the channel list today. The funding txid from Share Lightning Channel details does not appear in the mempool/block explorers. The sat balance also seems to be reflected in both Lightning and Bitcoin on the main screen.
Recently tried to open my first channel, it seems the on-chain tx broadcast fine but the channel is stuck at the opening stage despite hundreds of on-chain confirmations. I have network activity displayed at the taksbar in Android which doesnt show any activity after the initial chain sync upon opening the app. It seems like LN connectivity is broken for me. Already tried to close the channel but nothing happens, tor doesnt work either.
[Lineage 19.1, Android 12]
Add an option to setup custom electrum server at first time opening wallet.
Currently you can setup the server only after opening the app and creating the wallet
Does this wallet also have a version for Testnet and Regtest? Does it support a custom Signet?
Hi, some days ago my OBW started a channel sync but it wasn't completed and now I having issue to send payments. I receive this error: "Channel sync is not finished yet, please wait a bit while keeping an app open and then try again.".
But the channel sync is not running (at least there isn't the channel sync tag).
So would be useful to have a button to restart the channel sync to avoid to wait for the next sync.
Please add NameDesc in payment details as it was in SBW originally
Is a very good and useful feature.
This is an example, paying from Blixt wallet to SBW.
In Blixt you can set a fictitious name as "sender".
In the modal screen of the payment, user can choose if he want to send or not the NameDesc.
In SBW was received like this:
Is this a good idea?
Can we have LNDHub support so people can use OBW as a frontend mobile client for their lnbits wallets, etc?
Had a channel with Kraken in SBW. Installed OBW and imported channel backup to there, too. Tried to make lightning payment 100k sats from OBW. It turned to "in flight" payment. Just after that, Kraken force closed the channel (SBW and OBW were both running). Got majority of funds refunded immediately, but this 100k is missing/stuck somewhere. Assumed there's time lock 1-14 days for this utxo, after which the funds become spendable. However, wallets can't see these funds after a month. Would like to find out what's the state of these funds and access those if possible. Could the wallet display where did the funds land? Also, who can access those funds and when? The transaction: f45998828e64d69a64ae272f1ee6ecf5424c061b7a6f4788ee3d2ad6f17231e7
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.