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

Stealth Transfers in Web Interface ($45,000) #452

Closed
bytemaster opened this issue Nov 18, 2015 · 8 comments
Closed

Stealth Transfers in Web Interface ($45,000) #452

bytemaster opened this issue Nov 18, 2015 · 8 comments

Comments

@bytemaster
Copy link
Contributor

Stealth Transfers (aka Blinded Transfers) are used to maintain user privacy. This feature helps set BitShares apart from most other crypto currencies and offers tremendous value to the users who are most interested in privacy, liberty, and freedom.

This proposal involves creating a new tab on the account page for "stealth" mode. Under this tab users will be able to create "stealth accounts" which are nothing but labeled private keys. They will also be able to manage "stealth contacts" which are nothing more than labeled public keys. Neither stealth accounts nor stealth contacts are tracked on the blockchain.

Users will be able to monitor their stealth balances and take the following actions:

  1. Transfer from public account to their own stealth balance
  2. Transfer from one of their stealth accounts to one of their stealth contacts
  3. Transfer from one of their stealth accounts to any public account
  4. Register a new account using a stealth balance.
  5. Receive a stealth transfer from a 3rd party given a transfer receipt.

Because stealth transfers are not recoverable from blockchain data alone, backups of your wallet after receiving a new stealth transfer are required. For the best user experience this proposal is best combined with proposal XYZ for hosted wallet.

This proposal will require the use of this library to perform the necessary crypto operations in javascript:

https://github.com/arhag/crypto-experiments/tree/emscripten/emscripten/libsecp256k1-demo

Contractor: Cryptonomex
Cost: $45,000

Pledges:
Onceuponatime: $1500

@bytemaster bytemaster changed the title Stealth Transfers in Web Interface Stealth Transfers in Web Interface ($45,000) Nov 19, 2015
@kenCode-de
Copy link

I don't think it needs to be a whole new Tab at the top. Use the Settings screen. Make a button or menu item on that screen that allows you to create a new account (remove the old plus sign in the circle (+)) and if they want it to just be a labeled stealth account, then have a checkbox there next to the account name field that allows them to create it as Stealth, instead of a registered account name on the blockchain.

[Enter desired Account name here ]
[x] Make it Stealth
Note: Stealth Account names aren't registered on the blockchain, it's just your label on a private key

.....or something like that.
In your accounts list on the Dashboard, just put a simple blind man's glasses clipart icon next to the account name, ie:
https://pixabay.com/photo-312051/

If the library(ies) is(are) already available to CRUD stealth accounts, then this sounds like just a graphene-ui enhancement, but please detail why this would cost more than $10K.

"Proposal XYZ" could handle the backup stuff.

@ThomasFreedman
Copy link

The proposal didn't say where the tab was, side or top, however I don't think it should be under settings. It is more logical to access this from the dashboard, but the functionality of the dashboard seems to be limited, not a place to visualize a broad overview of everything within the scope of the wallet (as in how a dashboard represents everything going on in a car). Although it may be easier to implement all of the proposed stealth functionality and encapsulate it under a new tab along with "Dashboard Explore Trade Transfer", that should not be the ONLY place stealth functionality should be available.

For example, creating a new account is not terribly obvious. It is the circled + element under the identicon on the left at the very bottom of the account page (after selecting an account from the dashboard). The page that appears when that + is clicked should ALSO provide the ability to create a stealth account. It's surprising there is no "add account" button on the dashboard, who's functionality appears to be limited to displaying a list of account "cards" that summarize the assets held in each account.

I'm surprised there is no "favorites" or "contacts" or list of commonly used addresses in the wallet. As I recall such functionality existed in the 0.9x wallet, so I am surprised it was removed rather than improved. I mention this b/c it is an important aspect of managing stealth accounts, so it would make sense to create a generic contact list of addresses for all accounts, stealth or not.

