Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature requests to improve UX #1677

Closed
drcpu-github opened this issue May 3, 2021 · 3 comments
Closed

Feature requests to improve UX #1677

drcpu-github opened this issue May 3, 2021 · 3 comments

Comments

@drcpu-github
Copy link

This has been long overdue, but below you can find a collection of some (minor) improvements I would like to see in Sheikah.

  1. Allow setting an absolute fee

    Currently the wallet only allows setting a weighted fee (while the wallet server has options for both an absolute and weighted fee). From a user perspective, defaulting to weighted fees make sense because that's how miners will prioritize transactions and usually you want to give a certain priority to your transaction rather than having to reason about what fee will give you a certain transaction processing speed.
    However, sometimes you want the option to select an absolute fee. One use case would be to empty a wallet completly without leaving dust. I did this last week and currently pretty much the only thing you can do (I think) is try to send your complete balance and step-wise go down until the value sent + weighted fee matches your balance. This also requires using a weighted fee of 1 nanowit, otherwise it's possible you'll never find the best value.
    I'd like the option to select the fee type, potentially by adding a simple checkbox before sending that toggles from a weighted to an absolute fee.

  2. Allow changing the default timeout

    When synchronizing with the blockchain from the start (e.g., after creating a new wallet), Sheikah logs off periodically. This makes sense to have when you are not synchronizing as a feature to protect user funds. However, it's quite annoying when Sheikah logs out mid-synchronization. I recently synchronized a new wallet from 0 and I had to re-login a couple of times before it was finally synced. Unless you constantly keep an eye out for the wallet logging out, you're losing a lot of time because the wallet does not keep synchronizing while logged out (as far as I know) which means you cannot synchronize overnight. I would like to see a user option in the settings menu where one can set a default timeout (e.g., 5 minutes, 30 minutes, 1 hour, never).

  3. Allow deleting a wallet

    I often create test wallets to try something without polluting my main Sheikah wallet. Currently there is not way of deleting a wallet without removing Sheikah completely and (on Windows) go into the AppData folder to remove the witnet folder containing the database with instantiated wallets. This is obviously less than ideal because that also means you have to resynchronize your main wallet. It would be an improvement if one could delete a wallet from the Sheikah app.

  4. Allow renaming a wallet

    Importing a wallet from a seed phrase does not allow the user to set a name. Instead it will just name the wallet My personal Witnet Wallet #x where x depends on the number of wallets you already have. I would like to see an option to name a wallet after importing it or, more generally, allow renaming any wallet (e.g. in the settings panel).

  5. Allow more flexibility in selecting accounts / UTXO's to use in a VTT

    Sheikah aims to offer as much privacy as possible in the sense that it advises you to create new addresses for each transaction, send change to a newly generate change account, etc. However, when sending a transaction, it just randomly selects UTXO's and as soon as the transaction is somewhat sizeable it will select UTXO's from multiple accounts as it employs a random selection strategy. This obviously renders any privacy supporting features null and void. I would suggest to add more flexibility here. I can think of a two options to improve this:

    1. Allow the user to select from which account(s) he / she wants to send the WIT.
    2. Add a UTXO-selecting strategy to the wallet server that prioritizes UTXO's from a single address and allow the user to select this strategy in the Sheikah app.

This list is more or less sorted from easiest to the most difficult to implement (at least I think so). I wish I could look at this myself, but I don't really have the time to do so. I believe most of these features are also easy enough to add so they could also be added as bounties in a new incentive program.

@Tommytrg
Copy link
Member

Tommytrg commented May 6, 2021

Nice feedback @drcpu. I don't see significant impediments to implement these features soon except point 5. However, all of these features require changes in the wallet, and I'd like to know mario's and tomasz's opinions.

On the other hand, I've written some comments below.

  1. Allow setting an absolute fee
    I think we can make two improvements regarding this. First, implement the same absolute fee method as the node. Sheikah can't call the node directly, so the wallet has to wrap it and expose a method to be consumed by Sheikah.

  2. Allow changing the default timeout
    Currently, wallet synchronization continues despite Sheikah logs off. Unfortunately, this feature isn't documented, and therefore some users may have a bad user experience synchronizing their wallets.
    I wouldn't allow modifying the session expiration time to avoid fall into the temptation of letting the session open during long periods. However, we could implement an alert asking if they want to continue with the session open before it closes.

  3. Allow deleting a wallet
    Definitely, we need this.

  4. Allow renaming a wallet
    We have to allow updating the wallet name and description and decide the best place to show the wallet description.

  5. Allow more flexibility in selecting accounts / UTXO's to use in a VTT
    I agree with this point, but I think it's the most difficult one. It would require updating the Sheikah interface, which is not a significant impediment, and probably make a big refactor in the wallet backend to support this feature.

@drcpu-github
Copy link
Author

On the other hand, I've written some comments below.

  1. Allow setting an absolute fee
    I think we can make two improvements regarding this. First, implement the same absolute fee method as the node. Sheikah can't call the node directly, so the wallet has to wrap it and expose a method to be consumed by Sheikah.

I thought this was already available, just not exposed:
witnet-rust/wallet/src/actors/app/handlers/create_vtt.rs:

impl Handler<CreateVttRequest> for app::App {
        ...
        let fee_type = msg.fee_type.unwrap_or(FeeType::Weighted);
        ...
  1. Allow changing the default timeout
    Currently, wallet synchronization continues despite Sheikah logs off. Unfortunately, this feature isn't documented, and therefore some users may have a bad user experience synchronizing their wallets.
    I wouldn't allow modifying the session expiration time to avoid fall into the temptation of letting the session open during long periods. However, we could implement an alert asking if they want to continue with the session open before it closes.

I would honestly have sworn it stops synchronizing, but it's kind of hard to confirm that for sure of course. 😉

  1. Allow more flexibility in selecting accounts / UTXO's to use in a VTT
    I agree with this point, but I think it's the most difficult one. It would require updating the Sheikah interface, which is not a significant impediment, and probably make a big refactor in the wallet backend to support this feature.

I agree that it is probably the most difficult feature, hence why I put it at the bottom.

@gabaldon
Copy link
Contributor

This was partially implemented in the following commits:

  1. Allow setting an absolute fee 4f249c486301846e2c5c8bd393e2a8945ed95a00
  2. Allow deleting wallet 41e999b7e60821ebfc84981cd8373581f5337c0d
  3. Allow renaming the wallet 72f19d77f1ac86dc90d9ce3dc5f1116924b586ff

Remaining suggestions:

  1. New issue opened base on this suggestion #1795
  2. There is a draft (#1717) on this issue. The UX still needs to be discussed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants