Groestlcoin Core wallet

v2.17.2 is now the official release version of Groestlcoin Core. On top of the new features, various bugfixes, updated translations and performance improvements. It is recommended to upgrade to this version as soon as possible.

What's new in version v2.17.2?
This is a major release of Groestlcoin Core with many protocol level improvements and code optimizations, featuring the technical equivalent of Bitcoin v0.17.2 but with Groestlcoin specific patches. On a general level, most of what is new is BIP174 PSBT support. BIP 174 PSBT is an interchange format for Groestlcoin transactions that are not fully signed yet, together with relevant metadata to help entities work towards signing it. It is intended to simplify workflows where multiple parties need to cooperate to produce a transaction. Examples include hardware wallets, multisig setups, and CoinJoin transactions.

Changelog:
• `-includeconf=<file>` can be used to include additional configuration files. Only works inside the `groestlcoin.conf` file, not inside included files or from command-line. Multiple files may be included. Can be disabled from command-line via `-noincludeconf`. Note that multi-argument commands like `-includeconf` will override preceding `-noincludeconf` as groestlcoin.conf will still include `relative.conf`.
•  Block storage can be limited under Preferences, in the Main tab. Undoing this setting requires downloading the full blockchain again. This mode is incompatible with -txindex and -rescan.
•  The `-wallet=<path>` option now accepts full paths instead of requiring wallets to be located in the -walletdir directory.
•  If `-wallet=<path>` is specified with a path that does not exist, it will now create a wallet directory at the specified location (containing a wallet.dat data file, a db.log file, and database/log.???????? files) instead of just creating a data file at the path and storing log files in the parent directory. This should make backing up wallets more straightforward than before because the specified wallet path can just be directly archived without having to look in the parent directory for transaction log files. For backwards compatibility, wallet paths that are names of existing data files in the `-walletdir` directory will continue to be accepted and interpreted the same as before.
•  Previously, wallets could only be loaded or created at startup, by specifying `-wallet` parameters on the command line or in the groestlcoin.conf file. It is now possible to load, create and unload wallets dynamically at runtime:
   - Existing wallets can be loaded by calling the `loadwallet` RPC. The wallet can be specified as file/directory basename (which must be located in the    `walletdir` directory), or as an absolute path to a file/directory.
   - New wallets can be created (and loaded) by calling the `createwallet` RPC. The provided name must not match a wallet file in the `walletdir` directory or the    name of a wallet that is currently loaded.
   - Loaded wallets can be unloaded by calling the `unloadwallet` RPC.
This feature is currently only available through the RPC interface.
• When an address is paid multiple times the coins from those separate payments can be spent separately which hurts privacy due to linking otherwise separate addresses. A new `-avoidpartialspends` flag has been added (default=false). If enabled, the wallet will always spend existing UTXO to the same address together even if it results in higher fees. If someone were to send coins to an address after it was used, those coins will still be included in future coin selections.
•  It is now possible for a single configuration file to set differentoptions for different networks. This is done by using sections or by
prefixing the option with the network, such as:

    main.uacomment=groestlcoin
    test.uacomment=groestlcoin-testnet
    regtest.uacomment=regtest
    [main]
    mempoolsize=300
    [test]
    mempoolsize=100
    [regtest]
    mempoolsize=20

If the following options are not in a section, they will only apply to mainnet: `addnode=`, `connect=`, `port=`, `bind=`, `rpcport=`, `rpcbind=` and `wallet=`.
The options to choose a network (`regtest=` and `testnet=`) must be specified outside of sections.
• A new 'label' API has been introduced for the wallet. This is intended as a replacement for the deprecated 'account' API. The 'account' can continue to be used in V2.17.2 by starting groestlcoind with the '-deprecatedrpc=accounts' argument, and will be fully removed in V2.18.1. The label RPC methods mirror the account functionality, with the following functional differences:
- Labels can be set on any address, not just receiving addresses. This functionality was previously only available through the GUI.
- Labels can be deleted by reassigning all addresses using the `setlabel` RPC method.
- There isn't support for sending transactions _from_ a label, or for determining which label a transaction was sent from.
- Labels do not have a balance.

Here are the changes to RPC methods:

