Giter Site home page Giter Site logo

m2049r / xmrwallet Goto Github PK

View Code? Open in Web Editor NEW
560.0 560.0 272.0 76.88 MB

monerujo: An Android Monero Wallet

Home Page: https://www.monerujo.io/

License: Apache License 2.0

CMake 0.67% C++ 5.98% Java 86.93% HTML 3.77% Makefile 0.21% Dockerfile 2.44%

xmrwallet's People

Contributors

0140454 avatar alexunderhood avatar anhdres avatar apertamono avatar benedictp avatar bitlamas avatar earlofego avatar el00ruobuob avatar erciccione avatar gelesztaa avatar hankur avatar hrumag avatar ignaudioz avatar jarole avatar jindouyunz avatar jonathancross avatar justxd22 avatar katant avatar kingoflove819 avatar lafudoci avatar leza89 avatar m2049r avatar mattcode55 avatar mstniy avatar netrik182 avatar paxriel avatar thefuzzstone avatar uiharu-s avatar v1docq47 avatar waninkoko avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xmrwallet's Issues

delete

sorry, can be deleted

Bug: in give activity the amount validation happens too late.

Steps to reproduce

  1. open wallet
  2. click give
  3. scan address
  4. enter amount '0.1'
  5. click prepare

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

Multisig ideas

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 be barcode only, barcode + Bluetooth and/or Android Beam.

Here's how Bitpay does it: https://www.youtube.com/watch?v=hcq9MbNJhY8

Spend coins by scanning qr code - Enhancement

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.

Wallet should save sync state before fully synchronized

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.

Deal with manually entered integrated addresses

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?

Bug: wrong balance in watch-only wallet

I synced a watch-only wallet and the application is showing the wrong balance.

Suppose the following transactions took place:

  1. wallet receives 10 XMR
  2. wallet receives 15 XMR
  3. wallet sends 5 XMR

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.

wallet address contains/displays asian characters

Steps to reproduce:

  1. Install App & Open
  2. Click on plus in lower right corner
  3. Choose wallet name and password
  4. Public address contains non-displayable characters (in a test before they had been asian or japanese)
    (Environment: Android 6.01, Xiaomi Redmi3, wallet 0.5.3 from APK)

Feature Request: I2P Integration

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.

Mobile network slowness

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?

Feature Request: Offline Spending

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...

General questions

I have two questions, I hope this is the right place to ask.

  1. 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?

  2. 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?

Bug: LoginActivity::receive requires password.

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:

  1. Click on wallet_item dots
    • see menu
  2. Click on Receive

Expectation:
See dialog with QR-Code and copy able public address

Actual:
See password prompt, After password, the wallet is shown, not receive.

[Feature Request] Add key images to view only wallets

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

Support subaddresses

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!

wallet crashes at first start

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

[Feature] bulk QR code scans for signed offline transaction

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?

Displayed wallet address has weird characters

(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.

Security: Password visible, keyboard autocorrect & google button remains turned on

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.

Question: compilation and openssl/unbound problems

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!!

Feature Request: Change wallet password

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.

Wallet corrupted monero lost?

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... :(

Confirm payment in mempool on receive screen

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 ...

Feature: Configure exchange price source

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

App loses context (or restarts) when split screening on Android 7+

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

Feature: Restore Wallet with QR-Code

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).

[UX] Dark Mode

Pure white background that covers 90% of screen is like looking at the sun, we need dark mode!

really delete wallet

/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 ...

Feature Request: Advanced Payment Id's

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

[2] https://steemit.com/shadowbrokers/@wh1sks/theshadowbrokers-may-have-received-up-to-1500-monero-usd66-000-from-their-june-monthly-dump-service

Missing incoming transactions on newly created wallet

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.

Bug: Restore watch only wallet from height scans all blocks

Steps:

  1. Create a wallet somewhere
  2. Put a amount in that wallet
  3. Record the Height for the confirmed transaction
  4. Restore a view only wallet
  5. Set the Height to the recorded height - 1(00)
  6. Create wallet

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'...

Wallet not showing balance on testnet

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.

Problems with synchro of view-only wallet

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.

Building the ext libs

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!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.