electrum-personal-server
electrum-personal-server copied to clipboard
What should a GUI do and how should it work
Since the beginning of this project there have been vague thoughts about it having a GUI, to help people who don't use CLI.
It's worth thinking exactly how a GUI should work and what it should do. This issue is for discussing that, any vague thoughts are welcome. I'm probably the least qualified person to understand since I'm personally very comfortable with CLIs, so I'd welcome thoughts from anybody.
Servers don't have GUIs. Once a server is installed and configured then there is no user interface.
Maybe Electrum Personal Server doesn't need a GUI but a setup wizard which provides a graphical interface for configuring the server and rescanning the Core wallet. It would ask the user to paste in xpub keys and other things (like the creation date of the earliest wallet, with a checkbox that says "this wallet has no transactions on it")
It might be good to have a feature where the setup wizard tries to automatically find the bitcoin data directory, and read the rpc username/password from it or figure out the .cookie
file location.
The setup wizard could have tests like trying to connect to localhost:50002
to make sure everything is working.
One slight limitation is that Bitcoin Core itself lacks some GUI interfaces, for example users can't enable pruning or configure the data directory location.
I am mostly a Windows user and i usually prefer GUI over CLI. However, in this case, i also fail to see the utility of GUI for EPS. Even the setup wizard is only replacement for text editor. If the example config file is complete with detailed descriptions, usefulness of the GUI is somewhat doubtful.
Much more useful now would be to create executable files for Windows users, to remove the need to install python at all. If you add dependencies to GUI libraries, you will make the EPS installation a bit harder and this might discourge some people from using EPS and full nodes. So this is what i would consider a priority.
I'm currently working on a batch file for this, to set up the server. I've tested the electrum personal server on windows, and it works. I have a GUI for linux, with only python tk gui for now. No weird extra libraries that aren't already needed for running electrum from source. I'm running electrum from source to have a GUI button in electrum for adding the addresses or MPKs to the electrum personal server config file.
Also, i modified the electrum server itself to broadcast with another instance of electrum over tor, and that system could use improvement. Probably a good idea to use random servers, and to delete recent server list each time it broadcasts.
usefulness of the GUI is somewhat doubtful.
The most useful feature of my GUI is adding a button to electrum which adds the addresses or MPKs to the config file. That's probably the hardest part for noobs, and i'm making this for noobs.
probably the whole thing could be added to a fork of electrum, or a batch file which downloads, verifies, sets up, and modifies tagged versions of electrum to work with the electrum personal server.
by the way, my GUI also downloads and verifies a full node, and displays its IBD progress and rescan progress.
What about incorporating "personal server" mode into Electrum wallet itself? When launching Electrum, user could select "P2P" or "Standalone" (private server) mode.
That would mean that every time you start up an Electrum wallet then EPS needs to start up. That would add a lot of seconds to startup and wouldn't provide a nice UX.
Having to setup yet another server (together with bitcoind) is not the best UX too.
This could be seen as cost of increased privacy, with it's own disadvantages, and that mode would not be mandatory, as "good old" p2p mode would still be there to choose.
When I launch Bisq DEX application, it also has to sync for some time, connect to P2P nodes via Tor, until it's becomes usable. These new "Neutrino"-enabled wallets also has to sync upon startup, AFAIK (haven't tried myself). Slower startup is not something unheard of here.. And again, if users does not like that, it could switch back to P2P mode.
OK I see. Yes it would have value.
I dislike having my config file with my pubkeys at rest in cleartext. I would like it if there was option to encrypt config file and need password to view/edit.
Also, ability to 'preload' different wallets and a drop down menu or something like that on startup to choose by name which wallet you want to use if you have several, instead of going into config and commenting one and uncommenting another.
I'll think about ways to not have pubkeys in cleartext. I know Electrum itself can encrypt wallet files and pubkeys. Until then, would it be appropriate to use full disk encryption?
Can you help me understand in which situation it is useful to uncomment one pubkey and comment another? What's wrong with having EPS just load all your pubkeys at once? My own EPS currently monitors 7 different wallets/pubkeys at the same time.
yes, I use veracrypt to protect separate config files of larger wallets. I just leave small wallets in cleartext for convenience.
I apologize, I wasn't aware I could have EPS monitor several wallets at once. hah and here I was using different config files and/or uncommenting and recommenting different wallet pubkeys this whole time. Just have several lines of 'wallet_name = mpk' in the config and EPS will import them all? Or is it 'wallet name = mpk1 mpk2 mp3...' ? Thanks
It's several lines of wallet_name = stuff
.
No need to apologize, it's probably my fault for not documenting it well enough.
Adding this twitter guy's opinion: https://twitter.com/RobertSpigler/status/1095788693699346432
I love EPS, but for most people, editing config files and entering master public keys are just too overwhelming
A guy here made a mistake when configuring a multisig wallet https://github.com/spesmilo/electrum/issues/5115#issuecomment-463236107
This is evidence that editing config files may not be user friendly enough.
Maybe a good solution is for EPS itself to be a command line app that reads a config file, but there also be a GUI wizard that can generate and edit config files. And also people can always edit the config files themselves.
If you run Windows, please try out the pyinstaller executable for Electrum Personal Server on issue #106.
With the windows explorer dragging trick, the user doesn't even need to use the CLI.
Big step forward for user friendliness on Windows. I'm thinking that a GUI could look like Pierre Rochard's Node Launcher, https://github.com/lightning-power-users/node-launcher. That it's simply an icon in the "tray" and no real GUI. Maybe that you could have a GUI that lets you select a few configurations the first time you start. Similar to the process of selecting data directory with Bitcoin Core.
Possibly a good way to add a GUI interface could be to have the server open a HTTP port which the user can connect to with their web browser.
What about a TUI?
No need for external applications, no need for X tunneling (or VNC) if you're running EPS remotely. The only problem is that it could scare off people that are not used to TUIs.
Could also include a setup wizard.