| Deprecated Method       | New Method            | Notes       |
| :---------------------- | :-------------------- | :-----------|
| `getaccount`            | `getaddressinfo`      | `getaddressinfo` returns a json object with address information instead of just the name of the account as a string. |
| `getaccountaddress`     | n/a                   | There is no replacement for `getaccountaddress` since labels do not have an associated receive address. |
| `getaddressesbyaccount` | `getaddressesbylabel` | `getaddressesbylabel` returns a json object with the addresses as keys, instead of a list of strings. |
| `getreceivedbyaccount`  | `getreceivedbylabel`  | _no change in behavior_ |
| `listaccounts`          | `listlabels`          | `listlabels` does not return a balance or accept `minconf` and `watchonly` arguments. |
| `listreceivedbyaccount` | `listreceivedbylabel` | Both methods return new `label` fields, along with `account` fields for backward compatibility. |
| `move`                  | n/a                   | _no replacement_ |
| `sendfrom`              | n/a                   | _no replacement_ |
| `setaccount`            | `setlabel`            | Both methods now: <ul><li>allow assigning labels to any address, instead of raising an error if the address is not receiving address.<li>delete the previous label associated with an address when the final address using that label is reassigned to a different label, instead of making an implicit `getaccountaddress` call to ensure the previous label still has a receiving address. |

| Changed Method         | Notes   |
| :--------------------- | :------ |
| `addmultisigaddress`   | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility if running with '-deprecatedrpc=accounts'. |
| `getnewaddress`        | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility. if running with '-deprecatedrpc=accounts' |
| `listunspent`          | Returns new `label` fields. `account` field will be returned for backward compatibility if running with '-deprecatedrpc=accounts' |
| `sendmany`             | The `account` named parameter has been renamed to `dummy`. If provided, the `dummy` parameter must be set to the empty string, unless running with the `-deprecatedrpc=accounts` argument (in which case functionality is unchanged). |
| `listtransactions`     | Renamed `account` named parameter to `label`. Still accepts `account` for backward compatibility if running with '-deprecatedrpc=accounts'. |
| `getbalance`           | `account`, `minconf` and `include_watchonly` parameters are deprecated, and can only be used if running with '-deprecatedrpc=accounts' |

