Compare commits

...

103 Commits

Author SHA1 Message Date
Duke
5184b4483f Update release process 2023-02-11 19:30:56 -05:00
Duke
f271e60e58 Update release process 2023-02-11 19:29:39 -05:00
Duke
4a2361cdf6 Merge branch 'dev' 2023-02-11 19:27:47 -05:00
Duke
bec27a85e5 Update relnotes 2023-02-11 19:23:55 -05:00
Duke
94500a6e39 Reduce stderr spam 2023-02-10 11:27:11 -05:00
Duke
47c67e45db checkpoints 2023-02-09 18:22:57 -05:00
Duke
a07bf16b20 Merge branch 'dev' of https://git.hush.is/hush/hush3 into dev 2023-02-09 18:06:14 -05:00
Duke
e033a2e6eb Update copyrights to 2023 2023-02-09 18:06:03 -05:00
duke
606eb3dcce Update 'doc/release-process.md' 2023-02-09 23:05:44 +00:00
Duke
2c083978e0 update manpages 2023-02-09 17:27:25 -05:00
Duke
1313d39a71 Merge branch 'dev' of https://git.hush.is/hush/hush3 into dev 2023-02-09 17:17:05 -05:00
Duke
2c9bd5dd18 abortrescan 2023-02-09 17:17:00 -05:00
duke
76f2f67da4 Update 'doc/release-process.md' 2023-02-09 22:10:25 +00:00
Duke
be90d0e324 Merge branch 'dev' of https://git.hush.is/hush/hush3 into dev 2023-02-09 13:54:03 -08:00
Duke
537307a812 Bump version and protocol version 2023-02-09 13:53:55 -08:00
duke
e598db4f79 Update 'README.md' 2023-02-09 21:48:40 +00:00
Duke
b360a2395a Allow abortrescan to be called via RPC 2023-02-09 13:45:45 -08:00
Duke
890d218180 Merge branch 'dev' of https://git.hush.is/hush/hush3 into dev 2023-02-09 13:43:23 -08:00
Duke
2f8e5f8144 bump year 2023-02-09 13:43:17 -08:00
duke
07505e311d Merge pull request 'correct ac_supply documented default' (#236) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/236
2023-02-09 21:16:00 +00:00
duke
bb9d1fcd32 Update 'doc/relnotes/README.md' 2023-02-09 12:32:55 +00:00
duke
0eba871a6a Update 'doc/release-process.md' 2023-02-09 11:49:45 +00:00
duke
b29dfa0c93 Update 'doc/relnotes/README.md' 2023-02-09 11:25:38 +00:00
onryo
9f90de2404 add more seeds 2023-02-08 19:17:54 +01:00
fekt
64d601047b Fix for wind0ze cross-compile 2023-02-06 01:18:18 -05:00
Duke
a7939139b2 Merge remote-tracking branch 'origin/abortrescan' into dev
Conflicts:
	src/wallet/wallet.cpp
2023-02-05 18:16:36 -08:00
Duke
9977e12acf Merge branch 'dragonx' into dev 2023-02-05 18:08:40 -08:00
duke
b6fc8b0149 Merge pull request 'BIP155 (addrv2)' (#253) from bip155 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/253
2023-01-28 16:46:54 +00:00
Duke
0d79d11a95 Use Tor v3 .onion in qa tests 2023-01-28 08:44:36 -08:00
onryo
2f8a138cce add torv3 seed 2023-01-20 13:42:24 +01:00
jahway603
fc27972beb added i2p seed and wtfistheinternet seed 2023-01-19 19:12:06 -05:00
Duke
9519e3a6cd Merge branch 'bip155' of https://git.hush.is/hush/hush3 into bip155 2023-01-18 23:24:38 -05:00
Duke
d5e9ef763d Prevent coredump when -proxy=... -externalip=... is used
Replace an assert() in Unserialize() with the actual behavior we want,
i.e. making sure that vRandom is empty. Before the assert() was added,
the code called Clear() which ensured vRandom was empty. Clear() was
changed to the assert() in BTC commit b138973a8b4bbe061ad97011f278a21e08ea79e6
to prevent recursive locks but risks crashing the node. Instead, we
just empty out vRandom.

The addition of EXCLUSIVE_LOCKS_REQUIRED is not needed to fix
this but seems prudent since Serialize() has it and the original code
from BTC has EXCLUSIVE_LOCKS_REQUIRED on all the methods of this class.

As a side note, crashing a full node with an assert() and possibly
corrupting the wallet.dat, block files and other data is REALLY
FUCKING DUMB. Instead, code should be written to prevent the
possibility of crashing or throw an exception with a useful error.
2023-01-18 23:02:41 -05:00
duke
26064b4bf8 Update 'contrib/seeds/README.md'
Note that links to the files will not work until this is merged to master
2023-01-17 13:58:24 +00:00
duke
0ebb4c70c7 Update 'contrib/seeds/README.md' 2023-01-17 13:53:44 +00:00
duke
76b8de6b70 Update 'contrib/seeds/README.md' 2023-01-17 13:53:29 +00:00
Duke
176a9e1c7a Add 'make seeds' to make it easy to add seeds 2023-01-17 08:01:14 -05:00
Duke
6f8bce9b3a Fix bug where setban banned a node for 0 seconds 2023-01-12 23:59:11 -05:00
Duke
9d2277c697 Add tor v3 seed 2023-01-12 23:58:13 -05:00
zanzibar
512da314a5 BIP155 (addrv2)
Tor v3 + i2p
2023-01-06 15:23:22 +00:00
duke
fe9f1ef9e4 Merge pull request 'Remove alerts' (#252) from noalert into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/252
2022-12-20 14:25:41 +00:00
Duke
da5ae526e7 Fix compile issue 2022-12-18 13:51:50 -08:00
Duke
ae64eb2392 Remove alerts 2022-12-18 08:24:49 -08:00
Duke Leto
01ff5c81f6 Improve some comments and ensure backcompat on HUSH mainnet
Some comments turned out to be wrong and some could be more helpful.
It turns out that when AveragingWindowTimespan was changed to fix a HUSH
mainnet bug long ago, that introduced a bug for HSC's that do not use
a 75s block time. Since the default is 60s that likely means all HSC's that will
be created. There were no production HSC's in use at the time of that bugfix,
so the bug went unnoticed until DRAGONX was launched. The bug then manifested
as the DRAGONX difficulty bug, which cause the difficulty to never correct down,
only up and lead to extremely long block times on DRAGONX mainnet.

This code change ensures that HUSH mainnet uses the same hardcoded AWT as it
did previously and all other HSC's will use params.AveragingWindowTimespan() ,
including DRAGONX mainnet.

This seems less dangerous than changing AveragingWindowTimespan() on HUSH mainnet.
2022-12-06 14:23:53 -05:00
duke
4257b257df Merge pull request 'rm hashFinalSproutRoot' (#250) from onryo/hush3:dev into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/250
2022-12-04 17:05:50 +00:00
onryo
f2f6019620 rm hashFinalSproutRoot
related to https://git.hush.is/hush/hush3/issues/248
2022-12-04 13:57:07 +00:00
Duke Leto
1b7f200d29 Fix typo in getsnapshot docs 2022-12-01 14:55:53 -05:00
Duke Leto
b7adb511a6 cleanup 2022-11-15 19:13:31 -05:00
Duke Leto
665f895134 Optimize inner mining loop 2022-11-15 14:40:10 -05:00
Duke Leto
c8b2163c1c Optimize inner mining loop 2022-11-15 14:21:45 -05:00
Duke Leto
1a4e8d4acf Initialize randomx dataset with 2 threads 2022-11-15 14:11:55 -05:00
Duke Leto
c55d1cbc5f Destroy randomx VM when we are done with it 2022-11-15 14:02:02 -05:00
Duke Leto
d3b948005c indentation 2022-11-15 13:44:47 -05:00
Duke Leto
3dbe8d3c6b indentation 2022-11-15 13:43:10 -05:00
Duke Leto
0926dfca75 Merge branch 'duke' into awt 2022-11-12 09:25:36 -05:00
Duke Leto
81f0c7755e Code to test exact cause of the 'up only' diff bug 2022-11-12 09:22:10 -05:00
Jonathan "Duke" Leto
fcfe09d196 chainActive.Tip() can be NULL if have never synced to a chain tip before, so use chainActive.Height() instead 2022-11-12 04:17:35 -08:00
Jonathan "Duke" Leto
ca52c6beb8 Avoid potential coredump if pindex is NULL 2022-11-11 04:26:18 -08:00
Duke Leto
c108db8f3c Speed up randomx hashing by ~60X per core
These code changes move various randomx setup code out of the inner mining loop,
which significantly increases hashrate. Currently seeing ~60 hashes/second/core
on a Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz.

This code may have memory leaks, it does not destroy the randomx VM since it was
causing coredumps. It also seems to use more memory, I am only able to mine on 2
cores with 16GB of RAM. Using more cores runs out of memory.
2022-11-11 06:42:51 -05:00
Duke Leto
b94ec80307 Use RANDOMX_FLAG_FULL_MEM 2022-11-10 22:38:04 -05:00
Duke Leto
c81b49c96c fix params for testcoins 2022-11-08 09:55:46 -05:00
Duke Leto
24dc8252a3 Add scripts to research randomx difficulty problems 2022-11-08 09:29:05 -05:00
Duke Leto
591b9e4c7d Merge branch 'dev' into duke 2022-11-08 09:17:00 -05:00
Duke Leto
5aea752337 Fix compiler warnings 2022-11-08 09:16:27 -05:00
Duke Leto
6eccab3e98 Add missing newline in rxdebug and add debugging about solutionTargetChecks 2022-11-08 09:07:49 -05:00
jahway603
d5871b2090 correct ac_supply documented default 2022-11-06 21:02:33 -05:00
jahway603
d2001b1ee0 Merge pull request 'dragonx scripts: removed hardcoded bash location for better platform support' (#234) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/234
2022-11-06 20:42:23 +00:00
jahway603
cba21e8f2a removed hardcoded bash location for better platform support 2022-11-06 15:14:46 -05:00
Duke Leto
db2fe16b0e Merge pull request 'dragonx scripts' (#233) from hydra/hush3:dev into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/233
2022-11-06 12:04:12 +00:00
hydra
3499aad7cd Update 'src/dragonxd' 2022-11-06 11:59:39 +00:00
hydra
ac2a68aa86 update seednode ip 2022-11-06 11:59:20 +00:00
Duke Leto
98ca257908 Merge pull request 'document -maxreorg argument' (#231) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/231
2022-11-01 21:05:06 +00:00
jahway603
202e67f9ac document -maxreorg argument 2022-11-01 14:25:12 -04:00
Hydra
7f37974e28 dragonxd 2022-11-01 11:32:35 -04:00
Hydra
0e2f0f8ffe dragonx-cli 2022-11-01 10:29:35 -04:00
Hydra
4a534ceb3f delete 2022-11-01 10:28:37 -04:00
hydra
bfb51e1c34 dragonx-cli 2022-11-01 14:16:18 +00:00
Duke Leto
17e6fd25c0 Merge pull request 'added smartz to build.sh and document -maxdebugfilesize' (#230) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/230
2022-11-01 12:37:03 +00:00
triplefive
70908b1009 document -maxdebugfilesize 2022-10-31 16:13:21 -04:00
triplefive
491e263af9 added smartz to build.sh 2022-10-31 15:19:35 -04:00
Jonathan "Duke" Leto
ef461fd639 Merge remote-tracking branch 'origin/master' into dev 2022-10-31 05:34:30 -07:00
Duke Leto
bfc91e0f78 Merge pull request 'Mac changes' (#227) from dev-mac into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/227
2022-10-29 11:49:51 +00:00
fekt
66411537dd Mac fix for HSCs 2022-10-28 19:03:44 -04:00
Duke Leto
c36464ee1b Fix bug in getrescaninfo
There was a small bug in getrescaninfo where when a rescan first starts, it
shows rescanning=true but progress=100% because rescanHeight was not initialized
correctly.

Also update our rescanHeight while we are fast-forwarding thru blocks which are
before the current wallet birthday.
2022-10-28 17:09:40 -04:00
fekt
f4927fa54a OSX deployment script and bg 2022-10-28 01:17:22 -04:00
fekt
a5bcfc88b6 Mac build fix 2022-10-28 00:56:40 -04:00
fekt
24788c7dfe Build RandomX 2022-10-28 00:37:18 -04:00
fekt
7914b63861 Upstream change for OSX 2022-10-28 00:36:19 -04:00
fekt
e313676562 Mac build fixes 2022-10-27 16:49:02 -04:00
Duke Leto
6fda12612d Initial implementation of abortrescan 2022-10-19 05:12:12 -04:00
Duke Leto
29ec7b5fb6 Set rescanStartHeight before we lock cs_main + cs_wallet 2022-10-17 07:13:50 -04:00
Duke Leto
71923e3ffb Initial implementation of getrescaninfo 2022-10-17 07:03:32 -04:00
Duke Leto
c049575357 Merge pull request 'added -ac_randomx_interval and -ac_randomx_lag to hushd --help' (#219) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/219
2022-10-04 21:58:10 +00:00
jahway603
30a1921e26 added -ac_randomx_interval and -ac_randomx_lag to hushd --help 2022-10-04 13:39:41 -04:00
Duke Leto
0cb343d508 Merge pull request 're-fixing spacing in manpages' (#217) from jahway603 into dev
Reviewed-on: https://git.hush.is/hush/hush3/pulls/217
2022-09-29 12:39:46 +00:00
jahway603
e8e0cb93b9 fixed manpage copyright spacing issue 2022-09-29 00:34:41 -04:00
jahway603
64e8d05214 fixed an update script 2022-09-29 00:29:28 -04:00
jahway603
870ed35fb5 Merge remote-tracking branch 'origin/dev' into jahway603 2022-09-29 00:20:34 -04:00
Jonathan "Duke" Leto
2c99fdb43d Add placeholder in relnotes for next release and add note in release process docs 2022-09-28 05:19:36 -07:00
jahway603
23d4a2cb73 re-fixing spacing in manpages 2022-09-27 22:27:54 -04:00
Jonathan "Duke" Leto
8dbfe6eb13 Add copyright 2022-09-27 18:23:39 -07:00
Jonathan "Duke" Leto
4d89566f8e This needs to be documented better 2022-09-27 06:09:58 -07:00
Duke Leto
fae0a21257 Add more details to release process 2022-09-27 08:34:42 -04:00
816 changed files with 9882 additions and 3625 deletions

View File

@ -1,4 +1,4 @@
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
FROM ubuntu:16.04

View File

@ -1,4 +1,4 @@
# Copyright 2016-2022 The Hush developers
# Copyright 2016-2023 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
@ -247,6 +247,9 @@ DISTCHECK_CONFIGURE_FLAGS = --enable-man
clean-local:
rm -rf test_bitcoin.coverage/ total.coverage/
seeds:
./contrib/seeds/generate-seeds.py contrib/seeds > src/chainparamsseeds.h
manpages:
./util/gen-manpages.sh
@echo "Please review the man pages changes to see if they look correct, then commit and push"

View File

@ -42,9 +42,11 @@ Please refer to the instructions which apply to you below:
If you have an older wallet, then refer to [OLD_WALLETS.md](OLD_WALLETS.md).
### Official Explorer
### Official Explorers
The link for the Official Hush explorer is: [explorer.hush.is](https://explorer.hush.is)
The links for the Official Hush explorers:
* [explorer.hush.is](https://explorer.hush.is)
* [explorer.hush.land](https://explorer.hush.land)
We are looking for alternate explorers to be run on Tor, i2P and other TLDs, if you are interested
please join Telegram and ask questions.

View File

@ -1,5 +1,5 @@
#!/bin/sh
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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

View File

@ -1,7 +1,19 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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 -eu -o pipefail
./util/build.sh --disable-tests $@
# run correct build script for detected OS
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
./util/build.sh --disable-tests $@
elif [[ "$OSTYPE" == "darwin"* ]]; then
./util/build-mac.sh --disable-tests $@
elif [[ "$OSTYPE" == "msys"* ]]; then
./util/build-win.sh --disable-tests $@
#elif [[ "$OSTYPE" == "freebsd"* ]]; then
# placeholder
else
echo "Unable to detect your OS. What are you using?"
fi

View File

@ -1,13 +1,14 @@
dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 3)
dnl Must be kept in sync with src/clientversion.h , ugh!
define(_CLIENT_VERSION_MINOR, 9)
define(_CLIENT_VERSION_REVISION, 2)
define(_CLIENT_VERSION_REVISION, 3)
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)))
define(_CLIENT_VERSION_IS_RELEASE, true)
define(_COPYRIGHT_YEAR, 2021)
define(_COPYRIGHT_YEAR, 2023)
AC_INIT([Hush],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://git.hush.is/hush/hush3],[hush])
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
@ -221,6 +222,29 @@ if test "x$CXXFLAGS_overridden" = "xno"; then
AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
fi
TEMP_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="$CXXFLAGS $SSE42_CXXFLAGS"
AC_MSG_CHECKING(for assembler crc32 support)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdint.h>
#if defined(_MSC_VER)
#include <intrin.h>
#elif defined(__GNUC__) && defined(__SSE4_2__)
#include <nmmintrin.h>
#endif
]],[[
uint64_t l = 0;
l = _mm_crc32_u8(l, 0);
l = _mm_crc32_u32(l, 0);
l = _mm_crc32_u64(l, 0);
return l;
]])],
[ AC_MSG_RESULT(yes); enable_hwcrc32=yes],
[ AC_MSG_RESULT(no)]
)
CXXFLAGS="$TEMP_CXXFLAGS"
CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
AC_ARG_WITH([utils],
@ -241,6 +265,16 @@ AC_ARG_WITH([daemon],
[build_bitcoind=$withval],
[build_bitcoind=yes])
GCC_TARGET=`$CC -dumpmachine 2>&1`
case $GCC_TARGET in
arm*-*-*)
have_arm=true
;;
aarch64*-*-*)
have_arm=true
;;
esac
use_pkgconfig=yes
case $host in
*mingw*)
@ -709,7 +743,7 @@ fi
# These packages don't provide pkgconfig config files across all
# platforms, so we use older autoconf detection mechanisms:
AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
#AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
@ -815,6 +849,7 @@ AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
AM_CONDITIONAL([ARCH_ARM], [test x$have_arm = xtrue])
AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])

View File

@ -1,5 +1,5 @@
#!/usr/bin/env perl
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
use warnings;

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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

View File

@ -1,5 +1,5 @@
#!/usr/bin/env perl
# Copyright 2019-2022 The Hush developers
# Copyright 2019-2023 The Hush developers
# Released under the GPLv3
use warnings;
use strict;

View File

@ -1,5 +1,5 @@
#!/usr/bin/env perl
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
use strict;

View File

@ -1,5 +1,5 @@
#!/usr/bin/env perl
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
use strict;

View File

@ -1,5 +1,5 @@
#!/usr/bin/env perl
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
use warnings;
use strict;

View File

@ -35,12 +35,6 @@ pre-start script
echo
echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
echo
echo "It is also recommended that you also set alertnotify so you are "
echo "notified of problems:"
echo
echo "ie: alertnotify=echo %%s | mail -s \"Hush Alert\"" \
"admin@foo.com"
echo
exit 1
fi

View File

@ -81,11 +81,6 @@ checkconfig()
eerror ""
eerror "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'"
eerror ""
eerror "It is also recommended that you also set alertnotify so you are "
eerror "notified of problems:"
eerror ""
eerror "ie: alertnotify=echo %%s | mail -s \"Hush Alert\"" \
"admin@foo.com"
eerror ""
return 1
fi

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -0,0 +1,136 @@
#!/bin/bash
# by Andy Maloney
# http://asmaloney.com/2013/07/howto/packaging-a-mac-os-x-application-using-a-dmg/
# make sure we are in the correct dir when we double-click a .command file
dir=${0%/*}
if [ -d "$dir" ]; then
cd "$dir"
fi
# set up your app name, version number, and background image file name
APP_NAME="SilentDragon"
VERSION="1.3.0"
DMG_BACKGROUND_IMG="SDBackground.png"
# you should not need to change these
APP_EXE="${APP_NAME}.app/Contents/MacOS/${APP_NAME}"
VOL_NAME="${APP_NAME} ${VERSION}" # volume name will be "SilentDragon 1.3.0"
DMG_TMP="${VOL_NAME}-temp.dmg"
DMG_FINAL="${VOL_NAME}.dmg" # final DMG name will be "SilentDragon 1.3.0.dmg"
STAGING_DIR="./Install" # we copy all our stuff into this dir
# Check the background image DPI and convert it if it isn't 72x72
_BACKGROUND_IMAGE_DPI_H=`sips -g dpiHeight ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'`
_BACKGROUND_IMAGE_DPI_W=`sips -g dpiWidth ${DMG_BACKGROUND_IMG} | grep -Eo '[0-9]+\.[0-9]+'`
if [ $(echo " $_BACKGROUND_IMAGE_DPI_H != 72.0 " | bc) -eq 1 -o $(echo " $_BACKGROUND_IMAGE_DPI_W != 72.0 " | bc) -eq 1 ]; then
echo "WARNING: The background image's DPI is not 72. This will result in distorted backgrounds on Mac OS X 10.7+."
echo " I will convert it to 72 DPI for you."
_DMG_BACKGROUND_TMP="${DMG_BACKGROUND_IMG%.*}"_dpifix."${DMG_BACKGROUND_IMG##*.}"
sips -s dpiWidth 72 -s dpiHeight 72 ${DMG_BACKGROUND_IMG} --out ${_DMG_BACKGROUND_TMP}
DMG_BACKGROUND_IMG="${_DMG_BACKGROUND_TMP}"
fi
# clear out any old data
rm -rf "${STAGING_DIR}" "${DMG_TMP}" "${DMG_FINAL}"
# copy over the stuff we want in the final disk image to our staging dir
mkdir -p "${STAGING_DIR}"
cp -rpf "${APP_NAME}.app" "${STAGING_DIR}"
# ... cp anything else you want in the DMG - documentation, etc.
pushd "${STAGING_DIR}"
# strip the executable
echo "Stripping ${APP_EXE}..."
strip -u -r "${APP_EXE}"
# compress the executable if we have upx in PATH
# UPX: http://upx.sourceforge.net/
if hash upx 2>/dev/null; then
echo "Compressing (UPX) ${APP_EXE}..."
upx -9 "${APP_EXE}"
fi
# ... perform any other stripping/compressing of libs and executables
popd
# figure out how big our DMG needs to be
# assumes our contents are at least 1M!
SIZE=`du -sh "${STAGING_DIR}" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'`
SIZE=`echo "${SIZE} + 1.0" | bc | awk '{print int($1+0.5)}'`
if [ $? -ne 0 ]; then
echo "Error: Cannot compute size of staging dir"
exit
fi
# create the temp DMG file
hdiutil create -srcfolder "${STAGING_DIR}" -volname "${VOL_NAME}" -fs HFS+ \
-fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "${DMG_TMP}"
echo "Created DMG: ${DMG_TMP}"
# mount it and save the device
DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP}" | \
egrep '^/dev/' | sed 1q | awk '{print $1}')
sleep 2
# add a link to the Applications dir
echo "Add link to /Applications"
pushd /Volumes/"${VOL_NAME}"
ln -s /Applications
popd
# add a background image
mkdir /Volumes/"${VOL_NAME}"/.background
cp "${DMG_BACKGROUND_IMG}" /Volumes/"${VOL_NAME}"/.background/
# tell the Finder to resize the window, set the background,
# change the icon size, place the icons in the right position, etc.
echo '
tell application "Finder"
tell disk "'${VOL_NAME}'"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {400, 100, 920, 440}
set viewOptions to the icon view options of container window
set arrangement of viewOptions to not arranged
set icon size of viewOptions to 72
set background picture of viewOptions to file ".background:'${DMG_BACKGROUND_IMG}'"
set position of item "'${APP_NAME}'.app" of container window to {160, 205}
set position of item "Applications" of container window to {360, 205}
close
open
update without registering applications
delay 2
end tell
end tell
' | osascript
sync
# unmount it
hdiutil detach "${DEVICE}"
# now make the final image a compressed disk image
echo "Creating compressed image"
hdiutil convert "${DMG_TMP}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FINAL}"
# clean up
rm -rf "${DMG_TMP}"
rm -rf "${STAGING_DIR}"
echo 'Done.'
exit

View File

@ -1,5 +1,5 @@
#!/usr/bin/perl
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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

View File

@ -1,8 +1,10 @@
### Seeds ###
# Seeds
Utility to generate the seeds.txt list that is compiled into the client
(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
(see [src/chainparamsseeds.h](hush/hush3/src/branch/master/src/chainparamsseeds.h) and other utilities in [contrib/seeds](hush/hush3/src/branch/master/contrib/seeds/)).
## Updating seeds
Update [contrib/seeds/nodes_main.txt](hush/hush3/src/branch/master/contrib/seeds/nodes_main.txt) and run `make seeds` in the root directory of this repo to update [src/chainparamsseeds.h](hush/hush3/src/branch/master/src/chainparamsseeds.h) then commit the result.
The 512 seeds compiled into the 0.10 release were created from sipa's DNS seed data, like this:
curl -s http://bitcoin.sipa.be/seeds.txt | makeseeds.py

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python
# Copyright (c) 2014 Wladimir J. van der Laan
#!/usr/bin/env python3
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014-2021 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
'''
@ -11,45 +12,63 @@ argument:
nodes_main.txt
nodes_test.txt
These files must consist of lines in the format
These files must consist of lines in the format
<ip>
<ip>:<port>
[<ipv6>]
<ip>
[<ipv6>]:<port>
[<ipv6>]
<onion>.onion:<port>
<onion>.onion
0xDDBBCCAA (IPv4 little-endian old pnSeeds format)
<i2p>.b32.i2p:<port>
<i2p>.b32.i2p
The output will be two data structures with the peers in binary format:
static SeedSpec6 pnSeed6_main[]={
...
}
static SeedSpec6 pnSeed6_test[]={
static const uint8_t chainparams_seed_{main,test}[]={
...
}
These should be pasted into `src/chainparamsseeds.h`.
To update the generated code :
./contrib/seeds/generate-seeds.py contrib/seeds > src/chainparamsseeds.h
'''
from __future__ import print_function, division
from base64 import b32decode
from binascii import a2b_hex
import sys, os
from enum import Enum
import struct
import sys
import os
import re
# ipv4 in ipv6 prefix
pchIPv4 = bytearray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff])
# tor-specific ipv6 prefix
pchOnionCat = bytearray([0xFD,0x87,0xD8,0x7E,0xEB,0x43])
class BIP155Network(Enum):
IPV4 = 1
IPV6 = 2
TORV2 = 3 # no longer supported
TORV3 = 4
I2P = 5
CJDNS = 6
def name_to_ipv6(addr):
if len(addr)>6 and addr.endswith('.onion'):
def name_to_bip155(addr):
'''Convert address string to BIP155 (networkID, addr) tuple.'''
if addr.endswith('.onion'):
vchAddr = b32decode(addr[0:-6], True)
if len(vchAddr) != 16-len(pchOnionCat):
raise ValueError('Invalid onion %s' % s)
return pchOnionCat + vchAddr
if len(vchAddr) == 35:
assert vchAddr[34] == 3
return (BIP155Network.TORV3, vchAddr[:32])
elif len(vchAddr) == 10:
return (BIP155Network.TORV2, vchAddr)
else:
raise ValueError('Invalid onion %s' % vchAddr)
elif addr.endswith('.b32.i2p'):
vchAddr = b32decode(addr[0:-8] + '====', True)
if len(vchAddr) == 32:
return (BIP155Network.I2P, vchAddr)
else:
raise ValueError(f'Invalid I2P {vchAddr}')
elif '.' in addr: # IPv4
return pchIPv4 + bytearray((int(x) for x in addr.split('.')))
return (BIP155Network.IPV4, bytes((int(x) for x in addr.split('.'))))
elif ':' in addr: # IPv6
sub = [[], []] # prefix, suffix
x = 0
@ -66,14 +85,13 @@ def name_to_ipv6(addr):
sub[x].append(val & 0xff)
nullbytes = 16 - len(sub[0]) - len(sub[1])
assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
return bytearray(sub[0] + ([0] * nullbytes) + sub[1])
elif addr.startswith('0x'): # IPv4-in-little-endian
return pchIPv4 + bytearray(reversed(a2b_hex(addr[2:])))
return (BIP155Network.IPV6, bytes(sub[0] + ([0] * nullbytes) + sub[1]))
else:
raise ValueError('Could not parse address %s' % addr)
def parse_spec(s, defaultport):
match = re.match('\[([0-9a-fA-F:]+)\](?::([0-9]+))?$', s)
def parse_spec(s):
'''Convert endpoint string to BIP155 (networkID, addr, port) tuple.'''
match = re.match(r'\[([0-9a-fA-F:]+)\](?::([0-9]+))?$', s)
if match: # ipv6
host = match.group(1)
port = match.group(2)
@ -84,17 +102,42 @@ def parse_spec(s, defaultport):
(host,_,port) = s.partition(':')
if not port:
port = defaultport
port = 0
else:
port = int(port)
host = name_to_ipv6(host)
host = name_to_bip155(host)
return (host,port)
if host[0] == BIP155Network.TORV2:
return None # TORV2 is no longer supported, so we ignore it
else:
return host + (port, )
def process_nodes(g, f, structname, defaultport):
g.write('static SeedSpec6 %s[] = {\n' % structname)
first = True
def ser_compact_size(l):
r = b""
if l < 253:
r = struct.pack("B", l)
elif l < 0x10000:
r = struct.pack("<BH", 253, l)
elif l < 0x100000000:
r = struct.pack("<BI", 254, l)
else:
r = struct.pack("<BQ", 255, l)
return r
def bip155_serialize(spec):
'''
Serialize (networkID, addr, port) tuple to BIP155 binary format.
'''
r = b""
r += struct.pack('B', spec[0].value)
r += ser_compact_size(len(spec[1]))
r += spec[1]
r += struct.pack('>H', spec[2])
return r
def process_nodes(g, f, structname):
g.write('static const uint8_t %s[] = {\n' % structname)
for line in f:
comment = line.find('#')
if comment != -1:
@ -102,37 +145,39 @@ def process_nodes(g, f, structname, defaultport):
line = line.strip()
if not line:
continue
if not first:
g.write(',\n')
first = False
(host,port) = parse_spec(line, defaultport)
hoststr = ','.join(('0x%02x' % b) for b in host)
g.write(' {{%s}, %i}' % (hoststr, port))
g.write('\n};\n')
spec = parse_spec(line)
if spec is None: # ignore this entry (e.g. no longer supported addresses like TORV2)
continue
blob = bip155_serialize(spec)
hoststr = ','.join(('0x%02x' % b) for b in blob)
g.write(f' {hoststr}, // {line}\n')
g.write('};\n')
def main():
if len(sys.argv)<2:
print(('Usage: %s <path_to_nodes_txt>' % sys.argv[0]), file=sys.stderr)
exit(1)
sys.exit(1)
g = sys.stdout
indir = sys.argv[1]
g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
g.write('/**\n')
g.write(' * List of fixed seed nodes for the bitcoin network\n')
g.write(' * AUTOGENERATED by contrib/seeds/generate-seeds.py\n')
g.write(' *\n')
g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
g.write(' */\n')
with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_main', 8233)
g.write('// Copyright (c) 2016-2023 The Hush developers\n')
g.write('// Distributed under the GPLv3 software license, see the accompanying\n')
g.write('// file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html\n')
g.write('// THIS FILE IS AUTOGENERATED, DO NOT MODIFY DIRECTLY\n')
g.write('// Instead, update contrib/seeds/nodes_main.txt then run\n')
g.write('// ./contrib/seeds/generate-seeds.py contrib/seeds > src/chainparamsseeds.h\n')
g.write('// OR run: make seeds\n')
g.write('#ifndef HUSH_CHAINPARAMSSEEDS_H\n')
g.write('#define HUSH_CHAINPARAMSSEEDS_H\n')
g.write('// List of fixed seed nodes for the Hush network\n')
g.write('// Each line contains a BIP155 serialized address.\n')
g.write('//\n')
with open(os.path.join(indir,'nodes_main.txt'), 'r', encoding="utf8") as f:
process_nodes(g, f, 'chainparams_seed_main')
g.write('\n')
with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
process_nodes(g, f, 'pnSeed6_test', 18233)
g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
with open(os.path.join(indir,'nodes_test.txt'), 'r', encoding="utf8") as f:
process_nodes(g, f, 'chainparams_seed_test')
g.write('#endif // HUSH_CHAINPARAMSSEEDS_H\n')
if __name__ == '__main__':
main()

View File

@ -1,6 +1,32 @@
185.25.48.236:27485
185.25.48.236:27487
185.64.105.111:27485
185.64.105.111:27487
185.25.48.72:27485
185.25.48.72:27487
# node1.hush.land
185.241.61.43
# node2.hush.land
87.251.76.166
# node3.hush.land
45.82.68.233
# node4.hush.land
87.251.76.33
# node2.hush.is
137.74.4.198
# lite.hushpool.is
149.28.102.219
# wtfistheinternet.hush.is
107.174.70.251
# torv3
56wqzfj6mhxgsv3h3nh3pdocguogxfxud55libqjhjsdh5alfsko2iqd.onion
hushv3h6mbxd2pptj42reko3jcexcgnz5zvp3mqcu6myto3jhhn4yzyd.onion
hushv3xvheqh42ms3ld2nh555muscietkib7gycb7s4psbrjsysfywqd.onion
# ipv6
2a0c:b641:6f1:34::2
2a0c:b641:6f1:c::2
# i2p
iljqq7nnmw2ij2ezl334cerwwmgzmmbmoc3n4saditd2xhi3xohq.b32.i2p

View File

@ -1,11 +1,5 @@
# List of fixed seed nodes for testnet
# note: File must be non-empty to compile
1.2.3.4
# Onion nodes
thfsmmn2jbitcoin.onion
it2pj4f7657g3rhi.onion
nkf5e6b7pl4jfd4a.onion
4zhkir2ofl7orfom.onion
t6xj6wilh4ytvcs7.onion
i6y6ivorwakd7nw3.onion
ubqj4rsu3nqtxmtp.onion

View File

@ -1,5 +1,5 @@
#!/bin/sh
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
INPUT=$(</dev/stdin)

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
if ! [[ "$2" =~ [git@]?[www.]?hush.is[:|/]bitcoin/bitcoin[.git]? ]]; then

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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

View File

@ -1,4 +1,4 @@
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
define int_vars

View File

@ -8,7 +8,7 @@ darwin_CXX=g++-8 -target $(host) -mmacosx-version-min=$(OSX_MIN_VERSION) --sysro
darwin_CFLAGS=-pipe
darwin_CXXFLAGS=$(darwin_CFLAGS)
darwin_release_CFLAGS=-O3
darwin_release_CFLAGS=-O1
darwin_release_CXXFLAGS=$(darwin_release_CFLAGS)
darwin_debug_CFLAGS=-O1

View File

@ -9,12 +9,11 @@ $(package)_git_commit=42ba95387cdfd67399f7aac52fddb8d6e1258ee6
$(package)_dependencies=
$(package)_config_opts=--enable-cxx --disable-shared
else ifeq ($(build_os),darwin)
$(package)_download_path=https://git.hush.is/duke/$(package)/archive
$(package)_file_name=$(package)-$($(package)_git_commit).tar.gz
$(package)_download_file=$($(package)_git_commit).tar.gz
$(package)_sha256_hash=59b2c2b5d58fdf5943bfde1fa709e9eb53e7e072c9699d28dc1c2cbb3c8cc32c
$(package)_git_commit=aece03c7b6967f91f3efdac8c673f55adff53ab1
$(package)_dependencies=
$(package)_version=6.1.1
$(package)_download_path=https://git.hush.is/attachments
$(package)_file_name=d613c855-cd92-4efb-b893-658496852019
$(package)_download_file=d613c855-cd92-4efb-b893-658496852019
$(package)_sha256_hash=a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6
$(package)_config_opts=--enable-cxx --disable-shared
else
$(package)_version=6.1.1

161
doc/i2p.md Normal file
View File

@ -0,0 +1,161 @@
# I2P support in Hush
It is possible to run a Hush or HSC full node as an
[I2P (Invisible Internet Project)](https://en.wikipedia.org/wiki/I2P)
service and connect to such services.
This [glossary](https://geti2p.net/en/about/glossary) may be useful to get
started with I2P terminology.
## Run with an I2P router (proxy)
A running I2P router (proxy) with [SAM](https://geti2p.net/en/docs/api/samv3)
enabled is required. Options include:
- [i2prouter (I2P Router)](https://geti2p.net), the official implementation in
Java
- [i2pd (I2P Daemon)](https://github.com/PurpleI2P/i2pd)
([documentation](https://i2pd.readthedocs.io/en/latest)), a lighter
alternative in C++ (successfully tested with version 2.23 and up; version 2.36
or later recommended)
- [i2p-zero](https://github.com/i2p-zero/i2p-zero)
- [other alternatives](https://en.wikipedia.org/wiki/I2P#Routers)
Note the IP address and port the SAM proxy is listening to; usually, it is
`127.0.0.1:7656`.
Once an I2P router with SAM enabled is up and running, use the following
configuration options:
```
-i2psam=<ip:port>
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
none)
-i2pacceptincoming
If set and -i2psam is also set then incoming I2P connections are
accepted via the SAM proxy. If this is not set but -i2psam is set
then only outgoing connections will be made to the I2P network.
Ignored if -i2psam is not set. Listening for incoming I2P
connections is done through the SAM proxy, not by binding to a
local address and port (default: 1)
```
In a typical situation, this suffices:
```
hushd -i2psam=127.0.0.1:7656
```
The first time hushd connects to the I2P router, if
`-i2pacceptincoming=1`, then it will automatically generate a persistent I2P
address and its corresponding private key. The private key will be saved in a
file named `i2p_private_key` in the Hush data directory. The persistent
I2P address is used for accepting incoming connections and for making outgoing
connections if `-i2pacceptincoming=1`. If `-i2pacceptincoming=0` then only
outbound I2P connections are made and a different transient I2P address is used
for each connection to improve privacy.
## Persistent vs transient I2P addresses
In I2P connections, the connection receiver sees the I2P address of the
connection initiator. This is unlike the Tor network where the recipient does
not know who is connecting to them and can't tell if two connections are from
the same peer or not.
If an I2P node is not accepting incoming connections, then Hush uses
random, one-time, transient I2P addresses for itself for outbound connections
to make it harder to discriminate, fingerprint or analyze it based on its I2P
address.
## Additional configuration options related to I2P
```
-debug=i2p
```
Set the `debug=i2p` config logging option to see additional information in the
debug log about your I2P configuration and connections. Run `hush-cli help
logging` for more information.
```
-onlynet=i2p
```
Make automatic outbound connections only to I2P addresses. Inbound and manual
connections are not affected by this option. It can be specified multiple times
to allow multiple networks, e.g. onlynet=onion, onlynet=i2p.
I2P support was added to Hush in version 3.9.3 and there may be fewer I2P
peers than Tor or IP ones. Therefore, using I2P alone without other networks may
make a node more susceptible to [Sybil
attacks](https://en.bitcoin.it/wiki/Weaknesses#Sybil_attack). You can use
`hush-cli -addrinfo` to see the number of I2P addresses known to your node.
Another consideration with `onlynet=i2p` is that the initial blocks download
phase when syncing up a new node can be very slow. This phase can be sped up by
using other networks, for instance `onlynet=onion`, at the same time.
In general, a node can be run with both onion and I2P hidden services (or
any/all of IPv4/IPv6/onion/I2P/CJDNS), which can provide a potential fallback if
one of the networks has issues.
## I2P-related information
There are several ways to see your I2P address if accepting
incoming I2P connections (`-i2pacceptincoming`):
- in the "Local addresses" output of CLI `-netinfo`
- in the "localaddresses" output of RPC `getnetworkinfo`
- in the debug log (grep for `AddLocal`; the I2P address ends in `.b32.i2p`)
To see which I2P peers your node is connected to, use `hush-cli -netinfo 4`
or the `getpeerinfo` RPC (e.g. `hush-cli getpeerinfo`).
To see which I2P addresses your node knows, use the `getnodeaddresses 0 i2p`
RPC.
## Compatibility
Hush uses the [SAM v3.1](https://geti2p.net/en/docs/api/samv3) protocol
to connect to the I2P network. Any I2P router that supports it can be used.
## Ports in I2P and Hush
Hush uses the [SAM v3.1](https://geti2p.net/en/docs/api/samv3)
protocol. One particularity of SAM v3.1 is that it does not support ports,
unlike newer versions of SAM (v3.2 and up) that do support them and default the
port numbers to 0. From the point of view of peers that use newer versions of
SAM or other protocols that support ports, a SAM v3.1 peer is connecting to them
on port 0, from source port 0.
To allow future upgrades to newer versions of SAM, Hush sets its
listening port to 0 when listening for incoming I2P connections and advertises
its own I2P address with port 0. Furthermore, it will not attempt to connect to
I2P addresses with a non-zero port number because with SAM v3.1 the destination
port (`TO_PORT`) is always set to 0 and is not in the control of Hush.
## Bandwidth
I2P routers may route a large amount of general network traffic with their
default settings. Check your router's configuration to limit the amount of this
traffic relayed, if desired.
With `i2pd`, the amount of bandwidth being shared with the wider network can be
adjusted with the `bandwidth`, `share` and `transittunnels` options in your
`i2pd.conf` file. For example, to limit total I2P traffic to 256KB/s and share
50% of this limit for a maximum of 20 transit tunnels:
```
bandwidth = 256
share = 50
[limits]
transittunnels = 20
```
If you prefer not to relay any public I2P traffic and only permit I2P traffic
from programs which are connecting via the SAM proxy, e.g. Hush, you
can set the `notransit` option to `true`.
Similar bandwidth configuration options for the Java I2P router can be found in
`http://127.0.0.1:7657/config` under the "Bandwidth" tab.

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH HUSH-CLI "1" "September 2022" "hush-cli v3.9.2" "User Commands"
.TH HUSH-CLI "1" "February 2023" "hush-cli v3.9.3" "User Commands"
.SH NAME
hush-cli \- manual page for hush-cli v3.9.2
hush-cli \- manual page for hush-cli v3.9.3
.SH DESCRIPTION
Hush RPC client version v3.9.2\-54cfe1099
Hush RPC client version v3.9.3\-1313d39a7
.PP
In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://hush.is/security/>.
@ -38,8 +38,8 @@ Use the test network
\fB\-regtest\fR
.IP
Enter regression test mode, which uses a special chain in which blocks
can be solved instantly. This is intended for regression testing tools
and app development.
can be solved instantly. This is intended for regression testing
tools and app development.
.HP
\fB\-rpcconnect=\fR<ip>
.IP
@ -75,9 +75,12 @@ Read extra arguments from standard input, one per line until EOF/Ctrl\-D
In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://hush.is/security/>.
Copyright (C) 2016-2022 Duke Leto and The Hush Developers
Copyright (C) 2016-2023 Duke Leto and The Hush Developers
Copyright (C) 2016-2020 jl777 and SuperNET developers
Copyright (C) 2016-2018 The Zcash developers
Copyright (C) 2009-2014 The Bitcoin Core developers
This is experimental Free Software! Fuck Yeah!!!!!

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH HUSH-TX "1" "September 2022" "hush-tx v3.9.2" "User Commands"
.TH HUSH-TX "1" "February 2023" "hush-tx v3.9.3" "User Commands"
.SH NAME
hush-tx \- manual page for hush-tx v3.9.2
hush-tx \- manual page for hush-tx v3.9.3
.SH DESCRIPTION
hush\-tx utility version v3.9.2\-54cfe1099
hush\-tx utility version v3.9.3\-1313d39a7
.SS "Usage:"
.TP
hush\-tx [options] <hex\-tx> [commands]
@ -72,7 +72,8 @@ sign=HEIGHT:SIGHASH\-FLAGS
.IP
Add zero or more signatures to transaction. This command requires JSON
registers:prevtxs=JSON object, privatekeys=JSON object. See
signrawtransaction docs for format of sighash flags, JSON objects.
signrawtransaction docs for format of sighash flags, JSON
objects.
.PP
Register Commands:
.IP
@ -88,9 +89,12 @@ Set register NAME to given JSON\-STRING
In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://hush.is/security/>.
Copyright (C) 2016-2022 Duke Leto and The Hush Developers
Copyright (C) 2016-2023 Duke Leto and The Hush Developers
Copyright (C) 2016-2020 jl777 and SuperNET developers
Copyright (C) 2016-2018 The Zcash developers
Copyright (C) 2009-2014 The Bitcoin Core developers
This is experimental Free Software! Fuck Yeah!!!!!

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
.TH HUSHD "1" "September 2022" "hushd v3.9.2" "User Commands"
.TH HUSHD "1" "February 2023" "hushd v3.9.3" "User Commands"
.SH NAME
hushd \- manual page for hushd v3.9.2
hushd \- manual page for hushd v3.9.3
.SH DESCRIPTION
Hush Daemon version v3.9.2\-54cfe1099
Hush Daemon version v3.9.3\-1313d39a7
.PP
In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://hush.is/security/>.
@ -17,11 +17,6 @@ Start a Hush Daemon
.IP
This help message
.HP
\fB\-alertnotify=\fR<cmd>
.IP
Execute command when a relevant alert is received or we see a really
long fork (%s in cmd is replaced by message)
.HP
\fB\-blocknotify=\fR<cmd>
.IP
Execute command when the best block changes (%s in cmd is replaced by
@ -63,14 +58,23 @@ Set database cache size in megabytes (4 to 16384, default: 512)
.IP
Imports blocks from external blk000??.dat file on startup
.HP
\fB\-maxdebugfilesize=\fR<n>
.IP
Set the max size of the debug.log file (default: 15)
.HP
\fB\-maxorphantx=\fR<n>
.IP
Keep at most <n> unconnectable transactions in memory (default: 100)
.HP
\fB\-maxreorg=\fR<n>
.IP
Specify the maximum length of a blockchain re\-organization
.HP
\fB\-mempooltxinputlimit=\fR<n>
.IP
[DEPRECATED/IGNORED] Set the maximum number of transparent inputs in a
transaction that the mempool will accept (default: 0 = no limit applied)
transaction that the mempool will accept (default: 0 = no limit
applied)
.HP
\fB\-par=\fR<n>
.IP
@ -89,10 +93,10 @@ transaction id)
\fB\-prune=\fR<n>
.IP
Reduce storage requirements by pruning (deleting) old blocks. This mode
disables wallet support and is incompatible with \fB\-txindex\fR. Warning:
Reverting this setting requires re\-downloading the entire blockchain.
(default: 0 = disable pruning blocks, >550 = target size in MiB to use
for block files)
disables wallet support and is incompatible with \fB\-txindex\fR.
Warning: Reverting this setting requires re\-downloading the
entire blockchain. (default: 0 = disable pruning blocks, >550 =
target size in MiB to use for block files)
.HP
\fB\-reindex\fR
.IP
@ -142,8 +146,8 @@ Add a node to connect to and attempt to keep the connection open
\fB\-asmap=\fR<file>
.IP
Specify ASN mapping used for bucketing of the peers (default:
asmap.dat). Relative paths will be prefixed by the net\-specific datadir
location.
asmap.dat). Relative paths will be prefixed by the net\-specific
datadir location.
.HP
\fB\-banscore=\fR<n>
.IP
@ -191,7 +195,7 @@ Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\
.HP
\fB\-listenonion\fR
.IP
Automatically create Tor hidden service (default: 0)
Automatically create Tor hidden service (default: 1)
.HP
\fB\-maxconnections=\fR<n>
.IP
@ -210,9 +214,36 @@ Maximum per\-connection send buffer, <n>*1000 bytes (default: 1000)
Use separate SOCKS5 proxy to reach peers via Tor hidden services
(default: \fB\-proxy\fR)
.HP
\fB\-nspv_msg\fR
.IP
Enable NSPV messages processing (default: true when \fB\-ac_private\fR=\fI\,1\/\fR,
otherwise false)
.HP
\fB\-i2psam=\fR<ip:port>
.IP
I2P SAM proxy to reach I2P peers and accept I2P connections (default:
none)
.HP
\fB\-i2pacceptincoming\fR
.IP
If set and \fB\-i2psam\fR is also set then incoming I2P connections are
accepted via the SAM proxy. If this is not set but \fB\-i2psam\fR is set
then only outgoing connections will be made to the I2P network.
Ignored if \fB\-i2psam\fR is not set. Listening for incoming I2P
connections is done through the SAM proxy, not by binding to a
local address and port (default: 1)
.HP
\fB\-onlynet=\fR<net>
.IP
Only connect to nodes in network <net> (ipv4, ipv6 or onion)
Only connect to nodes in network <net> (ipv4, ipv6, onion or i2p)
.HP
\fB\-disableipv4\fR
.IP
Disable Ipv4 network connections (default: 0)
.HP
\fB\-disableipv6\fR
.IP
Disable Ipv6 network connections (default: 0)
.HP
\fB\-permitbaremultisig\fR
.IP
@ -242,7 +273,7 @@ Connect to a node to retrieve peer addresses, and disconnect
.HP
\fB\-timeout=\fR<n>
.IP
Specify connection timeout in milliseconds (minimum: 1, default: 5000)
Specify connection timeout in milliseconds (minimum: 1, default: 60000)
.HP
\fB\-torcontrol=\fR<ip>:<port>
.IP
@ -287,9 +318,9 @@ Bind to given address and allowlist peers connecting to it. Use
\fB\-allowlist=\fR<netmask>
.IP
Allowlist peers connecting from the given netmask or IP address. Can be
specified multiple times. Allowlisted peers cannot be DoS banned and
their transactions are always relayed, even if they are already in the
mempool, useful e.g. for a gateway
specified multiple times. Allowlisted peers cannot be DoS banned
and their transactions are always relayed, even if they are
already in the mempool, useful e.g. for a gateway
.PP
Wallet options:
.HP
@ -430,29 +461,32 @@ by TxID)
\fB\-allowlistaddress=\fR<Raddress>
.IP
Enable the wallet filter for notary nodes and add one Raddress to the
allowlist of the wallet filter. If \fB\-allowlistaddress=\fR is used, then the
wallet filter is automatically activated. Several Raddresses can be
defined using several \fB\-allowlistaddress=\fR (similar to \fB\-addnode\fR). The
wallet filter will filter the utxo to only ones coming from my own
Raddress (derived from pubkey) and each Raddress defined using
\fB\-allowlistaddress=\fR this option is mostly for Notary Nodes).
allowlist of the wallet filter. If \fB\-allowlistaddress=\fR is used,
then the wallet filter is automatically activated. Several
Raddresses can be defined using several \fB\-allowlistaddress=\fR
(similar to \fB\-addnode\fR). The wallet filter will filter the utxo to
only ones coming from my own Raddress (derived from pubkey) and
each Raddress defined using \fB\-allowlistaddress=\fR this option is
mostly for Notary Nodes).
.HP
\fB\-zapwallettxes=\fR<mode>
.IP
Delete all wallet transactions and only recover those parts of the
blockchain through \fB\-rescan\fR on startup (1 = keep tx meta data e.g.
account owner and payment request information, 2 = drop tx meta data)
account owner and payment request information, 2 = drop tx meta
data)
.PP
Debugging/Testing options:
.HP
\fB\-debug=\fR<category>
.IP
Output debugging information (default: 0, supplying <category> is
optional). If <category> is not supplied or if <category> = 1, output
all debugging information. <category> can be: addrman, alert, bench,
coindb, db, deletetx, estimatefee, http, libevent, lock, mempool, net,
tls, partitioncheck, pow, proxy, prune, rand, randomx, reindex, rpc,
selectcoins, stratum, tor, zrpc, zrpcunsafe (implies zrpc).
optional). If <category> is not supplied or if <category> = 1,
output all debugging information. <category> can be: addrman,
bench, coindb, db, deletetx, estimatefee, http, libevent, lock,
mempool, net, tls, partitioncheck, pow, proxy, prune, rand,
randomx, reindex, rpc, selectcoins, stratum, tor, zrpc,
zrpcunsafe (implies zrpc).
.HP
\fB\-experimentalfeatures\fR
.IP
@ -550,8 +584,8 @@ Accept public REST requests (default: 0)
\fB\-rpcbind=\fR<addr>
.IP
Bind to given address to listen for JSON\-RPC connections. Use
[host]:port notation for IPv6. This option can be specified multiple
times (default: bind to all interfaces)
[host]:port notation for IPv6. This option can be specified
multiple times (default: bind to all interfaces)
.HP
\fB\-rpcuser=\fR<user>
.IP
@ -568,9 +602,9 @@ Listen for JSON\-RPC connections on <port> (default: 0 or testnet: 10000)
\fB\-rpcallowip=\fR<ip>
.IP
Allow JSON\-RPC connections from specified source. Valid for <ip> are a
single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0)
or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified
multiple times
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
option can be specified multiple times
.HP
\fB\-rpcthreads=\fR<n>
.IP
@ -606,8 +640,8 @@ Mining address to use when special address of 'x' is sent by miner
\fB\-stratumbind=\fR<ipaddr>
.IP
Bind to given address to listen for Stratum work requests. Use
[host]:port notation for IPv6. This option can be specified multiple
times (default: bind to all interfaces)
[host]:port notation for IPv6. This option can be specified
multiple times (default: bind to all interfaces)
.HP
\fB\-stratumport=\fR<port>
.IP
@ -617,9 +651,9 @@ Listen for Stratum work requests on <port> (default: 19031 or testnet:
\fB\-stratumallowip=\fR<ip>
.IP
Allow Stratum work requests from specified source. Valid for <ip> are a
single IP (e.g. 1.2.3.4), a network/netmask (e.g. 1.2.3.4/255.255.255.0)
or a network/CIDR (e.g. 1.2.3.4/24). This option can be specified
multiple times
single IP (e.g. 1.2.3.4), a network/netmask (e.g.
1.2.3.4/255.255.255.0) or a network/CIDR (e.g. 1.2.3.4/24). This
option can be specified multiple times
.PP
Hush Smart Chain options:
.HP
@ -700,6 +734,15 @@ Public key for receiving payments on the network
.IP
Transparent transactions only, default 0
.HP
\fB\-ac_randomx_interval\fR
.IP
Controls how often the RandomX key block will change, default is 1024
.HP
\fB\-ac_randomx_lag\fR
.IP
Sets the number of RandomX blocks to wait before updating the key block,
default is 64
.HP
\fB\-ac_reward\fR
.IP
Block reward in satoshis, default is 0
@ -714,7 +757,7 @@ P2SH/multisig address to receive founders rewards
.HP
\fB\-ac_supply\fR
.IP
Starting supply, default is 0
Starting supply, default is 10
.HP
\fB\-ac_txpow\fR
.IP
@ -724,9 +767,12 @@ Enforce transaction\-rate limit, default 0
In order to ensure you are adequately protecting your privacy when using Hush,
please see <https://hush.is/security/>.
Copyright (C) 2016-2022 Duke Leto and The Hush Developers
Copyright (C) 2016-2023 Duke Leto and The Hush Developers
Copyright (C) 2016-2020 jl777 and SuperNET developers
Copyright (C) 2016-2018 The Zcash developers
Copyright (C) 2009-2014 The Bitcoin Core developers
This is experimental Free Software! Fuck Yeah!!!!!

View File

@ -4,6 +4,8 @@
Beware of making high-risk changes (such as consensus changes, p2p layer changes and wallet/transaction changes) too close to a new release, because they will not get as much testing as they should. Don't merge large branches which haven't undergone lots of testing just before a release.
It is best to keep doc/relnotes/README.md up to date as changes and bug fixes are made. It's more work to summarize all changes and bugfixes just before the release.
## Check for changes on master that should be on dev
Often there are trivial changes made directly on master, such as documentation changes. In theory, no code changes should happen on master without being on dev first, but it's better to be safe than sorry. We want the dev branch which undergoes testing to be as close as possible to what the master branch will become, so we don't want to merge dev into master and just assume everything works. So it's best to merge the master branch into dev just before merging the dev branch into master.
@ -22,9 +24,12 @@ git diff dev...master # look at the set of changes which exist in master but no
If the last command has no output, congrats, there is nothing to do. If the last command has output, then you should merge master into dev:
```
git checkout master
git merge --no-ff dev # using the default commit message is fine
git push origin master
git checkout dev
git merge --no-ff master # using the default commit message is fine
git push
git merge master
git push origin dev
```
The `--no-ff` flag above makes sure to make a merge commit, no matter what, even if a "fast forward" could be done. For those in the future looking back, it's much better to see evidence of when branches were merged.
@ -41,6 +46,7 @@ Look for Git issues that should be fixed in the next release. Especially low-ris
* Does `PROTOCOL_VERSION` in src/version.h need to be increased?
* All releases with a consensus change should increase the value by 1
* All releases with a large change to the networking (P2P) layer should increase the value by 1
* This identifies a nodes protocol version to all other peers it connects to.
* Does `MIN_PEER_PROTO_VERSION` in src/version.h need to change?
* If it does, new nodes will not be able to talk to nodes with a version less than `MIN_PROTO_VERSION`
@ -54,7 +60,10 @@ Install deps on Linux:
apt-get install help2man debchange
## Release process
- If new seeds are being added or seeds are changing:
- Edit contrib/seeds/nodes_main.txt
- Run "make seeds"
- Commit the result
- Update version in configure.ac and src/clientversion.h to update the hushd version
- In src/clientversion.h you update `CLIENT_VERSION_*` variables. Usually you will just update `CLIENT_VERSION_REVISION`
- If there is a consensus change, it may be a good idea to update `CLIENT_VERSION_MINOR` or `CLIENT_VERSION_MAJOR`
@ -69,11 +78,10 @@ Install deps on Linux:
- Update checkpoints in src/chainparams.cpp via util/checkpoints.pl
- hushd must be running to run this script, since it uses hush-cli to get the data
- Look for line which says "END HUSH mainnet checkpoint data" near line 560 in chainparams.cpp , that is where checkpoint data ends
- Find the highest block height of data, let's call it HEIGHT
- Find the highest block height of checkpoint data, let's call it HEIGHT
- Run `./util/checkpoints.pl 1000 HEIGHT &> checkpoints.txt` to generate the latest checkpoint data
- To copy the new data from checkpoints.txt into the file, one way in Vim is to type ":r checkpoints.txt" which will read in a file and paste it as the current cursor
- You will see 3 lines of "stats" at the end of the output, you just pasted in the newest stats. Delete the old stats that should be the 3 lines under the current stats
- The script generates a comment "Generated at ...", that should be moved to the very beginning of the checkpoint data
- Make sure the new code compiles, commit and push
- Run `./util/checkpoints.pl help` to see some basic help
- By default it will generate checkpoints for every 1000 blocks, the "stride"
@ -87,7 +95,7 @@ Install deps on Linux:
- They only provide limited security, because they talk about the past, not future block heights.
- Try to generate checkpoints as close to the release as possible, so you can have a recent block height be protected.
- For instance, don't update checkpoints and then do a release a month later. You can always update checkpoint data again or multiple times
- Update copyright years (if applicable) with util/replace.pl
- Update copyright years if applicable. Example: `./util/update-copyrights.h 2022 2023`
- Update doc/relnotes/README.md
- To get the stats of file changes: `git diff --stat master...dev`
- Do a fresh clone and fresh sync with new checkpoints
@ -97,12 +105,18 @@ Install deps on Linux:
- The above command will not merge if "git pull" creates a merge conflict
- The above command will not push if there is a problem with merging dev
- Make Gitea release with git tag from master branch (make sure to merge dev in first)
- Make sure git tag starts with a `v` such as `v3.9.2`
- Use util/gen-linux-binary-release.sh to make a Linux release binary
- Upload Linux binary to Gitea release and add SHA256 sum
- Use util/build-debian-package.sh to make an x86 Debian package for the release
- Debian packages should be done after you make manpages, because those are included in Debian packages
- `lintian` is an optional dependency, it's not needed to build the .deb
- Upload .deb to Gitea release
- Add SHA256 checksum of .deb to release
- Use util/build-debian-package-ARM.sh (does this still work?) to make an ARM Debian package for the release
- Upload the debian packages to the Gitea release page, with SHA256 sums
- Figure out how to update https://faq.hush.is/rpc/ for new release
## Platform-specific notes
Use `./util/build-mac.sh` to compile on Apple/Mac systems, use `./util/build-win.sh` to build on Windows and `./util/build-arm.sh` to build on ARMv8 systems.
Use `./util/build-mac.sh` to compile on Apple/Mac systems, use `./util/build-win.sh` to build on Windows and `./util/build-arm.sh` to build on ARMv8 systems.

View File

@ -10,6 +10,29 @@ 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.9.3 "Lateral Larvacean"
```
1012 files changed, 36253 insertions(+), 5507 deletions(-)
```
This is an OPTIONAL release. It is recommended for exchanges, solo miners and mining pools to update to this release.
* Many RandomX mining fixes and improvements
* Difficulty bug affecting DRAGONX has been fixed
* RandomX mining hashrate increase of about 60X
* Optimized memory usage of RandomX mining
* This release adds Tor v3 and i2p support (BIP155 also known as addrv2)
* Basic usage is `hushd -proxy=127.0.0.1:9050` for using a local Tor proxy.
* Use port 9150 if you are using Tor Browser. See docs/tor.md for details
* New CLI args: `-i2psam=<ip:port>` and `-i2pacceptincoming` . See docs/i2p.md for more info
* Tor and i2p seeds have been added
* The format of peers.dat has changed. On first startup with this code there will be a short delay of a few minutes while new nodes are found and peers.dat is populated in it's new format.
* New RPCs:
* getrescaninfo - Says if the node is rescanning with additional info about progress
* abortrescan - stop rescanning if a node is currently rescanning
# Hush 3.9.2 "Anecdotal Axolotl"
```

View File

@ -1,154 +1,225 @@
# Warning
# Tor
Do not assume Tor support works perfectly in Hush; better Tor support is currently being worked on.
# Hush + Tor
It is possible to run Hush as a Tor hidden service, and connect to such services.
It is possible to run Hush as a Tor onion service, and connect to such services.
The following directions assume you have a Tor proxy running on port 9050. Many distributions default to having a SOCKS proxy listening on port 9050, but others may not. In particular, the Tor Browser Bundle defaults to listening on port 9150. See [Tor Project FAQ:TBBSocksPort](https://www.torproject.org/docs/faq.html.en#TBBSocksPort) for how to properly
configure Tor.
## Compatibility
1. Run Hush behind a Tor proxy
-------------------------------
- Starting with version 3.9.3, Hush only supports Tor version 3 hidden
services (Tor v3). Tor v2 addresses are ignored by Hush and neither
relayed nor stored.
The first step is running Hush behind a Tor proxy. This will already make all
outgoing connections be anonymized, but more is possible.
- Tor removed v2 support beginning with version 0.4.6.
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy
server will be used to try to reach .onion addresses as well.
## How to see information about your Tor configuration via Hush
-onion=ip:port Set the proxy server to use for Tor hidden services. You do not
need to set this if it's the same as -proxy. You can use -noonion
to explicitly disable access to hidden service.
There are several ways to see your local onion address in Hush:
- in the "Local addresses" output of CLI `-netinfo`
- in the "localaddresses" output of RPC `getnetworkinfo`
- in the debug log (grep for "AddLocal"; the Tor address ends in `.onion`)
-listen When using -proxy, listening is disabled by default. If you want
to run a hidden service (see next section), you'll need to enable
it explicitly.
You may set the `-debug=tor` config logging option to have additional
information in the debug log about your Tor configuration.
-connect=X When behind a Tor proxy, you can specify .onion addresses instead
-addnode=X of IP addresses or hostnames in these parameters. It requires
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with
other P2P nodes.
CLI `-addrinfo` returns the number of addresses known to your node per
network. This can be useful to see how many onion peers your node knows,
e.g. for `-onlynet=onion`.
To fetch a number of onion addresses that your node knows, for example seven
addresses, use the `getnodeaddresses 7 onion` RPC.
## 1. Run Hush behind a Tor proxy
The first step is running Hush behind a Tor proxy. This will already anonymize all
outgoing connections, but more is possible.
-proxy=ip:port Set the proxy server. If SOCKS5 is selected (default), this proxy
server will be used to try to reach .onion addresses as well.
You need to use -noonion or -onion=0 to explicitly disable
outbound access to onion services.
-onion=ip:port Set the proxy server to use for Tor onion services. You do not
need to set this if it's the same as -proxy. You can use -onion=0
to explicitly disable access to onion services.
------------------------------------------------------------------
Note: Only the -proxy option sets the proxy for DNS requests;
with -onion they will not route over Tor, so use -proxy if you
have privacy concerns.
------------------------------------------------------------------
-listen When using -proxy, listening is disabled by default. If you want
to manually configure an onion service (see section 3), you'll
need to enable it explicitly.
-connect=X When behind a Tor proxy, you can specify .onion addresses instead
-addnode=X of IP addresses or hostnames in these parameters. It requires
-seednode=X SOCKS5. In Tor mode, such addresses can also be exchanged with
other P2P nodes.
-onlynet=onion Make automatic outbound connections only to .onion addresses.
Inbound and manual connections are not affected by this option.
It can be specified multiple times to allow multiple networks,
e.g. onlynet=onion, onlynet=i2p, onlynet=cjdns.
In a typical situation, this suffices to run behind a Tor proxy:
./hushd -proxy=127.0.0.1:9050
./hushd -proxy=127.0.0.1:9050
If using the Tor Browser Bundle:
## 2. Automatically create a Hush onion service
./hushd -proxy=127.0.0.1:9150
Hush makes use of Tor's control socket API to create and destroy
ephemeral onion services programmatically. This means that if Tor is running and
proper authentication has been configured, Hush automatically creates an
onion service to listen on. The goal is to increase the number of available
onion nodes.
This feature is enabled by default if Hush is listening (`-listen`) and
it requires a Tor connection to work. It can be explicitly disabled with
`-listenonion=0`. If it is not disabled, it can be configured using the
`-torcontrol` and `-torpassword` settings.
To see verbose Tor information in the hushd debug log, pass `-debug=tor`.
### Control Port
You may need to set up the Tor Control Port. On Linux distributions there may be
some or all of the following settings in `/etc/tor/torrc`, generally commented
out by default (if not, add them):
```
ControlPort 9051
CookieAuthentication 1
CookieAuthFileGroupReadable 1
```
Add or uncomment those, save, and restart Tor (usually `systemctl restart tor`
or `sudo systemctl restart tor` on most systemd-based systems, including recent
Debian and Ubuntu, or just restart the computer).
On some systems (such as Arch Linux), you may also need to add the following
line:
```
DataDirectoryGroupReadable 1
```
### Authentication
Connecting to Tor's control socket API requires one of two authentication
methods to be configured: cookie authentication or hushd's `-torpassword`
configuration option.
#### Cookie authentication
For cookie authentication, the user running hushd must have read access to
the `CookieAuthFile` specified in the Tor configuration. In some cases this is
preconfigured and the creation of an onion service is automatic. Don't forget to
use the `-debug=tor` hushd configuration option to enable Tor debug logging.
If a permissions problem is seen in the debug log, e.g. `tor: Authentication
cookie /run/tor/control.authcookie could not be opened (check permissions)`, it
can be resolved by adding both the user running Tor and the user running
hushd to the same Tor group and setting permissions appropriately.
On Debian-derived systems, the Tor group will likely be `debian-tor` and one way
to verify could be to list the groups and grep for a "tor" group name:
```
getent group | cut -d: -f1 | grep -i tor
```
You can also check the group of the cookie file. On most Linux systems, the Tor
auth cookie will usually be `/run/tor/control.authcookie`:
```
TORGROUP=$(stat -c '%G' /run/tor/control.authcookie)
```
Once you have determined the `${TORGROUP}` and selected the `${USER}` that will
run hushd, run this as root:
```
usermod -a -G ${TORGROUP} ${USER}
```
Then restart the computer (or log out) and log in as the `${USER}` that will run
hushd.
#### `torpassword` authentication
For the `-torpassword=password` option, the password is the clear text form that
was used when generating the hashed password for the `HashedControlPassword`
option in the Tor configuration file.
The hashed password can be obtained with the command `tor --hash-password
password` (refer to the [Tor Dev
Manual](https://2019.www.torproject.org/docs/tor-manual.html.en) for more
details).
## 3. Manually create a Hush onion service
2. Run a Hush hidden server
----------------------------
You can also manually configure your node to be reachable from the Tor network.
Add these lines to your `/etc/tor/torrc` (or equivalent config file):
If you configure your Tor system accordingly, it is possible to make your node also
reachable from the Tor network. Add these lines to your /etc/tor/torrc (or equivalent
config file):
HiddenServiceDir /var/lib/tor/hush-service/
HiddenServicePort 18030 127.0.0.1:18032
HiddenServiceDir /var/lib/tor/hush-service/
HiddenServicePort 18030 127.0.0.1:18030
The directory can be different of course, but virtual port numbers should be equal to
your hushd's P2P listen port (18030 by default), and target addresses and ports
should be equal to binding address and port for inbound Tor connections (127.0.0.1:18032 by default).
The directory can be different of course, but (both) port numbers should be equal to
your hushd's P2P listen port (18030 by default).
-externalip=X You can tell hush about its publicly reachable addresses using
this option, and this can be an onion address. Given the above
configuration, you can find your onion address in
/var/lib/tor/hush-service/hostname. For connections
coming from unroutable addresses (such as 127.0.0.1, where the
Tor proxy typically runs), onion addresses are given
preference for your node to advertise itself with.
-externalip=X You can tell Hush about its publicly reachable address using
this option, and this can be a .onion address. Given the above
configuration, you can find your onion address in
/var/lib/tor/hush-service/hostname. Onion addresses are given
preference for your node to advertize itself with, for connections
coming from unroutable addresses (such as 127.0.0.1, where the
Tor proxy typically runs).
You can set multiple local addresses with -externalip. The
one that will be rumoured to a particular peer is the most
compatible one and also using heuristics, e.g. the address
with the most incoming connections, etc.
-listen You'll need to enable listening for incoming connections, as this
is off by default behind a proxy.
-listen You'll need to enable listening for incoming connections, as this
is off by default behind a proxy.
-discover When -externalip is specified, no attempt is made to discover local
IPv4 or IPv6 addresses. If you want to run a dual stack, reachable
from both Tor and IPv4 (or IPv6), you'll need to either pass your
other addresses using -externalip, or explicitly enable -discover.
Note that both addresses of a dual-stack system may be easily
linkable using traffic analysis.
-discover When -externalip is specified, no attempt is made to discover local
IPv4 or IPv6 addresses. If you want to run a dual stack, reachable
from both Tor and IPv4 (or IPv6), you'll need to either pass your
other addresses using -externalip, or explicitly enable -discover.
Note that both addresses of a dual-stack system may be easily
linkable using traffic analysis.
In a typical situation, where you're only reachable via Tor, this should suffice:
./hushd -proxy=127.0.0.1:9050 -externalip=hushc0de123.onion -listen
./hushd -proxy=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -listen
(obviously, replace the Onion address with your own). Currently only v2 HS's are supported.
It should be noted that you still listen on all devices and another node could establish a clearnet connection, when knowing
(obviously, replace the .onion address with your own). It should be noted that you still
listen on all devices and another node could establish a clearnet connection, when knowing
your address. To mitigate this, additionally bind the address of your Tor proxy:
./hushd ... -bind=127.0.0.1
./hushd ... -bind=127.0.0.1
If you don't care too much about hiding your node, and want to be reachable on IPv4
as well, use `discover` instead:
./hushd ... -discover
./hushd ... -discover
and open port 18030 on your firewall.
and open port 18030 on your firewall (or use port mapping, i.e., `-upnp` or `-natpmp`).
If you only want to use Tor to reach onion addresses, but not use it as a proxy
If you only want to use Tor to reach .onion addresses, but not use it as a proxy
for normal IPv4/IPv6 communication, use:
./hushd -onion=127.0.0.1:9050 -externalip=hushc0de123.onion -discover
./hushd -onion=127.0.0.1:9050 -externalip=7zvj7a2imdgkdbg4f2dryd5rgtrn7upivr5eeij4cicjh65pooxeshid.onion -discover
## 4. Privacy recommendations
3. Automatically listen on Tor
--------------------------------
Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket
API, to create and destroy 'ephemeral' hidden services programmatically.
Hush has been updated to make use of this.
This means that if Tor is running (and proper authentication has been configured),
Hush automatically creates a hidden service to listen on. Hush will also use Tor
automatically to connect to other .onion nodes if the control socket can be
successfully opened. This will positively affect the number of available .onion
nodes and their usage.
This new feature is enabled by default if Hush is listening (`-listen`), and
requires a Tor connection to work. It can be explicitly disabled with `-listenonion=0`
and, if not disabled, configured using the `-torcontrol` and `-torpassword` settings.
To show verbose debugging information, pass `-debug=tor`.
Connecting to Tor's control socket API requires one of two authentication methods to be
configured. For cookie authentication the user running hushd must have write access
to the `CookieAuthFile` specified in Tor configuration. In some cases this is
preconfigured and the creation of a hidden service is automatic. If permission problems
are seen with `-debug=tor` they can be resolved by adding both the user running tor and
the user running hushd to the same group and setting permissions appropriately. On
Debian-based systems the user running hushd can be added to the debian-tor group,
which has the appropriate permissions. An alternative authentication method is the use
of the `-torpassword` flag and a `hash-password` which can be enabled and specified in
Tor configuration.
4. Connect to a Hush hidden server
-----------------------------------
To test your set-up, you might want to try connecting via Tor on a different computer to just a
a single Hush hidden server. Launch hushd as follows:
./hushd -onion=127.0.0.1:9050 -connect=fuckzookoie6wxgio.onion
Now use hush-cli to verify there is only a single peer connection.
hush-cli getpeerinfo
[
{
"id" : 1,
"addr" : "zcashhoneypot.onion:18030",
...
"version" : 1987420,
"subver" : "/GoldenSandtrout:3.6.0/",
...
}
]
To connect to multiple Tor nodes, use:
./hushd -onion=127.0.0.1:9050 -addnode=hushbeef123.onion -dnsseed=0 -onlynet=onion
- Do not add anything but Hush ports to the onion service created in section 3.
If you run a web service too, create a new onion service for that.
Otherwise it is trivial to link them, which may reduce privacy. Onion
services created automatically (as in section 2) always have only one port
open.

View File

@ -1,5 +1,5 @@
#!/usr/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
# This script makes the neccesary transactions to migrate

View File

@ -1,4 +1,4 @@
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
import binascii

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2017 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Execute all of the automated tests related to Hush
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
# Execute all of the automated tests related to Hush

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
set -e -o pipefail

View File

@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
# This is a thin wrapper around bitcoin-cli that strips the Windows-style EOLs

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
# THIS FILE IS GENERATED FROM run-bitcoind-for-test.sh.in
# Copyright (c) 2013-2014 The Bitcoin Core developers
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
#
HUSH_LOAD_TIMEOUT=500

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
# THIS FILE IS GENERATED FROM tests-config.sh.in
# Copyright (c) 2013-2014 The Bitcoin Core developers
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
BUILDDIR="@abs_top_builddir@"

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2
# Copyright (c) 2014-2015 The Bitcoin Core developers
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
# Test addressindex generation and fetching

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Distributed under the GPLv3/X11 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
#

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 SuperNET developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2015 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2019 Duke Leto who wrote "The SuperNET developers" while never agreeing to the developer agreement nor being listed in AUTHORS
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python3
# Copyright (c) 2017 The Bitcoin Core developers
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
"""Test wallet file location."""

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2016 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
#
# Test hard fork detection

View File

@ -1,12 +1,10 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
#
# Test rpc http basics
#
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_equal, start_nodes
@ -97,7 +95,7 @@ class HTTPBasicsTest (BitcoinTestFramework):
conn.request('POST', '/', '{"method": "getbestblockhash"}', headers)
out1 = conn.getresponse().read()
assert_equal('"error":null' in out1, True)
assert_equal(conn.sock!=None, True) # connection must be closed because bitcoind should use keep-alive by default
assert_equal(conn.sock!=None, True) # connection must be closed because hushd should use keep-alive by default
if __name__ == '__main__':
HTTPBasicsTest().main()

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
#
# Distributed under the GPLv3/X11 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2019 Bartlomiej Lisiecki
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2017 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
#
# Distributed under the GPLv3/X11 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2017 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 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
import sys

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
#
# Distributed under the GPLv3/X11 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
@ -116,8 +116,8 @@ class TestNode(NodeConnCB):
class AcceptBlockTest(BitcoinTestFramework):
def add_options(self, parser):
parser.add_option("--testbinary", dest="testbinary",
default=os.getenv("BITCOIND", "bitcoind"),
help="bitcoind binary to test")
default=os.getenv("BITCOIND", "hushd"),
help="hushd binary to test")
def setup_chain(self):
initialize_chain_clean(self.options.tmpdir, 2)

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2017 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2015 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
@ -13,10 +13,10 @@ import os
'''
Test plan:
- Start bitcoind's with different proxy configurations
- Start hushd's with different proxy configurations
- Use addnode to initiate connections
- Verify that proxies are connected to, and the right connection command is given
- Proxy configurations to test on bitcoind side:
- Proxy configurations to test on hushd side:
- `-proxy` (proxy everything)
- `-onion` (proxy just onions)
- `-proxyrandomize` Circuit randomization
@ -26,8 +26,8 @@ Test plan:
- proxy on IPv6
- Create various proxies (as threads)
- Create bitcoinds that connect to them
- Manipulate the bitcoinds using addnode (onetry) an observe effects
- Create hushds that connect to them
- Manipulate the hushds using addnode (onetry) an observe effects
addnode connect to IPv4
addnode connect to IPv6
@ -78,7 +78,7 @@ class ProxyTest(BitcoinTestFramework):
node.addnode("15.61.23.23:1234", "onetry")
cmd = proxies[0].queue.get()
assert(isinstance(cmd, Socks5Command))
# Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
# Note: hushd's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, "15.61.23.23")
assert_equal(cmd.port, 1234)
@ -91,7 +91,7 @@ class ProxyTest(BitcoinTestFramework):
node.addnode("[1233:3432:2434:2343:3234:2345:6546:4534]:5443", "onetry")
cmd = proxies[1].queue.get()
assert(isinstance(cmd, Socks5Command))
# Note: bitcoind's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
# Note: hushd's SOCKS5 implementation only sends atyp DOMAINNAME, even if connecting directly to IPv4/IPv6
assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, "1233:3432:2434:2343:3234:2345:6546:4534")
assert_equal(cmd.port, 5443)
@ -102,24 +102,24 @@ class ProxyTest(BitcoinTestFramework):
if test_onion:
# Test: outgoing onion connection through node
node.addnode("bitcoinostk4e4re.onion:8333", "onetry")
node.addnode("hushv3h6mbxd2pptj42reko3jcexcgnz5zvp3mqcu6myto3jhhn4yzyd.onion:18030", "onetry")
cmd = proxies[2].queue.get()
assert(isinstance(cmd, Socks5Command))
assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, "bitcoinostk4e4re.onion")
assert_equal(cmd.port, 8333)
assert_equal(cmd.addr, "hushv3h6mbxd2pptj42reko3jcexcgnz5zvp3mqcu6myto3jhhn4yzyd.onion")
assert_equal(cmd.port, 18030)
if not auth:
assert_equal(cmd.username, None)
assert_equal(cmd.password, None)
rv.append(cmd)
# Test: outgoing DNS name connection through node
node.addnode("node.noumenon:8333", "onetry")
node.addnode("node.noumenon:18030", "onetry")
cmd = proxies[3].queue.get()
assert(isinstance(cmd, Socks5Command))
assert_equal(cmd.atyp, AddressType.DOMAINNAME)
assert_equal(cmd.addr, "node.noumenon")
assert_equal(cmd.port, 8333)
assert_equal(cmd.port, 18030)
if not auth:
assert_equal(cmd.username, None)
assert_equal(cmd.password, None)

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2
# Copyright (c) 2014 The Bitcoin Core developers
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Released under the GPLv3
#
# Test -reindex with CheckBlockIndex

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2018 The Zcash developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
# Copyright (c) 2014 The Bitcoin Core developers
# Distributed under the GPLv3 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

View File

@ -1,5 +1,5 @@
#!/usr/bin/env python2
# Copyright (c) 2016-2022 The Hush developers
# Copyright (c) 2016-2023 The Hush developers
#
# Distributed under the GPLv3/X11 software license, see the accompanying
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html

Some files were not shown because too many files have changed in this diff Show More