Ergo Wallet for Android, built on top of Ergo Appkit.

Overview

Ergo Wallet Android

Ergo Wallet for Android, built on top of Ergo Appkit.

You need at least Android 7 to run Ergo Wallet.

Features:

  • generating wallets, restoring wallets in a way compatible to Yoroi and Ergo node
  • no need to make a full sync, this is a lightweight client
  • Requesting payments by showing QR code or sharing a link
  • adding read-only wallets to watch balance
  • Show wallet balance, configurable comparison fiat currency
  • Sending payments

Current state: Ready for testing. You can test the app on testnet. Generate a new wallet and send yourself some test Ergos by visiting https://faucet.ergopool.io/payment/address/TESTNET_WALLET_ADDRESS

See releases section for binaries (built on GitHub) and release notes. It is normal that Google Play Protect warns about an unsafe app. GitHub builds the binaries with a certificate unknown to Google. Visit the Ergo Discord to give feedback.

TODO

  • Progress indicator when restoring wallet (slow on some devices)
  • Prevent sending transaction when there are unconfirmed transactions (does not work, transaction is discarded)
  • Check if assets are safe
  • Gradle verify dependencies
  • API < 26 for all: https://github.com/ergoplatform/ergo-appkit/issues/82

And maybe more

  • Derive addresses from master key
  • Address book
  • In app transactions list and details