• [BIP 174 PSBT](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki) is an interchange format for Groestlcoin transactions that are not fully signed
yet, together with relevant metadata to help entities work towards signing it. It is intended to simplify workflows where multiple parties need to cooperate to
produce a transaction. Examples include hardware wallets, multisig setups, and [CoinJoin](https://bitcointalk.org/?topic=279249) transactions.
Overall, the construction of a fully signed Groestlcoin transaction goes through the following steps:
- A Creator proposes a particular transaction to be created. He constructs a PSBT that contains certain inputs and outputs, but no additional metadata.
- For each input, an Updater adds information about the UTXOs being spent by the transaction to the PSBT.
- A potential other Updater adds information about the scripts and public keys involved in each of the inputs (and possibly outputs) of the PSBT.
- Signers inspect the transaction and its metadata to decide whether they agree with the transaction. They can use amount information from the UTXOs to assess the values and fees involved. If they agree, they produce a partial signature for the inputs for which they have relevant key(s).
- A Finalizer is run for each input to convert the partial signatures and possibly script information into a final `scriptSig` and/or `scriptWitness`.
- An Extractor produces a valid Groestlcoin transaction (in network format) from a PSBT for which all inputs are finalized.
Generally, each of the above (excluding Creator and Extractor) will simply add more and more data to a particular PSBT. In a naive workflow, they all have to operate sequentially, passing the PSBT from one to the next, until the Extractor can convert it to a real transaction. In order to permit parallel operation, **Combiners** can be employed which merge metadata from different PSBTs for the same unsigned transaction. The names above in bold are the names of the roles defined in BIP174. They're useful in understanding the underlying steps, but in practice, software and hardware implementations will typically implement multiple roles simultaneously.
• `converttopsbt` (Creator) is a utility RPC that converts an unsigned raw transaction to PSBT format. It ignores existing signatures.
• `createpsbt` (Creator) is a utility RPC that takes a list of inputs and outputs and converts them to a PSBT with no additional information. It is equivalent to calling `createrawtransaction` followed by `converttopsbt`.
• `walletcreatefundedpsbt` (Creator, Updater) is a wallet RPC that creates a PSBT with the specified inputs and outputs, adds additional inputs and change to it to balance it out, and adds relevant metadata. In particular, for inputs that the wallet knows about (counting towards its normal or watch-only balance), UTXO information will be added. For outputs and inputs with UTXO information present, key and script information will be added which the wallet knows about. It is equivalent to running `createrawtransaction`, followed by `fundrawtransaction`, and `converttopsbt`.
• `walletprocesspsbt` (Updater, Signer, Finalizer) is a wallet RPC that takes as input a PSBT, adds UTXO, key, and script data to inputs and outputs that miss it, and optionally signs inputs. Where possible it also finalizes the partial signatures.
• `finalizepsbt` (Finalizer, Extractor) is a utility RPC that finalizes any partial signatures, and if all inputs are finalized, converts the result to a fully signed transaction which can be broadcast with `sendrawtransaction`.
• `combinepsbt` (Combiner) is a utility RPC that implements a Combiner. It can be used at any point in the workflow to merge information added to different versions of the same PSBT. In particular it is useful to combine the output of multiple Updaters or Signers.
• `decodepsbt` is a diagnostic utility RPC which will show all information in a PSBT in human-readable form, as well as compute its eventual fee if known.
• Since Groestlcoin Core 2.13.3, creating new BIP 32 Hierarchical Deterministic wallets has been supported by Groestlcoin Core but old non-HD wallets could not be upgraded to HD. Now non-HD wallets can be upgraded to HD using the `-upgradewallet` command line option. This upgrade will result in the all keys in the keypool being marked as used and a new keypool generated. **A new backup must be made when this upgrade is performed.**
Additionally, `-upgradewallet` can be used to upgraded from a non-split HD chain (all keys generated with `m/0'/0'/i'`) to a split HD chain (receiving keys generated with `'m/0'/0'/i'` and change keys generated with `m'/0'/1'/i'`). When this upgrade occurs, all keys already in the keypool will remain in the keypool to be used until all keys from before the upgrade are exhausted. This is to avoid issues with backups and downgrades when some keys may come from the change key keypool. Users can begin using the new split HD chain keypools by using the `newkeypool` RPC to mark all keys in the keypool as used and begin using a new keypool generated from the split HD chain.
• A new RPC, `sethdseed`, has been introduced which allows users to set a new HD seed or set their own HD seed. This allows for a new HD seed to be used. **A new backup must be made when a new HD seed is set.**
• The new RPC `scantxoutset` can be used to scan the UTXO set for entries that match certain output descriptors. Refer to the [output descriptors reference documentation](/doc/descriptors.md) for more details. This call is similar to `listunspent` but does not use a wallet, meaning that the wallet can be disabled at compile or run time. This call is experimental, as such, is subject to changes or removal in future releases.
• The `createrawtransaction` RPC will now accept an array or dictionary (kept for compatibility) for the `outputs` parameter. This means the order of transaction outputs can be specified by the client.
• The `fundrawtransaction` RPC will reject the previously deprecated `reserveChangeKey` option.
• `sendmany` now shuffles outputs to improve privacy, so any previously expected behavior with regards to output ordering can no longer be relied upon.
• The new RPC `testmempoolaccept` can be used to test acceptance of a transaction to the mempool without adding it.
• JSON transaction decomposition now includes a `weight` field which provides the transaction's exact weight. This is included in REST /rest/tx/ and /rest/block/ endpoints when in json mode. This is also included in `getblock` (with verbosity=2), `listsinceblock`, `listtransactions`, and `getrawtransaction` RPC commands.
• New `fees` field introduced in `getrawmempool`, `getmempoolancestors`, `getmempooldescendants` and `getmempoolentry` when verbosity is set to `true` with sub-fields `ancestor`, `base`, `modified` and `descendant` denominated in GRS. This new field deprecates previous fee fields, such as `fee`, `modifiedfee`, `ancestorfee` and `descendantfee`.
• The new RPC `getzmqnotifications` returns information about active ZMQ notifications.
• When groestlcoin is not started with any `-wallet=<path>` options, the name of the default wallet returned by `getwalletinfo` and `listwallets` RPCs is now the empty string `""` instead of `"wallet.dat"`. If groestlcoin is started with any `-wallet=<path>` options, there is no change in behavior, and the name of any wallet is just its `<path>` string.
• Passing an empty string (`""`) as the `address_type` parameter to `getnewaddress`, `getrawchangeaddress`, `addmultisigaddress`, `fundrawtransaction` RPCs is now an error. Previously, this would fall back to using the default address type. It is still possible to pass null or leave the parameter unset to use the default address type.
• Bare multisig outputs to our keys are no longer automatically treated as incoming payments. As this feature was only available for multisig outputs for which you had all private keys in your wallet, there was generally no use for them compared to single-key schemes. Furthermore, no address format for such outputs is defined, and wallet software can't easily send to it. These outputs will no longer show up in `listtransactions`, `listunspent`, or contribute to your balance, unless they are explicitly watched (using `importaddress` or `importmulti` with hex script argument). `signrawtransaction` also still works for them.
•  The `getwalletinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V2.18.1.
•  The `getaddressinfo` RPC method now returns an `hdseedid` value, which is always the same as the incorrectly-named `hdmasterkeyid` value. `hdmasterkeyid` will be removed in V2.18.1.
•  Parts of the `validateaddress` RPC method have been deprecated and moved to `getaddressinfo`. Clients must transition to using `getaddressinfo` to access this information before upgrading to v2.18.1. The following deprecated fields have moved to `getaddressinfo` and will only be shown with `-deprecatedrpc=validateaddress`: `ismine`, `iswatchonly`, `script`, `hex`, `pubkeys`, `sigsrequired`, `pubkey`, `addresses`, `embedded`, `iscompressed`, `account`, `timestamp`, `hdkeypath`, `hdmasterkeyid`.
• `signrawtransaction` is deprecated and will be fully removed in v2.18.1. To use `signrawtransaction` in v2.17.2, restart groestlcoind with `-deprecatedrpc=signrawtransaction`. Projects should transition to using `signrawtransactionwithkey` and `signrawtransactionwithwallet` before upgrading to v2.18.1.
•  The `inactivehdmaster` property in the `dumpwallet` output has been corrected to `inactivehdseed`
• The log timestamp format is now ISO 8601 (e.g. "2018-02-28T12:34:56Z").
•  When running groestlcoind with `-debug` but without `-daemon`, logging to stdout is now the default behavior. Setting `-printtoconsole=1` no longer implicitly disables logging to debug.log. Instead, logging to file can be explicitly disabled by setting `-debuglogfile=0`.
• The transaction index is now built separately from the main node procedure, meaning the `-txindex` flag can be toggled without a full reindex. If groestlcoind is run with `-txindex` on a node that is already partially or fully synced without one, the transaction index will be built in the background and become available once caught up. When switching from running `-txindex` to running without the flag, the transaction index database will *not* be deleted automatically, meaning it could be turned back on at a later time without a full resync.
• The `-blockmaxsize` option for miners to limit their blocks' sizes was deprecated in V2.16.0, and has now been removed. Miners should use the `-blockmaxweight` option if they want to limit the weight of their blocks.
• Support for Python 2 has been discontinued for all test files and tools.

The application may have unfound bugs and problems. Please report using the issue tracker at github:
https://github.com/groestlcoin/groestlcoin/issues

Important:
• 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.
• Encrypt your wallet. This can be done by clicking the settings menu from inside the wallet. Make sure your password is secure and do not forget it.
• Make a copy your wallet.dat file as a backup and move it to a secure location:
Location Windows: Navigate to C:\Users\Username\AppData\Roaming\groestlcoin\wallet.dat (or open windows explorer and enter %appdata%\Groestlcoin\wallet.dat)
Location Mac: Finder -> Go {Hold Option] -> Library -> groestlcoin -> wallet.dat (~/Library/Application Support/groestlcoin/wallet.dat)

WARNING:
While this branch has been extensively tested to be compatible with the existing Groestlcoin v2.11.0, v2.13.3, v2.16.0 and v2.16.3 network there is the possibility that we missed something. ALWAYS BACKUP YOUR GROESTLCOIN WALLET BEFORE UPGRADING.

How to Upgrade?
If your node has a txindex, the txindex db will be migrated the first time you run 2.17.2, which may take up to a few hours. Your node will not be functional until this migration completes.
Windows: If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), then run the installer.
OSX: If you are running an older version, shut it down. Wait until it has completely shut down (which might take a few minutes for older versions), run the dmg and drag Groestlcoin Core to Applications.
Ubuntu users: https://groestlcoin.org/forum/index.php?topic=441.0
Linux users: https://groestlcoin.org/forum/index.php?topic=97.0

Download the Windows Installer (64 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-win64.msi
Download the Windows Installer (32 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-win32.msi
Download the Windows binaries (64 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-x86_64-w64-mingw32.zip
Download the Windows binaries (32 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-i686-w64-mingw32.zip
Download the OSX Installer here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-osx.dmg
Download the OSX binaries here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-x86_64-apple-darwin11.tar.gz
Download the Linux binaries (64 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-x86_64-linux-gnu.tar.gz
Download the Linux binaries (32 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-i686-pc-linux-gnu.tar.gz
Download the ARM Linux binaries (64 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-aarch64-linux-gnu.tar.gz
Download the ARM Linux binaries (32 bit) here: https://github.com/Groestlcoin/groestlcoin/releases/download/v2.17.2/groestlcoin-2.17.2-arm-linux-gnueabihf.tar.gz

Source code:
https://github.com/Groestlcoin/groestlcoin
Build instructions for Linux can be found here: https://github.com/Groestlcoin/groestlcoin/blob/master/doc/build-unix.md
Build instructions for OSX can be found here: https://github.com/Groestlcoin/groestlcoin/blob/master/doc/build-osx.md
Build instructions for Windows can be found here: https://github.com/Groestlcoin/groestlcoin/blob/master/doc/build-windows.md