Groestlcoin Forum

Groestl => Groestlcoin Development & Technical Discussion => Topic started by: gruve_p on March 22, 2018, 08:48:26 PM

Title: Electrum-GRS 3.0.6 released
Post by: gruve_p on March 22, 2018, 08:48:26 PM
(http://i.imgur.com/3YhyNZK.png)


Electrum-grs is a lightweight "thin client" groestlcoin wallet Windows, MacOS and Linux based on a client-server protocol. Its main advantages over the original Groestlcoin client include support for multi-signature wallets and not requiring the download of the entire block chain.



If you are an ordinary user of Groestlcoin and simply want the convenience of a web wallet with the security of a real application and support for multi-signature, then Elecrum-GRS is the right choice for you.

Changelog Electrum-GRS 3.0.6:
• Moved away from Linux binary file. Users must compile from source now.
• Moved away from electrum-grs-server codebase to electrumx-grs 1.2
• The source code is relicensed under the MIT Licence
• Separation between plugins and GUIs
• The command line uses jsonrpc to communicate with the daemon
• New command: 'notify <address> <url>'
• Alternative coin selection policy, designed to help preserve user privacy. Enable it by setting the Coin Selection preference to Privacy.
• The install wizard has been rewritten and improved
• Support minikeys for private key import and sweeping
• QT: add colors to labels
• The wallet file format has been upgraded. This upgrade is not backward compatible, which means that a wallet upgraded to the 2.7 format will not be readable by earlier versions of Electrum-GRS. Multiple accounts inside the same wallet are not supported in the new format; the Qt GUI will propose to split any wallet that has several accounts. Make sure that you have saved your seed phrase before you upgrade Electrum-GRS.
• This version introduces a separation between wallets types and keystores types. 'Wallet type' defines the type of Groestlcoin contract used in the wallet, while 'keystore type' refers to the method used to store private keys.
• Replace-By-Fee: RBF transactions are supported in Qt. A warning is displayed in the history for transactions that are replaceable, have unconfirmed parents, or that have very low fees.
• Qt GUI:
   - A fee slider is visible in the in send tab
   - The Address tab is hidden by default, can be shown with Ctrl-A
   - UTXOs are displayed in the Address tab
• Seed phrases can be extended with a user-chosen passphrase. The length of seed phrases is standardized to 12 words, using 132 bits of entropy. In the wizard, the type of the seed is displayed in the seed input dialog.
• Add number of confirmations to request status.
• In the GUI, refer to passphrase as 'seed extension'.
• Wizard: Hide seed options in a popup dialog.
• Separate sign and broadcast buttons in Qt tx dialog
• Allow spaces in private keys
• Add size to transaction details window
• Move plot plugin to main code
• Merge exchange_rate plugin with main code
• Faster synchronization and transaction creation
• Use fee slider for static fees
• Add fee slider to RBF dialog
• Simplify fee preferences.
• Add Testnet support
• Allow daemon to be launched in the foreground
• Qt: use separate tabs for addresses and UTXOs
• Qt: update fee slider with a network callback
• Enforce https on exchange rate APIs
• Use hardcoded list of exchanges
• Move 'Freeze' menu to Coins (utxo) tab
• Wallet file encryption using ECIES: A keypair is derived from the wallet password. Once the wallet is decrypted, only the public key is retained in memory, in order to save the encrypted file.
• The daemon requires wallets to be explicitly loaded before commands can use them. Wallets can be loaded using: 'electrum-grs daemon load_wallet [-w path]'. This command will require a password if the wallet is encrypted.
• Invoices and contacts are stored in the wallet file and are no longer shared between wallets. Previously created invoices and contacts files may be imported from the menu.
• Fees improvements:
    - Child Pays For Parent (CPFP) dialog in the GUI.
    - RBF is automatically proposed for low fee transactions.
• The GUI shows a blue icon when connected using a proxy.
• Show paid invoices in history tab
• Improve CPFP dialog
• Multiple Chain Validation: Electrum-GRS will download and validate block headers sent by servers that may follow different branches of a fork in the Groestlcoin blockchain. Instead of a linear sequence,block headers are organized in a tree structure. Branching points are located efficiently using binary search. The purpose of MCV is to detect and handle blockchain forks that are invisible to the classical SPV model.
• The desired branch of a blockchain fork can be selected using the network dialog. Branches are identified by the hash and height of the diverging block. Coin splitting is possible using RBF transaction
• MultiGroestl, Groestlwallet, Simple Groestlcoin support: If the user enters a BIP39 seed, the full derivation path is configurable in the install wizard.
• Option to send only confirmed coins
• Qt GUI:
    - Network dialog uses tabs and gets updated by network events.
    - The gui tabs use icons
• Daemon: The wallet password can be passed as parameter to the JSONRPC API.
• Validate contacts on import
• Command-line option for locktime
• Force headers download if headers file is corrupted
• Add websocket to windows builds
• The project was migrated to Python3 and Qt5. Python2 is no longer supported. If you cloned the source repository, you will need to run "python3 setup.py install" in order to install the new dependencies.
• Segwit support:
    - Native segwit scripts are supported using a new type of seed. The version number for segwit seeds is 0x100. The install wizard will not create segwit seeds by default; users must opt-in with the segwit option.
    - Native segwit scripts are represented using bech32 addresses, following BIP173. Please note that BIP173 is still in draft status, and that other wallets/websites may not support it. Thus, you should keep a non-segwit wallet in order to be able to receive groestlcoins during the transition period. If BIP173 ends up being rejected or substantially modified, your wallet may have to be restored from seed. This will not affect funds sent to bech32 addresses, and it will not affect the capacity of Electrum-GRS to spend these funds.
    - The BIP32 master keys of segwit wallets are serialized using new version numbers. The new version numbers encode the script type, and they result in the following prefixes:
         * xpub/xprv : p2pkh or p2sh
         * ypub/yprv : p2wpkh-in-p2sh
         * Ypub/Yprv : p2wsh-in-p2sh
         * zpub/zprv : p2wpkh
         * Zpub/Zprv : p2wsh
These values are identical for mainnet and testnet; tpub/tprv prefixes are no longer used in testnet wallets.
    - The Wallet Import Format (WIF) is similarly extended for segwit scripts. After a base58-encoded key is decoded to binary, its first byte encodes the script type:
         * 128 + 0: p2pkh
         * 128 + 1: p2wpkh
         * 128 + 2: p2wpkh-in-p2sh
         * 128 + 5: p2sh
         * 128 + 6: p2wsh
         * 128 + 7: p2wsh-in-p2sh
The distinction between p2sh and p2pkh in private key means that it is not possible to import a p2sh private key and associate it to a p2pkh address.
• A new version of the Electrum-GRS protocol is required by the client (version 1.1). Servers using older versions of the protocol will not be displayed in the GUI.
• By default, transactions are time-locked to the height of the current block. Other values of locktime may be passed using the command line.
• Sweeping minikeys: search for both compressed and uncompressed pubkeys
• Qt GUI: sweeping now uses the Send tab, allowing fees to be set
• Windows: if using the installer binary, there is now a separate shortcut for "Electrum-GRS Testnet"
• OS notifications for incoming transactions
• Better transaction size estimation:
    - fees for segwit txns were somewhat underestimated
    - some multisig txns were underestimated
    - handle uncompressed pubkeys
• The JSONRPC interface is password protected
• JSONRPC commands are disabled if the GUI is running, except 'ping', which is used to determine if a GUI is already running

Changelog Electrum-GRS 2.5.4:
• Linux binary file included
• Fixed sweeping private keys
• Fixed signing/verifying messages
• Electrum-GRS servers updated to 2.5.4
• Installwizard: do not allow direct copy-paste of the seed
• The QT GUI supports multiple windows in the same process. When a new Electrum-GRS instance is started, it checks for an already running Electrum-GRS process, and connects to it.
• The network layer uses select(), so all server communication is handled by a single thread. Moreover, the synchronizer, verifier, and exchange rate plugin now run as separate jobs within the networking thread instead of as their own threads.
• Plugins are revamped
• Simplified Chinese wordlist
• Dynamic Fees: using estimatefee value returned by server
• Various GUI improvements
• Arbitrary m-of-n multisig wallets are supported (n<=15).
• Transaction fees set manually in the GUI are retained, including when the user uses the '!' shortcut.
• New 'email' plugin, that enables sending and receiving payment requests by email.
• improvements to the transaction dialog:
    - request password after showing transaction
    - show change addresses in yellow color
• Improved logic for the network layer.
• More efficient coin selection. Spend oldest coins first, and minimize the number of transaction inputs.
• The command line accepts the '!' syntax to send the maximum amount available. It can be combined with the '--from' option. Example: 'payto <destination> ! --from <from_address>'
• The command line also accepts a '?' shortcut for private keys arguments, that triggers a prompt.
• Payment requests can be signed with a SSL certificate, and published as bip70 files in a public web directory.
• Show amounts (thousands separators and decimal point) according to locale in GUI
• Show unmatured coins in balance
• Faster startup, thanks to the following optimizations:
   1. Transaction input/outputs are cached in the wallet file
   2. Fast X509 certificate parser, not using pyasn1 anymore.
• The 'Invoices' and 'Send' tabs have been merged.
• Contacts are stored in a separate file, shared between wallets.
• A Search Box is available in the GUI (Ctrl-S)
• Own addresses are shown in green in the Transaction dialog.
• Address History dialog.
• The password dialog will ask for password again if the user enters a wrong password
• The Master Public Key dialog displays which keys belong to the wallet, and which are cosigners
• The transaction dialog will ask to save unsaved transaction received from cosigner pool, when user clicks on 'Close'
• The multisig restore dialog accepts xprv keys.

Features
• Encrypted wallet - the file that contains your groestlcoins is protected with a password. You are protected from thieves.
• Deterministic key generation - If you lose your wallet, you can recover it from its seed. You are protected from your own mistakes.
• Instant on - the client does not download the blockchain, it requests that information from a server. No delays, always up-to-date.
• Freedom and Privacy - The server does not store user accounts. You are not tied to a particular server, and the server does not need to know you.
• No scripts - Electrum-GRS does not download any script. A compromised server cannot send you arbitrary code and steal your groestlcoins.
• No single point of failure - The server code is open source, anyone can run a server.
• Transactions are signed locally - Your private keys are not shared with the server. You do not have to trust the server with your money.
• Firewall friendly - The client does not need to open a port, it simply polls the server for updates.
• Free software - Gnu GPL v3. Anyone can audit the code.
• Written in Python - The code is short, and easy to review.
• User Friendly - Support for Groestlcoin URIs, signed URIs and Groestlcoin aliases
• No Lock-In - You can export your private keys and use them in other groestlcoin clients.
• No Downtimes - Electrum-GRS servers are decentralized and redundant. Your wallet is never down.
• Proof Checking - Electrum-GRS Wallet verifies all the transactions in your history using SPV.
• Cold Storage - Keep your private keys offline, and go online with a watching-only wallet. Sign transactions from a computer taht is always offline. Broadcast them from a machine that does not have your keys.
• Multisign - Split the permission to spend your coins between several wallets using parallel BIP32 derivations and P2SH addresses ("2 of 2", "2 of 3"). Compact serialization format for unsigned or partially signed transactions, that includes the BIP32 master public key and derivation needed to sign inputs. Serialized transactions can be sent to cosigners or to cold storage using QR codes
• Cosigner Pool plugin - encrypted communication channel for multisign wallets, to send and receive partially signed transactions.
• Get noticed - Run a public Electrum-GRS server, publish your message and reach thousands of Groestlcoin users

It is appreciated if feedback of the following is provided:
1. Can you receive coins with legacy addresses? (small amounts to avoid losing them)
2. Can you receive coins with bech32 addresses? (small amounts to avoid losing them)
3. Can you receive coins with legacy testnet addresses? (small amounts to avoid losing them)
4. Can you receive coins with bech32 testnet addresses? (small amounts to avoid losing them)
5. Can you send coins with legacy addresses? (small amounts to avoid losing them)?
6. Can you send coins with bech32 addresses? (small amounts to avoid losing them)?
7. Can you send coins with legacy testnet addresses? (small amounts to avoid losing them)?
8. Can you send coins with bech32 testnet addresses? (small amounts to avoid losing them)?
9. Does the cosigner pool work when using a multi-signature wallet?
10. Does the virtual keyboard work when it asks to enter your wallet password?
11. Does it automatically detect servers under Tools - Network?
12. Are you able to sweep private keys?
13. Are you able to sign/verify messages?
14. Are you able to encrypt/decrypt messages?

This application is licensed under the GPL version 3. 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.

The application may have unfound bugs and problems. To leave feedback: 
1. PM me
2. Email: [email protected]
3. Post reports of erros in this topic.

Important:
Store your secret phrase somewhere safe!
The multi-signature and non native segwit addresses starts with a "3" and not with a "F".
Electrum-GRS creates an encrypted filename default_wallet instead of wallet.dat (like in Groestlcoin Core)
• Location Windows: Navigate to C:\Users\USER NAME\AppData\Roaming\Electrum-grs\wallets (or open windows explorer and enter %appdata%\Electrum-grs\wallets) and back up your default_wallet file by making a copy of it and moving it to a secure location.
• Location Mac: Navigate to ~/Library/Application Support/Electrum-grs/wallets and back up your default_wallet file by making a copy of it and moving it to a secure location.

You can download it using the links below and be up and running with Groestlcoin in 5 minutes.

Download the OSX wallet here: https://github.com/Groestlcoin/electrum-grs/releases/download/v3.0.6/electrum-grs-v3.0.6.dmg
Note: The QR code scanner is not supported in OSX binary

Download Windows installer here: https://github.com/Groestlcoin/electrum-grs/releases/download/v3.0.6/electrum-grs-v3.0.6-setup.exe
Download Windows standalone wallet here: https://github.com/Groestlcoin/electrum-grs/releases/download/v3.0.6/electrum-grs-v3.0.6.exe
Download Windows portable version here: https://github.com/Groestlcoin/electrum-grs/releases/download/v3.0.6/electrum-grs-v3.0.6-portable.exe

Linux wallet instructions:
sudo apt-get install python3-setuptools python3-pyqt5 python3-pip python3-dev libssl-dev
sudo pip3 install groestlcoin_hash
sudo pip3 install https://github.com/Groestlcoin/electrum-grs/releases/download/v3.0.6/electrum-grs-3.0.6.tar.gz
electrum-grs

Source code:
GitHub Source server: https://github.com/Groestlcoin/electrumx-grs
Github Source server installer: https://github.com/Groestlcoin/electrumx-grs-installer
Github Source client: https://github.com/Groestlcoin/electrum-grs
Github Source Icons: https://github.com/Groestlcoin/electrum-grs-icons
Github Source locale: https://github.com/Groestlcoin/electrum-grs-locale