nanocurrency / nano-node

Nano is digital currency. Its ticker is: XNO and its currency symbol is: Ӿ
https://nano.org
BSD 3-Clause "New" or "Revised" License
3.48k stars 787 forks source link

Make UI somehow indicate that addresses are checked and invalid addresses fail gracefully #274

Open fallerOfFalls opened 6 years ago

fallerOfFalls commented 6 years ago

Edit: I was wrong: there are already checks. Dunno why I just assumed there weren't. This safety isn't apparent to many users though. Is there someway the UI could indicate it?

Original issue:

Every cryptocurrency I know of has this problem. If you somehow input the address incorrectly, it doesn't warn you, it just sends it to an address nobody owns. This means every send is stressful, and this stress makes it unappealing to use.

In other respects (feeless, instant) RaiBlocks is like cash. But when giving someone cash you can't accidentally miss the person's hand causing the cash to disappear. At worst it falls on the floor and you pick it up.

Being technically able to send funds to an account that doesn't exist yet is necessary for offline wallets, but that is not the most common usage.

A few possibilities:

When you paste an address into the wallet, it immediately runs a check to see if the account exists. If the account doesn't exist then it says "account does not exist" and requires you to select one of:

If you select activating a new account, it sends a tiny amount of XRB and then checks again to see if a corresponding "open" transaction is created. Ideally it should be possible to open an account without sending anything (this would be neater, easier on the eyes). Once it sees the first block, it sends the rest.

Better still might be, if you put in an address that isn't known by the network, it removes the amount field and gives you two buttons "open account" and "send to offline address". If you select "send to offline address" it gives you an amount field again. If you select "open account" it will say its waiting for the owner to generate the first block, until the first block exists, and then it'll show the normal interface for sending to an address.

ragardner commented 6 years ago

I agree this sort of functionality would be a bonus to both noobs and seasoned crypto users

androm3da commented 6 years ago

IIUC, Raiblocks might be uniquely positioned to make this distinction. "I'm creating the first transaction for the destination" might be feasible to determine for the sender.

Also note that something like bitcoins payment protocol (BIP70) might help here too.

MrGus99 commented 6 years ago

you're trying to create a solution for a nonexistent problem

androm3da commented 6 years ago

@straightwhiteproud I think you're mistaken if you think that has never happened before. I don't think this needs to be the top-ranked issue but it seems like it could yield a good benefit for modest effort.

fallerOfFalls commented 6 years ago

Here's a reddit thread about it, for all the users who don't use GitHub (who are likely to be less technical).

/u/Zarxrax has expressed the anxiety pretty well:

Sending to the wrong address is a fear that I have every time. Even through its as simple as copy and paste, you always have to double check this long series of characters that is difficult to read. You think things like "what if I didn't get one of the characters in my selection", " what if it put an extra space at the end of my paste" (would that even cause an issue? I dont know) "what if I got a virus that will change the addresses that I paste". Sending transactions on every crypto are more stress inducing than they need to be.

clemahieu commented 6 years ago

I think there’s some merit to warning about sending to an address that has no activity and asking if someone is sure.

The xrb_... address format has some pretty strong checks in place already to make sure you can’t mess it up as much as feasible. It’s prefixed with xrb so you know the currency it’s for. It doesnt allow extra or missing characters in case of a copy and paste issue, and it has a 40bit checksum to verify no letters were typed incorrectly.

fallerOfFalls commented 6 years ago

That's really interesting! However, users don't know that.

fallerOfFalls commented 6 years ago

@clemahieu I've done some tests now to confirm what you said. I had this idea that any combination of characters would be a valid address, but this is not the case.

So, it seems that wrong address already fails gracefully. But less technical users don't know this, and this will put them off. Is there a way that this can be made clear?

clemahieu commented 6 years ago

Sure, maybe we can add a tooltip giving an explanation.

fallerOfFalls commented 6 years ago

That would be totally amazing! How about something like this?

rkeene commented 6 years ago

This appears to be a request for an option in the desktop wallet to warn the user if the destination account has no activity, which seems reasonable

fallerOfFalls commented 6 years ago

That summary seems almost entirely wrong. It's so wrong that I'm not sure where to start in correcting it. I mean, yes, that's a good idea, but not really the main issue.