Electrum personal server 0.2.2 released

Started by jackielove4u, June 22, 2021, 08:21:08 PM

Previous topic - Next topic


Groestlcoin Electrum Personal Server: Maximally lightweight electrum-grs server for a single user

Groestlcoin Electrum Personal Server aims to make using Electrum groestlcoin wallet more secure and more private. It makes it easy to connect your Electrum-GRS wallet to your own full node.
It is an implementation of the Electrum-grs server protocol which fulfills the specific need of using the Electrum-grs wallet backed by a full node, but without the heavyweight server backend, for a single user. It allows the user to benefit from all of Groestlcoin Core's resource-saving features like pruning, blocksonly and disabled txindex. All of Electrum-GRS's feature-richness like hardware wallet integration, multisignature wallets, offline signing, seed recovery phrases, coin control and so on can still be used, but connected only to the user's own full node.
Full node wallets are important in groestlcoin because they are an big part of what makes the system be trustless. No longer do people have to trust a financial institution like a bank or paypal, they can run software on their own computers. If groestlcoin is digital gold, then a full node wallet is your own personal goldsmith who checks for you that received payments are genuine.
Full node wallets are also important for privacy. Using Electrum-GRS under default configuration requires it to send (hashes of) all your groestlcoin addresses to some server. That server can then easily spy on your transactions. Full node wallets like Groestlcoin Electrum Personal Server would download the entire blockchain and scan it for the user's own addresses, and therefore don't reveal to anyone else which groestlcoin addresses they are interested in. Groestlcoin Electrum Personal Server can also broadcast transactions through Tor which improves privacy by resisting traffic analysis for broadcasted transactions which can link the IP address of the user to the transaction. If enabled this would happen transparently whenever the user simply clicks "Send" on a transaction in Electrum-grs wallet.

Changelog 0.2.2
• Massive speedup to startup time and initial import of addresses. This is done using the descriptor wallets feature of Groestlcoin Core 2.20.1 The speedup is very helpful when running Groestlcoin Electrum Personal Server on low powered devices such as the raspberry pi
• Close the connection to client if it requests an unknown address or if the connection to the Groestlcoin node is lost. The user will see a red dot in Electrum-GRS indicating that something is wrong which should prompt them to fix.
• Increase default polling interval to make the server more responsive to new transactions and confirmations
• Reduce spam in the debug log and info log
• Various other tweaks and bug fixes
• Rewrite mempool handling to always be responsive. Previously the server would massively lag if the mempool was large, so most users just disabled the mempool histogram. With this update that is no longer an issue.
• If Groestlcoin Electrum Personal Server fails at startup it will now return a non-zero error code, making it more usable with automated scripts like systemd.
• Client will now warn user if tor broadcasting fails because tor is not accessible.
• Various optimizations and bug fixes.

• Use your own node
• Tor support
• Uses less CPU and RAM than electrumx
• Used intermittently rather than needing to be always-on
• Doesn't require an index of every groestlcoin address ever used like on electrumx

How To
• If you dont already have them, download and install Groestlcoin Core version 2.17.2 or higher. The Groestlcoin node must have wallet enabled, and must have the RPC server switched on (server=1 in groestlcoin.conf). On first run, it is recommended to create a wallet dedicated to Groestlcoin Electrum Personal Server using the command line argument groestlcoin-cli createwallet electrumpersonalserver true.
• If you dont already have it, download and install Electrum-grs wallet, and set up your Electrum-grs wallet (for example by linking your hardware wallet). To avoid damaging privacy by connecting to public Electrum-GRS servers, disconnect from the internet first or run Electrum-grs with the command line argument --server localhost:50002:s.
• Download the latest release of Groestlcoin Electrum Personal Server. If using Windows OS take the packaged binary release build electrum-grs-personalserver-windows-release-XXX.zip.
• Extract and enter the directory, and copy the file config.ini_sample to config.ini. Edit the file config.ini to configure everything about the server. Add your wallet master public keys or watch-only addresses to the [master-public-keys] and [watch-only-addresses] sections. Master public keys for an Electrum-grs wallet (which start with xpub/ypub/zpub/etc) can be found in the Electrum-grs client menu Wallet -> Information. You can add multiple master public keys or watch-only addresses by adding separate lines for the different keys/addresses:
wallet1 = xpub661MyMwAqRbcF...
wallet2 = xpub7712KLsfsg46G...
• If you created a wallet dedicated to Groestlcoin Electrum Personal Server in Groestlcoin Core, you have to modify the line wallet_filename in the [groestlcoin-rpc] section with the name of the wallet, for example electrumpersonalserver.
• If using the windows packaged binary release, drag the file config.ini onto the file electrum-personal-server.exe to run the server, or on the command line run electrum-personal-server config.ini.
• If installing from the source release, install Groestlcoin Electrum Personal Server in your home directory with pip3 install --user .. On Linux the script electrum-personal-server will be installed in ~/.local/bin. Please note, if for some reason, you want to make a system-wide install, simply run pip3 install . as root (e.g. if you have sudo setup, you could use: sudo pip3 install .). Run electrum-personal-server /path/to/config.ini to start Groestlcoin Electrum Personal Server.
• The first time the server is run it will import all configured addresses as watch-only into the Groestlcoin node, and then exit. If the wallets contain historical transactions you can use the rescan script (electrum-personal-server --rescan /path/to/config.ini) to make them appear. If using the windows packaged binary release build then drag the file config.ini onto the file electrum-personal-server-rescan.bat.
• Run the server again which will start Groestlcoin Electrum Personal Server. Wait until the message Listening for Electrum-grs Wallet ... appears and then tell Electrum-grs to connect to the server in Tools -> Server. By default the server details are localhost if running on the same machine. Make sure the port number matches what is written in config.ini (port 50002 by default).

This application is licensed under the MIT license. There is no warranty and no party shall be made liable to you for damages. If you lose coins due to this app, no compensation will be given. Use this app solely at your own risk.

Windows: https://github.com/Groestlcoin/electrum-personal-server/releases/download/eps-v0.2.2-grs/electrum-grs-personal-server-windows-release-v0.2.2.zip
Linux: https://github.com/Groestlcoin/electrum-personal-server#quick-start-on-a-debianubuntu-machine-with-a-running-groestlcoin-full-node
OSX: https://github.com/Groestlcoin/electrum-personal-server#quick-start-on-a-debianubuntu-machine-with-a-running-groestlcoin-full-node

Note: Right now Groestlcoin Electrum Personal Server can only accept one connection at a time.

Source code: https://github.com/Groestlcoin/electrum-personal-server