From 195af2c65a350217f66e3c004e36012b3a2311f2 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Jun 2021 22:19:37 -0400 Subject: [PATCH 01/16] Sietch for z_shieldcoinbase --- src/wallet/asyncrpcoperation_shieldcoinbase.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/wallet/asyncrpcoperation_shieldcoinbase.cpp b/src/wallet/asyncrpcoperation_shieldcoinbase.cpp index e432ffdb0..a4d4857e0 100644 --- a/src/wallet/asyncrpcoperation_shieldcoinbase.cpp +++ b/src/wallet/asyncrpcoperation_shieldcoinbase.cpp @@ -46,6 +46,7 @@ using namespace libzcash; extern uint64_t ASSETCHAINS_TIMELOCKGTE; +extern string randomSietchZaddr(); AsyncRPCOperation_shieldcoinbase::AsyncRPCOperation_shieldcoinbase( TransactionBuilder builder, @@ -229,6 +230,17 @@ bool ShieldToAddress::operator()(const libzcash::SaplingPaymentAddress &zaddr) c // Send all value to the target z-addr m_op->builder_.SendChangeTo(zaddr, ovk); + // Sietchified Shielding of Coinbase Funds + // Add Sietch zouts so it's unclear which zout contains value :) + // This reduces metadata leakage of coinbase t=>z tx's + CAmount amount = 0; + auto zdust1 = DecodePaymentAddress(randomSietchZaddr()); + auto zdust2 = DecodePaymentAddress(randomSietchZaddr()); + auto sietchZout1 = boost::get(zdust1); + auto sietchZout2 = boost::get(zdust2); + m_op->builder_.AddSaplingOutput(ovk, sietchZout1, amount); + m_op->builder_.AddSaplingOutput(ovk, sietchZout2, amount); + // Build the transaction auto maybe_tx = m_op->builder_.Build(); if (!maybe_tx) { From d58396f05ec27bfdf3487edd507ef63d23bde706 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Sun, 27 Jun 2021 22:35:59 -0400 Subject: [PATCH 02/16] Shuffle zouts to prevent leaking change output position --- src/transaction_builder.cpp | 10 ++++++++++ src/transaction_builder.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/transaction_builder.cpp b/src/transaction_builder.cpp index c17051ff9..3ff6269b2 100644 --- a/src/transaction_builder.cpp +++ b/src/transaction_builder.cpp @@ -59,6 +59,13 @@ void TransactionBuilder::AddSaplingOutput( mtx.valueBalance -= value; } +// randomize the order of outputs +void TransactionBuilder::ShuffleOutputs() +{ + LogPrintf("%s: Shuffling %d zouts\n", __func__, outputs.size() ); + random_shuffle( outputs.begin(), outputs.end(), GetRandInt ); +} + void TransactionBuilder::AddTransparentInput(COutPoint utxo, CScript scriptPubKey, CAmount value, uint32_t _nSequence) { if (keystore == nullptr) { @@ -212,6 +219,9 @@ boost::optional TransactionBuilder::Build() mtx.vShieldedSpend.push_back(sdesc); } + // Prevent leaking metadata about the position of change output + ShuffleOutputs(); + // Create Sapling OutputDescriptions for (auto output : outputs) { auto cm = output.note.cm(); diff --git a/src/transaction_builder.h b/src/transaction_builder.h index dba7e7b43..89a8d6580 100644 --- a/src/transaction_builder.h +++ b/src/transaction_builder.h @@ -92,6 +92,8 @@ public: CAmount value, std::array memo = {{0}}); + void ShuffleOutputs(); + // Assumes that the value correctly corresponds to the provided UTXO. void AddTransparentInput(COutPoint utxo, CScript scriptPubKey, CAmount value, uint32_t nSequence = 0xffffffff); From df8cd1180f78ae7a8bd0512ed539e6c5f758d08a Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Jun 2021 21:00:42 -0400 Subject: [PATCH 03/16] delete dead code --- src/miner.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 159682f32..9a843a52d 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -210,10 +210,6 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32 // Collect memory pool transactions into the block CAmount nFees = 0; - // we will attempt to spend any cheats we see - CTransaction cheatTx; - boost::optional cheatSpend; - uint256 cbHash; boost::this_thread::interruption_point(); // exit thread before entering locks. From 6ca35f2b0ac41004bd2e795c7c6475f2e4a00461 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Jun 2021 21:17:59 -0400 Subject: [PATCH 04/16] Remove dead code --- src/miner.cpp | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 9a843a52d..165497694 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -891,29 +891,6 @@ void komodo_sendmessage(int32_t minpeers,int32_t maxpeers,const char *message,st } } -void komodo_broadcast(CBlock *pblock,int32_t limit) -{ - if (IsInitialBlockDownload()) - return; - int32_t n = 1; - //fprintf(stderr,"broadcast new block t.%u\n",(uint32_t)time(NULL)); - { - LOCK(cs_vNodes); - BOOST_FOREACH(CNode* pnode, vNodes) - { - if ( pnode->hSocket == INVALID_SOCKET ) - continue; - if ( (rand() % n) == 0 ) - { - pnode->PushMessage("block", *pblock); - if ( n++ > limit ) - break; - } - } - } - //fprintf(stderr,"finished broadcast new block t.%u\n",(uint32_t)time(NULL)); -} - static bool ProcessBlockFound(CBlock* pblock, CWallet& wallet, CReserveKey& reservekey) #else static bool ProcessBlockFound(CBlock* pblock) @@ -968,7 +945,6 @@ static bool ProcessBlockFound(CBlock* pblock) return error("HushMiner: ProcessNewBlock, block not accepted"); TrackMinedBlock(pblock->GetHash()); - //komodo_broadcast(pblock,16); return true; } From 8e7cf04ad2cbb2c61756475f7882472ba1826d06 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Jun 2021 22:34:35 -0400 Subject: [PATCH 05/16] Fix upstream KMD crash bug in getblocktemplate when disablewallet=1 Originally https://github.com/DeckerSU/komodo/commit/dc8e1695c23908a2e797a48f1e7b428070c336b7 --- src/miner.cpp | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 165497694..7ce7cf404 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -857,19 +857,26 @@ CBlockTemplate* CreateNewBlockWithKey(CReserveKey& reservekey, int32_t nHeight, scriptPubKey = CScript() << ParseHex(HexStr(pubkey)) << OP_CHECKSIG; } else { { - if (!reservekey.GetReservedKey(pubkey)) - { - return NULL; - } - scriptPubKey.resize(35); - ptr = (uint8_t *)pubkey.begin(); - scriptPubKey[0] = 33; - for (i=0; i<33; i++) { - scriptPubKey[i+1] = ptr[i]; - } - scriptPubKey[34] = OP_CHECKSIG; - } - } + // Support mining with -disablewallet and minetolocalwallet=0 + if (!GetBoolArg("-disablewallet", false)) { + // wallet enabled + if (!reservekey.GetReservedKey(pubkey)) + return NULL; + scriptPubKey.clear(); + scriptPubKey = CScript() << ToByteVector(pubkey) << OP_CHECKSIG; + } else { + // wallet disabled + CTxDestination dest = DecodeDestination(GetArg("-mineraddress", "")); + if (IsValidDestination(dest)) { + // CKeyID keyID = boost::get(dest); + // scriptPubKey = CScript() << OP_DUP << OP_HASH160 << ToByteVector(keyID) << OP_EQUALVERIFY << OP_CHECKSIG; + scriptPubKey = GetScriptForDestination(dest); + } else { + return NULL; + } + } + } + } return CreateNewBlock(pubkey, scriptPubKey, gpucount, isStake); } From 2b915599ac316da16d69b37fc983a2f574efdd57 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Mon, 28 Jun 2021 23:56:16 -0400 Subject: [PATCH 06/16] Update rpc docs --- src/rpc/rawtransaction.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp index 1914aa8df..82fcfdf97 100644 --- a/src/rpc/rawtransaction.cpp +++ b/src/rpc/rawtransaction.cpp @@ -646,7 +646,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp, const CPubKey& " ]\n" "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" " ,...\n" " }\n" @@ -821,7 +821,7 @@ UniValue decoderawtransaction(const UniValue& params, bool fHelp, const CPubKey& " \"reqSigs\" : n, (numeric) The required sigs\n" " \"type\" : \"pubkeyhash\", (string) The type, eg 'pubkeyhash'\n" " \"addresses\" : [ (json array of string)\n" - " \"RTZMZHDFSTFQst8XmX2dR4DaH87cEUs3gC\" (string) komodo address\n" + " \"RTZMZHDFSTFQst8XmX2dR4DaH87cEUs3gC\" (string) HUSH address\n" " ,...\n" " ]\n" " }\n" From b314fd3b4aa0d9c63095dbde19d00a0ff2698352 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 29 Jun 2021 11:32:54 -0400 Subject: [PATCH 07/16] Add -asmap and update addnodes to hushd.bat --- src/hushd.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hushd.bat b/src/hushd.bat index b2580ffaf..5f578d6b6 100644 --- a/src/hushd.bat +++ b/src/hushd.bat @@ -1,6 +1,6 @@ @call :GET_CURRENT_DIR @cd %THIS_DIR% -komodod.exe -ac_name=HUSH3 -ac_sapling=1 -ac_reward=0,1125000000,562500000 -ac_halving=129,340000,840000 -ac_end=128,340000,5422111 -ac_eras=3 -ac_blocktime=150 -ac_cc=2 -ac_ccenable=228,234,235,236,241 -ac_founders=1 -ac_supply=6178674 -ac_perc=11111111 -clientname=GoldenSandtrout -addnode=64.120.113.130 -addnode=209.58.144.205 -addnode=94.130.35.94 -addnode=188.165.212.101 -ac_cclib=hush3 -ac_script=76a9145eb10cf64f2bab1b457f1f25e658526155928fac88ac -daemon %1 %2 %3 %4 %5 %6 %7 %8 %9 +komodod.exe -ac_name=HUSH3 -ac_sapling=1 -ac_reward=0,1125000000,562500000 -ac_halving=129,340000,840000 -ac_end=128,340000,5422111 -ac_eras=3 -ac_blocktime=150 -ac_cc=2 -ac_ccenable=228,234,235,236,241 -ac_founders=1 -ac_supply=6178674 -ac_perc=11111111 -clientname=GoldenSandtrout -asmap -addnode=node1.hush.is -addnode=node2.hush.is -addnode=node3.hush.is -addnode=node4.hush.is -addnode=node5.hush.is -addnode=node6.hush.is -addnode=node7.hush.is -addnode=node8.hush.is -ac_cclib=hush3 -ac_script=76a9145eb10cf64f2bab1b457f1f25e658526155928fac88ac -daemon %1 %2 %3 %4 %5 %6 %7 %8 %9 @goto :EOF :GET_CURRENT_DIR From cc2b28a604d0972c6363fe8c40fb14e2116d9e2e Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 29 Jun 2021 11:42:34 -0400 Subject: [PATCH 08/16] hush-tx.bat for completeness --- src/hush-tx.bat | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/hush-tx.bat diff --git a/src/hush-tx.bat b/src/hush-tx.bat new file mode 100644 index 000000000..f3e24881d --- /dev/null +++ b/src/hush-tx.bat @@ -0,0 +1,14 @@ +@call :GET_CURRENT_DIR +@cd %THIS_DIR% +komodo-tx.exe -ac_name=HUSH3 %1 %2 %3 %4 %5 %6 %7 %8 %9 +@goto :EOF + +:GET_CURRENT_DIR +@pushd %~dp0 +@set THIS_DIR=%CD% +@popd +@goto :EOF + + + + From 1cdf998adebab5502e3e6161a0a1eaeb3ce6e366 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Tue, 29 Jun 2021 13:33:43 -0400 Subject: [PATCH 09/16] docs for -keepnotewitnesscache --- src/init.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/init.cpp b/src/init.cpp index 5e7a644f4..01916ee76 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -466,6 +466,9 @@ std::string HelpMessage(HelpMessageMode mode) CURRENCY_UNIT, FormatMoney(CWallet::minTxFee.GetFeePerK()))); strUsage += HelpMessageOpt("-opretmintxfee=", strprintf(_("Minimum fee (in %s/kB) to allow for OP_RETURN transactions (default: %s)"), CURRENCY_UNIT, 400000 )); strUsage += HelpMessageOpt("-paytxfee=", 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")); From 14f38e3b0d9aaf7231b9848b4bec3f7f1969310b Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Thu, 8 Jul 2021 18:15:59 -0400 Subject: [PATCH 10/16] Let us be honest --- src/wallet/rpcdump.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 8a5398945..e5a7d2034 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -201,7 +201,7 @@ UniValue importprivkey(const UniValue& params, bool fHelp, const CPubKey& mypk) "3. rescan (boolean, optional, default=true) Rescan the wallet for transactions\n" "4. height (integer, optional, default=0) start at block height?\n" "5. secret_key (integer, optional, default=188) decimal value used to import WIFs of other coins\n" - "\nNote: This call can take minutes to complete if rescan is true.\n" + "\nNote: This call can take a long time to complete if rescan is true.\n" "\nExamples:\n" "\nDump a private key\n" + HelpExampleCli("dumpprivkey", "\"myaddress\"") + @@ -295,7 +295,7 @@ UniValue importaddress(const UniValue& params, bool fHelp, const CPubKey& mypk) "1. \"address\" (string, required) The address\n" "2. \"label\" (string, optional, default=\"\") An optional label\n" "3. rescan (boolean, optional, default=true) Rescan the wallet for transactions\n" - "\nNote: This call can take minutes to complete if rescan is true.\n" + "\nNote: This call can take a long time to complete if rescan is true.\n" "\nExamples:\n" "\nImport an address with rescan\n" + HelpExampleCli("importaddress", "\"myaddress\"") + @@ -749,7 +749,7 @@ UniValue z_importkey(const UniValue& params, bool fHelp, const CPubKey& mypk) "1. \"zkey\" (string, required) The zkey (see z_exportkey)\n" "2. rescan (string, optional, default=\"whenkeyisnew\") Rescan the wallet for transactions - can be \"yes\", \"no\" or \"whenkeyisnew\"\n" "3. startHeight (numeric, optional, default=0) Block height to start rescan from\n" - "\nNote: This call can take minutes to complete if rescan is true.\n" + "\nNote: This call can take a long time to complete if rescan is true.\n" "\nExamples:\n" "\nExport a zkey\n" + HelpExampleCli("z_exportkey", "\"myaddress\"") + @@ -841,7 +841,7 @@ UniValue z_importviewingkey(const UniValue& params, bool fHelp, const CPubKey& m "2. rescan (string, optional, default=\"whenkeyisnew\") Rescan the wallet for transactions - can be \"yes\", \"no\" or \"whenkeyisnew\"\n" "3. startHeight (numeric, optional, default=0) Block height to start rescan from\n" "4. zaddr (string, optional, default=\"\") zaddr in case of importing viewing key for Sapling\n" - "\nNote: This call can take minutes to complete if rescan is true.\n" + "\nNote: This call can take a long time to complete if rescan is true.\n" "\nExamples:\n" "\nImport a viewing key\n" + HelpExampleCli("z_importviewingkey", "\"vkey\"") + From bfe907cb103723570559e6f02e36fc5213c266e4 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 15:09:11 -0400 Subject: [PATCH 11/16] Bump proto version --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index fde7afc4b..3c8f28347 100644 --- a/src/version.h +++ b/src/version.h @@ -21,7 +21,7 @@ #define HUSH_VERSION_H // network protocol versioning -static const int PROTOCOL_VERSION = 1987422; +static const int PROTOCOL_VERSION = 1987423; //! initial proto version, to be increased after version/verack negotiation static const int INIT_PROTO_VERSION = 209; //! In this version, 'getheaders' was introduced. From ab769257e07a61d91902294344c84849dc2963e6 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 15:09:19 -0400 Subject: [PATCH 12/16] Add copyright --- autogen.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/autogen.sh b/autogen.sh index 3e26a1830..6932fae53 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,4 +1,7 @@ #!/bin/sh +# Copyright (c) 2016-2021 The Hush developers +# Distributed under the GPLv3 software license, see the accompanying +# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html set -e srcdir="$(dirname $0)" cd "$srcdir" From 10a6706e712157728f1e8f8e85f95f1d92602118 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 15:11:36 -0400 Subject: [PATCH 13/16] Bump version to 3.8.0 --- configure.ac | 4 ++-- src/clientversion.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 526ad358d..35da30d2a 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 3) -define(_CLIENT_VERSION_MINOR, 7) -define(_CLIENT_VERSION_REVISION, 1) +define(_CLIENT_VERSION_MINOR, 8) +define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_BUILD, 50) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) diff --git a/src/clientversion.h b/src/clientversion.h index a7e850e7c..375f82690 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -29,8 +29,8 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it // Must be kept in sync with configure.ac , ugh! #define CLIENT_VERSION_MAJOR 3 -#define CLIENT_VERSION_MINOR 7 -#define CLIENT_VERSION_REVISION 1 +#define CLIENT_VERSION_MINOR 8 +#define CLIENT_VERSION_REVISION 0 #define CLIENT_VERSION_BUILD 50 //! Set to true for release, false for prerelease or test build From f9c4da812261e7f7c96947a7d458424e90d4ace3 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 15:25:48 -0400 Subject: [PATCH 14/16] Add release notes for 3.8.0 --- doc/man/hush-cli.1 | 6 +++--- doc/man/hush-tx.1 | 6 +++--- doc/man/hushd.1 | 15 ++++++++++++--- doc/relnotes/README.md | 15 +++++++++++++++ 4 files changed, 33 insertions(+), 9 deletions(-) diff --git a/doc/man/hush-cli.1 b/doc/man/hush-cli.1 index 63d05ac06..668b3c4a7 100644 --- a/doc/man/hush-cli.1 +++ b/doc/man/hush-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH HUSH-CLI "1" "April 2021" "hush-cli v3.7.1" "User Commands" +.TH HUSH-CLI "1" "July 2021" "hush-cli v3.8.0" "User Commands" .SH NAME -hush-cli \- manual page for hush-cli v3.7.1 +hush-cli \- manual page for hush-cli v3.8.0 .SH DESCRIPTION -Hush RPC client version v3.7.1\-2da07fe58\-dirty +Hush RPC client version v3.8.0\-10a6706e7\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . diff --git a/doc/man/hush-tx.1 b/doc/man/hush-tx.1 index 37c17b9b4..5c07d059a 100644 --- a/doc/man/hush-tx.1 +++ b/doc/man/hush-tx.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH HUSH-TX "1" "April 2021" "hush-tx v3.7.1" "User Commands" +.TH HUSH-TX "1" "July 2021" "hush-tx v3.8.0" "User Commands" .SH NAME -hush-tx \- manual page for hush-tx v3.7.1 +hush-tx \- manual page for hush-tx v3.8.0 .SH DESCRIPTION -hush\-tx utility version v3.7.1\-2da07fe58\-dirty +hush\-tx utility version v3.8.0\-10a6706e7\-dirty .SS "Usage:" .TP hush\-tx [options] [commands] diff --git a/doc/man/hushd.1 b/doc/man/hushd.1 index 23959cf1b..e73677110 100644 --- a/doc/man/hushd.1 +++ b/doc/man/hushd.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH HUSHD "1" "April 2021" "hushd v3.7.1" "User Commands" +.TH HUSHD "1" "July 2021" "hushd v3.8.0" "User Commands" .SH NAME -hushd \- manual page for hushd v3.7.1 +hushd \- manual page for hushd v3.8.0 .SH DESCRIPTION -Hush Daemon version v3.7.1\-2da07fe58\-dirty +Hush Daemon version v3.8.0\-10a6706e7\-dirty .PP In order to ensure you are adequately protecting your privacy when using Hush, please see . @@ -341,10 +341,19 @@ Minimum fee (in HUSH/kB) to allow for OP_RETURN transactions (default: .IP Fee (in HUSH/kB) to add to transactions you send (default: 0.00) .HP +\fB\-keepnotewitnesscache\fR +.IP +Keep partial Sapling Note Witness cache. Must be used with \fB\-rescanheight\fR +to find missing cache items. +.HP \fB\-rescan\fR .IP Rescan the block chain for missing wallet transactions on startup .HP +\fB\-rescanheight\fR +.IP +Rescan from specified height when rescan=1 on startup +.HP \fB\-salvagewallet\fR .IP Attempt to recover private keys from a corrupt wallet.dat on startup diff --git a/doc/relnotes/README.md b/doc/relnotes/README.md index 002b23513..e70343f31 100644 --- a/doc/relnotes/README.md +++ b/doc/relnotes/README.md @@ -10,6 +10,21 @@ 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". + * `-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 + # Hush 3.7.1 "Neologistic Nautilus" ``` From 4249e155afb4ab86814ad0cdaf86d21d47bf5f09 Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 15:31:40 -0400 Subject: [PATCH 15/16] More relnotery --- doc/relnotes/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/relnotes/README.md b/doc/relnotes/README.md index e70343f31..71a50dee5 100644 --- a/doc/relnotes/README.md +++ b/doc/relnotes/README.md @@ -20,10 +20,19 @@ This is an OPTIONAL release, but since it contains many privacy improvements, it * 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 # Hush 3.7.1 "Neologistic Nautilus" From be7e4ea94c93cc6d9bec8db540768a812a5c635a Mon Sep 17 00:00:00 2001 From: Duke Leto Date: Fri, 9 Jul 2021 16:00:53 -0400 Subject: [PATCH 16/16] More relnotes is good relnotes --- doc/relnotes/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/relnotes/README.md b/doc/relnotes/README.md index 71a50dee5..529063a8e 100644 --- a/doc/relnotes/README.md +++ b/doc/relnotes/README.md @@ -33,6 +33,8 @@ This is an OPTIONAL release, but since it contains many privacy improvements, it * `-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 # Hush 3.7.1 "Neologistic Nautilus"