DanS d159e72086 feat: chain-level Sapling turnstile (reject blocks that would drive the pool negative)
Belt-and-suspenders inflation/counterfeiting guard on top of the per-tx Sapling
binding signature: ConnectBlock rejects any block whose cumulative Sapling value
pool would go negative (bad-sapling-value-pool-negative) -- a block can never
deshield more value than was ever shielded.

Enforced ONLY when the pool is reliably tracked from genesis (pprev's
nChainSaplingValue is engaged), so it can never false-reject a valid block or
split the chain on nodes that don't track the pool -- those stay dormant.

To make "not reliably tracked" propagate safely, nSaplingValue becomes a
boost::optional<CAmount> (was a plain CAmount). A version-gated dual-read in
CDiskBlockIndex reads records written before SAPLING_VALUE_OPTIONAL_VERSION
(1000350 = v1.0.3) as the legacy raw 8-byte CAmount but DISCARDS the value
(reads boost::none). Records written at >= 1000350 use the optional format and
persist, so from-genesis and reindexed v1.0.3 nodes are durably active across
restarts.

Tested on a 5-node RandomX fleet: old-format DB loads dormant (0 corruption);
from-genesis stays active with correct pool accumulation and 0 false-rejects
across shield/deshield cycles; dormant/active/reindexed nodes converge; a crafted
counterfeit block is rejected (guard fires, no crash); active state persists
across restart (verified at CLIENT_VERSION 1000351 with gate 1000350).

*** MANDATORY UPGRADE STEP (v1.0.3 dev/test nodes) ***
CLIENT_VERSION stays 1000350, and pre-turnstile v1.0.3 builds ALSO stamped
records at 1000350 but in the old plain-8-byte format. Those records now route to
the OPTIONAL read branch and MISPARSE: LoadBlockIndexDB throws and the node
ABORTS on startup (looks like block-DB corruption). Therefore any node that ran an
earlier v1.0.3 (1000350) build MUST have its block data wiped or be -reindexed
before running this build -- do NOT upgrade a 1000350 datadir in place.
Production mainnet (v1.0.2 = CLIENT_VERSION 1000250) is UNAFFECTED: those records
take the legacy branch and read correctly (dormant until reindex). v1.0.3 is
unreleased, so only dev/test datadirs are affected.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 01:14:46 +02:00
2021-01-26 08:56:08 -05:00
2026-03-19 10:09:18 -05:00
2024-02-27 23:59:59 +01:00
2026-06-28 16:04:51 -05:00
2026-06-28 16:04:51 -05:00
2024-03-15 15:14:26 -04:00
2021-10-20 23:27:25 -04:00
2024-03-31 23:54:32 +02:00
2019-08-07 04:56:24 -07:00
2019-08-07 04:56:24 -07:00
2026-01-01 15:24:57 -05:00
2017-10-22 04:08:53 +02:00

Introduction Install Compile FAQ Documentation
What is Hush? Windows 10 - Video Tutorial Build on Debian or Ubuntu Where can I buy Hush? Cross compiling Windows binaries
Why not GitHub? Build on Mac Build on Arch Can I mine with CPU or GPU? Hush DevOps for pools and CEXs
What is HushChat? Debian and Ubuntu Build on Fedora Claiming funds from old Hush wallets Earn Hush bounty
What is SilentDagon? Raspberry Pi Build on Ubuntu 16.04 or older Where can I spend Hush? Cross compiling from amd64 to arm64

What is Hush?

Hush implements Extreme Privacy via blockchain tech. We have our own genesis block. We are not a chain fork (copy) of another coin. We are based on Bitcoin code, with sophisticated zero-knowledge mathematics added for privacy. This keeps your transaction metadata private!

What is this repository?

This software is the Hush node and command-line client. It downloads and stores the entire history of Hush transactions; depending on the speed of your computer and network connection, it will likely take a few hours at least, but some people report full nodes syncing in less than 1.5 hours.

Fastest way to sync (bootstrap)

The quickest way to get a fully-synced node is the signed bootstrap snapshot, which installs a pre-built blockchain so you skip re-validating the whole chain from genesis:

# Stop dragonxd first if it is running, then:
./util/bootstrap-dragonx.sh

The script preserves your wallet.dat and DRAGONX.conf, verifies the download's checksums and (once a release key is published) its cryptographic signature, then starts you near the chain tip. If you prefer to sync from the network instead, a larger -dbcache (e.g. -dbcache=2048) noticeably speeds up the initial block download.

Banned by GitHub

In working on this release, Duke Leto was suspended from Github, which gave Hush developers the impetus to completely leave that racist and censorship-loving platform. Hush now has it's own git.hush.is Gitea instance, because we will not be silenced by Microsoft. All Hush software will be released from git.hush.is and hush.is, downloads from any other domains should be assumed to be backdoored.

Hush is unfinished and highly experimental. Use at your own risk! Just like Bitcoin.

Build on Debian or Ubuntu

