m2049r / xmrwallet Goto Github PK
View Code? Open in Web Editor NEWmonerujo: An Android Monero Wallet
Home Page: https://www.monerujo.io/
License: Apache License 2.0
monerujo: An Android Monero Wallet
Home Page: https://www.monerujo.io/
License: Apache License 2.0
This basically means accepting hostnames as receivers.
As a user i want to restore my wallet using QR-codes to quickly enter the keys without errors.
Currently the createwallet from * activities require me to enter the private key without input support. I have to copy&paste from a file to save time.
The public key input should have the [scan] button using the existing ScannerFragment
The complete wallet should be scanned with a code that can contain &seed=text&v_key=view_key&s_key=spend_key&min_height=0
Currently moneroaddress.org does not specify a format for seed, v_key, s_key or min_height and only exposes the public key as QR-code. There is a issue (#12) that requests paper wallets. The fix to that that could include the private keys as well (as they make sense on paper).
Could you refer to the vulnerabilities found by Mobile X-Ray by High-Tech Bridge?
https://www.htbridge.com/mobile/?id=pt5hgh7v
They found 2 high, 1 medium and 3 low vulnerabilities in Monero.
Might make some users worried.
I know that "hardcoded data" is not a problem. But what about others? Especially the "high" and "medium" ones.
Preconditions:
Copy donation address
Steps:
Expectation
The pasted address is still in the input
Actual
The pasted address is gone
(and is not the wallet address) - reload of screen/wallet shows correct address.
On rare occasions, the wallet address is "broken". It has been observed (by me) that the .address.txt file also contains such a broken address - which means that it is not the java/android code which is responsible.
This phenomenon has only been observed with the address string and no other.
One "solution" (aka workaround) may be to check if the address is valid in the Wallet.getAddress() method and simply re-get the address if it is not (?)
Longterm we need to figure out why this behaviour is so.
If user is synchronizing their wallet and has to stop the process before it is completely done, they should not have to start from scratch/the last save state. If you sync from scratch and have 1000 blocks left to sync you should not have to start over from the beginning and resync all /=1396969 blocks (as of 2017-09-11 15:03:31.716) again.
It is possible to enter (also copy/paste) integrated addresses in the send screen - these are currently "invalid"
The app should either allow them or split them into address + payment id. (or both?)
Maybe a new field?
Should show what actually went wrong so the user can fix it.
Steps to reproduce
Expectation
Warning for no payment id
(Display of amount in last known conversion value)
(Display of amount in selected currency while typing the amount)
Actual
Amount input says 'Enter value' until i click into Payment Id
I have two questions, I hope this is the right place to ask.
I noticed a very big wallet file (~45 MB) in the main app folder. This wallet is empty, no transactions at all. For comparison, my desktop wallet file is no more than 5 MB (and it does have transactions information). Why is the app wallet file this big?
If I don't protect my wallet with an additional password inside the app, does that mean that the file is not encrypted and can be accessed by any other app with storage permissions?
I synced a watch-only wallet and the application is showing the wrong balance.
Suppose the following transactions took place:
The correct balance over time is as follows:
Time | Amount |
---|---|
0 | 0 |
1 | 10 |
2 | 25 |
3 | 20 |
Monerujo would show that the balance is 30 XMR, since apparently it considers the last outbound transaction as inbound for some reason.
the payment id field can take upto 64 hex characters. it would be great if we can attach a message to each transaction that translates back into plain text.
This ticket is for tracking the progress about google play
I just checked my data usage for this cycle and Monerujo has eaten nearly a gig of my cap. Would we possibly be able to restrict the app to use data only when connected via WiFi?
I created a new wallet had the screen open, send some monero to the wallet, since this took a little bit i did some other things and my phone got to 5% battery...
I opens the wallet screen again and there was just the field where normally the public key of the wallet is shown. But there was just something about corrupted.
After that I added a power supply, charged the phone and reopened monerjo.
The wallet was gone...
Is there any place where i can look for the files or recover the wallet? I have the public address and the name i gave the wallet.
I lost some monero... :(
Hi,
Regarding https://github.com/m2049r/xmrwallet/blob/master/doc/BUILDING-external-libs.md
The instructions have some inaccuracies, most notably they do not mention installing clang, a wget is missing from the boost download, the first apt-install is a typo that either needs the - removed or converted to "apt-get install", and now the sticky part, libzmq! Cmake cannot find it when "building monero". I had libzmq3 on my Ubuntu 16.04, probably got it to compile Monero4ubuntu, replaced it with libzmq which changed nothing, then I realized the 32 bit version may be needed, I got one but still cmake is not interested. Is this the kind of thing I should try and solve by tweaking cmake internals, or should libzmq be added to the instructions from source perhaps?
Thanks!
/u/light3rn : It would be great if one could just delete wallets as well without archiving anywhere.
/u/m2049r : i was afraid people might delete their non-empty wallets only to realize later they have no seed. people are lazy. maybe with a couple of "are you sure" dialogs ...
Using Android 7 or later with Monerujo 1.2.4 (45) wi
Steps:
Start monerujo
Open wallet or some other context
Open Android App Switcher
Open another app so the screen is now split screen (i.e. 50% monerujo, 50% another app)
Expect: nothing
Actual: 'Wrapping up'... Monerujo seems to close and reopen, losing context
Other:
At first I thought maybe this is the expected behaving when switching apps, however I can switch away from Monerujo, to email or other app in normal full screen and then back to Monerujo without losing context, so I'm not sure what is special about split screening.
Device: Nokia 5, Stock vanilla Android 7.1.2
Please add support for subaddresses! I really miss this feature, since I would like to use one wallet for multiple projects. Thank you for the great work!
Install wallet 0.5.3 in Android 6.01; Start after install.
App asks for permissions to access media and Photos; Permissions granted.
App crashes
java.lang.RuntimeException: Failure delivering result ResultInfo{who=@android:requestPermissions:, request=1, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.m2049r.xmrwallet/com.m2049r.xmrwallet.LoginActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.app.ActivityThread.deliverResults(ActivityThread.java:3744)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3787)
at android.app.ActivityThread.access$1500(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5529)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:629)
Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1842)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1860)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:650)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:609)
at com.m2049r.xmrwallet.LoginActivity.startLoginFragment(LoginActivity.java:286)
at com.m2049r.xmrwallet.LoginActivity.onRequestPermissionsResult(LoginActivity.java:271)
at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:6634)
at android.app.Activity.dispatchActivityResult(Activity.java:6512)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3740)
... 9 more
As a paranoid user i want to spend and receive monero without internet.
Without a sim-card it is impossible to exchange monero in public places. There are applications that require the user to turn of network to avoid tracking etc. Therefore the application should be able to exchange a signed transaction with QR-codes.
From my understanding this should be possible with the submit_transfer, sign_transfer methods of monero-wallet-cli. Not sure what happens if a signed transaction is broadcasted twice.
Sender:
In the last step of sendfragment add a additional button 'Show Signed Transaction' that displays the data as QR-code. Below the QR-code a 'mark as spend until online' button should be visible. Pressing this button displays the transaction in the UI as if it was sent to the network, maybe with a different icon.
The app needs to notify the sender in the LoginActivity that there are stored, unsent transactions available.
Unsent transactions need a list, item and a broadcast now button.
Receiver:
In the receive dialog a button 'Scan Signed Transaction' opens the QR-scanner. The QR-scanner returns with the data of the Signed Transaction. The dialog then displays the details of the transaction (like payment id, maybe the receiver address if it is for the current wallet).
The receiver can now decide to store the transaction (make him trust the sender not to double spend), broadcast the transaction (can even broadcast for other receivers).
The app needs to notify the receiver in the LoginActivity that there are stored, unsent transactions available.
Unsent transactions need a list, item and a broadcast now button.
The receiver has a high interest to broadcast the transaction in order to get the funds. There should be a warning when both receiver and sender use this in offline mode.
The receiver code should be careful interpreting the transaction from the QR-code, check lengths/value ranges...
And autocomplete them in the text entry field.
If you have the spendkey for testnet, it doesn't ever show you as confirming/receiving the coins. However, if you have only the viewkey, it shows the transactions and balance.
I forked the project and followed the instructions to create an APK (and cross compile the libraries). My goal being to create a mobile wallet for Sumokoin.
Anyway, I run into problems when building the app in Android Studio and get SSL errors:
../../external/unbound/libunbound.a(libworker.c.o):/opt/android/sumokoin/external/unbound/libunbound/libworker.c:function libworker_delete_env: error: undefined reference to 'SSL_CTX_free'
I was hoping this look familiar to you and is perhaps something you already fixed in your build process for releasing new versions of the wallet ?
Thanks!!
Pure white background that covers 90% of screen is like looking at the sun, we need dark mode!
I want to change the password of a wallet regularly/for some reason to keep safe.
A dialog prompting for the current password and a new password should be displayed. The new password should be entered twice. A button to display the password inputs should be available.
Just sent moneroj to a newly created testnet wallet using v1.0.2
Backend is running on v0.11.0.0-release / testnet.
I can see the transactions coming in. But then if I wait a bit, then close and reopen the app my balance is still at 0.
Transactions were confirmed multiple times by now.
sorry, can be deleted
Similar to #100
It may make sense to wait for Kovri, but there is an existing I2P application for android. This feature would be helpful for people who wish to connect to an I2P remote node, such as those on MoneroWorld.
The android app linked uses an HTTP/HTTPS proxy on port 4444.
As a user I want to be able to broadcast a signed tx without a physical connection to cold wallet. As I understand a signed tx will be larger than one qr code, so it would need a bulk capture mode with some error checking/user confirmation dialogue.
Could this be done without any wallet opened?
I'm trying to think of how we can make monero easier to use for everyday uses. I know, just like everyone else.
There is a QR code to receive but no easy way to send.
If I want to spend my monero at the "corner store", I would need to know their address. Which would take a long time to type it in your wallet.
So how about a QR code scanner, then the fields would auto generate but would be read only, so you can't change the price on the merchant, except for the tip field.
You can add a view only wallet with the view keys but any outgoing transaction won't show. And any change from a send transaction will appear as an incoming transaction without the key image.
Importing of key images would show the correct balance of a view only wallet.
/u/Lucifer1903
The QR receive screen should show when payments have reached the requested amount with the specified payment id.
This probably also means "freezing" the receive screen so the amount and payment id cannot be changed as it is now.
Further down the line we may have a screen only for awaited transactions ...
Steps to reproduce:
I created a couple of new testnet wallets and sent some Monero to them shortly after I created them.
Monerujo missed those incoming transactions in all 4 wallets. Maybe you should start like 20k blocks before the current one when scanning newly created wallets.
I'm trying to import a view-only wallet to Monerujo.
Say I've synchronized it till 200k blocks behind and I decide to close the wallet.
When the wallet is opened again, it re-starts synchronizing from 400k blocks behind (the block number differs every time). In several days I never managed to reach the current block.
When I connect either to a local Monero node on my LAN or to a remote node the behaviour is the same.
As a user i want to quickly share my public address with a customer.
(And I do not want my customer to know the balance of my account and I do not want to type in the password that unlocks the wallet)
I may have to give away the mobile as the user has a desktop only client and needs to type the public address.
Precondition:
User is on the login activity.
A wallet_item is configured.
Steps:
Expectation:
See dialog with QR-Code and copy able public address
Actual:
See password prompt, After password, the wallet is shown, not receive.
Steps:
Expectation:
The wallet displays the confirmed transaction very fast, almost no traffic occurs
Actual:
The wallet is restored from block 0 in 20k steps
Alot of traffic occurs
Restoring the donation wallet from height 0 on a 1mb/s line took at least 3 hours
Restoring a wallet with a height ~2017-06 took less than 30min
Restoring a wallet with a height about -1000 from current (took less than 5min)
Maybe the message during the skip forward (20k steps) should be 'finding height' and then 'scanning blocks'...
I'm running 1.2.11 , and it seems that the wallet takes a really long time to connect to a remote node when using a mobile data network. (took about 4 minutes to get connected). I'm on an LTE network.
It is obviously really fast when using my wifi.
I'm wondering if its something on the wallet end. I remember at one point the Monero GUI had some problems with the DNS resolving when the GUI would start the daemon - is there any possibility that some aspect of the monero-wallet-cli (which i think this uses as its backend), has some weird DNS thingy going on.
On the other hand, I wonder if there's anything that can be done on the remote node end. Like, how could the servers be modified to make it faster?
I'd like to start a discussion about how multisig could be used best in mobile wallets. From my comment on Reddit:
Being able to initiate this from a mobile client using a QR Code would be pretty awesome. We should work out some kind of protocol so different wallets can understand each other.
Options could bebarcode only, barcode + Bluetooth and/or Android Beam.
Here's how Bitpay does it: https://www.youtube.com/watch?v=hcq9MbNJhY8
The monero-wallet-cli allows entering a YYYY-MM-DD date as height.
Allow the user to enter a date as height during wallet restore.
I want to have nice and simple payment id's. They can contain a message or a number or something but it i am lazy to calculate them outside of the app and manually pad them with 00:
examples:
7468616e6b20796f7520666f7220786d7277616c6c6574000000000000000000
584d526f636b7321
I was inspired by the article on TSB's use of the PID.
The feature should implement:
Enter any number should autopad the payment id with 0
Enter any text should 7bit encode the value (and limit the input to 8bytes) [1]
Enter any text exceeding 8 bytes should use the optional 32 byte payment id with the warning that this information is not encrypted and readable by anyone [2]
Monero does have encrypted payment IDs -- they're 8 bytes (64 bits) [...] Additionally, you can easily search the Monero blockchain for any 32 byte PID and find all Monero transactions associated with that PID. [2]
[email protected] = 75 73 65 72 6e 61 6d 65 40 64 6f 6d 61 69 6e 2e 63 6f 6d
Monero requires Payment ID to be 32 bytes or 64 hex characters so pad difference with 00
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
75 73 65 72 6e 61 6d 65 40 64 6f 6d 61 69 6e 2e 63 6f 6d 00 00 00 00 00 00 00 00 00 00 00 00 00
"757365726e616d6540646f6d61696e2e636f6d00000000000000000000000000"
[2]
[1] https://getmonero.org/resources/moneropedia/paymentid.html
There should be a possibility to show which Open Source Licenses the Apps uses.
To automate this it's possible to use: https://github.com/mikepenz/AboutLibraries/
Android 7.1.1.
When creating a new wallet, the password is shown while typing. In addition to this, my autocorrect/google predictive search of the keyboard (gboard) remains turned on as if I'm inputting into any plaintext field. Some other apps correctly recognize/signal that it's sensitive info and automatically disable autocorrect/google predictive search of my keyboard. I don't want google snooping on my passwords.
There are lists with known nodes that are open (ie https://moneroworld.com/#nodes), it would be nice to have a list of nodes to connect as the app is installed to help the newcommers to have an Install&Use app
Self - explanatory. Default(or enforced) option to use local Orbot proxy.
Excellent project. Thanks :) !
I'm getting an "Invalid Monero Address" error message when scanning an integrated address on testnet.
No idea whether it's because of testnet, or integrated address, or the combination of both.
Sample barcode (just enter an amount, all other inputs are optional):
https://amiuhle.github.io/kasisto
Edit: It has a tx_amount
URL parameter, which is the "official" way to encode an amount.
As user i want to use a different exchange to reliably have a recent conversion price.
Add a setting dialog that allows to select the conversion exchange.
Add implementation for different exchanges.
The idea is not to make this app a ticker-app with as many exchanges as possible, but a alternative for one service is down would be nice.
layout/AsyncExchangeRate.java uses the kraken API hardcoded with the 'c' field.
c = last trade closed array
Kraken does not work well through Tor as they use a cloudflare configuration.
Other exchanges are:
https://poloniex.com/support/api/
https://api.bitfinex.com/v1/ticker/xmrusd (also cloudscare protected, no eur)
from cryptocompare (works through Tor):
https://www.cryptocompare.com/api/#-api-data-price-
https://min-api.cryptocompare.com/data/price?fsym=XMR&tsyms=USD,EUR
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.