Merge branch 'dev' into lockzins
This commit is contained in:
2
COPYING
2
COPYING
@@ -1,4 +1,4 @@
|
|||||||
Copyright (c) 2018-2020 The Hush developers
|
Copyright (c) 2018-2025 The Hush developers
|
||||||
Copyright (c) 2009-2017 The Bitcoin Core developers
|
Copyright (c) 2009-2017 The Bitcoin Core developers
|
||||||
Copyright (c) 2009-2018 Bitcoin Developers
|
Copyright (c) 2009-2018 Bitcoin Developers
|
||||||
Copyright (c) 2016-2017 The Zcash developers
|
Copyright (c) 2016-2017 The Zcash developers
|
||||||
|
|||||||
@@ -19,8 +19,13 @@
|
|||||||
# wtfistheinternet.hush.is
|
# wtfistheinternet.hush.is
|
||||||
107.174.70.251
|
107.174.70.251
|
||||||
|
|
||||||
|
# arrakis.hush.is
|
||||||
|
178.250.189.141
|
||||||
|
|
||||||
# torv3
|
# torv3
|
||||||
b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion
|
b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion
|
||||||
|
dslbaa5gut5kapqtd44pbg65tpl5ydsamfy62hjbldhfsvk64qs57pyd.onion
|
||||||
|
vsqdumnh5khjbrzlxoeucbkiuaictdzyc3ezjpxpp2ph3gfwo2ptjmyd.onion
|
||||||
|
|
||||||
# ipv6
|
# ipv6
|
||||||
2a0c:b641:6f1:18e::2
|
2a0c:b641:6f1:18e::2
|
||||||
|
|||||||
52
doc/help.md
Normal file
52
doc/help.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# How To Fix Various Problems
|
||||||
|
|
||||||
|
This document will document how to recover and fix various issues that users may run into.
|
||||||
|
|
||||||
|
## Database corruption
|
||||||
|
|
||||||
|
The problem: You see an error like
|
||||||
|
|
||||||
|
```
|
||||||
|
EXCEPTION: 15dbwrapper_error
|
||||||
|
Database corrupted
|
||||||
|
```
|
||||||
|
|
||||||
|
This means your blockchain data on disk is corrupted. This is not the same as wallet corruption.
|
||||||
|
The fix to this is to do a fresh sync using the same wallet.dat file. You need to find
|
||||||
|
where this data lives on your computer and then move some files around, then restart the wallet.
|
||||||
|
|
||||||
|
### On Linux
|
||||||
|
|
||||||
|
If you are on Linux, your wallet lives at `~/.hush/HUSH3/wallet.dat` or if you have a really old
|
||||||
|
legacy wallet it could be at `~/.komodo/HUSH3/wallet.dat` . We will assume the first location.
|
||||||
|
|
||||||
|
What we will do is backup your entire `HUSH3` directory, including the blockchain data and wallet,
|
||||||
|
then copy the wallet from there into a new directory. This is a non-destructive process that creates
|
||||||
|
a new backup of your wallet.
|
||||||
|
|
||||||
|
```
|
||||||
|
# Make sure your node is not running before doing any of this!
|
||||||
|
# Doing this while your node is running could corrupt your wallet.dat
|
||||||
|
cd ~/.hush
|
||||||
|
mv HUSH3 HUSH3-backup # backup all data
|
||||||
|
mkdir HUSH3 # make a new dir
|
||||||
|
cp HUSH3-backup/wallet.dat HUSH3/wallet.dat # copy old wallet to new dir
|
||||||
|
```
|
||||||
|
|
||||||
|
At this point if you are GUI user using SilentDragon, you can restart the GUI wallet
|
||||||
|
and it should perform a fresh sync with your wallet. This will likely take at least
|
||||||
|
a few hours or much longer depending on your internet connection.
|
||||||
|
|
||||||
|
### On Windows
|
||||||
|
|
||||||
|
Basically you want to find where your Hush wallet is, move the directory that contains
|
||||||
|
that wallet.dat file to a new name, then create that same directory and then copy wallet.dat into it.
|
||||||
|
Different versions of Windows store things in different locations.
|
||||||
|
|
||||||
|
For example your wallet might be in `C:\Users\Admin\AppData\Roaming\Hush\HUSH3\wallet.dat` .
|
||||||
|
That means you need to
|
||||||
|
|
||||||
|
* Rename the directory `C:\Users\Admin\AppData\Roaming\Hush\HUSH3` to something like `C:\Users\Admin\AppData\Roaming\Hush\HUSH3-backup`
|
||||||
|
* Create a new directory called `C:\Users\Admin\AppData\Roaming\Hush\HUSH3`
|
||||||
|
* Copy the file `C:\Users\Admin\AppData\Roaming\Hush\HUSH3-backup\wallet.dat` to `C:\Users\Admin\AppData\Roaming\Hush\HUSH3`
|
||||||
|
* Now start the SilentDragon GUI wallet
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH HUSH-CLI "1" "February 2024" "hush-cli v3.10.2" "User Commands"
|
.TH HUSH-CLI "1" "July 2025" "hush-cli v3.10.4" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
hush-cli \- manual page for hush-cli v3.10.2
|
hush-cli \- manual page for hush-cli v3.10.4
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Hush RPC client version v3.10.2\-138cd7ab6
|
Hush RPC client version v3.10.4\-7e63e2f01\-dirty
|
||||||
.PP
|
.PP
|
||||||
In order to ensure you are adequately protecting your privacy when using Hush,
|
In order to ensure you are adequately protecting your privacy when using Hush,
|
||||||
please see <https://hush.is/security/>.
|
please see <https://hush.is/security/>.
|
||||||
@@ -75,7 +75,7 @@ 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,
|
In order to ensure you are adequately protecting your privacy when using Hush,
|
||||||
please see <https://hush.is/security/>.
|
please see <https://hush.is/security/>.
|
||||||
|
|
||||||
Copyright (C) 2016-2024 Duke Leto and The Hush Developers
|
Copyright (C) 2016-2025 Duke Leto and The Hush Developers
|
||||||
|
|
||||||
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH HUSH-TX "1" "February 2024" "hush-tx v3.10.2" "User Commands"
|
.TH HUSH-TX "1" "July 2025" "hush-tx v3.10.4" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
hush-tx \- manual page for hush-tx v3.10.2
|
hush-tx \- manual page for hush-tx v3.10.4
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
hush\-tx utility version v3.10.2\-138cd7ab6
|
hush\-tx utility version v3.10.4\-7e63e2f01\-dirty
|
||||||
.SS "Usage:"
|
.SS "Usage:"
|
||||||
.TP
|
.TP
|
||||||
hush\-tx [options] <hex\-tx> [commands]
|
hush\-tx [options] <hex\-tx> [commands]
|
||||||
@@ -89,7 +89,7 @@ Set register NAME to given JSON\-STRING
|
|||||||
In order to ensure you are adequately protecting your privacy when using Hush,
|
In order to ensure you are adequately protecting your privacy when using Hush,
|
||||||
please see <https://hush.is/security/>.
|
please see <https://hush.is/security/>.
|
||||||
|
|
||||||
Copyright (C) 2016-2024 Duke Leto and The Hush Developers
|
Copyright (C) 2016-2025 Duke Leto and The Hush Developers
|
||||||
|
|
||||||
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH HUSHD "1" "February 2024" "hushd v3.10.2" "User Commands"
|
.TH HUSHD "1" "July 2025" "hushd v3.10.4" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
hushd \- manual page for hushd v3.10.2
|
hushd \- manual page for hushd v3.10.4
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Hush Daemon version v3.10.2\-138cd7ab6
|
Hush Daemon version v3.10.4\-7e63e2f01\-dirty
|
||||||
.PP
|
.PP
|
||||||
In order to ensure you are adequately protecting your privacy when using Hush,
|
In order to ensure you are adequately protecting your privacy when using Hush,
|
||||||
please see <https://hush.is/security/>.
|
please see <https://hush.is/security/>.
|
||||||
@@ -78,7 +78,7 @@ applied)
|
|||||||
.HP
|
.HP
|
||||||
\fB\-par=\fR<n>
|
\fB\-par=\fR<n>
|
||||||
.IP
|
.IP
|
||||||
Set the number of script verification threads (\fB\-12\fR to 16, 0 = auto, <0 =
|
Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 =
|
||||||
leave that many cores free, default: 0)
|
leave that many cores free, default: 0)
|
||||||
.HP
|
.HP
|
||||||
\fB\-pid=\fR<file>
|
\fB\-pid=\fR<file>
|
||||||
@@ -245,6 +245,11 @@ Disable Ipv4 network connections (default: 0)
|
|||||||
.IP
|
.IP
|
||||||
Disable Ipv6 network connections (default: 0)
|
Disable Ipv6 network connections (default: 0)
|
||||||
.HP
|
.HP
|
||||||
|
\fB\-clearnet\fR
|
||||||
|
.IP
|
||||||
|
Enable clearnet connections. Setting to 0 will disable clearnet and use
|
||||||
|
sane defaults for Tor/i2p (default: 1)
|
||||||
|
.HP
|
||||||
\fB\-permitbaremultisig\fR
|
\fB\-permitbaremultisig\fR
|
||||||
.IP
|
.IP
|
||||||
Relay non\-P2SH multisig (default: 1)
|
Relay non\-P2SH multisig (default: 1)
|
||||||
@@ -395,11 +400,6 @@ Keep the last <n> transactions (default: 200)
|
|||||||
.IP
|
.IP
|
||||||
Keep transactions for at least <n> blocks (default: 10000)
|
Keep transactions for at least <n> blocks (default: 10000)
|
||||||
.HP
|
.HP
|
||||||
\fB\-opretmintxfee=\fR<amt>
|
|
||||||
.IP
|
|
||||||
Minimum fee (in HUSH/kB) to allow for OP_RETURN transactions (default:
|
|
||||||
400000)
|
|
||||||
.HP
|
|
||||||
\fB\-paytxfee=\fR<amt>
|
\fB\-paytxfee=\fR<amt>
|
||||||
.IP
|
.IP
|
||||||
Fee (in HUSH/kB) to add to transactions you send (default: 0.00)
|
Fee (in HUSH/kB) to add to transactions you send (default: 0.00)
|
||||||
@@ -674,6 +674,14 @@ Block time in seconds, default is 60
|
|||||||
.IP
|
.IP
|
||||||
BEAM integration
|
BEAM integration
|
||||||
.HP
|
.HP
|
||||||
|
\fB\-ac_burn\fR
|
||||||
|
.IP
|
||||||
|
Allow sending funds to the transparent burn address when \fB\-ac_private\fR=\fI\,1\/\fR
|
||||||
|
.HP
|
||||||
|
\fB\-ac_minopreturnfee\fR
|
||||||
|
.IP
|
||||||
|
OP_RETURN minimum fee per tx, regardless of tx size, default is 1 coin
|
||||||
|
.HP
|
||||||
\fB\-ac_coda\fR
|
\fB\-ac_coda\fR
|
||||||
.IP
|
.IP
|
||||||
CODA integration
|
CODA integration
|
||||||
@@ -751,7 +759,7 @@ Enforce transaction\-rate limit, default 0
|
|||||||
In order to ensure you are adequately protecting your privacy when using Hush,
|
In order to ensure you are adequately protecting your privacy when using Hush,
|
||||||
please see <https://hush.is/security/>.
|
please see <https://hush.is/security/>.
|
||||||
|
|
||||||
Copyright (C) 2016-2024 Duke Leto and The Hush Developers
|
Copyright (C) 2016-2025 Duke Leto and The Hush Developers
|
||||||
|
|
||||||
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
Copyright (C) 2016-2020 jl777 and SuperNET developers
|
||||||
|
|
||||||
|
|||||||
@@ -8,9 +8,18 @@ and now are officially part of our Git repo.
|
|||||||
Hush releases are on our own Gitea at <a href="https://git.hush.is/">git.hush.is</a>
|
Hush releases are on our own Gitea at <a href="https://git.hush.is/">git.hush.is</a>
|
||||||
and no longer on Github, since they banned Duke Leto and
|
and no longer on Github, since they banned Duke Leto and
|
||||||
also because they censor many people around the world and work with
|
also because they censor many people around the world and work with
|
||||||
evil organizations.
|
evil organizations. They also use all your "private" repos to train their AI.
|
||||||
|
|
||||||
# Hush 3.10.4 ""
|
# Hush 3.10.4 "Hazy Hākuturi"
|
||||||
|
|
||||||
|
This is an OPTIONAL but RECOMMENDED upgrade. Some seed nodes have changed so if you are having
|
||||||
|
problems finding nodes, you want to upgrade.
|
||||||
|
|
||||||
|
* `z_sendmany` changes:
|
||||||
|
* Now supports UTF8 strings as memos instead of requiring hex
|
||||||
|
* Give a memo as "utf8:this is my memo" and it will automatically be hex encoded
|
||||||
|
* New optional 5th argument to `z_sendmany` allows specifying an `OP_RETURN` for the transaction
|
||||||
|
* `OP_RETURN` can also be specified as a UTF8 string with 'utf8:' prefix or hex encoded
|
||||||
* Updated seed node list
|
* Updated seed node list
|
||||||
* New CLI option -clearnet=0 which disables clearnet networking, i.e. only Tor or i2p are allowed
|
* New CLI option -clearnet=0 which disables clearnet networking, i.e. only Tor or i2p are allowed
|
||||||
* Note that at least one of a Tor or i2p daemon are needed for -clearnet=0, both are not needed but supported
|
* Note that at least one of a Tor or i2p daemon are needed for -clearnet=0, both are not needed but supported
|
||||||
@@ -26,7 +35,10 @@ evil organizations.
|
|||||||
-onion="127.0.0.1:9050
|
-onion="127.0.0.1:9050
|
||||||
-i2psam="127.0.0.1:7656"
|
-i2psam="127.0.0.1:7656"
|
||||||
```
|
```
|
||||||
|
* Using -mineraddress with -clearnet=0 is disallowed since it would reduce privacy
|
||||||
* Add CLI options `-disableipv4` and `-disableipv6` which can be used to disable IPv4 or IPv6
|
* Add CLI options `-disableipv4` and `-disableipv6` which can be used to disable IPv4 or IPv6
|
||||||
|
* New HAC CLI consensus option `-ac_minopreturnfee`
|
||||||
|
* `OP_RETURN` minimum fee per tx, regardless of tx size, default is 1 coin, specified in puposhis
|
||||||
* Updated ASmap, which maps IP addresses to Autonomous System (AS) numbers
|
* Updated ASmap, which maps IP addresses to Autonomous System (AS) numbers
|
||||||
* Added ASmap health check, which logs stats about the ASmap once per 24 hours
|
* Added ASmap health check, which logs stats about the ASmap once per 24 hours
|
||||||
* Improved cjdns/i2p/tor docs
|
* Improved cjdns/i2p/tor docs
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ static int AppInitRPC(int argc, char* argv[])
|
|||||||
ParseParameters(argc, argv);
|
ParseParameters(argc, argv);
|
||||||
std:string name;
|
std:string name;
|
||||||
|
|
||||||
// default HSC is HUSH3 itself, which to the internals, is also an HSC
|
// default HAC is HUSH3 itself, which to the internals, is also a HAC
|
||||||
name = GetArg("-ac_name","HUSH3");
|
name = GetArg("-ac_name","HUSH3");
|
||||||
|
|
||||||
if ( !name.empty() )
|
if ( !name.empty() )
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -18,7 +18,10 @@ static const uint8_t chainparams_seed_main[] = {
|
|||||||
0x01,0x04,0x95,0x1c,0x66,0xdb,0x00,0x00, // 149.28.102.219
|
0x01,0x04,0x95,0x1c,0x66,0xdb,0x00,0x00, // 149.28.102.219
|
||||||
0x01,0x04,0x9b,0x8a,0xe4,0x44,0x00,0x00, // 155.138.228.68
|
0x01,0x04,0x9b,0x8a,0xe4,0x44,0x00,0x00, // 155.138.228.68
|
||||||
0x01,0x04,0x6b,0xae,0x46,0xfb,0x00,0x00, // 107.174.70.251
|
0x01,0x04,0x6b,0xae,0x46,0xfb,0x00,0x00, // 107.174.70.251
|
||||||
|
0x01,0x04,0xb2,0xfa,0xbd,0x8d,0x00,0x00, // 178.250.189.141
|
||||||
0x04,0x20,0x0e,0x86,0xb6,0xfd,0x96,0xfe,0x06,0xda,0x39,0xeb,0x97,0x39,0xc9,0xd1,0x17,0xa2,0x4e,0x2b,0x75,0x4d,0xeb,0xb5,0xa1,0x34,0x1e,0x34,0x0a,0xcb,0x68,0xab,0xf0,0xe2,0x00,0x00, // b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion
|
0x04,0x20,0x0e,0x86,0xb6,0xfd,0x96,0xfe,0x06,0xda,0x39,0xeb,0x97,0x39,0xc9,0xd1,0x17,0xa2,0x4e,0x2b,0x75,0x4d,0xeb,0xb5,0xa1,0x34,0x1e,0x34,0x0a,0xcb,0x68,0xab,0xf0,0xe2,0x00,0x00, // b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion
|
||||||
|
0x04,0x20,0x1c,0x96,0x10,0x03,0xa6,0xa4,0xfa,0xa0,0x3e,0x13,0x1f,0x38,0xf0,0x9b,0xdd,0x9b,0xd7,0xdc,0x0e,0x40,0x61,0x71,0xed,0x1d,0x21,0x58,0xce,0x59,0x55,0x5e,0xe4,0x25,0x00,0x00, // dslbaa5gut5kapqtd44pbg65tpl5ydsamfy62hjbldhfsvk64qs57pyd.onion
|
||||||
|
0x04,0x20,0xac,0xa0,0x3a,0x31,0xa7,0xea,0x8e,0x90,0xc7,0x2b,0xbb,0x89,0x41,0x05,0x48,0xa0,0x10,0x29,0x8f,0x38,0x16,0xc9,0x94,0xbe,0xef,0x7e,0x9e,0x7d,0x98,0xb6,0x76,0x9f,0x00,0x00, // vsqdumnh5khjbrzlxoeucbkiuaictdzyc3ezjpxpp2ph3gfwo2ptjmyd.onion
|
||||||
0x02,0x10,0x2a,0x0c,0xb6,0x41,0x06,0xf1,0x01,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00, // 2a0c:b641:6f1:18e::2
|
0x02,0x10,0x2a,0x0c,0xb6,0x41,0x06,0xf1,0x01,0x8e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00, // 2a0c:b641:6f1:18e::2
|
||||||
0x02,0x10,0x24,0x06,0xef,0x80,0x00,0x03,0x12,0x69,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // 2406:ef80:3:1269::1
|
0x02,0x10,0x24,0x06,0xef,0x80,0x00,0x03,0x12,0x69,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // 2406:ef80:3:1269::1
|
||||||
0x02,0x10,0x24,0x06,0xef,0x80,0x00,0x02,0x3b,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // 2406:ef80:2:3b59::1
|
0x02,0x10,0x24,0x06,0xef,0x80,0x00,0x02,0x3b,0x59,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, // 2406:ef80:2:3b59::1
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ const uint32_t nHushHardforkHeight4 = 1605555;
|
|||||||
const uint32_t nHushHardforkTimestamp = 1580303652; // Jan 29nd 1pm GMT
|
const uint32_t nHushHardforkTimestamp = 1580303652; // Jan 29nd 1pm GMT
|
||||||
const uint32_t nHushHardforkTimestamp2 = 1594425600; // Jul 11th 12a GMT
|
const uint32_t nHushHardforkTimestamp2 = 1594425600; // Jul 11th 12a GMT
|
||||||
|
|
||||||
// Used by HSCs
|
// Used by HACs
|
||||||
static const uint32_t HUSH_SEASON_TIMESTAMPS[NUM_HUSH_SEASONS] = {1525132800, 1563148800, nHushHardforkTimestamp, nHushHardforkTimestamp2, nHushHardforkTimestamp2*5, nHushHardforkTimestamp2*6, nHushHardforkTimestamp2*7};
|
static const uint32_t HUSH_SEASON_TIMESTAMPS[NUM_HUSH_SEASONS] = {1525132800, 1563148800, nHushHardforkTimestamp, nHushHardforkTimestamp2, nHushHardforkTimestamp2*5, nHushHardforkTimestamp2*6, nHushHardforkTimestamp2*7};
|
||||||
|
|
||||||
// Used by HUSH3+TUSH
|
// Used by HUSH3+TUSH
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp)
|
|||||||
int32_t i,htind,n; uint64_t mask = 0; struct knotary_entry *kp,*tmp;
|
int32_t i,htind,n; uint64_t mask = 0; struct knotary_entry *kp,*tmp;
|
||||||
static uint8_t hush_pubkeys[NUM_HUSH_SEASONS][64][33],didinit[NUM_HUSH_SEASONS];
|
static uint8_t hush_pubkeys[NUM_HUSH_SEASONS][64][33],didinit[NUM_HUSH_SEASONS];
|
||||||
|
|
||||||
//HUSH3+TUSH use block heights, HSCs use timestamps
|
//HUSH3+TUSH use block heights, HACs use timestamps
|
||||||
if ( timestamp == 0 && SMART_CHAIN_SYMBOL[0] != 0 ) {
|
if ( timestamp == 0 && SMART_CHAIN_SYMBOL[0] != 0 ) {
|
||||||
timestamp = hush_heightstamp(height);
|
timestamp = hush_heightstamp(height);
|
||||||
} else if ( SMART_CHAIN_SYMBOL[0] == 0 ) {
|
} else if ( SMART_CHAIN_SYMBOL[0] == 0 ) {
|
||||||
@@ -113,7 +113,7 @@ int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp)
|
|||||||
int32_t hush_season = 0;
|
int32_t hush_season = 0;
|
||||||
bool ishush3 = strncmp(SMART_CHAIN_SYMBOL, "HUSH3",5) == 0 ? true : false;
|
bool ishush3 = strncmp(SMART_CHAIN_SYMBOL, "HUSH3",5) == 0 ? true : false;
|
||||||
bool istush = strncmp(SMART_CHAIN_SYMBOL, "TUSH",4) == 0 ? true : false;
|
bool istush = strncmp(SMART_CHAIN_SYMBOL, "TUSH",4) == 0 ? true : false;
|
||||||
// TUSH uses height activation like HUSH3, other HSCs use timestamps
|
// TUSH uses height activation like HUSH3, other HACs use timestamps
|
||||||
hush_season = (ishush3 || istush) ? gethushseason(height) : getacseason(timestamp);
|
hush_season = (ishush3 || istush) ? gethushseason(height) : getacseason(timestamp);
|
||||||
|
|
||||||
if(IS_HUSH_NOTARY) {
|
if(IS_HUSH_NOTARY) {
|
||||||
|
|||||||
@@ -1805,12 +1805,23 @@ void hush_args(char *argv0)
|
|||||||
if (ishush3) {
|
if (ishush3) {
|
||||||
HUSH_nodes = {"node1.hush.is","node2.hush.is","node3.hush.is",
|
HUSH_nodes = {"node1.hush.is","node2.hush.is","node3.hush.is",
|
||||||
"node4.hush.is","node5.hush.is","node6.hush.is",
|
"node4.hush.is","node5.hush.is","node6.hush.is",
|
||||||
"node7.hush.is","node8.hush.is"};
|
"node7.hush.is","node8.hush.is",
|
||||||
|
"178.250.189.141",
|
||||||
|
"31.202.19.157",
|
||||||
|
"45.132.75.69",
|
||||||
|
"45.63.58.167",
|
||||||
|
"b2dln7mw7ydnuopls444tuixujhcw5kn5o22cna6gqfmw2fl6drb5nad.onion",
|
||||||
|
"dslbaa5gut5kapqtd44pbg65tpl5ydsamfy62hjbldhfsvk64qs57pyd.onion",
|
||||||
|
"vsqdumnh5khjbrzlxoeucbkiuaictdzyc3ezjpxpp2ph3gfwo2ptjmyd.onion",
|
||||||
|
"plrobkepqjxs2cmig273mxnqh3qhuhdaioyb2n5kafn264ramb7tqxid.onion"
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isdragonx) {
|
if (isdragonx) {
|
||||||
DRAGONX_nodes = {"node1.dragonx.is","node2.dragonx.is","node3.dragonx.is",
|
DRAGONX_nodes = {"node1.dragonx.is","node2.dragonx.is","node3.dragonx.is",
|
||||||
"node4.dragonx.is","node5.dragonx.is","node6.dragonx.is"};
|
"node4.dragonx.is","node5.dragonx.is","node6.dragonx.is"
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<string> more_nodes = mapMultiArgs["-addnode"];
|
vector<string> more_nodes = mapMultiArgs["-addnode"];
|
||||||
|
|||||||
@@ -1649,6 +1649,14 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
|
|||||||
|
|
||||||
// Disable clearnet peers if -clearnet=0
|
// Disable clearnet peers if -clearnet=0
|
||||||
if (!GetBoolArg("-clearnet", DEFAULT_CLEARNET)) {
|
if (!GetBoolArg("-clearnet", DEFAULT_CLEARNET)) {
|
||||||
|
#ifdef ENABLE_MINING
|
||||||
|
// mining to the same taddr links different txs together as from the same owner
|
||||||
|
// and if using -clearnet=0 that can be used to link together different .onions
|
||||||
|
// as being the same entity, because they are mining to the same taddr
|
||||||
|
if (mapArgs.count("-mineraddress")) {
|
||||||
|
return InitError(_("-mineraddress and -clearnet=0 cannot be used together because it would reduce your privacy!"));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
SoftSetBoolArg("-disableipv4", true);
|
SoftSetBoolArg("-disableipv4", true);
|
||||||
SoftSetBoolArg("-disableipv6", true);
|
SoftSetBoolArg("-disableipv6", true);
|
||||||
SoftSetBoolArg("-dns", false);
|
SoftSetBoolArg("-dns", false);
|
||||||
|
|||||||
@@ -1086,9 +1086,9 @@ void static RandomXMiner()
|
|||||||
|
|
||||||
// With the defaults of 1024 and 64
|
// With the defaults of 1024 and 64
|
||||||
// the key block will change every ~21.3 hours with a 75s block time
|
// the key block will change every ~21.3 hours with a 75s block time
|
||||||
// and every ~17 hours with the default 60s block time for HSCs
|
// and every ~17 hours with the default 60s block time for HACs
|
||||||
static int randomxInterval = GetRandomXInterval();
|
static int randomxInterval = GetRandomXInterval();
|
||||||
// This lag is 80 mins for 75s blocktime and 64 mins for 60s (default) blocktime for HSCs
|
// This lag is 80 mins for 75s blocktime and 64 mins for 60s (default) blocktime for HACs
|
||||||
static int randomxBlockLag = GetRandomXBlockLag();
|
static int randomxBlockLag = GetRandomXBlockLag();
|
||||||
randomx_vm *myVM = nullptr;
|
randomx_vm *myVM = nullptr;
|
||||||
|
|
||||||
|
|||||||
@@ -511,7 +511,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
|
|
||||||
// Changing this requires changing many other things and
|
// Changing this requires changing many other things and
|
||||||
// might change consensus. Have fun -- Duke
|
// might change consensus. Have fun -- Duke
|
||||||
// NOTE: Ony HUSH3 mainnet should use this function, all HSC's should use params.AveragigWindowTimespan()
|
// NOTE: Ony HUSH3 mainnet should use this function, all HAC's should use params.AveragigWindowTimespan()
|
||||||
int64_t AveragingWindowTimespan() {
|
int64_t AveragingWindowTimespan() {
|
||||||
// used in const methods, beware!
|
// used in const methods, beware!
|
||||||
// This is the correct AWT for 75s blocktime, before block 340k
|
// This is the correct AWT for 75s blocktime, before block 340k
|
||||||
|
|||||||
@@ -639,12 +639,6 @@ UniValue getblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
|||||||
return pblockindex->GetBlockHash().GetHex();
|
return pblockindex->GetBlockHash().GetHex();
|
||||||
}
|
}
|
||||||
|
|
||||||
UniValue getlastsegidstakes(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
|
||||||
{
|
|
||||||
UniValue ret(UniValue::VOBJ);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
||||||
{
|
{
|
||||||
if (fHelp || params.size() < 1 || params.size() > 2)
|
if (fHelp || params.size() < 1 || params.size() > 2)
|
||||||
@@ -862,7 +856,7 @@ UniValue getblockmerkletree(const UniValue& params, bool fHelp, const CPubKey& m
|
|||||||
if (fHelp || params.size() != 1 )
|
if (fHelp || params.size() != 1 )
|
||||||
throw runtime_error(
|
throw runtime_error(
|
||||||
"getblockmerkletree height\n"
|
"getblockmerkletree height\n"
|
||||||
"\nGet full merkletree for a given Hush or HSC block height.\n"
|
"\nGet full merkletree for a given Hush or HAC block height.\n"
|
||||||
"\nArguments:\n"
|
"\nArguments:\n"
|
||||||
"1. height (int, required) block height\n"
|
"1. height (int, required) block height\n"
|
||||||
"\nResult:\n"
|
"\nResult:\n"
|
||||||
@@ -877,7 +871,7 @@ UniValue getblockmerkletree(const UniValue& params, bool fHelp, const CPubKey& m
|
|||||||
|
|
||||||
int nHeight = params[0].get_int();
|
int nHeight = params[0].get_int();
|
||||||
if ( (nHeight < 1) || (nHeight > chainActive.LastTip()->GetHeight()) ) {
|
if ( (nHeight < 1) || (nHeight > chainActive.LastTip()->GetHeight()) ) {
|
||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid Hush or HSC block height parameter");
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid Hush or HAC block height parameter");
|
||||||
}
|
}
|
||||||
|
|
||||||
phushblockindex = chainActive[nHeight];
|
phushblockindex = chainActive[nHeight];
|
||||||
|
|||||||
@@ -90,10 +90,8 @@ static const CRPCConvertParam vRPCConvertParams[] =
|
|||||||
{ "getblock", 1 },
|
{ "getblock", 1 },
|
||||||
{ "getblockheader", 1 },
|
{ "getblockheader", 1 },
|
||||||
{ "getchaintxstats", 0 },
|
{ "getchaintxstats", 0 },
|
||||||
{ "getlastsegidstakes", 0 },
|
|
||||||
{ "gettransaction", 1 },
|
{ "gettransaction", 1 },
|
||||||
{ "getrawtransaction", 1 },
|
{ "getrawtransaction", 1 },
|
||||||
{ "getlastsegidstakes", 0 },
|
|
||||||
{ "createrawtransaction", 0 },
|
{ "createrawtransaction", 0 },
|
||||||
{ "createrawtransaction", 1 },
|
{ "createrawtransaction", 1 },
|
||||||
{ "createrawtransaction", 2 },
|
{ "createrawtransaction", 2 },
|
||||||
|
|||||||
@@ -489,7 +489,7 @@ UniValue validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk
|
|||||||
"\nResult:\n"
|
"\nResult:\n"
|
||||||
"{\n"
|
"{\n"
|
||||||
" \"isvalid\" : true|false, (boolean) If the address is valid or not. If not, this is the only property returned.\n"
|
" \"isvalid\" : true|false, (boolean) If the address is valid or not. If not, this is the only property returned.\n"
|
||||||
" \"address\" : \"addr\", (string) The Hush or HSC address validated\n"
|
" \"address\" : \"addr\", (string) The Hush or HAC address validated\n"
|
||||||
" \"scriptPubKey\" : \"hex\", (string) The hex encoded scriptPubKey generated by the address\n"
|
" \"scriptPubKey\" : \"hex\", (string) The hex encoded scriptPubKey generated by the address\n"
|
||||||
" \"ismine\" : true|false, (boolean) If the address is yours or not\n"
|
" \"ismine\" : true|false, (boolean) If the address is yours or not\n"
|
||||||
" \"isscript\" : true|false, (boolean) If the key is a script\n"
|
" \"isscript\" : true|false, (boolean) If the key is a script\n"
|
||||||
|
|||||||
@@ -320,7 +320,6 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "blockchain", "getblockhashes", &getblockhashes, true },
|
{ "blockchain", "getblockhashes", &getblockhashes, true },
|
||||||
{ "blockchain", "getblockhash", &getblockhash, true },
|
{ "blockchain", "getblockhash", &getblockhash, true },
|
||||||
{ "blockchain", "getblockheader", &getblockheader, true },
|
{ "blockchain", "getblockheader", &getblockheader, true },
|
||||||
{ "blockchain", "getlastsegidstakes", &getlastsegidstakes, true },
|
|
||||||
{ "blockchain", "getchaintips", &getchaintips, true },
|
{ "blockchain", "getchaintips", &getchaintips, true },
|
||||||
{ "blockchain", "getdifficulty", &getdifficulty, true },
|
{ "blockchain", "getdifficulty", &getdifficulty, true },
|
||||||
{ "blockchain", "getmempoolinfo", &getmempoolinfo, true },
|
{ "blockchain", "getmempoolinfo", &getmempoolinfo, true },
|
||||||
@@ -431,7 +430,6 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "wallet", "getbalance", &getbalance, false },
|
{ "wallet", "getbalance", &getbalance, false },
|
||||||
{ "wallet", "getbalance64", &getbalance64, false },
|
{ "wallet", "getbalance64", &getbalance64, false },
|
||||||
{ "wallet", "getnewaddress", &getnewaddress, true },
|
{ "wallet", "getnewaddress", &getnewaddress, true },
|
||||||
// { "wallet", "getnewaddress64", &getnewaddress64, true },
|
|
||||||
{ "wallet", "getrawchangeaddress", &getrawchangeaddress, true },
|
{ "wallet", "getrawchangeaddress", &getrawchangeaddress, true },
|
||||||
{ "wallet", "getreceivedbyaccount", &getreceivedbyaccount, false },
|
{ "wallet", "getreceivedbyaccount", &getreceivedbyaccount, false },
|
||||||
{ "wallet", "getreceivedbyaddress", &getreceivedbyaddress, false },
|
{ "wallet", "getreceivedbyaddress", &getreceivedbyaddress, false },
|
||||||
|
|||||||
@@ -245,7 +245,6 @@ extern UniValue cclibinfo(const UniValue& params, bool fHelp, const CPubKey& myp
|
|||||||
extern UniValue cclib(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue cclib(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
|
|
||||||
extern UniValue getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
|
extern UniValue getnewaddress(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
|
||||||
//extern UniValue getnewaddress64(const UniValue& params, bool fHelp, const CPubKey& mypk); // in rpcwallet.cpp
|
|
||||||
extern UniValue getaccountaddress(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getaccountaddress(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getrawchangeaddress(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getrawchangeaddress(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue setaccount(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue setaccount(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
@@ -286,7 +285,6 @@ extern UniValue getdragonjson(const UniValue& params, bool fHelp, const CPubKey&
|
|||||||
extern UniValue getnotarysendmany(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getnotarysendmany(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue geterablockheights(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue geterablockheights(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue setpubkey(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue setpubkey(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue setstakingsplit(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
|
||||||
extern UniValue getwalletinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getwalletinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getblockchaininfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getblockchaininfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getnetworkinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getnetworkinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
@@ -316,7 +314,6 @@ extern UniValue getblockhashes(const UniValue& params, bool fHelp, const CPubKey
|
|||||||
extern UniValue getblockdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getblockdeltas(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getblockhash(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getblockheader(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue getlastsegidstakes(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
|
||||||
extern UniValue getblock(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue getblock(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue gettxoutsetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue gettxoutsetinfo(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
extern UniValue gettxout(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
extern UniValue gettxout(const UniValue& params, bool fHelp, const CPubKey& mypk);
|
||||||
|
|||||||
@@ -5441,6 +5441,8 @@ UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& myp
|
|||||||
"\nExamples:\n"
|
"\nExamples:\n"
|
||||||
+ HelpExampleCli("z_shieldcoinbase", "\"RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPV\" \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
+ HelpExampleCli("z_shieldcoinbase", "\"RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPV\" \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
||||||
+ HelpExampleRpc("z_shieldcoinbase", "\"RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPV\", \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
+ HelpExampleRpc("z_shieldcoinbase", "\"RD6GgnrMpPaTSMn8vai6yiGA7mN4QGPV\", \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
||||||
|
+ HelpExampleCli("z_shieldcoinbase", "'*'\", \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
||||||
|
+ HelpExampleRpc("z_shieldcoinbase", "'*'\", \"zs14d8tc0hl9q0vg5l28uec5vk6sk34fkj2n8s7jalvw5fxpy6v39yn4s2ga082lymrkjk0x2nqg37\"")
|
||||||
);
|
);
|
||||||
|
|
||||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ void CWallet::ChainTip(const CBlockIndex *pindex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CWallet::RunSaplingSweep(int blockHeight) {
|
void CWallet::RunSaplingSweep(int blockHeight) {
|
||||||
// Sapling is always active since height=1 of HUSH+HSCs
|
// Sapling is always active since height=1 of HUSH+HACs
|
||||||
// if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
// if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
@@ -551,7 +551,7 @@ void CWallet::RunSaplingSweep(int blockHeight) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CWallet::RunSaplingConsolidation(int blockHeight) {
|
void CWallet::RunSaplingConsolidation(int blockHeight) {
|
||||||
// Sapling is always active on HUSH+HSCs
|
// Sapling is always active on HUSH+HACs
|
||||||
//if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
//if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
||||||
// return;
|
// return;
|
||||||
//}
|
//}
|
||||||
|
|||||||
Reference in New Issue
Block a user