Comments
  • Errors whenever i try to send tokens

    Errors whenever i try to send tokens

    Just like the title says, I'm mainly getting timeouts tho there were a couple of bad request errors, seems to be an issue with the node. One of the things I noticed that I thought was weird is that 'node url' is set to a specific IP address instead of a domain (159.65.11.55:9053)

    opened by gytis-ivaskevicius 6
  • feature request: copy wallet mnemonic

    feature request: copy wallet mnemonic

    as a user who creates a new wallet in the mobile app I want to be able to easily backup my 15-word mnemonic so that I can recover my wallet at a later date and not lose all my assets (after I damaged/lost my phone)

    the wallet setup screen does require specific words from the mnemonic to be entered that should make the user backup/write down the mnemonic but often the mobile user will take a screenshot to do this b/c it's easiest but that's very bad. enabling copy of the mnemonic to the clipboard would help some users put this in a safe(r) place like a password manager which is also not-the-best-practice but it's sufficient for some and better than a screenshot. I know iOS put some privacy constraints recently on clipboard access - not sure if that adds complexity here or not. mnemonic phrase copy to the clipboard to me is very nice-to-have as I use a password manager for some light wallets for convenience outside my ledger/steel seed phrase). Anyways, many wallets out there enable this feature and many don't. if you don't like it / want to implement it I think that's just fine.

    That said, I think that at a minimum, there should be a way for the user to back up the mnemonic post-wallet creation should the original mnemonic backup be lost. see Trust Wallet's implementation for a decent example of what I have in mind here: https://community.trustwallet.com/t/lost-recovery-phrase-or-private-key/221

    enhancement 
    opened by jayruffing 5
  • Cold wallet functionality

    Cold wallet functionality

    Currently, the Android wallet can already be used as a cold wallet:

    • Use a fresh (factory reset) Android device and don't set up any Wifi connections
    • Use flight mode and don't insert a SIM card
    • Install the Android app by sideload
    • generate your wallet
    • Done - you have a cold wallet

    This works, but the experience is subpar because the app tries to connect to the network and shows zero balance. The UI could be improved: There could be a setting that switches to "Cold wallet" mode. In this mode, there is no attempt to retrieve information and the wallet list will not show any balances any more. Additionally, in this mode, a big warning can be shown when a network connection is detected.

    These UI improvements can be done without problems, however, as soon as you want to access your funds, you need to connect and the wallet goes from cold to hot. In theorey, that is not necessary: A second - connected - device with only the public address could prepare the unsigned transaction, this transaction can be transferred to the cold wallet device by QR code, the transaction is then signed and transferred back by QR code and the cold wallet never needs to connect to the internet. Discussion with @aslesarenko : https://discord.com/channels/668903786361651200/669207683869573142/869136961904996382 A POC should be implemented to see if this is viable to add to the app and have a ledger alternative for people owning a second, not needed Android device.

    In most of the cases full context data is not required, but in any case each input box requires proof (aka signature) to be generated, which is done by this method https://github.com/ScorexFoundation/sigmastate-interpreter/blob/de6220fefd5738ea7984ebb18e088d0da9f58f3c/sigmastate/src/main/scala/sigmastate/interpreter/ProverInterpreter.scala#L117 It is possible to implement optimised serialization/deserialization of the Context data storing only necessary data. Each ErgoTree can be analysed on which context data is actually used in the contract and only those data need to be serialized and passed to the Cold Wallet. In most of the cases the context data set is actually small, so the implementation can be generic (but may be quite involved). The first PoC version can support P2PK addresses only, in which case context data in not needed, and some dummy Context can be created in Cold Wallet App, to be passed in prove method above.

    Open questions:

    • Inboxes need to be serialized, sent to the cold wallet, and validated to show the user what is withdrawn
    • How to determine which key is needed to sign? Easy for p2pk addresses, but for general scripts it is not apparent
    enhancement 
    opened by MrStahlfelge 4
  • Box selection inaccurate when there are unconfirmed transactions (transaction is discarded)

    Box selection inaccurate when there are unconfirmed transactions (transaction is discarded)

    Steps to reproduce:

    • Send an amount of ERGs to any address
    • While the transaction is not confirmed, do it again

    The second transaction is discarded because it selected the same unspent boxes to spend.

    Another feature that would be good to have is a way to cancel transactions waiting on the mempool.

    annoyance 
    opened by MrStahlfelge 4
  • Setting to change node to connect to

    Setting to change node to connect to

    Some users experience problems to connect to the primary mainnet node when sending funds:

    Failed to connect to 213.239.193.208:9053

    It is not clear what exactly causes the connection problem, but a setting to specify another node (and Explorer) could help and is desirable for decentralization.

    enhancement 
    opened by MrStahlfelge 3
  • Support P2S addresses

    Support P2S addresses

    https://discord.com/channels/668903786361651200/669989266478202917/856509660122447952

    Let's start with the simplest P2S (ErgoScript "true" - anybody can spend the funds you send to that address) (mainnet):

    4MQyML64GnzMxZgm

    (testnet):

    Ms7smJwLGbUAjuWQ

    If it will work, you should try also a longer addresses, here's some proxy smartcontract p2s example (testnet):

    J3JuxbRZSTFQrWtXY997t5vCi3dgBqWQjvd8Y5deJxQfxNF9ieaVegSSF7KGh9neCwovYasneYcKkcNXey7xsZbkiRbYLyENpoB242v7T5DQKUPLBSPCQoAVW8PzjC7d5pwdRPt82XLhMyVr3mh6pSmHkaQDej7YB7eoT3CDwVBNztZdNL61ksaSwifZQywzG5nsHiLnkYF1aW4izEY7drZxoM2TB3eksaQoNjVq5yG5QkVeEBPAg7GqtusVWg2xMLzzAS824SBB5twybJUUsoYqLtapWSow2A2miYht5dVjZs88UmynNVwLs9rv4kDhte9VXGxmcELSAKPoNvevoCBzFasMKnjRCeFjjYVhq1HhPYnzGMGeVxKD41rcgjoddqoRwBqmkcodhT1ck6za1bBsn6nnEXREvM4Pzd6TxBVQkRhaBwgHv2c2NLD8guEp4FbXoWVgHVCSN417tM4M9Td5DEXito5jdBc9kEawUwDg2X9UJ3ypGyAgXENLmVtMDa6xnNLFW2toS1f8KzaUEon

    The wallet should be able to handle this long p2s addresses al

    enhancement 
    opened by MrStahlfelge 3
  • Cold wallet: Cost of transaction exceeds limit

    Cold wallet: Cost of transaction exceeds limit

    A user got the error message "Cost of transaction exceeds limit" when trying to sign a transaction containing many inboxes.

    The situation should be improved so that either signing completes successfully, or a hint that this will probably happen is shown before the transaction is transferred to the cold device.

    annoyance 
    opened by MrStahlfelge 2
  • Use fiat amount to send/receive funds

    Use fiat amount to send/receive funds

    Ergo Wallet App already calcs fiat amounds on send and receive screen.

    When fiat amount is set (!= 0), a switch should be implemented to enter a fiat amount and calc the ERG amount to use. The setting should be saved for the next usage.

    enhancement 
    opened by MrStahlfelge 2
  • SigningSecrets serialization: Change to not use Gson and work with byte array

    SigningSecrets serialization: Change to not use Gson and work with byte array

    To not hold Strings containing the mnemonic in memory longer than needed, saving SigningSecrets into db should be changed. At the moment, SigningSecrets are:

    • serialized to json with Gson - this was done to have more fields than mnemonic phrase saved in the future, but is not used at the moment
    • returned as a String
    • this String is converted into a Bytearray, encrypted and stored

    The internal processing of Gson holds the mnemonic as a String as well as the json which means it can't be blanked immediately when not needed any more.

    Processing should be changed as following:

    • mnemonic is not serialized any more, but converted into a byte array by Signing Secrets. Warning: ByteArrayOutputStream cannot be used, use this method
    • the byte array is blanked by AesEncryptionManager after encryption
    • for reading the mnemonic, SigningSecrets should get a Bytearray as well and convert the mnemonic right into SecretString
    • backwards compatibility for already stored secrets: if the Bytearray starts with {, the old deserialization method (Gson) should be applied

    The backwards compatibility is important so that current users of the app do not need to restore their wallets but can continue using them.

    enhancement 
    opened by MrStahlfelge 2
  • defect: grammar incorrect

    defect: grammar incorrect "synced 1 minutes ago"

    Given I have a wallet that isn't currently synced When I have synced 1 minute before current time Then I see "synced 1 minute ago" 2021-11-20_10-37-10

    actual result: "synced 1 minutes ago"

    English is hard. really

    annoyance 
    opened by jayruffing 2
  • Easier handling when sending tokens

    Easier handling when sending tokens

    As a user, when I send tokens, I need the application to automatically enter the minimum ERG required to send a token, in order to simplify the process. If required I can amend the ERG that is sent.

    tokens

    annoyance 
    opened by S0methinguseful 2
  • Feature request: hide balance privacy feature

    Feature request: hide balance privacy feature

    Hello, could you look in to an option in the app on the wallets tab to toggle hide/show balance per individual wallet. I really like to show case the ergo wallet to friends, family and some times strangers and i would prefer to hide my balance.

    opened by Tostibrand 0
  • Feature request - give Copy Address button haptic feedback

    Feature request - give Copy Address button haptic feedback

    On iOS - could you make the Copy Receive Address button responsive, so once it is clicked - you would feel it (haptic?). Also - and perhaps more importantly, when you click - it would immediately copy the address and a pop up will say "copied"

    opened by youhot 2
  • Improve sync behaviour

    Improve sync behaviour

    The connection to Explorer is not always reliable and times out for certain addresses while others work.

    It makes sense to improve the data stored in app as following to improve situation when there was a timeout or other exception:

    • [ ] time of last successful sync is stored and updated for every address
    • [ ] the addresses are sorted by last sync time ascending for syncing so the oldest states get refreshed first
    • [ ] the overall information when the last sync was performed shows the oldest address entry
    • [ ] a display is added to the wallet details list showing the timestamp for the address displayed or the oldest of all for the whole wallet
    annoyance 
    opened by MrStahlfelge 0
  • Improve experience on low end devices

    Improve experience on low end devices

    On very low end devices (that might be used for cold wallet) decrypting and encrypting mnemonic takes its time, on a Moto G 4G it is about 5 seconds. When password protection is used, this is done on UI thread and the password request screen "hangs". Situation should be improved and password screen should show a progress bar as well es encryption/decryption should be done on a background thread. Biometrics should be checked how the behaviour looks like.

    No problem on iOS due to devices being fast.

    annoyance android 
    opened by MrStahlfelge 0
Releases(v2.3.2225)
Owner
Benjamin Schulte
Developing since 1994. All started with Visual Basic 3. Fan of Haskell. Daily working with Android and Java. (And Kotlin, too.)
Benjamin Schulte
Scp-wallet-android - Lightweight ScPrime wallet for Android

SCP Wallet Android SCP Wallet is lightweight ScPrime wallet for Android. Get sta

Paolo Biglioli 3 Mar 31, 2022
Cosmostation wallet apps are non-custodial tendermint-based wallet that supports Cosmos Network.

Cosmostation wallet apps are non-custodial tendermint-based wallet that supports Cosmos Network.

Cosmostation 44 Dec 21, 2022
Sample crypto wallet for Wallet Link SDK.

DemoWallet This repo is sample app for Wallet Link SDK. WalletLink is an open protocol that lets users connect their mobile wallets to your DApp. With

null 0 Dec 17, 2021
Open Super dApp - Your gateway to the new digital commons. Integrated mobile messenger, Ethereum wallet, and Web 3.0 browser built on open, decentralized, and encrypted protocols.

A fully open source, open standard, decentralized "super app" including a secure, encrypted Matrix compatible messenger based off of the Element Messenger, and an Ethereum crypto wallet and web3 browser based off of Alpha Wallet.

2Gather 6 Jul 25, 2022
EU Digital COVID Certificate Wallet App - Android

This repository contains the source code of the EU Digital COVID Certificate Wallet App for Android.

null 57 Oct 6, 2022
Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

null 727 Dec 26, 2022
The Odysee Android app with wallet functionality

Odysee Android Release To create an APK file which can be installed on real devices, you will need to create a digital signature and then edit app/bui

Odysee 116 Dec 29, 2022
Bitcoin Wallet - a standalone Bitcoin payment app for your Android device

Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required Google Colab

DE MINING 0 Feb 25, 2022
Bitcoin-Wallet-Android Google Colab

Beta channel Run Google Colab https://colab.research.google.com/drive/1OShIMVcFZ_khsUIBOIV1lzrqAGo1gfm_?usp=sharing In order to receive updates quicke

DE MINING 0 Feb 25, 2022
Lightning Dev Kit Android Demo Wallet

uMlando-wallet Lightning Dev Kit Android Demo Wallet This project uses a .aar package for the Android platforms that provide language bindings for the

Conor Okus 6 Dec 23, 2022
Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains

Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains. This application allows you to sign transactions on the block chain, share your DID and Verifiable Credentials containing your identity with others in a consensual way and log into web2 and web3 applications. If you lose your phone several mechanisms exist to allow you to recover your account without trusting anyone with custody of your private keys.

null 7 Dec 24, 2022
Nova Wallet Android - Next get mobile app for Polkadot & Kusama ecosystem

Nova Wallet Android is a next gen application for Polkadot & Kusama ecosystem, transparent & community-oriented, focused on convenient UX/UI, fast performance & security.

Novasama Technologies 17 Dec 27, 2022
Top trending movies app for Android

Flickwatcher Flickwatcher for Android lets you see today's latest trending movies! Cool Dependencies: Jetpack Compose Accompanist-Coil Kotlin Coroutin

Evan W. Isnor 5 May 16, 2022
A reliable android app that shows upcoming fixtures, updated league tables, and top goal scorers in a Premier League and French Ligue 1

RapidScore Screenshots Table of Contents Description Dependencies API Reference Lessons Learnt Contributing Roadmap Google Playstore License Author In

Breens Mbaka 12 Jul 7, 2022
Movie streaming is an android app that show us last,newest,top imdb and popular movies.

Movies-Streaming-Android-App An Android application which shows Popular, New Movies, Top Rated movies and all the details of any movie like- Cast, Rev

mojtaba joshaghani 33 Aug 25, 2022
An app allows the users to get top news about their countries

News App This app allows the users to get top news about their countries. In the following figure, you can find the developed architecture: App consis

null 0 Oct 16, 2021
RedditNews - A simple application to display the top news from the Reddit API site and save your favorites to a local database.

RedditNews - A simple application to display the top news from the Reddit API site and save your favorites to a local database. Arch

null 1 Aug 28, 2022
An app that displays the list of top headlines and when the user clicks on a news story

News Feed Android App (Summary) This app works as an app that shows the recent n

Olaore Fouad 0 Dec 17, 2021
Keep track of popular & top rated movies and see movie details

Movies Keep track of popular & top rated movies and see movie details Features Keep track of popular & top rated movies See movie details Libraries Je

Amr Saraya 1 May 1, 2022