# install build dependencies
sudo apt-get install build-essential pkg-config libc6-dev m4 g++-multilib \
      autoconf libtool ncurses-dev unzip git zlib1g-dev wget \
      bsdmainutils automake curl unzip nano libsodium-dev cmake
# clone git repo
git clone https://git.hush.is/hush/hush3
cd hush3
# Build
# This uses 3 build processes, you need 2GB of RAM for each. 
./build.sh -j3

Video Tutorial: https://videos.hush.is/videos/how-to-install-on-linux

Build on Arch

# install build dependencies
sudo pacman -S gcc libsodium lib32-zlib unzip wget git python rust curl autoconf cmake
# clone git repo
git clone https://git.hush.is/hush/hush3
cd hush3
# Build
# This uses 3 build processes, you need 2GB of RAM for each. 
./build.sh -j3

Build on Fedora

# install build dependencies
sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libtool ncurses-devel patch -y
# clone git repo
git clone https://git.hush.is/hush/hush3
cd hush3
# Build
# This uses 3 build processes, you need 2GB of RAM for each. 
./build.sh -j3

Install on Windows 10

Video Tutorial: https://videos.hush.is/videos/how-to-install-on-windows

Install on ARM Architecture

Use this if you have a Raspberry Pi or similar computer. Currently, any ARMv7 machine will not be able to build this repo, because the underlying tech (zcash and the zksnark library) do not support that instruction set. This also means that old RaspberryPi devices will not work, unless they have a newer ARMv8-based Raspberry Pi. Raspberry Pi 4 and newer are known to work.

  1. Download the latest Debian package with the AARCH64 designation from the releases page.
  2. Install the Debian package, substituting "VERSION-NUMBER" for the version you have downloaded: sudo dpkg -i hush-VERSION-NUMBER-aarch64.deb.
  3. Run with: hushd.

If you would like to compile this for ARM yourself, then please refer to the Cross compiling a Hush full node daemon from AMD64 to ARM64(aarch64) CPU architecture with Docker documentation to do that.

Building On Ubuntu 16.04 and older systems

Some older compilers may not be able to compile modern code, such as gcc 5.4 which comes with Ubuntu 16.04 by default. Here is how to install gcc 7 on Ubuntu 16.04. Run these commands as root:

add-apt-repository ppa:ubuntu-toolchain-r/test && \
apt update && \
apt-get install -y gcc-7 g++-7 && \
  update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 60 && \
  update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60

Build on Mac

Install Xcode Command Line Tools and Homebrew, then install dependencies:

xcode-select --install
brew install gcc autoconf automake pkgconf libtool cmake curl

# Install Rust (needed for librustzcash on macOS Sequoia+)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

# clone git repo
git clone https://git.hush.is/hush/hush3
cd hush3
# Build (uses 3 build processes, you need 2GB of RAM for each)
# Make sure libtool gnubin and cargo are on PATH
export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH"
./build.sh -j3

For a release build:

export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH"
./build.sh --mac-release -j$(sysctl -n hw.ncpu)

Installing Hush binaries

  1. Download the release with a .deb file extension.
  2. Install the Debian package, substituting "VERSION-NUMBER" for the version you have downloaded: sudo dpkg -i hush-VERSION-NUMBER-amd64.deb.
  3. Run with: hushd.

Windows (cross-compiled on Linux)

Get dependencies:

sudo apt-get install \
      build-essential pkg-config libc6-dev m4 g++-multilib libdb++-dev \
      autoconf libtool ncurses-dev unzip git zip \
      zlib1g-dev wget bsdmainutils automake mingw-w64 cmake libsodium-dev

Downloading Git source repo, building and running Hush:

# pull
git clone https://git.hush.is/hush/hush3
cd hush3
# Build
./util/build-win.sh -j$(nproc)
# Run a HUSH node
./src/hushd

Official Explorers

The links for the Official Hush explorers:

What is SilentDragon?

What is HushChat?

HushChat is a protocol inspired by the design of Signal Protocol, it uses many of the same cryptography and ideas, but does not actually use any code from Signal. Signal requires phone numbers and is a centralized service. HushChat is completely anonymous and decentralized and requires absolutely no metadata be given to any centralized third parties.

Can I mine with CPU or GPU?

Hush cannot be efficiently mined with CPU or GPU, only ASIC mining is recommended. HUSH uses Equihash (200,9) algo, as does Zcash, Horizen or Komodo.

Where can I buy Hush?

  1. https://nonkyc.io/market/HUSH_BTC
  2. https://tradeogre.com/exchange/BTC-HUSH

Where can I spend Hush?

AgoraX market: https://agorax.is

Earn Hush bounty

Developers can earn bounty by fixing bugs or solving feature requests listed in Issues->Label:

Logo

Support and Socials

License

For license information see the file COPYING.

Description
No description provided
Readme 181 MiB
2026-03-19 10:09:18 -05:00
Languages
C++ 47.9%
Shell 28.1%
C 15.7%
Python 4.8%
M4 1%
Other 2.3%