Author

Topic: Proposal: UI for "create wallet" and "open wallet" (and also crossed cheques) (Read 1348 times)

hero member
Activity: 938
Merit: 500
https://youengine.io/
Maybe one more idea: As I have implemented it in TorChat (some of you might know already) where I basically have to fight with a similar problem, and I am even guilty of not having implemented myself all the same things that I am demanding here but I will eventually.

There are two ways to "install" it:

if the application on startup finds the file "portable.txt" lying in the same folder next to the .exe then it will switch its data directory including all config, the key file and all cache files to the curent directory, making it possible to have all in one folder on an usb drive, this is the standard configuration when you download and unzip.

if the file "portable.txt" is removed (not found on startup) then it will switch to ~/.torchat/ or %appdata%\torchat\ and this is the default for the .deb package installation.

Then there is also the ability to start with a different "profile name" on the command line, this will simply change the name of the config directory in appdata (same user, just different config name)

since in BitCoin the only files that are important per user are the settings and wallet.dat while the block chain and caches can remain in the profile folder I think a similar approach could be used to easily make it "portable" for usage in separate folders without messing around with batch files and command line options.

The trick with the presence or absence of portable.txt is essentially just a different way to specify a command line option at startup for users who only can double-click.

I have found in endless sessions of support for users that many users are already challenged with such seemingly easy things as opening a folder and copying the key file from the old to the new installation when there is no "save as" or "open" dialog, many users really seem to know only these three things: double-click, file-open, file-save.

hero member
Activity: 938
Merit: 500
https://youengine.io/
You can do multiple wallets by just creating multiple accounts and tuning bitcoin client on each one separately either by runas on windows or su on linux.

This is true but it has a few problems: It is a relatively complicated process, two clients running at the same time needs additional adjustment of port numbers, the new client will start downloading all blocks starting from zero which will take ~12 hours until completed, the newly created wallet file must be found in the nhew profile's %appdata% folder unless maybe even some more command line switches are applied (and also the running client won't show any hint about *which* wallet file it is currently operating on), then after moving the newly created wallet to its intended destination (encrypted backup or usb drive) the profile folder has to be securely wiped and the user deleted again. All this for just "exporting" some money into a new wallet.

I think some clear and easy UI for easily handling (moving, creating, splitting, merging, switching, key-changing) of the only and most important data file of the application, the wallet file, would be very helpful. The user should at any time have full control (including full path in the title bar) about which wallet is currently opened and standard actions known from other applications like open, close, new, import, export, etc. should be provided.

Combine this with mandatory encryption of private keys in the wallet (ask for passphrase before transaction) and a lot of problems and a lot of questions of confused users will go away.
hero member
Activity: 812
Merit: 1022
No Maps for These Territories
Good idea.

The biggest problem would be making it fool-proof. I'd loathe to hear if someone exported their coins to an external wallet and accidentally lost the file or something.

sr. member
Activity: 294
Merit: 250
You can do multiple wallets by just creating multiple accounts and tuning bitcoin client on each one separately either by runas on windows or su on linux. On vista and windows 7 you can shift right click and run as another user.

The second idea opens up risks of the money that you have guaranteed being spent when the transaction goes through. The best way of achieving the same thing would be to create a new keypair then send the money to that keypair then export and delete the private key and print it out and give it to your friend. Services already exist to do this e.g. bitbills.

You cannot really equate bitcoin to checks. It's a lot more like cash.

