This code is inspired by
db292a49dd
with various improvements that will be documented below.
The largest improvement is that this code will defend against a spammer using shielded inputs (zins)
or shielded outputs (zouts) while the Pirate code only defends against zout spam.
We wrote a new RPC called z_getstats to study exactly what the distribution of shielded inputs (zins)
and shielded outputs (zouts) look like on HUSH mainnet. Sietch will never make a ztx that contains
more than 9 zouts and so transactions with 10 or more zouts are extremely rare. They correspond to custom
transactions created via code or CLI or mining pool payouts. We allow at most one of these per block. If
there are two, one will remain in the mempool and be mined in the subsequent block. Our code is more strict,
as Pirate will allow up to 6 of these transactions in a single block.
Transactions with many shielded inputs do occur normally when users spend many small shielded unspent outputs
(zutxos) in one transaction, but we determined that a cutoff of 50 zins is quite rare. Between blocks
14000000 and 15000000 only 27 ztxs had 50 or more zins, which is 0.03% . We allow at most one of these
per block and if there are more, they will wait to be mined in a subsequent block.
Also note that a transaction can match both criteria of having large zins and large zouts, so for instance,
if there is a transaction with 50 zins and 10 zouts, it counts towards both requirements and no other
transactions with >=50 zins or >=10 zouts will be mined in that block.
If >=200 transactions with either large zins or large zouts are broadcast to the network it will take at least
200 blocks for them to be mined and so via existing rules for ztx expiration they will expire and be removed
from the mempool, since by default all ztxs expire after 200 blocks. Since normal ztxs that match these
criteria are very rare, the only case when this might happen is during a spam attack and so the attackers
transactions expiring is another part of these defenses.
Other improvements are that we log txids of transactions with large zins or zouts and we do not support a
command line option to turn this protection off. This forces a potential attacker to compile their own custom
code if they want to subvert these protections on their own node and blocks they mine.
Similar to Pirate, these changes are not consensus changes but may be made consensus requirements
in the future.
These protections are not specific to HUSH and are enabled for all HSC's, including DragonX.
Hush
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!
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. A competing privacy coin takes over 24 hours to sync their full nodes because of Sprout Transactions, lulz.
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.
Installing
You can either compile it yourself or you can install a binary which was compiled by us. Please refer to the instructions which apply to you below:
- See INSTALL.md to compile from source on Linux and to cross-compile for Windows
- See INSTALL-BIN.md to install pre-compiled binary on Linux
Claiming Funds From Old Hush Wallets
If you have an older wallet, then refer to OLD_WALLETS.md.
Official Explorers
The links for the Official Hush explorers:
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.
For system admins
There is a new systemd user service script so you can easily start/stop/restart your hushd service on your server. Try it out today and the systemd script is located in the doc directory of the source tree.
Support and Socials
Please feel free to join us on Telegram for official support:
- Main group: https://hush.is/tg
- Support group: https://hush.is/telegram_support
- Mining group: https://hush.is/telegram_mining
Other socials:
- Twitter: @hushisprivacy
- Matrix: @hush_main:meowchat.xyz
- PeerTube videos.hush.is
- Reddit @Myhush
- Mastodon @myhushteam@fosstodon.org
License
For license information see the file COPYING.
