Compare commits

...

60 Commits
master ... dev

Author SHA1 Message Date
jahway603 142c9e140e Merge pull request 'Updated urgency tags in contrib/debian/changelog' (#408) from jahway603 into dev 4 days ago
jahway603 006804d6ca Updated urgency tags in contrib/debian/changelog 4 days ago
jahway603 060acceea8 Merge pull request 'Updated Debian package changelog to resolve Issue #405' (#406) from jahway603 into dev 4 days ago
jahway603 41e7d602c8 Added changelog to Debian package building script 4 days ago
jahway603 535d78595e Updated Debian package changelog to resolve Issue #405 4 days ago
Duke 5273f4be9e Give Hush mainnet a dedicated minimum protocol version #345 1 week ago
Duke ba86196409 This document is bitrotten and not useful 1 week ago
Duke e42b534036 Keybase is no longer used 1 week ago
Duke 18e3364bc2 Make docs for addnode/disconnectnode correct for HACs #376 4 weeks ago
Duke 0d0a7e9587 Fix 'writing 1 byte into region of size 0' 4 weeks ago
jahway603 b9d4dbbbd6 Merge pull request 'Update readme' (#402) from onryo/hush3:dev into dev 1 month ago
onryo f8481013a7 Update README 1 month ago
onryo d3b6af2c0b Add image 1 month ago
onryo 5e52b706e2 Update README 1 month ago
jahway603 e91cbff565 Merge pull request 'Move README to dev from master' (#401) from master into dev 1 month ago
jahway603 5fe2904bb1 Merge branch 'dev' into master 1 month ago
jahway603 06e46f7fcd Fixes to README.md 1 month ago
duke 814fad16e9 Merge pull request 'Move files making the root directory clean' (#400) from mvstuff into dev 1 month ago
onryo b446ec384c make sure genbuild.sh builds 1 month ago
onryo 72c86d8f69 move stuff 1 month ago
onryo 63901954be move stuff 1 month ago
Duke 9a23cba099 Merge branch 'duke' into dev 2 months ago
Duke 4928ed97c3 Merge branch 'dev' into duke 2 months ago
Duke f47a7a9d7f We no longer need this junk 2 months ago
Duke 89cc8a9ee3 Move toolchain-info.sh to util/ 2 months ago
Duke 981b275757 Delete unnecessary stuff 2 months ago
Duke f970082504 Remove migratecoin.sh 2 months ago
Duke 753ad7b95b Remove .gitmodules 2 months ago
Duke 975f22bfa0 Improve error message in z_sendmany if tx is estimated to be too large 2 months ago
Duke 558f662a33 Do not apply sapling network rules to block height 0 or 1 in ScanForWalletTransactions 2 months ago
Duke f5f851158a Merge branch 'dev' into duke 2 months ago
Duke 3354d45fd3 Make getchaintxstats less noisy in debug log 2 months ago
Duke 8ff5e4aa5e Make getchaintxstats less noisy in debug log 2 months ago
onryo 25009928f8 Update README 2 months ago
onryo 754cbcb02d Update README 2 months ago
onryo 5b9e971780 Update README 2 months ago
onryo c8cd6eaa03 Update README 2 months ago
onryo 424ca42015 Update README 2 months ago
onryo 804e88dca5 Update image 2 months ago
onryo e860ad6efb Image to README 2 months ago
onryo 2a9f7bd483 Merge pull request 'doc: update Matrix chatroom link in README.md' (#398) from jahway603 into master 2 months ago
jahway603 394c54c4da doc: update Matrix chatroom link in README.md 2 months ago
onryo c5c0ce45da We call it hush arrakis chains 2 months ago
Duke 9842687be2 It is called hush-arrakis-chain now 2 months ago
Duke 25c27d2ef5 It is called hush-arrakis-chain now 2 months ago
Duke d1991e6454 It is called hush-arrakis-chain now 2 months ago
Duke 49f8cf7ca7 Remove some unneeded cc code 2 months ago
Duke 65c4c5c8de They are called Hush Arrakis Chains (HACs) now 2 months ago
Duke bbfa41c77d They are called Hush Arrakis Chains (HACs) now 2 months ago
Duke a7dd567031 They are called Hush Arrakis Chains (HACs) now 2 months ago
Duke 64f59552b3 They are called Hush Arrakis Chains (HACs) now 2 months ago
Duke 7db5749730 Merge branch 'dev' into duke 2 months ago
onryo fc95d692e2 Update cross-compile on Linux INSTALL.md for Windows 2 months ago
onryo 63fc690ca3 Update cross-compile on Linux INSTALL.md for Windows 2 months ago
Duke 81bd6e2f4e Merge branch 'dev' into duke 2 months ago
Duke 7b3c26ddfe Remove CC dingleberries 3 months ago
Duke 7d0f961e0c Merge branch 'dev' into duke 3 months ago
Duke 4c392cca07 Merge branch 'dev' into duke 3 months ago
Duke 171102cbbd Remove unused Makefile #291 3 months ago
Duke eb316f80d8 Merge branch 'dev' into duke 3 months ago
  1. 0
      .gitmodules
  2. 1
      DEVELOPER-AGREEMENT
  3. 2
      Dockerfile
  4. 11
      INSTALL-BIN.md
  5. 122
      INSTALL.md
  6. 2
      Makefile.am
  7. 204
      README.md
  8. 90
      SECURITY.md
  9. 4
      antispam
  10. 8
      code_of_conduct.md
  11. 407
      contrib/debian/changelog
  12. 4
      contrib/debian/control
  13. 0
      doc/CONTRIBUTING.md
  14. 0
      doc/DEVELOPING.md
  15. 0
      doc/OLD_WALLETS.md
  16. 4
      doc/bips.md
  17. 6
      doc/hsc.md
  18. BIN
      doc/hush/earnhush.png
  19. BIN
      doc/hush/hush0.png
  20. 16
      doc/randomx.md
  21. 43
      migratecoin.sh
  22. 4
      qa/rpc-tests/test_framework/test_framework.py
  23. 2
      src/Makefile.am
  24. 5
      src/cc/CCcustom.cpp
  25. 65
      src/cc/CCinclude.h
  26. 2
      src/cc/CCutils.cpp
  27. 89
      src/cc/cclib.cpp
  28. 75
      src/cc/customcc.cpp
  29. 33
      src/cc/customcc.h
  30. 2
      src/cc/dapps/dappinc.h
  31. 2
      src/cc/dapps/zmigrate.c
  32. 1
      src/cc/eval.cpp
  33. 2
      src/chainparams.cpp
  34. 2
      src/dragonxd
  35. 0
      src/hush-arrakis-chain
  36. 0
      src/hush-arrakis-chain.bat
  37. 2
      src/hush_bitcoind.h
  38. 2
      src/hush_utils.h
  39. 2
      src/init.cpp
  40. 6
      src/main.cpp
  41. 2
      src/miner.cpp
  42. 2
      src/net.cpp
  43. 2
      src/pow.cpp
  44. 6
      src/rpc/blockchain.cpp
  45. 2
      src/rpc/misc.cpp
  46. 10
      src/rpc/net.cpp
  47. 2
      src/sc/koolaid
  48. 2
      src/sc/kush
  49. 2
      src/sc/zex
  50. 4
      src/sietch.h
  51. 2
      src/smartchains
  52. 17
      src/smartchains.old
  53. 2
      src/testdragonxd
  54. 2
      src/testequihashd
  55. 7
      src/version.h
  56. 2
      src/wallet/asyncrpcoperation_sendmany.cpp
  57. 2
      src/wallet/rpcwallet.cpp
  58. 2
      src/wallet/wallet.cpp
  59. 10
      test_antispam
  60. 4
      util/build-debian-package.sh
  61. 2
      util/gen-linux-binary-release.sh
  62. 0
      util/genbuild.sh
  63. 2
      util/test_randomx
  64. 0
      util/toolchain-info.sh

0
.gitmodules

1
DEVELOPER-AGREEMENT

@ -1 +0,0 @@
You must agree that Duke Leto is the Elder of jl777.

2
Dockerfile

@ -25,7 +25,7 @@ RUN cd /hush && \
RUN ln -sf /hush/src/hushd /usr/bin/hushd && \
ln -sf /hush/src/hush-tx /usr/bin/hush-tx && \
ln -sf /hush/src/wallet-utility /usr/bin/hush-wallet-utility && \
ln -sf /hush/src/hush-smart-chain /usr/bin/hush-smart-chain && \
ln -sf /hush/src/hush-arrakis-chain /usr/bin/hush-arrakis-chain && \
ln -sf /hush/util/docker-entrypoint.sh /usr/bin/entrypoint && \
ln -sf /hush/util/docker-hush-cli.sh /usr/bin/hush-cli

11
INSTALL-BIN.md

@ -1,11 +0,0 @@
# Installing Hush binaries
1. First [download the release](https://git.hush.is/hush/hush3/releases) you want to install. It will have a .deb file extension.
1. Next install the Debian package (change the version to what you downloaded above):
`dpkg -i hush-3.8.0-amd64.deb`
1. If you want to remove it, then run this to uninstall:
`apt-get remove hush`

122
INSTALL.md

@ -1,122 +0,0 @@
# Installing Hush
Instructions to compile Hush yourself.
## Swap Space (Optional)
You will need at least 4GB of RAM to build hush from git source, OR you can
enable a swap file. To enable a 4GB swap file on modern Linux distributions:
```sh
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
```
## Build on Debian/Ubuntu:
```sh
# 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
```
## Build on Arch:
```sh
# 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:
```sh
# 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
```
### 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
These instructions are a work in progress. Please report issues to https://hush.is/tg_support
```
sudo port update
sudo port upgrade outdated
sudo port install qt5
# 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
```
## Run a HUSH Node
After you have compiled Hush, then you can run it with the following command:
```sh
./src/hushd
```
## Windows (cross-compiled on Linux)
Get dependencies:
```ssh
sudo apt-get install \
build-essential pkg-config libc6-dev m4 g++-multilib \
autoconf libtool ncurses-dev unzip git python \
zlib1g-dev wget bsdmainutils automake mingw-w64 cmake libsodium-dev
```
Downloading Git source repo, building and running Hush:
```sh
# pull
git clone https://git.hush.is/hush/hush3
cd hush
# Build
./build-win.sh -j$(nproc)
# Run a HUSH node
./src/hushd
```
## ARM Architecture
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.

2
Makefile.am

@ -235,7 +235,7 @@ endif
dist_bin_SCRIPTS =
dist_noinst_SCRIPTS = autogen.sh util/build-debian-package.sh util/build.sh
EXTRA_DIST = $(top_srcdir)/share/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests qa/hush $(DIST_DOCS) $(BIN_CHECKS)
EXTRA_DIST = $(top_srcdir)/util/genbuild.sh qa/pull-tester/rpc-tests.sh qa/pull-tester/run-bitcoin-cli qa/rpc-tests qa/hush $(DIST_DOCS) $(BIN_CHECKS)
install-exec-hook:
echo "We no longer install fetch-params!"

204
README.md

@ -1,75 +1,195 @@
# Hush
<p align="center">
<img src="doc/hush/hush0.png">
</p>
## What is Hush?
<h3>
![Logo](doc/hush/hush.png "Logo")
| Introduction | Install | Compile | FAQ | Documentation |
| :---: | :---: | :---: | :---: | :---: |
| [What is Hush?](#what-is-hush) | [Windows 10 - Video Tutorial](#install-on-windows-10) | [Build on Debian or Ubuntu](#build-on-debian-or-ubuntu) | [Where can I buy Hush?](#where-can-i-buy-hush) | [Cross compiling Windows binaries](#windows-cross-compiled-on-linux)
| [Why not GitHub?](#banned-by-github) | [Build on Mac](#build-on-mac) | [Build on Arch](#build-on-arch) | [Can I mine with CPU or GPU?](#can-i-mine-with-cpu-or-gpu) | [Hush DevOps for pools and CEXs](https://git.hush.is/hush/docs/src/branch/master/advanced/devops.md)
| [What is HushChat?](#what-is-hushchat) | [Debian and Ubuntu](#installing-hush-binaries) | [Build on Fedora](#build-on-fedora) | [Claiming funds from old Hush wallets](https://git.hush.is/hush/hush3/src/branch/dev/doc/OLD_WALLETS.md) | [Earn Hush bounty](#earn-hush-bounty)
| [What is SilentDagon?](#what-is-silentdagon) | [Raspberry Pi](#install-on-arm-architecture) | [Build on Ubuntu 16.04 or older](#building-on-ubuntu-16-04-and-older-systems) | [Where can I spend Hush?](#where-can-i-spend-hush) | [Cross compiling from amd64 to arm64](https://git.hush.is/hush/docs/src/branch/master/advanced/cross-compile-hush-full-node-to-aarch64-with-docker.md)
</h3>
# 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
# 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. A competing privacy
coin takes over 24 hours to sync their full nodes because of Sprout Transactions, lulz.
some people report full nodes syncing in less than 1.5 hours.
### BANNED BY GITHUB
# 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](https://git.hush.is/hush) 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
the impetus to completely leave that racist and censorship-loving platform. Hush now has it's own [git.hush.is](https://git.hush.is/hush) 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
# Build on Debian or Ubuntu
```sh
# 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/w/3kKQt81r7UUPWLHVuwK2BZ
# Build on Arch
```sh
# 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
```sh
# 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/w/oGXff7of3EjmGENtDtYTUX
# 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](https://git.hush.is/hush/hush3/releases).
1. Install the Debian package, substituting "VERSION-NUMBER" for the version you have downloaded: `sudo dpkg -i hush-VERSION-NUMBER-aarch64.deb`.
1. Run with: `hushd`.
# 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
```
sudo port update
sudo port upgrade outdated
sudo port install qt5
# 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
```
# Installing Hush binaries
1. [Download the release](https://git.hush.is/hush/hush3/releases) with a .deb file extension.
1. Install the Debian package, substituting "VERSION-NUMBER" for the version you have downloaded: `sudo dpkg -i hush-VERSION-NUMBER-amd64.deb`.
1. Run with: `hushd`.
# Windows (cross-compiled on Linux)
Get dependencies:
```ssh
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:
```sh
# 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:
* [explorer.hush.is](https://explorer.hush.is)
* [explorer.hush.land](https://explorer.hush.land)
# What is SilentDragon?
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:
* [SilentDragon](https://git.hush.is/hush/SilentDragon) is a desktop wallet for HUSH full node.<br>
* [SilentDragonLite](https://git.hush.is/hush/SilentDragonLite) is a desktop wallet that does not require you to download the full blockchain.
* [SilentDragonAndroid](https://git.hush.is/hush/SilentDragonAndroid) is a wallet for Android devices.
* [SilentDragonPaper](https://git.hush.is/hush/SilentDragonPaper) is a paper wallet generator that can be run completely offline.
* See [INSTALL.md](INSTALL.md) to compile from source on Linux and to cross-compile for Windows
* See [INSTALL-BIN.md](INSTALL-BIN.md) to install pre-compiled binary on Linux
# What is HushChat?
### Claiming Funds From Old Hush Wallets
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.
If you have an older wallet, then refer to [OLD_WALLETS.md](OLD_WALLETS.md).
# Can I mine with CPU or GPU?
### Official Explorers
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.
The links for the Official Hush explorers:
* [explorer.hush.is](https://explorer.hush.is)
* [explorer.hush.land](https://explorer.hush.land)
# Where can I buy Hush?
1. https://nonkyc.io/market/HUSH_BTC
1. https://tradeogre.com/exchange/BTC-HUSH
# Where can I spend Hush?
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.
AgoraX market (in progress)
### For system admins
# Earn Hush bounty
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](doc/hushd-systemd.md) and the systemd script is located in the doc directory of the source tree.
Developers can earn bounty by fixing bugs or solving feature requests listed in `Issues->Label`:
- https://git.hush.is/hush/hush3/issues
- https://git.hush.is/hush/SilentDragon/issues
- https://git.hush.is/hush/SilentDragonLite/issues
## Support and Socials
![Logo](doc/hush/earnhush.png "Hush Bounty")
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
# Support and Socials
Other socials:
* Twitter: <a href="https://hush.is/twitter">@hushisprivacy</a>
* Matrix: <a href="https://hush.is/matrix">@hush_main:meowchat.xyz</a>
* PeerTube <a href="https://hush.is/peertube">videos.hush.is</a>
* Reddit <a href="https://hush.is/reddit">@Myhush</a>
* Mastodon <a href="https://hush.is/mastodon">@myhushteam@fosstodon.org</a>
* Telegram: [https://hush.is/tg](https://hush.is/tg)
* Matrix: [https://hush.is/matrix](https://hush.is/matrix)
* Twitter: [https://hush.is/twitter](https://hush.is/twitter)
* PeerTube [https://hush.is/peertube](https://hush.is/peertube)
## License
# License
For license information see the file [COPYING](COPYING).
For license information see the file [COPYING](COPYING).

90
SECURITY.md

@ -1,90 +0,0 @@
## Reporting a Vulnerability
You can use [Keybase](https://keybase.io/dukeleto) to find secure contact information.
You can also contact Duke directly via SilentDragon wallet, via "Contact Duke". Encrypted sensitive data
in memo fields in highly encouraged.
We kindly ask you to not publish or exploit any found vulnerabilities without at least contacting us first.
Fingerprint: F16219F4C23F91112E9C734A8DFCBF8E5A4D8019
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: Keybase OpenPGP v2.0.8
Comment: https://keybase.io/crypto
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
=YSWs
-----END PGP PUBLIC KEY BLOCK-----
```

4
antispam

@ -1,4 +0,0 @@
#!/bin/sh
echo "./src/hush-cli -ac_name=ANTISPAM $@"
./src/hush-cli -ac_name=ANTISPAM "$@"

8
code_of_conduct.md

@ -1,8 +0,0 @@
# Contributor Code of Conduct
As contributors and maintainers of this project, and in the interest of
fostering an open and welcoming community, we pledge to respect all people who
contribute through reporting issues, posting feature requests, updating
documentation, submitting pull requests or patches, and other activities.
Don't be an asshole.

407
contrib/debian/changelog

@ -1,3 +1,410 @@
hush (3.10.2) stable; urgency=medium
* Upgraded WolfSSL to 5.2.0 on Linux and Mac: #380.
* Upgraded to 4.8.1 on Windows because newer versions do not compile on it
* Only Hush and DragonX will automatically connect to various seed nodes
* Updated i2p seed node: 8c8b6e88f0.
* Removed unused code.
* Fixed boost download link: 323d2134a1.
* Hush and DragonX full nodes take up a lot less memory and binaries are now
smaller due to the cryptoconditions removal, which means syncing, rescanning
and compiling is faster: #381.
* Removed CLI options related to CryptoConditions: -ac_cc, -ac_cclib,
-ac_ccenable, and -ac_ccactivate
* Large page support enabled, which can lead to a 1-2% speed increase in
mining depending on RAM and CPU.
* Various small optimizations such as making some variables static or const
and removing unnecessary conditionals.
* Mining now starts faster because instead of only using 2 threads to prepare
data needed to mine, it now uses all physical cores: 1b5422eb2d.
* RandomX mining now takes slightly less memory.
* Added script for scanning DragonX nodes: 0679468f60.
* More details about p2p encryption: ccc86839b9, a358acab0b, 4ed576a7e2.
* Added Fedora install process: #384.
* Added Arch install process: #393.
* Implemented better error messages: f64c10baa9, f71f8124c3.
* Improved hush_scanner and seed node contrib file: 16dd3aef74.
* Removed unused Makefile: #291.
-- Hush Core <myhushteam@gmail.com> Tue, 05 Mar 2024 18:29:47 -0700
hush (3.10.1) stable; urgency=medium
* Fixed bug causing "payment to wrong pubkey" error when syncing a new node
* Faster syncing of Hush and DragonX full nodes
* Slightly less memory usage in each Equihash/RandomX mining thread
* Fixed compiling issues related to RandomX v1.2.1
* Improved RPC docs for getblocktemplate
* Removed the getdeprecationinfo RPC
-- Hush Core <myhushteam@gmail.com> Tue, 02 Jan 2024 15:16:40 -0700
hush (3.10.0) stable; urgency=high
* Hush and all Hush Smart Chains now use less RAM #283
* Hush and all Hush Smart Chains now make it harder and more expensive for
an attacker to send shielded spam. This raises the cost in CPU 14d3ae1785
and transaction fees 2308db22ee for Denial-of-Service attacks.
* Bug fix: Fixed hush-cli stop not stopping the node during the "Building
Witnesses" rescan phase #330
* Bug fix: Fixed abortrescan couldn't be used when node starting up (RPC
warmup) and where it could not abort the rescan if it was in the "Building
Witnesses" phase #331
* Bug fix: Fixed z_mergetoaddress where docs said you could use ANY_ZADDR
but you couldn't 7eb9d75b94
* New RPC: z_listunspent now returns the text representation of a memo in
memoStr key
* New RPC: z_getstats which reports data about numer of shielded inputs (zins)
and shielded outputs (zouts) in transactions. 96ae2d61ca
* CVE fix: Upgraded curl to 8.4.0 #325 to fix CVE-2023-38545
* New documentation about using CJDNS with Hush
* Implemented decentralized Devtax
* Updated to latest RandomX v1.2.1 which includes mining optimizations
* Fixed RandomX mining memory leak and crash #324
* Fixed quoting bugs with dragonx-cli script
-- Hush Core <myhushteam@gmail.com> Tue, 28 Nov 2023 16:47:59 -0700
hush (3.9.4) stable; urgency=medium
* Hush and DragonX nodes will now sync much faster
* DragonX now has checkpoints for faster & better chain security #243 #304
* Updated to the latest RandomX code
* Rate limiting for the processing of incoming address messages for
increased security. #272
* Removed unused function CWalletTx::GetRequestCount #273
* Removed mapRequest tracking that only affects Qt display. #274
* Randomized message processing peer order for increased privacy. #275
* Removed BIP35 mempool p2p message for increased privacy. #284
* Added additional community seed nodes
* Use custom jobs param when compiling boost for faster compile times #288
* Now builds with gcc13 thanks to testing from jahway #293
* Bug fix: -stratumallowip works with CIDR and netmask ranges again for solo
miners #270
* Bug fix: Detect missing autoreconf in build.sh #289
* Bug fix: Various assertions removed from BIP155 changes #297
-- Hush Core <myhushteam@gmail.com> Sun, 02 Jul 2023 17:47:39 -0700
hush (3.9.3) stable; urgency=medium
* Difficulty bug affecting DRAGONX has been fixed
* RandomX mining hashrate increase of about 60X
* Optimized memory usage of RandomX mining
* Adds Tor v3 and i2p support (BIP155 also known as addrv2)
* New RPC: getrescaninfo - Says if node is rescanning with additional info
about progress
* New RPC: abortrescan - Stops rescanning if node is currently rescanning
-- Hush Core <myhushteam@gmail.com> Mon, 13 Feb 2023 15:02:48 -0700
hush (3.9.2) stable; urgency=medium
* This release adds RandomX support in Hush Smart Chains (HSCs)
* A new feature called "zsweep" has been added, which defaults to disabled.
* Expired transactions will not be relayed & nodes doing so no longer banned
* Fix a rare coredump when nodes have many unconfirmed or expired transactions
* New RPC: getblockmerkletree, which shows full Merkle Tree for a block height
* New RPC: z_consolidationstatus will show config + stats about consolidation
* New RPC: z_anonsettxdelta : Returns delta (difference) in the anonset for a
given txid.
* New RPC: z_anonsetblockdelta : Returns delta (difference) in the anonset for
a given block.
* getrawtransaction RPC now returns a "size" key with the size in bytes of a
transaction
* sendmany RPC will now reject transactions that send to t-addresses
immediately, instead of them being rejected in mempool
* New contrib script: contrib/gen-zaddrs.pl - Generates z-addresses in bulk
* New contrib script: contrib/sdl_checkpoints.pl - Generate SDL checkpoints
using getblockmerkletree
* ZeroMQ support has been removed from Hush
-- Hush Core <myhushteam@gmail.com> Tue, 27 Sep 2022 14:08:15 -0700
hush (3.9.1) stable; urgency=medium
* Fix RPC deadlocks, which caused the RPC interface to hang
* The listbanned RPC now returns a new key time_remaining which tells how many
seconds are remaining in the ban
* The rescan RPC now works correctly when given a height. This can be used to
do a partial rescan from a custom height, without restarting the node.
* Minimum disk space required for running full node increased to 1GB from 50MB
* Dockerfile has been updated
-- Hush Core <myhushteam@gmail.com> Tue, 25 Jan 2022 06:39:18 -0700
hush (3.9.0) stable; urgency=high
* hushd, hush-cli, and hush-tx are now true binaries instead of shell scripts
* New official location for full node data is ~/.hush and existing full
nodes will continue to use the legacy ~/.komodo directory
* Hush full nodes will now attempt to talk to two more nodes by default:
node1.hush.land and node2.hush.land
* New RPC: listaddresses - Show all taddrs in this wallet.dat
* New RPC: rpcinfo - Shows stats about RPC internals
* These RPCs can now be run during RPC warmup: listaddresses, z_exportwallet,
signmessage, decoderawtransaction, and getnetworkinfo
* New doc/hushd.service to use hushd with systemd
* Optimize zaddrs by only building block's witness caches involving our wallet
connection on
* When RPC connection fails hush-cli now tells you which port it was trying to
connect to
* Calculation of HSC "network magic" has changed as of 3.9.0
* New Stratum API so you can Solo mine with your full node, enable it
with -stratum=1
* hush-smart-chain script now installed in Debian packages
* Now compatible on SBC (Single Board Computer) like PineBook, Rock64,
Raspberry Pi, etc.
-- Hush Core <myhushteam@gmail.com> Thu, 21 Oct 2021 04:44:44 -0700
hush (3.8.0) stable; urgency=medium
* New Sietch feature: Randomized change output location
* New Sietch feature: Sietch-ified z_shieldcoinbase
* Implemented patch to fix how the longest chain is calculated, which could
prevent mining pools from making payout transactions
* plz_stop feature implemented for when RPC interface is not functioning
(such as filled by deadlocks) making it impossible to shut it down correctly
* -keepnotewitnesscache prevents Sapling Note Witness cache from being
deleted from wallet.dat on shutdown.
* -rescanheight can be used with -keepnotewitnesscache and -rescan to do a
partial rescan of history and avoid completely rebuilding the Witness Cache
* -zindex data is now stored on disk in the new zindex.dat file
* getpeerinfo now returns a relaytxes key which says if a remote node is
relaying transactions to your node
* Improvements to the RPC help documentation
-- Hush Core <myhushteam@gmail.com> Sat, 10 Jul 2021 06:53:52 -0700
hush (3.7.1) stable; urgency=medium
* Removed more internals code related to unused Sprout transactions, making
Hush run and compile faster and use less memory.
* Now provides more useful error message when user attempts to make
transaction before the node is synced.
* z_sendmany RPC docs now show an example of a z2z transaction
* Deprecated alert p2p message no longer processed & nodes using it will be
banned
* try-before-evict ported from BTC core to help protect against Eclipse and
Sybil Attacks
* "Feeler connections" ported from BTC, which is another technique to make
Eclipse and Sybil Attacks harder and more expensive
* New RPC: z_getbalances returns a list of all zaddrs with non-zero balance.
* "Automagic z_sendmany" makes the RPC easier to use and also improves privacy
-- Hush Core <myhushteam@gmail.com> Wed, 21 Apr 2021 14:18:12 -0700
hush (3.7.0) stable; urgency=medium
* Improved TLS error reporting
* Fix bug relating to calculating difficulty
-- Hush Core <myhushteam@gmail.com> Thu, 01 Apr 2021 02:53:21 -0700
hush (3.6.3) stable; urgency=low
* Maintenance release, which is mostly the same as 3.6.2 but it fixes some
issues in Debian+Arch packages and binaries not able to find asmap.dat
-- Hush Core <myhushteam@gmail.com> Fri, 26 Feb 2021 14:42:59 -0700
hush (3.6.2) stable; urgency=medium
* Autonomous System Map (asmap) bucketing by default
* New CLI flag -asmap is on by default, and can be turned off with -asmap=0
* debug.log is now shrunk to 15MB instead of 100MB
* The max size of debug.log can now be controlled via -maxdebugfilesize
-- Hush Core <myhushteam@gmail.com> Sun, 21 Feb 2021 14:21:31 -0700
hush (3.6.1) stable; urgency=low
* WolfSSL upgraded to 4.6.0 and side-channel resistance enabled via
ECC_TIMING_RESISTANT
* Hush full nodes now exclusively communivate via P2P messages with TLS1.3 as
the option -tls=only has become default and cannot be turned off
* Improved error-handling and logging of TLS connections
* getpeerinfo now shows 3 new keys for each peer
* New developer documentation in DEVELOPING.md
* -whitelist and -whitelistaddress now called -allowlist and -allowlistaddress
* Minimum protocol version is now 1987420
-- Hush Core <myhushteam@gmail.com> Wed, 27 Jan 2021 19:42:38 -0700
hush (3.6.0) stable; urgency=medium
* Fixes sync issues near block 340k caused by blocktime halving bug
* New official domain https://hush.is reflected everywhere
* New Hush DPoW Notaries replace KMD Notaries
* Increased in-memory UTXO cache db by 100MB (25%) to increase performance of
initial syncing
* Prevent Delayed-Proof-of-Work attack from Komodo Notaries
* New -dpow-start-height CLI flag used to reject all DPoW transactions (and
attacks) up to a certain height, as general defense against any DPoW attacks
* More secure + private TLS 1.3 implementation
* Switched to WolfSSL 4.5.0 instead of OpenSSL
* Nodes randomly choose between GCM-SHA384 and CHACHA20-POLY1305-SHA256 when
making connections to other nodes.
* Faster release binaries with -03
* Optimized and hardened memory pool code
* getblocktemplate RPC now provides better error reporting about whether there
are no peers or if it's not in sync
* Removed more Sprout code, which is tightly mixed into deep internals,
resulting in increased compile speed and reduced memory overhead
* New P2P protocol version. Peers only talk to 3.5.x nodes and newer
-- Hush Core <myhushteam@gmail.com> Fri, 18 Dec 2020 02:07:35 -0700
hush (3.5.2) stable; urgency=low
* Re-released hushd under the GNU Public License Version 3 (GPLv3)
* The z_listreceivedaddress RPC now returns a memoStr key for the utf8 string
representation of a shielded memo, if it exists
-- Hush Core <myhushteam@gmail.com> Thu, 22 Oct 2020 16:16:19 -0700
hush (3.5.1) stable; urgency=low
* TLS 1.3 support ported from ZEN with custom Hush tweaks
* All nodes will try using encrypted TLS connections with peers by default
* getinfo now returns a tls_connections key in JSON data
* -tls=only can be used to only use encrypted connections
* ASN map filtering of peers, ported from KMD + BTC Core
-- Hush Core <myhushteam@gmail.com> Tue, 06 Oct 2020 07:43:47 -0700
hush (3.5.0) stable; urgency=medium
* Finalize changes to support new Blocktime of 75 seconds
* Updated the Hush Halving schedule, i.e. Emission Curve, for the next ~120
years (the next 30 halvings)
* The Hush Block Reward will go to zero at Block 50740000 in the year 2140
* Greatly improved Sietch implementation with "amnesia zdust" addresses
* Sietch zdust outputs now always contain "random/encrypted" data
* -wallet CLI option supports wallets outside the datadir and relative paths
* -txsend CLI option ported from Zcash upstream to help with i2p integration
* Improved aarch64 support for Raspberry Pi 4
* Removed the proton optional dependency
* GetAdjustedTime() replaced with GetTime()
* Correctly keep track of ChainShieldedSpends for z_getchaintxstats
* timeoffset key in getpeerinfo and getnetworkifo deprecated and now always 0
* More remnants of dead Sprout/JoinSplit code removed
* Added a z_listreceivedaddress RPC which internals never had RPC access
* Fixes and improvements to deletetx=1, still considered experimental
* Checkpoints updated up to Block 300K
-- Hush Core <myhushteam@gmail.com> Wed, 23 Sep 2020 22:03:17 -0700
hush (3.4.0) stable; urgency=high
* New Season 4 KMD Notary pubkeys have been updated (as of Block 245555)
* ENFORCED PRIVACY (aka z2z) merged & set to take effect at Block 340000
* All remaining internals code relating to Sprout has been deleted
* The new Subatomic Dapp has been ported from KMD, which supports z2z swaps
* Implemented own mirror of Boost in our build system
* Merged various fixes relating to CryptoConditions from KMD upstream
* Optimizations and bug fixes to Sapling Consolidation
* Fixes CVE-2018-20586 from KMD (which ported it from BTC)
* Added z_getnotescount RPC
* Updated ccache dependency to 3.7.9
* Ported the -txexpirynotify CLI option from ZEC upstream
* Added rescan RPC for wallets to initiate a rescan without importing a key
and without restarting
-- Hush Core <myhushteam@gmail.com> Thu, 18 Jun 2020 09:35:31 -0700
hush (3.3.2) stable; urgency=medium
* ARMv8 support added
* Sapling Zaddr Consolidation, which reduces the size of wallets and
increases performance for service providers
* New CLI options added to hushd - refer to release notes for specifics
* New RPCs: z_getinfo, z_listsentbyaddress, z_listreceivedbyaddress,
getalldata
* New -opretmintxfee ported from KMD upstream
* ThreadNotifyWallets refactor ported from ZEC upstream
* Deletion of libsnark internal library
* Shielded index (zindex) statistics of coinbase and organic
transactions/payments corrected
* Updated dependencies: curl, boost, native_ccache, openssl, and proton
* Removed more Sprout-only RPC's (zcbenchmark, zcrawjoinsplit) and code
* Various improvements to RPC documentation
-- Hush Core <myhushteam@gmail.com> Wed, 08 Apr 2020 12:21:44 -0700
hush (3.3.1) stable; urgency=low
* Maintenance release fixes a non-consensus bug in sendmany which prevented
it from working.
-- Hush Core <myhushteam@gmail.com> Sat, 18 Jan 2020 09:16:21 -0700
hush (3.3.0) stable; urgency=high
* New "Sietch" functionality protects against new metadata attacks
* New ability to launch Hush Smart Chains with a single command
* Fixes CVE-2019-18936 in UniValue dependency: bitcoin/bitcoin#17742
* New experimental Shielded Index (-zindex) which keeps track of many stats
seen via the new getchaintxstats RPC including shielded payments,
anonymity set size and many other things.
* New experimental z_listnullifiers RPC which returns Sapling nullifiers.
* Updates + fixes to all CryptoConditions smart contracts from KMD 0.5.0
* Updates NSPV/Superlite code from KMD 0.5.0
* Update 3rd party KMD Notary node pubkeys moving Hush from a run-time
fork of KMD to a source code fork
* Enable creation of z-only (like Pirate) Hush Smart Chains via -ac_private=1
* Removed more Sprout-specific code, making hushd faster & easier to maintain
* Allow hush-cli stop to be run during RPC warmup
* Update to libsodium 1.0.18
* Removes VerusHash from the source code
* Removed large amounts of Proof-of-Stake-related code not used in Hush
* Ported AFL fuzzing features to our build system from Zcash
* Changed max debug.log size from 10MB to 100MB
* Added checkpoints for every 1000th Hush block
* New contrib/checkpoints.pl script to automatically generate checkpoints
* Deleted QT wallet code inherited from Bitcoin, which was old and broken
* z_exportwallet can now optionally not rescan
* New SHA256 SSE4 routines ported from KMD (which was ported from BTC),
enabled with --enable-experimental-asm=yes
* debug.log no longer containts a log2_stake column
* New --hardfork-height CLI option for devs+notaries for testing
-- Hush Core <myhushteam@gmail.com> Fri, 03 Jan 2020 10:13:17 -0700
hush (3.2.3) stable; urgency=low
* Update build dependencies to use own forks of libgmp, libsnark, libsodium
* New RPC keys are now returned in getblockchaininfo : longestchain and
notarized which are now used by the SDL backend
-- Hush Core <myhushteam@gmail.com> Sat, 14 Dec 2019 04:59:59 -0700
hush (3.2.2) stable; urgency=medium
* Fix CVE-2017-18350 from ZEC and windows portability fix from KMD upstream
* Removed some Sprout code
* Fixed some rare edge case bugs in Sapling param finding code
* New detection of "corrupt" Sapling params (invalid sizes) to helps give
users the correct error in a GUI wallet (corrupt versus no params)
* Fix Sapling params to support Mac DMGs being installed to /Applications
-- Hush Core <myhushteam@gmail.com> Tue, 26 Nov 2019 12:17:17 -0700
hush (3.2.1) stable; urgency=low
* Fixes issues discovered in Hush 3.2.0
* New DEVELOPING.md document for advice working on Hush codebase
* Updated to latest upstream SuperLite/nSPV features
* Merged in latest cryptocondition/Antara module updates from KMD upstream
* Fixed a bug that corrupts the block index on second startup
* Improved code to locate installed Sapling params, since Debian packages
install them into /usr/share/hush
* Updated DNSSeeds
* Fix fees associated with transactions in the mempool with fSkipExpiry=0
-- Hush Core <myhushteam@gmail.com> Tue, 29 Oct 2019 22:34:35 -0700
hush (3.2.0) stable; urgency=medium
* 3.2.0.1 release.

4
contrib/debian/control

@ -13,4 +13,6 @@ Vcs-Browser: https://git.hush.is/hush/hush3
Package: hush
Architecture: amd64 arm64
Depends: ${shlibs:Depends}
Description: Hush cryptocoin full node. Speak And Transact Freely. Hush inherits from Bitcoin Protocol and Zcash Protocol and is focused on private communications.
Description: Cryptocoin full node for Hush
Speak And Transact Freely with Hush, which inherits from Bitcoin Protocol and
Zcash Protocol and is focused on private communications.

0
CONTRIBUTING.md → doc/CONTRIBUTING.md

0
DEVELOPING.md → doc/DEVELOPING.md

0
OLD_WALLETS.md → doc/OLD_WALLETS.md

4
doc/bips.md

@ -1,4 +0,0 @@
BIPs that are implemented by Hush (up-to-date up to **v1.1.0**):
* Numerous historic BIPs were present in **v1.0.0** at launch; see [the protocol spec](https://github.com/zcash/zips/blob/master/protocol/protocol.pdf) for details.
* [`BIP 111`](https://github.com/bitcoin/bips/blob/master/bip-0111.mediawiki): `NODE_BLOOM` service bit added, but only enforced for peer versions `>=170004` as of **v1.1.0** ([PR #2814](https://github.com/zcash/zcash/pull/2814)).

6
doc/hsc.md

@ -1,10 +1,10 @@
# Hush Smart Chains
# Hush Arrakis Chains
An overview of HSCs can be found here:
https://git.hush.is/hush/hush-smart-chains
Hush Smart Chains allow you to create a privacy coin with no custom C++ code, just running one command!
Hush Arrakis Chains allow you to create a privacy coin with no custom C++ code, just running one command!
The new coin that is created can use either Equihash PoW (ASIC or GPU) or RandomX PoW (CPU).
## HSC Creator
@ -13,7 +13,7 @@ https://git.hush.is/hush/hsc-creator with its site https://hush.is/hsc-creator
## HSC HOWTO
https://git.hush.is/onryo/hush-smart-chain-how-to
https://git.hush.is/onryo/hush-arrakis-chain-how-to
## HSC CLI

BIN
doc/hush/earnhush.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
doc/hush/hush0.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

16
doc/randomx.md

@ -1,9 +1,9 @@
# RandomX
Hush Smart Chains support using RandomX as a Proof-Of-Work algorithm as of release 3.9.2 .
Hush Arrakis Chains support using RandomX as a Proof-Of-Work algorithm as of release 3.9.2 .
This means you can now launch a privacy coin with Hush tech that can be mined with a CPU
instead of requiring an ASIC or GPU. RandomX is the same algorithm that Monero (XMR) and
various other cryptocoins use. As far as we know, Hush Smart Chains are the first coins
various other cryptocoins use. As far as we know, Hush Arrakis Chains are the first coins
based on Zcash Protocol that can use the RandomX PoW algorithm. Many thanks to all the
people who helped make this possible.
@ -13,12 +13,12 @@ The following command can be used to launch an HSC on a single computer. Each op
HSC CLI arguments that start with `-ac_` means they *Affect Consensus*.
```
./src/hush-smart-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1
./src/hush-arrakis-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1
```
* `hush-smart-chain` is the script used to launch or connect to HSCs
* `hush-arrakis-chain` is the script used to launch or connect to HSCs
* It lives in the `./src` directory, next to `hushd` and `hush-cli`
* It is called `hush-smart-chain.bat` on Windows
* It is called `hush-arrakis-chain.bat` on Windows
* `-ac_halving=100` means "the block reward halves every 100 blocks"
* `-ac_algo=randomx` means "use RandomX for Proof-Of-Work
* The default is Equihash (200,9)
@ -41,12 +41,12 @@ HSC CLI arguments that start with `-ac_` means they *Affect Consensus*.
* One node would use
```
# first node
./src/hush-smart-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555
./src/hush-arrakis-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555
```
* And the second node would use:
```
# mining node. NOTE: This node will mine the genesis block and pre-mine, if any
./src/hush-smart-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1
./src/hush-arrakis-chain -ac_halving=100 -ac_algo=randomx -ac_name=RANDOMX -ac_private=1 -ac_blocktime=15 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1
```
# Advanced Options
@ -67,7 +67,7 @@ HUSH RandomX currently has two advanced options that some may want to use:
This section is not required reading if you just want to use it as a PoW algorithm for an HSC. Here we will explain how the internals of RandomX works inside of the Hush codebase.
We use the official RandomX implementation from https://github.com/tevador/RandomX with custom configuration options. If some type of hardware is created to mine the XMR RandomX algorithm, it will not be compatible with the Hush RandomX algorithm. This is by design. All Hush Smart Chains use the same RandomX config options, so if a hardware device is created to mine one HSC that uses RandomX, it can be used to mine any HSC using RandomX. Every HSC with unique consensus parameters will start off with it's own unique key block with at least 9 bytes of entropy.
We use the official RandomX implementation from https://github.com/tevador/RandomX with custom configuration options. If some type of hardware is created to mine the XMR RandomX algorithm, it will not be compatible with the Hush RandomX algorithm. This is by design. All Hush Arrakis Chains use the same RandomX config options, so if a hardware device is created to mine one HSC that uses RandomX, it can be used to mine any HSC using RandomX. Every HSC with unique consensus parameters will start off with it's own unique key block with at least 9 bytes of entropy.
The source code of RandomX is embedded in the Hush source code at `./src/RandomX` and the configuration options used are at `./src/RandomX/src/configuration.h` .

43
migratecoin.sh

@ -1,43 +0,0 @@
#!/usr/usr/bin/env bash
# Copyright (c) 2016-2024 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
# coin between 2 assetchains on the same -ac_cc id
set -e
source=DERPZ
target=DERPZ000
address="Rxxx"
amount=1
# Alias for running cli on source chain
cli_source="hush-cli -ac_name=$source"
# Raw tx that we will work with
txraw=`$cli_source createrawtransaction "[]" "{\"$address\":$amount}"`
# Convert to an export tx
exportData=`$cli_source migrate_converttoexport $txraw $target $amount`
exportRaw=`echo $exportData | jq -r .exportTx`
exportPayouts=`echo $exportData | jq -r .payouts`
# Fund
exportFundedData=`$cli_source fundrawtransaction $exportRaw`
exportFundedTx=`echo $exportFundedData | jq -r .hex`
# Sign
exportSignedData=`$cli_source signrawtransaction $exportFundedTx`
exportSignedTx=`echo $exportSignedData | jq -r .hex`
# Send
echo "Sending export tx"
$cli_source sendrawtransaction $exportSignedTx
read -p "Wait for a notarization to HUSH, and then two more notarizations from the target chain, and then press enter to continue"
# Create import
importTx=`$cli_source migrate_createimporttransaction $exportSignedTx $payouts`
importTx=`hush-cli migrate_completeimporttransaction $importTx`
# Send import
hush-cli -ac_name=$target sendrawtransaction $importTx

4
qa/rpc-tests/test_framework/test_framework.py

@ -162,10 +162,10 @@ class ComparisonTestFramework(BitcoinTestFramework):
def add_options(self, parser):
parser.add_option("--testbinary", dest="testbinary",
default=os.getenv("BITCOIND", "hush-smart-chain"),
default=os.getenv("BITCOIND", "hush-arrakis-chain"),
help="bitcoind binary to test")
parser.add_option("--refbinary", dest="refbinary",
default=os.getenv("BITCOIND", "hush-smart-chain"),
default=os.getenv("BITCOIND", "hush-arrakis-chain"),
help="bitcoind binary to use for reference nodes (if any)")
def setup_chain(self):

2
src/Makefile.am

@ -251,7 +251,7 @@ LIBHUSH_H = \
obj/build.h: FORCE
@$(MKDIR_P) $(builddir)/obj
@$(top_srcdir)/share/genbuild.sh $(abs_top_builddir)/src/obj/build.h \
@$(top_srcdir)/util/genbuild.sh $(abs_top_builddir)/src/obj/build.h \
$(abs_top_srcdir)
libbitcoin_util_a-clientversion.$(OBJEXT): obj/build.h

5
src/cc/CCcustom.cpp

@ -19,11 +19,6 @@
#include "key_io.h"
#include "CCinclude.h"
int32_t CClib_initcp(struct CCcontract_info *cp,uint8_t evalcode)
{
return(-1);
}
struct CCcontract_info *CCinit(struct CCcontract_info *cp, uint8_t evalcode)
{
return(cp);

65
src/cc/CCinclude.h

@ -216,7 +216,6 @@ int32_t CCgetspenttxid(uint256 &spenttxid,int32_t &vini,int32_t &height,uint256
/// @private
UniValue CClib(struct CCcontract_info *cp,char *method,char *jsonstr);
UniValue CClib_info(struct CCcontract_info *cp);
static const uint256 zeroid; //!< null uint256 constant
@ -430,67 +429,6 @@ void CCaddr3set(struct CCcontract_info *cp,uint8_t evalcode,CPubKey pk,uint8_t *
/// @see GetCCaddress1of2
void CCaddr1of2set(struct CCcontract_info *cp, CPubKey pk1, CPubKey pk2,uint8_t *priv,char *coinaddr);
/// Creates a token transaction output with a cryptocondition that allows to spend it by one key.
/// The resulting vout will have two eval codes (EVAL_TOKENS and evalcode parameter value).
/// The returned output should be added to a transaction vout array.
/// @param evalcode cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param nValue value of the output in satoshi
/// @param pk pubkey to spend the cc
/// @returns vout object
/// @see CCinit
/// @see CCcontract_info
CTxOut MakeTokensCC1vout(uint8_t evalcode, CAmount nValue, CPubKey pk);
/// Another MakeTokensCC1vout overloaded function that creates a token transaction output with a cryptocondition with two eval codes that allows to spend it by one key.
/// Resulting vout will have three eval codes (EVAL_TOKENS, evalcode and evalcode2 parameter values).
/// The returned output should be added to a transaction vout array.
/// @param evalcode cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param evalcode2 yet another cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param nValue value of the output in satoshi
/// @param pk pubkey to spend the cc
/// @returns vout object
/// @see CCinit
/// @see CCcontract_info
CTxOut MakeTokensCC1vout(uint8_t evalcode, uint8_t evalcode2, CAmount nValue, CPubKey pk);
/// MakeTokensCC1of2vout creates a token transaction output with a 1of2 cryptocondition that allows to spend it by either of two keys.
/// The resulting vout will have two eval codes (EVAL_TOKENS and evalcode parameter value).
/// The returned output should be added to a transaction vout array.
/// @param evalcode cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param nValue value of the output in satoshi
/// @param pk1 one of two pubkeys to spend the cc
/// @param pk2 second of two pubkeys to spend the cc
/// @returns vout object
/// @see CCinit
/// @see CCcontract_info
CTxOut MakeTokensCC1of2vout(uint8_t evalcode, CAmount nValue, CPubKey pk1, CPubKey pk2);
/// Another overload of MakeTokensCC1of2vout creates a token transaction output with a 1of2 cryptocondition with two eval codes that allows to spend it by either of two keys.
/// The resulting vout will have three eval codes (EVAL_TOKENS, evalcode and evalcode2 parameter values).
/// The returned output should be added to a transaction vout array.
/// @param evalcode cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param evalcode2 yet another cryptocondition eval code (transactions with this eval code in cc inputs will be forwarded to the contract associated with this eval code)
/// @param nValue value of the output in satoshi
/// @param pk1 one of two pubkeys to spend the cc
/// @param pk2 second of two pubkeys to spend the cc
/// @returns vout object
/// @see CCinit
/// @see CCcontract_info
CTxOut MakeTokensCC1of2vout(uint8_t evalcode, uint8_t evalcode2, CAmount nValue, CPubKey pk1, CPubKey pk2);
/// Gets adddress for token cryptocondition vout
/// @param cp CCcontract_info structure initialized with EVAL_TOKENS eval code
/// @param[out] destaddr retrieved address
/// @param pk public key to create the cryptocondition
bool GetTokensCCaddress(struct CCcontract_info *cp, char *destaddr, CPubKey pk);
/// Gets adddress for token 1of2 cc vout
/// @param cp CCcontract_info structure initialized with EVAL_TOKENS eval code
/// @param[out] destaddr retrieved address
/// @param pk first public key to create the cryptocondition
/// @param pk2 second public key to create the cryptocondition
bool GetTokensCCaddress1of2(struct CCcontract_info *cp, char *destaddr, CPubKey pk, CPubKey pk2);
/// CCaddrTokens1of2set sets pubkeys, private key and cc addr for spending from 1of2 token cryptocondition vout
/// @param cp contract info structure where the private key is set
/// @param pk1 one of the two public keys of the 1of2 cc
@ -501,9 +439,6 @@ bool GetTokensCCaddress1of2(struct CCcontract_info *cp, char *destaddr, CPubKey
/// @see CCcontract_info
void CCaddrTokens1of2set(struct CCcontract_info *cp, CPubKey pk1, CPubKey pk2, uint8_t *priv, char *coinaddr);
/// @private
int32_t CClib_initcp(struct CCcontract_info *cp,uint8_t evalcode);
/// IsCCInput checks if scriptSig object contains a cryptocondition
/// @param scriptSig scriptSig object with a cryptocondition
/// @returns true if the scriptSig object contains a cryptocondition

2
src/cc/CCutils.cpp

@ -456,6 +456,4 @@ int64_t TotalPubkeyCCInputs(const CTransaction &tx, const CPubKey &pubkey)
return total;
}
extern struct CCcontract_info CCinfos[0x100];
extern std::string MYCCLIBNAME;
bool CClib_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx,unsigned int nIn);

89
src/cc/cclib.cpp

@ -40,70 +40,6 @@ extern std::string MYCCLIBNAME;
char *CClib_name() { return((char *)MYCCLIBNAME.c_str()); }
struct CClib_rpcinfo
{
char *CCname,*method,*help;
int32_t numrequiredargs,maxargs;
uint8_t funcid,evalcode;
}
CClib_methods[] =
{
{ (char *)"faucet2", (char *)"fund", (char *)"amount", 1, 1, 'F', EVAL_FAUCET2 },
{ (char *)"faucet2", (char *)"get", (char *)"<no args>", 0, 0, 'G', EVAL_FAUCET2 },
#ifdef BUILD_CUSTOMCC
RPC_FUNCS
#endif
};
std::string CClib_rawtxgen(struct CCcontract_info *cp,uint8_t funcid,cJSON *params);
cJSON *cclib_reparse(int32_t *nump,char *jsonstr) // assumes origparams will be freed by caller
{
cJSON *params; char *newstr; int32_t i,j;
*nump = 0;
if ( jsonstr != 0 )
{
if ( jsonstr[0] == '"' && jsonstr[strlen(jsonstr)-1] == '"' )
{
jsonstr[strlen(jsonstr)-1] = 0;
jsonstr++;
}
newstr = (char *)malloc(strlen(jsonstr)+1);
for (i=j=0; jsonstr[i]!=0; i++)
{
if ( jsonstr[i] == '%' && jsonstr[i+1] == '2' && jsonstr[i+2] == '2' )
{
newstr[j++] = '"';
i += 2;
}
else if ( jsonstr[i] == '\'' )
newstr[j++] = '"';
else newstr[j++] = jsonstr[i];
}
newstr[j] = 0;
params = cJSON_Parse(newstr);
if ( 0 && params != 0 )
printf("new.(%s) -> %s\n",newstr,jprint(params,0));
free(newstr);
*nump = cJSON_GetArraySize(params);
//free(origparams);
} else params = 0;
return(params);
}
UniValue CClib_method(struct CCcontract_info *cp,char *method,char *jsonstr)
{
UniValue result(UniValue::VOBJ);
return(result);
}
UniValue CClib_info(struct CCcontract_info *cp)
{
UniValue result(UniValue::VOBJ);
return(result);
}
UniValue CClib(struct CCcontract_info *cp,char *method,char *jsonstr)
{
UniValue result(UniValue::VOBJ);
@ -120,11 +56,6 @@ bool CClibExactAmounts(struct CCcontract_info *cp,Eval* eval,const CTransaction
return false;
}
bool CClib_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx,unsigned int nIn)
{
return false;
}
int64_t AddCClibInputs(struct CCcontract_info *cp,CMutableTransaction &mtx,CPubKey pk,int64_t total,int32_t maxinputs,char *cmpaddr,int32_t CCflag)
{
return 0;
@ -135,21 +66,6 @@ int64_t AddCClibtxfee(struct CCcontract_info *cp,CMutableTransaction &mtx,CPubKe
return(0);
}
std::string Faucet2Fund(struct CCcontract_info *cp,uint64_t txfee,int64_t funds)
{
return("");
}
std::string CClib_rawtxgen(struct CCcontract_info *cp,uint8_t funcid,cJSON *params)
{
return("");
}
UniValue cclib_error(UniValue &result,const char *errorstr)
{
return(result);
}
uint256 juint256(cJSON *obj)
{
uint256 tmp; bits256 t = jbits256(obj,0);
@ -157,11 +73,6 @@ uint256 juint256(cJSON *obj)
return(revuint256(tmp));
}
int32_t cclib_parsehash(uint8_t *hash32,cJSON *item,int32_t len)
{
return(0);
}
#if BUILD_CUSTOMCC
#include "customcc.cpp"

75
src/cc/customcc.cpp

@ -1,88 +1,15 @@
// Copyright (c) 2016-2024 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
/*
simple stub custom cc
Just update the functions in this file, then from ~/hush3/src/cc
../hush-cli -ac_name=CUSTOM stop
./makecustom
../hush-smart-chain -ac_name=CUSTOM -ac_cclib=custom -ac_cc=2 ...
The above will rebuild hushd and get it running again
*/
CScript custom_opret(uint8_t funcid,CPubKey pk)
{
CScript opret; uint8_t evalcode = EVAL_CUSTOM;
opret << OP_RETURN << E_MARSHAL(ss << evalcode << funcid << pk);
return(opret);
}
uint8_t custom_opretdecode(CPubKey &pk,CScript scriptPubKey)
{
std::vector<uint8_t> vopret; uint8_t e,f;
GetOpReturnData(scriptPubKey,vopret);
if ( vopret.size() > 2 && E_UNMARSHAL(vopret,ss >> e; ss >> f; ss >> pk) != 0 && e == EVAL_CUSTOM )
{
return(f);
}
return(0);
}
UniValue custom_rawtxresult(UniValue &result,std::string rawtx,int32_t broadcastflag)
{
CTransaction tx;
if ( rawtx.size() > 0 )
{
result.push_back(Pair("hex",rawtx));
if ( DecodeHexTx(tx,rawtx) != 0 )
{
if ( broadcastflag != 0 && myAddtomempool(tx) != 0 )
RelayTransaction(tx);
result.push_back(Pair("txid",tx.GetHash().ToString()));
result.push_back(Pair("result","success"));
} else result.push_back(Pair("error","decode hex"));
} else result.push_back(Pair("error","couldnt finalize CCtx"));
return(result);
}
UniValue custom_func0(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
{
UniValue result(UniValue::VOBJ);
result.push_back(Pair("result","success"));
result.push_back(Pair("message","just an example of an information returning rpc"));
return(result);
}
// send yourself 1 coin to your CC address using normal utxo from your -pubkey
UniValue custom_func1(uint64_t txfee,struct CCcontract_info *cp,cJSON *params)
{
CMutableTransaction mtx = CreateNewContextualCMutableTransaction(Params().GetConsensus(), hush_nextheight()); std::string rawtx;
UniValue result(UniValue::VOBJ); CPubKey mypk; int64_t amount = COIN; int32_t broadcastflag=0;
if ( txfee == 0 )
txfee = CUSTOM_TXFEE;
mypk = pubkey2pk(Mypubkey());
if ( AddNormalinputs2(mtx,COIN+txfee,64) >= COIN+txfee ) // add utxo to mtx
{
// make op_return payload as normal.
CScript opret = custom_opret('1',mypk);
std::vector<std::vector<unsigned char>> vData = std::vector<std::vector<unsigned char>>();
if ( makeCCopret(opret, vData) )
{
// make vout0 with op_return included as payload.
mtx.vout.push_back(MakeCC1vout(cp->evalcode,amount,mypk,&vData));
fprintf(stderr, "vout size2.%li\n", mtx.vout.size());
rawtx = FinalizeCCTx(0,cp,mtx,mypk,txfee,CScript());
return(custom_rawtxresult(result,rawtx,broadcastflag));
}
}
UniValue result(UniValue::VOBJ);
return(result);
}
bool custom_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx)
{
return false;
}

33
src/cc/customcc.h

@ -1,20 +1,6 @@
// Copyright (c) 2016-2024 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
/*
to create a custom libcc.so:
1. change "func0" and "func1" to method names that fit your custom cc. Of course, you can create more functions by adding another entry to RPC_FUNCS. there is not any practical limit to the number of methods.
2. For each method make sure there is a UniValue function declaration and CUSTOM_DISPATCH has an if statement checking for it that calls the custom_func
3. write the actual custom_func0, custom_func1 and custom_validate in customcc.cpp
4. ./makecustom, which builds cclib.cpp with -DBUILD_CUSTOMCC and puts the libcc.so in ~/hush3/src and rebuilds hushd
5. launch your chain with -ac_cclib=customcc -ac_cc=2
*/
std::string MYCCLIBNAME = (char *)"customcc";
@ -27,22 +13,3 @@ std::string MYCCLIBNAME = (char *)"customcc";
{ (char *)MYCCNAME, (char *)"func0", (char *)"<parameter help>", 1, 1, '0', EVAL_CUSTOM }, \
{ (char *)MYCCNAME, (char *)"func1", (char *)"<no args>", 0, 0, '1', EVAL_CUSTOM },
bool custom_validate(struct CCcontract_info *cp,int32_t height,Eval *eval,const CTransaction tx);
UniValue custom_func0(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
UniValue custom_func1(uint64_t txfee,struct CCcontract_info *cp,cJSON *params);
#define CUSTOM_DISPATCH \
if ( cp->evalcode == EVAL_CUSTOM ) \
{ \
if ( strcmp(method,"func0") == 0 ) \
return(custom_func0(txfee,cp,params)); \
else if ( strcmp(method,"func1") == 0 ) \
return(custom_func1(txfee,cp,params)); \
else \
{ \
result.push_back(Pair("result","error")); \
result.push_back(Pair("error","invalid customcc method")); \
result.push_back(Pair("method",method)); \
return(result); \
} \
}

2
src/cc/dapps/dappinc.h

@ -339,7 +339,7 @@ cJSON *get_hushcli(char *refcoin,char **retstrp,char *acname,char *method,char *
if ( acname[0] != 0 ) {
if ( refcoin[0] != 0 && strcmp(refcoin,"HUSH3") != 0 && strcmp(refcoin,acname) != 0 )
printf("unexpected: refcoin.(%s) acname.(%s)\n",refcoin,acname);
sprintf(cmdstr,"hush-smart-chain -ac_name=%s %s %s %s %s %s %s %s %s > %s\n",acname,method,arg0,arg1,arg2,arg3,arg4,arg5,arg6,fname);
sprintf(cmdstr,"hush-arrakis-chain -ac_name=%s %s %s %s %s %s %s %s %s > %s\n",acname,method,arg0,arg1,arg2,arg3,arg4,arg5,arg6,fname);
}
else if ( strcmp(refcoin,"HUSH3") == 0 )
sprintf(cmdstr,"hush-cli %s %s %s %s %s %s %s %s > %s\n",method,arg0,arg1,arg2,arg3,arg4,arg5,arg6,fname);

2
src/cc/dapps/zmigrate.c

@ -23,7 +23,7 @@
#include "cJSON.c"
/*
NOTE: HUSH nor any Hush Smart Chain has any sprout outputs. This code is kept for historical and educational purposes.
NOTE: HUSH nor any Hush Arrakis Chain has any sprout outputs. This code is kept for historical and educational purposes.
z_migrate: the purpose of z_migrate is to make converting of all sprout outputs into sapling. the usage would be for the user to specify a sapling address and call z_migrate zsaddr, until it returns that there is nothing left to be done.

1
src/cc/eval.cpp

@ -30,7 +30,6 @@
char *CClib_name();
Eval* EVAL_TEST = 0;
struct CCcontract_info CCinfos[0x100];
extern pthread_mutex_t HUSH_CC_mutex;

2
src/chainparams.cpp

@ -117,7 +117,7 @@ public:
consensus.nPowMaxAdjustDown = 32; // 32% adjustment down
consensus.nPowMaxAdjustUp = 16; // 16% adjustment up
// we are emulating old node behavior at startup, they used 150s
consensus.nPowTargetSpacing = 150; // 75; // HUSH is 75 seconds, Hush Smart Chains are 60 seconds by default
consensus.nPowTargetSpacing = 150; // 75; // HUSH is 75 seconds, Hush Arrakis Chains are 60 seconds by default
consensus.nPowAllowMinDifficultyBlocksAfterHeight = boost::none;
// HUSH never had Sprout in our blockchain history, but some internals require *knowing* about Sprout
// or it breaks backward compatibility. We do what we can.

2
src/dragonxd

@ -13,4 +13,4 @@ cd $DIR
SEEDNODE=176.126.87.241
# Remember Remember the 5th November for freedom of speech is not free!!
./hush-smart-chain -ac_name=DRAGONX -ac_algo=randomx -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=36 -ac_private=1 -addnode=$SEEDNODE $@
./hush-arrakis-chain -ac_name=DRAGONX -ac_algo=randomx -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=36 -ac_private=1 -addnode=$SEEDNODE $@

0
src/hush-smart-chain → src/hush-arrakis-chain

0
src/hush-smart-chain.bat → src/hush-arrakis-chain.bat

2
src/hush_bitcoind.h

@ -948,7 +948,7 @@ CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams);
// This function defines the Hush Founders Reward (AKA Dev Tax)
// 10% of all block rewards go towards Hush core team
// If you do not like this, you are encouraged to fork the chain
// or start your own Hush Smart Chain: https://git.hush.is/hush/hush-smart-chains
// or start your own Hush Arrakis Chain: https://git.hush.is/hush/hush-arrakis-chains
// HUSH supply curve cannot be exactly represented via CLI args, so we do it ourselves.
// You specify the BR, and the FR % gets added so 10% of 12.5 is 1.25
// but to tell the AC params, I need to say "11% of 11.25" is 1.25

2
src/hush_utils.h

@ -1611,7 +1611,7 @@ uint64_t hush_block_subsidy(int height)
return subsidy;
}
// wrapper for more general supply curves of Hush Smart Chains
// wrapper for more general supply curves of Hush Arrakis Chains
uint64_t hush_sc_block_subsidy(int nHeight)
{
// Find current era, start from beginning reward, and determine current subsidy

2
src/init.cpp

@ -1128,7 +1128,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
LogPrintf("%s: parameter interaction: -externalip set -> setting -discover=0\n", __func__);
}
// Read asmap file by default for HUSH3 and all Hush Smart Chains
// Read asmap file by default for HUSH3 and all Hush Arrakis Chains
if (GetArg("-asmap",1)) {
fs::path asmap_path = fs::path(GetArg("-asmap", ""));

6
src/main.cpp

@ -106,7 +106,7 @@ size_t nCoinCacheUsage = 5000 * 300;
uint64_t nPruneTarget = 0;
// If the tip is older than this (in seconds), the node is considered to be in initial block download.
int64_t nMaxTipAge = DEFAULT_MAX_TIP_AGE;
bool ishush3 = strncmp(SMART_CHAIN_SYMBOL, "HUSH3",5) == 0 ? true : false;
const bool ishush3 = strncmp(SMART_CHAIN_SYMBOL, "HUSH3",5) == 0 ? true : false;
int32_t nFirstHalvingHeight = 340000;
unsigned int expiryDelta = DEFAULT_TX_EXPIRY_DELTA;
@ -6886,7 +6886,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
LogPrintf("dropmessagestest DROPPING RECV MESSAGE\n");
return true;
}
auto p2pdebug = GetArg("-p2pdebug",0);
const bool p2pdebug = GetArg("-p2pdebug",0);
if(p2pdebug)
fprintf(stderr,"%s: netmsg: %s from %s\n", __func__, strCommand.c_str(), pfrom->addr.ToString().c_str() );
@ -6913,7 +6913,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
CAddress addrFrom;
uint64_t nNonce = 1;
int nVersion; // use temporary for version, don't set version number until validated as connected
int minVersion = MIN_PEER_PROTO_VERSION;
const int minVersion = ishush3 ? MIN_HUSH_PEER_PROTO_VERSION : MIN_PEER_PROTO_VERSION;
vRecv >> nVersion >> pfrom->nServices >> nTime >> addrMe;
if (nVersion == 10300)
nVersion = 300;

2
src/miner.cpp

@ -1128,7 +1128,7 @@ void static RandomXMiner()
char randomxHash[RANDOMX_HASH_SIZE];
rxdebug("%s: created randomxHash of size %d\n", RANDOMX_HASH_SIZE);
char randomxKey[82]; // randomx spec says keysize of >60 bytes is implementation-specific
// initial randomx key is unique to every Hush Smart Chain, and has at least 9 bytes (2^9=128 bits) of entropy
// initial randomx key is unique to every Hush Arrakis Chain, and has at least 9 bytes (2^9=128 bits) of entropy
// since magic is 4 bytes, rpc port is 4 bytes and smart chain symbol must be at least 1 character long
snprintf(randomxKey, 81, "%08x%s%08x", ASSETCHAINS_MAGIC, SMART_CHAIN_SYMBOL, ASSETCHAINS_RPCPORT);

2
src/net.cpp

@ -2733,7 +2733,7 @@ bool CNode::GetTlsValidate()
{
if (tlsValidate == eTlsOption::FALLBACK_UNSET)
{
// This is useful for private Hush Smart Chains, that want to exist
// This is useful for private Hush Arrakis Chains, that want to exist
// on a closed VPN with an internal CA or trusted cert system, or
// various other use cases
if ( GetBoolArg("-tlsvalidate", false)) {

2
src/pow.cpp

@ -578,7 +578,7 @@ unsigned int CalculateNextWorkRequired(arith_uint256 bnAvg,
return bnNew.GetCompact();
}
// HUSH does not use these functions but Hush Smart Chains can opt-in to using more bleeding edge DAA's
// HUSH does not use these functions but Hush Arrakis Chains can opt-in to using more bleeding edge DAA's
// ASIC chains do not need these protections as much -- Duke Leto
unsigned int lwmaGetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params)
{

6
src/rpc/blockchain.cpp

@ -1620,12 +1620,12 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp, const CPubKey& mypk
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid block count: should be between 0 and the block's height - 1");
}
}
LogPrintf("%s: blockcount = %d\n", __func__, blockcount);
// LogPrintf("%s: blockcount = %d\n", __func__, blockcount);
const CBlockIndex* pindexPast = pindex->GetAncestor(pindex->GetHeight() - blockcount);
int nTimeDiff = pindex->GetMedianTimePast() - pindexPast->GetMedianTimePast();
int nTxDiff = pindex->nChainTx - pindexPast->nChainTx;
LogPrintf("%s: pindexPast.height = %d, pindex.height = %d\n", __func__, pindexPast->GetHeight(), pindex->GetHeight() );
// LogPrintf("%s: pindexPast.height = %d, pindex.height = %d\n", __func__, pindexPast->GetHeight(), pindex->GetHeight() );
UniValue ret(UniValue::VOBJ);
ret.pushKV("time", (int64_t)pindex->nTime);
@ -1657,7 +1657,7 @@ UniValue getchaintxstats(const UniValue& params, bool fHelp, const CPubKey& mypk
ret.pushKV("window_tx_count", nTxDiff);
ret.pushKV("window_interval", nTimeDiff);
int64_t nPaymentsDiff = pindex->nChainPayments - pindexPast->nChainPayments;
LogPrintf("%s: pindexPast.nChainPayments = %d, pindex.nChainPayments = %d\n", __func__, pindexPast->nChainPayments, pindex->nChainPayments );
//LogPrintf("%s: pindexPast.nChainPayments = %d, pindex.nChainPayments = %d\n", __func__, pindexPast->nChainPayments, pindex->nChainPayments );
int64_t nShieldedTxDiff = pindex->nChainShieldedTx - pindexPast->nChainShieldedTx;
int64_t nShieldingTxDiff = pindex->nChainShieldingTx - pindexPast->nChainShieldingTx;
int64_t nDeshieldingTxDiff = pindex->nChainDeshieldingTx - pindexPast->nChainDeshieldingTx;

2
src/rpc/misc.cpp

@ -482,7 +482,7 @@ UniValue validateaddress(const UniValue& params, bool fHelp, const CPubKey& mypk
if (fHelp || params.size() != 1)
throw runtime_error(
"validateaddress \"addr\"\n"
"\nReturn information about the given Hush or Hush Smart Chain (HSC) address.\n"
"\nReturn information about the given Hush or Hush Arrakis Chain (HAC) address.\n"
"\nArguments:\n"
"1. \"addr\" (string, required) The address to validate\n"
"\nResult:\n"

10
src/rpc/net.cpp

@ -31,6 +31,8 @@
#include <boost/foreach.hpp>
#include <univalue.h>
extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT;
using namespace std;
using namespace hush;
@ -276,8 +278,8 @@ UniValue addnode(const UniValue& params, bool fHelp, const CPubKey& mypk)
"1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n"
"2. \"command\" (string, required) 'add' to add a node to the list, 'remove' to remove a node from the list, 'onetry' to try a connection to the node once\n"
"\nExamples:\n"
+ HelpExampleCli("addnode", "\"192.168.0.6:18030\" \"onetry\"")
+ HelpExampleRpc("addnode", "\"192.168.0.6:18030\", \"onetry\"")
+ HelpExampleCli("addnode", "\"192.168.0.6:" + to_string(ASSETCHAINS_P2PPORT) + "\" \"onetry\"")
+ HelpExampleRpc("addnode", "\"192.168.0.6:" + to_string(ASSETCHAINS_P2PPORT) + "\", \"onetry\"")
);
string strNode = params[0].get_str();
@ -320,8 +322,8 @@ UniValue disconnectnode(const UniValue& params, bool fHelp, const CPubKey& mypk)
"\nArguments:\n"
"1. \"node\" (string, required) The node (see getpeerinfo for nodes)\n"
"\nExamples:\n"
+ HelpExampleCli("disconnectnode", "\"192.168.0.6:18030\"")
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:18030\"")
+ HelpExampleCli("disconnectnode", "\"192.168.0.6:" + to_string(ASSETCHAINS_P2PPORT) + "\"")
+ HelpExampleRpc("disconnectnode", "\"192.168.0.6:" + to_string(ASSETCHAINS_P2PPORT) + "\"")
);
CNode* pNode = FindNode(params[0].get_str());

2
src/sc/koolaid

@ -1,3 +1,3 @@
#!/usr/bin/env bash
# Copyright (c) 2018-2024 The Hush developers
./hush-smart-chain -ac_name=KOOLAID $@
./hush-arrakis-chain -ac_name=KOOLAID $@

2
src/sc/kush

@ -1,3 +1,3 @@
#!/usr/bin/env bash
# Copyright (c) 2018-2024 The Hush developers
./hush-smart-chain -ac_name=KUSH $@
./hush-arrakis-chain -ac_name=KUSH $@

2
src/sc/zex

@ -1,3 +1,3 @@
#!/usr/bin/env bash
# Copyright (c) 2018-2024 The Hush developers
./hush-smart-chain -ac_name=ZEX $@
./hush-arrakis-chain -ac_name=ZEX $@

4
src/sietch.h

@ -29,8 +29,8 @@ SendManyRecipient newSietchRecipient(string zaddr) {
// Sietch zouts have random data in their memos so they are indistinguishable from
// encrypted data being stored in the memo field
char hex[] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
// memo field is 512 bytes or 1024 hex chars
char str[1024];
// memo field is 512 bytes or 1024 hex chars plus a null byte
char str[1025];
for(int i=0;i<1024;i++) {
str[i] = hex[GetRandInt(16)];
}

2
src/smartchains

@ -6,7 +6,7 @@ set -eo pipefail
source pubkey.txt
overide_args="$@"
seed_ip=$(SEEDNODE)
hsc='./hush-smart-chain'
hsc='./hush-arrakis-chain'
if [ -z "$delay" ]; then delay=20; fi

17
src/smartchains.old

@ -1,17 +0,0 @@
#!/usr/bin/env bash
# Copyright (c) 2018-2024 The Hush developers
set -x
delay=60
source pubkey.txt
echo $pubkey
echo "jl777 is a traitor to his village of cypherpunks, ca333 is his obedient servant"
hsc="./hush-smart-chain"
ip=$(HUSHDEX_SEEDNODE)
# this chain helps power HushDEX
$hsc -pubkey=$pubkey -ac_name=ZEX -ac_supply=100000000 -addnode=$ip $@ &
# these are testcoins, like ARRR
$hsc -pubkey=$pubkey -ac_name=ZUSH -ac_supply=100000000 -addnode=$ip $@ &
$hsc -pubkey=$pubkey -ac_name=KOOLAID -ac_supply=100000000 -addnode=$ip $@ &

2
src/testdragonxd

@ -14,4 +14,4 @@ BLOCKTIME=18
SUPPLY=0
# Remember Remember the 5th November for freedom of speech is not free!!
./hush-smart-chain -ac_name=TESTDRAGONX -ac_algo=randomx -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=$BLOCKTIME -ac_private=1 -ac_supply=$SUPPLY -debug=randomx $@
./hush-arrakis-chain -ac_name=TESTDRAGONX -ac_algo=randomx -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=$BLOCKTIME -ac_private=1 -ac_supply=$SUPPLY -debug=randomx $@

2
src/testequihashd

@ -15,4 +15,4 @@ SUPPLY=0
# same as TESTDRAGONX except equihash and different ac_name
# and debug=pow which is the equivalent of debug=randomx for equihash mining
./hush-smart-chain -ac_name=TESTEQUIHASH -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=$BLOCKTIME -ac_private=1 -ac_supply=$SUPPLY -debug=pow $@
./hush-arrakis-chain -ac_name=TESTEQUIHASH -ac_halving=3500000 -ac_reward=300000000 -ac_blocktime=$BLOCKTIME -ac_private=1 -ac_supply=$SUPPLY -debug=pow $@

7
src/version.h

@ -26,8 +26,13 @@ static const int PROTOCOL_VERSION = 1987426;
static const int INIT_PROTO_VERSION = 209;
//! In this version, 'getheaders' was introduced.
static const int GETHEADERS_VERSION = 31800;
//! disconnect from peers older than this proto version
//! disconnect from peers older than this proto version (HUSH mainnet)
static const int MIN_HUSH_PEER_PROTO_VERSION = 1987426;
//! disconnect from peers older than this proto version (HACs)
static const int MIN_PEER_PROTO_VERSION = 1987420;
//! nTime field added to CAddress, starting with this version;
//! if possible, avoid requesting addresses nodes older than this
static const int CADDR_TIME_VERSION = 31402;

2
src/wallet/asyncrpcoperation_sendmany.cpp

@ -363,7 +363,7 @@ bool AsyncRPCOperation_sendmany::main_impl() {
/**
* SCENARIO #0 (All HUSH and Hush Smart Chains)
* SCENARIO #0 (All HUSH and Hush Arrakis Chains)
* Sprout not involved, so we just use the TransactionBuilder and we're done.
* We added the transparent inputs to the builder earlier.
*/

2
src/wallet/rpcwallet.cpp

@ -5311,7 +5311,7 @@ UniValue z_sendmany(const UniValue& params, bool fHelp, const CPubKey& mypk)
}
txsize += CTXOUT_REGULAR_SIZE * taddrRecipients.size();
if (txsize > max_tx_size) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Too many outputs, size of raw transaction would be larger than limit of %d bytes", max_tx_size ));
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Size of raw transaction %d would be larger than limit of %d bytes", txsize, max_tx_size ));
}
// Minimum confirmations

2
src/wallet/wallet.cpp

@ -2790,7 +2790,7 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
// This should never fail: we should always be able to get the tree
// state on the path to the tip of our chain
if (pindex->pprev) {
const bool sapling = true;
const bool sapling = pindex->GetHeight() >= 2 ? true : false;
if (sapling) { // NetworkUpgradeActive(pindex->pprev->GetHeight(), Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
assert(pcoinsTip->GetSaplingAnchorAt(pindex->pprev->hashFinalSaplingRoot, saplingTree));
}

10
test_antispam

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# any CLI args given to this script will be passed along
# example: ./test_antispam -debug=blah
#./src/hushd -ac_name=ANTISPAM -ac_private=1 -ac_blocktime=180 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1 $@
./src/hushd -ac_name=ANTISPAM -ac_private=1 -ac_blocktime=180 -ac_reward=500000000 -ac_supply=55555 $@
# to run via the debugger
# type "run" when gdb prompt appears
#gdb --args ./src/hushd -- -ac_algo=randomx -ac_name=ANTISPAM -ac_private=1 -ac_blocktime=180 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1

4
util/build-debian-package.sh

@ -77,8 +77,8 @@ strip $DEB_BIN/hush-tx
cp $SRC_PATH/src/dragonx-cli $DEB_BIN
cp $SRC_PATH/src/dragonxd $DEB_BIN
cp $SRC_PATH/src/hush-smart-chain $DEB_BIN
#cp $SRC_DEB/changelog $DEB_DOC/changelog.Debian
cp $SRC_PATH/src/hush-arrakis-chain $DEB_BIN
cp $SRC_DEB/changelog $DEB_DOC
cp $SRC_DEB/copyright $DEB_DOC
cp -r $SRC_DEB/examples $DEB_DOC
# Copy manpages

2
util/gen-linux-binary-release.sh

@ -24,7 +24,7 @@ echo "Created new build dir $BUILD"
cp contrib/asmap/asmap.dat $BUILD
cp sapling*.params $BUILD
cd src
cp hushd hush-cli hush-tx hush-smart-chain dragonx-cli dragonxd ../$BUILD
cp hushd hush-cli hush-tx hush-arrakis-chain dragonx-cli dragonxd ../$BUILD
cd ../$BUILD
strip hushd hush-cli hush-tx
cd ..

0
share/genbuild.sh → util/genbuild.sh

2
test_randomx → util/test_randomx

@ -2,7 +2,7 @@
# any CLI args given to this script will be passed along
# example: ./test_randomx -debug=randomx
./src/hushd -ac_randomx_interval=10 -ac_randomx_lag=3 -ac_halving=20 -ac_algo=randomx -ac_name=RANDOMX10 -ac_private=1 -ac_blocktime=20 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1 $@
../src/hushd -ac_randomx_interval=10 -ac_randomx_lag=3 -ac_halving=20 -ac_algo=randomx -ac_name=RANDOMX10 -ac_private=1 -ac_blocktime=20 -ac_reward=500000000 -ac_supply=55555 -gen=1 -genproclimit=1 -testnode=1 $@
# to run via the debugger
# type "run" when gdb prompt appears

0
toolchain-info.sh → util/toolchain-info.sh

Loading…
Cancel
Save