Will
I believe his suggestion was for creating an intuitive UI for this that does all the work for you. It's great that you can use multiple wallets using commandline switches, but that is far outside the scope of knowledge/willingness to tinker about, of the average user.
hero member
Activity: 700
Merit: 500
bummp && request to move into appropriate forum && request to unlock me (I'm not a n00b and not a spammer)

Done, and requested.
hero member
Activity: 767
Merit: 500
You can do multiple wallets by just creating multiple accounts and tuning bitcoin client on each one separately either by runas on windows or su on linux. On vista and windows 7 you can shift right click and run as another user.

The second idea opens up risks of the money that you have guaranteed being spent when the transaction goes through. The best way of achieving the same thing would be to create a new keypair then send the money to that keypair then export and delete the private key and print it out and give it to your friend. Services already exist to do this e.g. bitbills.

You cannot really equate bitcoin to checks. It's a lot more like cash.

Will
hero member
Activity: 938
Merit: 500
https://youengine.io/
bummp && request to move into appropriate forum && request to unlock me (I'm not a n00b and not a spammer)
sr. member
Activity: 294
Merit: 250
This actually sounds like a really good idea.
I am not sure however if it's possible to just "read out the balance" from all wallet.dats in a folder, and an additional issue would be that if the computer of said other person was somehow infected, it could just steal all your wallet.dat files. It would probably be a good idea to have these external wallets be encrypted by default so that even if someone steals all the wallets, they can't do anything with it.

Another good addition would be to automatically make a local (encrypted) copy of every external wallet you create on an external device (such as a USB drive) so that even if you lose your USB drive, or said other person wipes the files from it, you don't lose the bitcoins.

As for the second idea, I am not sure how feasible it is.
hero member
Activity: 938
Merit: 500
https://youengine.io/
Hi,

I couldn't find anything like this already but it seems logical to me and very useful to provide the following two functions in the client, easily accessible with a few mouse clicks:


1) "create wallet"

A very simple (intuitive to use) dialog pops up asking for a file name and an amount of bitcoins. If the user clicks OK then a new empty wallet is created and saved to the specified location. Then after successful creation of the wallet (file close and flush to disk) a transaction is initiated to transfer this amount of bitcoins to this new wallet.


2) "mount wallet" (or "open external wallet" or whatever is more intuitive)

A file selection dialog pops up, the user selects a wallet file, (or drag&drop a wallet file onto the running client or simply double-click a wallet file) the file is opened and a simple separate window opens (representing this wallet) displaying the following (and not much more to avoid confusion):

_________________________
External Wallet file
_________________________
Balance: xxx.xx BTC
Import this amount of BitCoins from this wallet: [__xxx.xx__] [Import]
[close wallet]
_________________________

And maybe a third button to easily send the remaining funds back home to where they initially originated when this wallet was created (or optionally to any other address).

The use case I have in mind is the following: I am a private person and want to sell an item, for example my old bicycle. Normally (in the old days before eBay) I would have put a small advertisement into one of these newspapers and announce that I have a used bike for sale along with a phone number (or email) where they can call me and I would tell them to come over to my house to inspect the bike and bring xx€ cash with them and if they like it and we arrive at a price then they can immediately take it with them.

With BitCoin how would I currently tell them to bring xx BTC with them? The buyer would have to trust one of these online services to create a temporary wallet, fill it with just enough to buy the item and after the transaction he would have to delete the account again and create another one for the next such occasion (because I am evil and would have a keylogger running on my PC where I allowed him to access his online wallet).

I think such functionality should be built into the standrd BTC client and not rely on untrusted online sevices.

With such functionality of throw-away wallets the buyer would simply create a new wallet on his USB thumb drive filled with just enough for how much he is willing to spend today, can easily mount it on any BTC client to make a simple transaction and optionally with one click of a button instantly send the remaining money back home to where this portable wallet came from and then simply delete and/or forget about that file because he will never use it again, he can easily create a new on with a simple mouse click.

Additionally there could be a modification to the file open dialog so that when browsing through a folder it would automatically scan though all wallet files in that folder, displaying their balance in a separate column in the folder view.

The temporary wallet file would be the equivalent of paying with paper money: you give a complete 50€ bill to the seller and he will immediately return the change to you and you trust him to not simply knock you down at this point and run away with the entire 50€ bill.

Is this a good idea?


PS:
another Idea (which I also could not find implemented, and I'm not yet sure if it is even technically possible) would be to prepare a transaction, signed and ready for submission to the network but instead saved into a file that I can physically take with me and give it to somebody offline. Like a crossed cheque (payee only). And every BTC client would then also have the ability to read such cheques, submit them to the network and display the results (confirmations or errors). This would be an alternative aproach to solve the above problem. I think (if possible) this method should be implemented also.

If this has been proposed before then please link to the discussion, I have looked around a bit but only found mentions of solutions povided by external online services and I think such functionality should be core functionality of every Bitcoin client.
Jump to: