@ -10,6 +10,32 @@ and no longer on Github, since they banned Duke Leto and
also because they censor many people around the world and work with
evil organizations.
# Hush 3.8.0 "XXX YYY"
This is an OPTIONAL release, but since it contains many privacy improvements, it's HIGHLY RECOMMENDED for all users to upgrade.
* New Sietch feature: Randomized change output location
* Zcash and Pirate always put the change as the last shielded output, which leaks metadata. Hush no longer has this metadata leakage.
* This feature improves the `z_sendmany`, `z_mergetoaddress` and `z_shieldtocoinbase` since it's done in the Hush TransactionBuilder.
* New Sietch feature: Sitech-ified `z_shieldcoinbase`
* This RPC now leaks less metadata by making it hard for blockchain analysts to know which of the three outputs has value.
* This also increases Hush's "anonset velocity", which is how fast we increase our anonymity set, or "anonset".
* Previously you could only run `stop` while Hush was in RPC warmup, but now additional RPCs are allowed:
* `stop` - Oops, you started hushd on accident a few seconds ago? Now you can stop it without waiting.
* `help` - Get help during long rescans, finally!
* `z_listaddresses` - See a list of all zaddrs in this wallet, even during a long rescan!
* `z_exportkey` - Export a key from this node, even during rescan!
* `listaddresses` - See a list of taddrs as soon as we load the wallet.
* `dumpprivkey` - Dump the private key of a taddr, even when node isn't fully synced!
* `getpeerinfo` - See current peers even before we get enough peers to start syncing or a long rescan!
* `-keepnotewitnesscache` prevents the Sapling Note Witness cache from being deleted from wallet.dat on shutdown.
* `-rescanheight` can be used with `-keepnotewitnesscache` and `-rescan` to do a partial rescan of history and avoid completely rebuilding the Witness Cache.
* `-zindex` data is now stored on disk in the new `zindex.dat` file
* All nodes that use `-zindex` will now have reliable anonset statistics even after a restart
* Improvements to the RPC help documentation
* `hushd.bat` for Windows now uses the ASN map via `-asmap` and has the latest seed nodes
* `hushd-tx.bat` for Windows now exists for making raw transactions on Windows
strUsage+=HelpMessageOpt("-opretmintxfee=<amt>",strprintf(_("Minimum fee (in %s/kB) to allow for OP_RETURN transactions (default: %s)"),CURRENCY_UNIT,400000));
strUsage+=HelpMessageOpt("-paytxfee=<amt>",strprintf(_("Fee (in %s/kB) to add to transactions you send (default: %s)"),CURRENCY_UNIT,FormatMoney(payTxFee.GetFeePerK())));
// If this is used incorrectly (-rescanheight too large), then the local wallet may attempt to spend funds which it does not have witness data about
// which will cause a "missing inputs" error when added to the mempool. Rescanning from correct height will fix this.
strUsage+=HelpMessageOpt("-keepnotewitnesscache",_("Keep partial Sapling Note Witness cache. Must be used with -rescanheight to find missing cache items."));
strUsage+=HelpMessageOpt("-rescan",_("Rescan the block chain for missing wallet transactions")+""+_("on startup"));
strUsage+=HelpMessageOpt("-rescanheight",_("Rescan from specified height when rescan=1 on startup"));
strUsage+=HelpMessageOpt("-salvagewallet",_("Attempt to recover private keys from a corrupt wallet.dat")+""+_("on startup"));
strUsage+=HelpMessageOpt("-sendfreetransactions",strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"),0));
strUsage+=HelpMessageOpt("-spendzeroconfchange",strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"),1));
// TODO: if zstats.nHeight != chainActive.Height() the stats will be off
fprintf(stderr,"%s: loaded anonymity set of %li at stats height=%li vs local height=%d from disk\n",__func__,zstats.nChainShieldedOutputs-zstats.nChainShieldedSpends,zstats.nHeight,chainActive.Height());
fprintf(stderr,"%s: setting zstats with height,zouts,zspends,anonset=%li,%li,%li,%li\n",__FUNCTION__,zstats.nHeight,zstats.nChainShieldedOutputs,zstats.nChainShieldedSpends,zstats.nChainShieldedOutputs-zstats.nChainShieldedSpends);
"2. \"outputs\" (object, required) a json object with outputs\n"
" {\n"
"\"address\": x.xxx, (numeric or string, required) The key is the komodo address or script (in hex), the numeric value (can be string) is the "+CURRENCY_UNIT+" amount\n"
"\"address\": x.xxx, (numeric or string, required) The key is the HUSH address or script (in hex), the numeric value (can be string) is the "+CURRENCY_UNIT+" amount\n"
"\"data\": \"hex\" (string, required) The key is \"data\", the value is hex encoded data\n"