QUESTION: If stealth accounts exist in the current wallet will they be listed on the dashboard along with all of the other accounts? I believe they should be, and that they should be clearly identified as stealth accounts. I can see no reason why the stealth account labels couldn't also have their own identicon, tho that does raise the issue of uniqueness with public account identicons. Perhaps a unique string prefix of some other type of randomization or association with a specific wallet instance could be employed to make stealth account identicons unique to each wallet instance.

3 of the 5 bullet items are Transfers, so it is logical that functionality should go under that heading. It will be much more consistent if all accounts, including stealth accounts are listed on the dashboard. Registering a new account with a stealth balance could be accomplished by selecting the stealth account from the dashboard and clicking the + on the bottom left. That would be consistent with how public accounts are created, and establishes the association between the new account and the stealth balance that creates it.

That leaves only the last bullet item, receiving a stealth balance given the transfer receipt. I can see a case to be made for putting this under settings / Wallet Management Console, as it resembles the manor in which funds are transferred (i.e. imported) into the wallet from BitShares 0.9.x. Perhaps that's best place for it given the current wallet design. It seems a bit far removed IMO, and would be nice to have it available from the dashboard. I don't have a strong preference for where stealth imports should appear in the UI.

I do however feel rather strongly that the best UX for all other stealth functionality besides importing balances in the current wallet design be integrated as I've described here. I'm sure it could ALL be implemented under a new tab and that would be easier and faster to accomplish but IMO would not be putting the user's needs first. I have not looked at any of the code, so I have no idea how it is structured, but I would hope it is modular enough to integrate stealth functionality as I have described here. Having a generic contact list of accounts where labels and public keys are saved also makes a lot of sense, if not overtly visible somewhere in the UI at least internally so that anytime an address is requested it could be pulled from that list.

@luckybit2014
Copy link

It might be a better idea from a marketing perspective to rename it to "invisible transactions" and call it "invisible mode" or "incognito" mode. Stealth transfers is something which some people might think is quirky. It also has a more militant sound to it.

@bytemaster
Copy link
Contributor Author

I have put together a draft set of changes to the user interface to enable this feature.

Stealth User Interface .pdf
Uploaded using ZenHub.io

@ThomasFreedman
Copy link

Do what you see fit BM. Apparently my comments here weren't worth your time to even address. I did look at your GUI proposal, but didn't care much for your approach TBH. Perhaps the wireframe prototypes will sway me. We'll just have to see.

@bytemaster
Copy link
Contributor Author

Thomas, I thought I addressed your comments in my PDF describing the interface. Most of what you mentioned was incorporated into the Stealth UI.

@ThomasFreedman
Copy link

Actually Daniel I'm just not sure. It's difficult to see the flow from the static screen shots. I raised specific concerns and suggestions for integrating stealth into the existing design. From previous comments you made and certain elements on your screen shots your approach appears to me to be "bolted on" rather than "integrated into" the current wallet design.

UI design is as much subjective art as engineering, so there is more than one way to get things done, and time is always a factor. I'm merely trying to point out aspects that IMO would improve the UX and be more consistent with the existing flow of dealing with accounts.

For example, you added a "New" button, rather than utilize the existing "circled +" button. Now the user has one more thing to figure out and remember. IMO the plus button is too small and obscure, and your "New" button more obvious and better, however there shouldn't be 2 different ways to add an account. If you tied the "circled +" button to your big blue "New" button so they both did exactly the same thing in all cases that would be a comprehensive improvement.

I am very detail focused. When it comes to backend discussions you seem to be much more detail oriented than with UI discussions.

However, given that there isn't much interest in general of discussing the merits and tradeoffs of how stealth will be implemented in the UI OnceUp, Jakub, Bill Butler and the rest of the community will either get what you or whoever implements the GUI decide or work through an iterative cycle of implementation, refinement, test, rince & repeat until the outcome is acceptable. That takes more time than thinking through the design in detail up front, and usually results in a compromised UX.

@vikramrajkumar
Copy link
Contributor

This issue was moved to bitshares/bitshares-core#130

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

No branches or pull requests

5 participants