From 46693a355a42fe9d4601ba3902b2f3fb8a7e4d9d Mon Sep 17 00:00:00 2001 From: DanS Date: Tue, 21 Jul 2026 13:59:06 -0500 Subject: [PATCH] docs: rebrand documentation, packaging, and helper scripts to DragonX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The docs/packaging were largely un-rebranded Hush3 content, with several docs stating facts that are wrong for DragonX. This rewrites them against the verified DragonX source state. Corrections (not just branding): - PoW: RandomX (CPU), not Equihash/ASIC — README, overview.md, randomx.md - Privacy: private from genesis (ac_private=1, Sapling@height1), not "as of block 340000" — overview.md, payment-api.md - Removed the false "coinbase must be shielded" consensus claim (shield-coinbase.md, payment-api.md); coinbase is directly spendable - Fixed default fee 0.0001 (was 0.0010000, 10x); stratum port 22769 (was 19031) - datadir ~/.hush/DRAGONX, DRAGONX.conf, dragonxd/dragonx-cli/dragonx-tx, git.dragonx.is throughout; branch model dev->dragonx - Softened the inherited dPoW reorg claim (no live DragonX notary infra) Packaging: fix build-debian-package.sh + gen-manpages.sh to use the dragonx binaries/manpages; rename bash-completions to dragonx*; drop hush-arrakis-chain from the package. Keep /usr/share/hush (hardcoded in the binary for params). Also: README links/logo, ObsidianDragon + SilentDragonXAndroid wallets, networking/init/dev-process/contrib/util rebrand, and leftover helper scripts. Delete legacy duplicates (hushd.* init/service, HUSH3.conf examples, OLD_WALLETS.md, hsc.md) and rename hush-uri.bat -> dragonx-uri.bat. Out of scope (noted, not changed): historical changelog/copyright, the Hush mainnet airdrop snapshot, seed data files, depends/ source mirrors, and the in-code strCurrencyUnits="HUSH". Co-Authored-By: Claude Opus 4.8 (1M context) --- ISSUE_TEMPLATE.md | 10 +- README.md | 237 +++++++++--------- contrib/README.md | 78 +++--- contrib/avg_blocktime.pl | 2 +- contrib/block_time.pl | 16 +- contrib/convert_address.py | 4 +- contrib/debian/examples/HUSH3.conf | 209 --------------- contrib/debian/hush.example | 1 - contrib/debian/hush.install | 3 - contrib/debian/hush.manpages | 3 - ...completion => dragonx-cli.bash-completion} | 36 +-- ...-completion => dragonx-tx.bash-completion} | 18 +- contrib/{hush-uri.bat => dragonx-uri.bat} | 18 +- ...sh-completion => dragonxd.bash-completion} | 14 +- contrib/fresh_clone_compile_and_run.sh | 14 +- contrib/gen-zaddrs.pl | 4 +- contrib/gitian-descriptors/README.md | 10 +- contrib/init/README.md | 10 +- contrib/init/dragonxd.conf | 4 +- contrib/init/dragonxd.init | 2 +- contrib/init/dragonxd.openrc | 6 +- contrib/init/dragonxd.openrcconf | 2 +- contrib/init/dragonxd.service | 6 +- contrib/init/hushd.conf | 59 ----- contrib/init/hushd.init | 67 ----- contrib/init/hushd.openrc | 87 ------- contrib/init/hushd.openrcconf | 33 --- contrib/init/hushd.service | 22 -- contrib/macdeploy/README.md | 7 +- contrib/qos/README.md | 4 +- contrib/sda_checkpoints.pl | 17 +- contrib/sdl_checkpoints.pl | 13 +- contrib/seeds/README.md | 6 +- contrib/testgen/README.md | 2 +- contrib/verifysfbinaries/README.md | 13 +- doc/CONTRIBUTING.md | 21 +- doc/DEVELOPING.md | 21 +- doc/OLD_WALLETS.md | 71 ------ doc/beefy-HUSH3.conf | 7 - doc/cjdns.md | 32 ++- doc/config.md | 26 +- doc/developer-notes.md | 77 +++--- doc/dnsseed-policy.md | 19 +- doc/dragonx/logo_dragonx.svg | 23 ++ doc/dragonx/logo_dragonx_128.png | Bin 0 -> 7060 bytes doc/files.md | 10 +- doc/help.md | 32 +-- doc/hsc.md | 24 -- doc/hushd-systemd.md | 35 --- doc/hushd.service | 9 - doc/i2p.md | 34 +-- doc/init.md | 81 +++--- doc/overview.md | 40 ++- doc/payment-api.md | 34 +-- doc/randomx.md | 113 ++++----- doc/release-process.md | 71 +++--- doc/security-warnings.md | 42 ++-- doc/shield-coinbase.md | 48 ++-- doc/tests.md | 6 +- doc/tor.md | 59 +++-- doc/translation_strings_policy.md | 2 +- doc/wallet-backup.md | 54 ++-- doc/zsweep-consolidation.md | 18 +- qa/rpc-tests/README.md | 8 +- util/README.md | 40 +-- util/afl/afl-get.sh | 4 +- util/afl/afl-getbuildrun.sh | 4 +- util/afl/afl-run.sh | 2 +- util/build-arm-xcompile.sh | 24 +- util/build-debian-package.sh | 49 ++-- util/checkpoints.pl | 6 +- util/docker-entrypoint.sh | 19 +- util/docker-hush-cli.sh | 2 +- util/gen-manpages.sh | 29 +-- util/gen_scriptpubs.pl | 8 +- util/test_randomx | 4 +- 76 files changed, 829 insertions(+), 1416 deletions(-) delete mode 100644 contrib/debian/examples/HUSH3.conf delete mode 100644 contrib/debian/hush.example delete mode 100644 contrib/debian/hush.install delete mode 100644 contrib/debian/hush.manpages rename contrib/{hush-cli.bash-completion => dragonx-cli.bash-completion} (84%) rename contrib/{hush-tx.bash-completion => dragonx-tx.bash-completion} (74%) rename contrib/{hush-uri.bat => dragonx-uri.bat} (61%) rename contrib/{hushd.bash-completion => dragonxd.bash-completion} (82%) delete mode 100644 contrib/init/hushd.conf delete mode 100644 contrib/init/hushd.init delete mode 100644 contrib/init/hushd.openrc delete mode 100644 contrib/init/hushd.openrcconf delete mode 100644 contrib/init/hushd.service delete mode 100644 doc/OLD_WALLETS.md delete mode 100644 doc/beefy-HUSH3.conf create mode 100644 doc/dragonx/logo_dragonx.svg create mode 100644 doc/dragonx/logo_dragonx_128.png delete mode 100644 doc/hsc.md delete mode 100644 doc/hushd-systemd.md delete mode 100644 doc/hushd.service diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md index 47605991b..8b797184b 100644 --- a/ISSUE_TEMPLATE.md +++ b/ISSUE_TEMPLATE.md @@ -1,8 +1,8 @@ -This issue tracker is only for technical issues related to hushd +This issue tracker is only for technical issues related to dragonxd -General Hush questions and/or support requests and are best directed to [Telegram](https://hush.is/telegram_support) +General DragonX questions and/or support requests are best directed to [Telegram](https://dragonx.is/tg) or [Matrix](https://dragonx.is/matrix). ### Describe the issue @@ -23,9 +23,9 @@ Tell us what should happen Tell us what happens instead including any noticable error output (any messages displayed on-screen when e.g. a crash occurred) -### The version of Hush you were using: +### The version of DragonX you were using: -Run `hushd --version` to find out +Run `dragonxd --version` to find out ### Machine specs: - OS name + version: @@ -38,7 +38,7 @@ Run `hushd --version` to find out ### Any extra information that might be useful in the debugging process. -This includes the relevant contents of `~/.hush/HUSH3/debug.log` or `~/.komodo/HUSH3/debug.log` if you have a legacy install. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site. +This includes the relevant contents of `~/.hush/DRAGONX/debug.log`. You can paste raw text, attach the file directly in the issue or link to the text via a pastebin type site. Please also include any non-standard things you did during compilation (extra flags, dependency version changes etc.) if applicable. Beware that usernames and IP addresses and other metadata is definitely in this log file! diff --git a/README.md b/README.md index 3b2a1e64b..479f0422a 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,51 @@

- + DragonX

+

DragonX

+

A fully-private, RandomX CPU-mineable cryptocurrency.

-

+

-| 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/master/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) +| Introduction | Build | Run | Mine | +| :---: | :---: | :---: | :---: | +| [What is DragonX?](#what-is-dragonx) | [Build from source](#build-from-source) | [Run a node](#running-a-node) | [CPU mining](#cpu-mining-randomx) | +| [Key facts](#key-facts) | [Install a release](#installing-dragonx-binaries) | [Fastest sync](#fastest-way-to-sync-bootstrap) | [Wallets](#wallets) |

-# What is Hush? +# What is DragonX? -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! +DragonX implements extreme privacy via blockchain technology. It is **private from +genesis**: every ordinary transaction is shielded (`z2z`), so your transaction metadata +stays private. DragonX is based on Bitcoin code with Zcash's zero-knowledge Sapling +cryptography, and its defining feature is **RandomX Proof-of-Work — it is mined with a +CPU**, not ASICs or GPUs. -# What is this repository? +DragonX has its own genesis block. Its lineage is Bitcoin → Zcash → Komodo → Hush → DragonX; +it is a fork of the [Hush](https://git.hush.is/hush/hush3) full node, with the Proof-of-Work +changed from Equihash to RandomX and privacy enforced from the very first block. -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. +This software is the DragonX full node and command-line client. It downloads and stores the +entire history of DragonX transactions; depending on your computer and network connection +this can take a while, so most users start from the [bootstrap snapshot](#fastest-way-to-sync-bootstrap). + +**DragonX is experimental software.** Use at your own risk, just like Bitcoin. + +# Key facts + +| | | +| --- | --- | +| Ticker | **DRAGONX** | +| Proof-of-Work | **RandomX** (CPU-mineable) | +| Privacy | fully private from genesis (`ac_private=1`, Sapling active at height 1) | +| Block time | 36 seconds | +| Block reward | 3 DRAGONX, halving every 3,500,000 blocks | +| Max block size | 4 MB | +| RPC port | 21769 | +| P2P port | 18030 | +| Data directory | `~/.hush/DRAGONX` (Linux) | +| Config file | `DRAGONX.conf` | +| Binaries | `dragonxd`, `dragonx-cli`, `dragonx-tx` | # Fastest way to sync (bootstrap) @@ -42,86 +62,42 @@ checksums and (once a release key is published) its cryptographic signature, the 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 +# Build from source -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 -domains should be assumed to be backdoored. +Building uses 3 build processes by default; you need ~2GB of RAM for each. -**Hush is unfinished and highly experimental.** Use at your own risk! Just like Bitcoin. - -# Build on Debian or Ubuntu +### 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. +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -Video Tutorial: https://videos.hush.is/videos/how-to-install-on-linux -# Build on Arch +### 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. +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -# Build on Fedora +### 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. +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -# Install on Windows 10 +### macOS -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](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`. - -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](https://git.hush.is/jahway603/hush-docs/src/branch/master/advanced/cross-compile-hush-full-node-to-aarch64-with-docker.md) 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](https://brew.sh/), then install dependencies: +Install Xcode Command Line Tools and [Homebrew](https://brew.sh/), then: ```sh xcode-select --install @@ -131,10 +107,8 @@ brew install gcc autoconf automake pkgconf libtool cmake curl 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) +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx # Make sure libtool gnubin and cargo are on PATH export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH" ./build.sh -j3 @@ -147,77 +121,92 @@ export PATH="$HOME/.cargo/bin:/usr/local/opt/libtool/libexec/gnubin:$PATH" ./build.sh --mac-release -j$(sysctl -n hw.ncpu) ``` -# Installing Hush binaries +### Windows (cross-compiled on Linux) -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 +```sh 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 +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx +./util/build-win.sh -j$(nproc) ``` -Downloading Git source repo, building and running Hush: +### ARM (Raspberry Pi) + +Any ARMv7 machine cannot build this repo because the underlying zk-SNARK library does not +support that instruction set. You need an ARMv8-based board (Raspberry Pi 4 or newer). Either +install an `aarch64` release package (see below) or cross-compile from amd64. + +# Installing DragonX binaries + +1. [Download a release](https://git.dragonx.is/DragonX/dragonx/releases) with a `.deb` extension. +1. Install it, substituting the version you downloaded: + `sudo dpkg -i dragonx-VERSION-amd64.deb` (or `-aarch64.deb` on ARM). +1. Run with: `dragonxd`. + +# Running a node + +Start the daemon: ```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 +./src/dragonxd ``` -# Official Explorers +It stores data in `~/.hush/DRAGONX` and reads `~/.hush/DRAGONX/DRAGONX.conf`. Query it with +`./src/dragonx-cli`, for example: -The links for the Official Hush explorers: - * [explorer.hush.is](https://explorer.hush.is) +```sh +./src/dragonx-cli getinfo +``` -# What is SilentDragon? +To run DragonX as a background service, see [doc/dragonxd-systemd.md](doc/dragonxd-systemd.md). -* [SilentDragon](https://git.hush.is/hush/SilentDragon) is a desktop wallet for HUSH full node.
-* [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. +# CPU mining (RandomX) -# What is HushChat? +DragonX is CPU-mineable via RandomX (the same algorithm family as Monero); ASICs and GPUs do +not apply. To mine with your node, enable generation and choose how many threads to use: -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. +```sh +# mine with 4 CPU threads +./src/dragonxd -gen=1 -genproclimit=4 +``` -# Can I mine with CPU or GPU? +or add to `DRAGONX.conf`: -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. +``` +gen=1 +genproclimit=4 +``` -# Where can I buy Hush? +Mining rewards arrive as transparent coinbase, which is directly spendable; you can optionally +move it into the shielded pool with `z_shieldcoinbase` (see +[doc/shield-coinbase.md](doc/shield-coinbase.md)). For more on the algorithm and its tuning +options, see [doc/randomx.md](doc/randomx.md). -1. https://nonkyc.io/market/HUSH_BTC -1. https://tradeogre.com/exchange/BTC-HUSH +# Wallets -# Where can I spend Hush? +The DragonX full node includes a built-in wallet, managed via `dragonx-cli` (see +[doc/wallet-backup.md](doc/wallet-backup.md) and [doc/seed-phrase.md](doc/seed-phrase.md)). -AgoraX market: https://agorax.is +Graphical and mobile wallets: -# Earn Hush bounty +* **[ObsidianDragon](https://git.dragonx.is/DragonX/ObsidianDragon/releases)** — desktop wallet, available in both full-node and light-wallet modes. +* **[SilentDragonXAndroid](https://git.dragonx.is/DragonX/SilentDragonXAndroid/releases)** — wallet for Android devices. -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 +DragonX light and mobile wallets use BIP39 seed phrases that are compatible with the full +node — see [doc/seed-phrase.md](doc/seed-phrase.md). -![Logo](doc/hush/earnhush.png "Hush Bounty") +# Support and links -# Support and Socials - -* 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) +* Website: https://dragonx.is +* Source code: https://git.dragonx.is/DragonX +* Block explorer: https://explorer.dragonx.is +* Issues / bounties: https://git.dragonx.is/DragonX/dragonx/issues +* Telegram: https://dragonx.is/tg +* Matrix: https://dragonx.is/matrix +* Twitter / X: https://twitter.com/DragonXchain # License diff --git a/contrib/README.md b/contrib/README.md index 36c04c969..16b4aa362 100644 --- a/contrib/README.md +++ b/contrib/README.md @@ -1,16 +1,14 @@ -# Hush Contrib +# DragonX Contrib -This is mostly very old stuff inherited from Bitcoin and Zcash! +This directory contains various supporting tools and scripts. Much of this is +old material inherited from the Bitcoin/Zcash/Komodo/Hush lineage, so not every +script is guaranteed to work. Please fix bugs and report anything you find. -Do not expect all scripts to work! - -Please fix bugs and report things you find. - -# Hush Tools +# DragonX Tools ## block\_time.pl -Estimate when a Hush block will happen. +Estimate when a DragonX block will happen. Example: @@ -19,65 +17,49 @@ Example: ## gen-zaddrs.pl Generate zaddrs in bulk, by default 50 at a time. Prints out a zaddr one per line. +Useful on a fully-private chain where shielded addresses are the norm. Example: ./contrib/gen-zaddrs.pl # generate 50 zaddrs ./contrib/gen-zaddrs.pl 500 # generate 500 zaddrs - -## Wallet Tools - -### [BitRPC](/contrib/bitrpc) ### -Allows for sending of all standard Bitcoin commands via RPC rather than as command line args. - -### [SpendFrom](/contrib/spendfrom) ### - -Use the raw transactions API to send coins received on a particular -address (or addresses). - ## Repository Tools -### [Developer tools](/contrib/devtools) ### -Specific tools for developers working on this repository. -Contains the script `github-merge.sh` for merging github pull requests securely and signing them using GPG. +### [Verify-Commits](/contrib/verify-commits) +Tool to verify that merge commits were signed by a developer. -### [Verify-Commits](/contrib/verify-commits) ### -Tool to verify that every merge commit was signed by a developer using the above `github-merge.sh` script. - -### [Linearize](/contrib/linearize) ### +### [Linearize](/contrib/linearize) Construct a linear, no-fork, best version of the blockchain. -### [Qos](/contrib/qos) ### +### [Qos](/contrib/qos) +A Linux bash script that sets up traffic control (tc) to limit the outgoing +bandwidth for connections to the DragonX network. This lets you run an +always-on dragonxd instance and have another local dragonxd connect to it and +receive blocks from it. -A Linux bash script that will set up traffic control (tc) to limit the outgoing bandwidth for connections to the Bitcoin network. This means one can have an always-on bitcoind instance running, and another local bitcoind/bitcoin-qt instance which connects to this node and receives blocks from it. - -### [Seeds](/contrib/seeds) ### -Utility to generate the pnSeed[] array that is compiled into the client. +### [Seeds](/contrib/seeds) +Utility to generate the seed node array that is compiled into the client. ## Build Tools and Keys -### [Debian](/contrib/debian) ### -Contains files used to package bitcoind/bitcoin-qt -for Debian-based Linux systems. If you compile bitcoind/bitcoin-qt yourself, there are some useful files here. +### [Debian](/contrib/debian) +Contains files used to package dragonxd for Debian-based Linux systems. -### [Gitian-descriptors](/contrib/gitian-descriptors) ### -Gavin's notes on getting gitian builds up and running using KVM. +### [Gitian-descriptors](/contrib/gitian-descriptors) +Legacy notes on getting gitian builds running. Note that the real DragonX build +path is `./build.sh` together with the `depends/` system; gitian is legacy. ### [Gitian-downloader](/contrib/gitian-downloader) -Various PGP files of core developers. +Various PGP files of developers. -### [MacDeploy](/contrib/macdeploy) ### -Scripts and notes for Mac builds. +### [MacDeploy](/contrib/macdeploy) +Scripts and notes for Mac builds. -## Test and Verify Tools +## Test and Verify Tools -### [TestGen](/contrib/testgen) ### -Utilities to generate test vectors for the data-driven Bitcoin tests. +### [TestGen](/contrib/testgen) +Utilities to generate test vectors for the data-driven base58 tests. -### [Test Patches](/contrib/test-patches) ### -These patches are applied when the automated pull-tester -tests each pull and when master is tested using jenkins. - -### [Verify SF Binaries](/contrib/verifysfbinaries) ### -This script attempts to download and verify the signature file SHA256SUMS.asc from SourceForge. +### [Verify SF Binaries](/contrib/verifysfbinaries) +Legacy SourceForge-era signature verification script (unused for DragonX). diff --git a/contrib/avg_blocktime.pl b/contrib/avg_blocktime.pl index adfa25427..55ab79ccb 100755 --- a/contrib/avg_blocktime.pl +++ b/contrib/avg_blocktime.pl @@ -5,7 +5,7 @@ use warnings; use strict; -my $cli = "./src/hush-cli"; +my $cli = "./src/dragonx-cli"; my $coin = shift || ''; unless (-e $cli) { die "$cli does not exist, aborting"; diff --git a/contrib/block_time.pl b/contrib/block_time.pl index 57cedb061..252e7fd38 100755 --- a/contrib/block_time.pl +++ b/contrib/block_time.pl @@ -8,17 +8,17 @@ use strict; # Given a block height, estimate when it will happen my $block = shift || die "Usage: $0 123"; my $coin = shift || ''; -my $hush = "./src/hush-cli"; -unless (-e $hush) { - die "$hush does not exist, aborting"; +my $cli = "./src/dragonx-cli"; +unless (-e $cli) { + die "$cli does not exist, aborting"; } if ($coin) { - $hush .= " -ac_name=$coin"; + $cli .= " -ac_name=$coin"; } -my $blockcount = qx{$hush getblockcount}; +my $blockcount = qx{$cli getblockcount}; unless ($blockcount = int($blockcount)) { - print "Invalid response from $hush\n"; + print "Invalid response from $cli\n"; exit 1; } @@ -28,7 +28,7 @@ if ($block <= $blockcount) { my $diff = $block - $blockcount; # TODO: support custom blocktimes # assumes HACs use default blocktime of 60s - my $minpb = $coin ? 1 : 1.25; # 75s in minutes for HUSH3 + my $minpb = $coin ? 1 : 0.6; # 36s in minutes for DragonX my $minutes = $diff*$minpb; my $seconds = $minutes*60; my $now = time; @@ -38,7 +38,7 @@ if ($block <= $blockcount) { if ($coin) { print "$coin Block $block will happen at roughly:\n"; } else { - print "Hush Block $block will happen at roughly:\n"; + print "DragonX Block $block will happen at roughly:\n"; } print "$ldate Eastern # $then\n"; print "$gmdate GMT # $then\n"; diff --git a/contrib/convert_address.py b/contrib/convert_address.py index 76aaef5b9..0216962cf 100755 --- a/contrib/convert_address.py +++ b/contrib/convert_address.py @@ -11,7 +11,7 @@ from hashlib import sha256 # based on https://github.com/KMDLabs/pos64staker/blob/master/stakerlib.py#L89 def addr_convert(prefix, address, prefix_bytes): rmd160_dict = {} - # ZEC/HUSH/etc have 2 prefix bytes, BTC/KMD only have 1 + # ZEC/DRAGONX/etc have 2 prefix bytes, BTC/KMD only have 1 # NOTE: any changes to this code should be verified against https://dexstats.info/addressconverter.php ripemd = b58decode_check(address).hex()[2*prefix_bytes:] net_byte = prefix + ripemd @@ -23,7 +23,7 @@ def addr_convert(prefix, address, prefix_bytes): return(final.decode()) if len(sys.argv) < 2: - sys.exit('Usage: %s hushv2address' % sys.argv[0]) + sys.exit('Usage: %s dragonxv2address' % sys.argv[0]) address = sys.argv[1] # convert given address to a KMD address diff --git a/contrib/debian/examples/HUSH3.conf b/contrib/debian/examples/HUSH3.conf deleted file mode 100644 index 0d6abda58..000000000 --- a/contrib/debian/examples/HUSH3.conf +++ /dev/null @@ -1,209 +0,0 @@ -## HUSH3.conf configuration file. Lines beginning with # are comments. - -# Network-related settings: - -# Run a regression test network -#regtest=0 -# Run a test node (which means you can mine with no peers) -#testnode=1 - -#set a custom client name/user agent -#clientName=GoldenSandtrout - -# Rescan from block height -#rescan=123 - -# Connect via a SOCKS5 proxy -#proxy=127.0.0.1:9050 - -# Automatically create Tor hidden service -#listenonion=1 - -#Use separate SOCKS5 proxy to reach peers via Tor hidden services -#onion=1.2.3.4:9050 - -# Only connect to nodes in network (ipv4, ipv6, onion or i2p)")); -#onlynet= - -#Tor control port to use if onion listening enabled -#torcontrol=127.0.0.1:9051 - -# Bind to given address and always listen on it. Use [host]:port notation for IPv6 -#bind= - -# Bind to given address and allowlist peers connecting to it. Use [host]:port notation for IPv6 -#allowbind= - -############################################################## -## Quick Primer on addnode vs connect ## -## Let's say for instance you use addnode=4.2.2.4 ## -## addnode will connect you to and tell you about the ## -## nodes connected to 4.2.2.4. In addition it will tell ## -## the other nodes connected to it that you exist so ## -## they can connect to you. ## -## connect will not do the above when you 'connect' to it. ## -## It will *only* connect you to 4.2.2.4 and no one else.## -## ## -## So if you're behind a firewall, or have other problems ## -## finding nodes, add some using 'addnode'. ## -## ## -## If you want to stay private, use 'connect' to only ## -## connect to "trusted" nodes. ## -## ## -## If you run multiple nodes on a LAN, there's no need for ## -## all of them to open lots of connections. Instead ## -## 'connect' them all to one node that is port forwarded ## -## and has lots of connections. ## -## Thanks goes to [Noodle] on Freenode. ## -############################################################## - -# Use as many addnode= settings as you like to connect to specific peers -#addnode=69.164.218.197 -#addnode=10.0.0.2:8233 - -# Alternatively use as many connect= settings as you like to connect ONLY to specific peers -#connect=69.164.218.197 -#connect=10.0.0.1:8233 - -# Listening mode, enabled by default except when 'connect' is being used -#listen=1 - -# Maximum number of inbound+outbound connections. -#maxconnections= - -# -# JSON-RPC options (for controlling a running hushd process) -# - -# server=1 tells node to accept JSON-RPC commands (set as default if not specified) -#server=1 - -# Bind to given address to listen for JSON-RPC connections. Use [host]:port notation for IPv6. -# This option can be specified multiple times (default: bind to all interfaces) -#rpcbind= - -# You must set rpcuser and rpcpassword to secure the JSON-RPC api -# These will automatically be created for you -#rpcuser=user -#rpcpassword=supersecretpassword - -# How many seconds node will wait for a complete RPC HTTP request. -# after the HTTP connection is established. -#rpcclienttimeout=30 - -# By default, only RPC connections from localhost are allowed. -# Specify as many rpcallowip= settings as you like to allow connections from other hosts, -# either as a single IPv4/IPv6 or with a subnet specification. - -# NOTE: opening up the RPC port to hosts outside your local trusted network is NOT RECOMMENDED, -# because the rpcpassword is transmitted over the network unencrypted and also because anyone -# that can authenticate on the RPC port can steal your keys + take over the account running hushd - -#rpcallowip=10.1.1.34/255.255.255.0 -#rpcallowip=1.2.3.4/24 -#rpcallowip=2001:db8:85a3:0:0:8a2e:370:7334/96 - -# Listen for RPC connections on this TCP port: -#rpcport=1234 - -# You can use hushd to send commands to hushd -# running on another host using this option: -#rpcconnect=127.0.0.1 - -# Transaction Fee - -# Send transactions as zero-fee transactions if possible (default: 0) -#sendfreetransactions=0 - -# Create transactions that have enough fees (or priority) so they are likely to # begin confirmation within n blocks (default: 1). -# This setting is overridden by the -paytxfee option. -#txconfirmtarget=n - -# Miscellaneous options - -# Enable mining at startup -#gen=1 - -# Set the number of threads to be used for mining (-1 = all cores). -#genproclimit=1 - -# Specify a different Equihash solver (e.g. "tromp") to try to mine -# faster when gen=1. -#equihashsolver=default - -# Pre-generate this many public/private key pairs, so wallet backups will be valid for -# both prior transactions and several dozen future transactions. -#keypool=100 - -# Pay an optional transaction fee every time you send a tx. Transactions with fees -# are more likely than free transactions to be included in generated blocks, so may -# be validated sooner. This setting does not affect private transactions created with -# 'z_sendmany'. -#paytxfee=0.00 - -#Rewind the chain to specific block height. This is useful for creating snapshots at a given block height. -#rewind=555 - -#Stop the chain a specific block height. This is useful for creating snapshots at a given block height. -#stopat=1000000 - -#Set an address to use as change address for all transactions. This value must be set to a 33 byte pubkey. All mined coins will also be sent to this address. -#pubkey=027dc7b5cfb5efca96674b45e9fda18df069d040b9fd9ff32c35df56005e330392 - -# Disable clearnet (ipv4 and ipv6) connections to this node -#clearnet=0 - -# Disable ipv4 -#disableipv4=1 -# Disable ipv6 -#disableipv6=1 - -# Enable transaction index -#txindex=1 -# Enable address index -#addressindex=1 -# Enable timestamp index -#timestampindex=1 -# Enable spent index -#spentindex=1 - -# Enable shielded stats index -#zindex=1 - -# Attempt to salvage a corrupt wallet -# salvagewallet=1 - -# Mine all blocks to this address (not good for your privacy and not recommended!) -# Disallowed if clearnet=0 -# mineraddress=XXX - -# Disable wallet -#disablewallet=1 - -# Allow mining to an address that is not in the current wallet -#minetolocalwallet=0 - -# Delete all wallet transactions -#zapwallettxes=1 - -# Enable sapling consolidation -# consolidation=1 - -# Enable stratum server -# stratum=1 - -# Run a command each time a new block is seen -# %s in command is replaced by block hash -#blocknotify=/my/awesome/script.sh %s - -# Run a command when wallet gets a new tx -# %s in command is replaced with txid -#walletnotify=/my/cool/script.sh %s - -# Run a command when tx expires -# %s in command is replaced with txid -#txexpirynotify=/my/elite/script.sh %s - -# Execute this commend to send a tx -# %s is replaced with tx hex -#txsend=/send/it.sh %s diff --git a/contrib/debian/hush.example b/contrib/debian/hush.example deleted file mode 100644 index 43111f548..000000000 --- a/contrib/debian/hush.example +++ /dev/null @@ -1 +0,0 @@ -DEBIAN/examples/HUSH3.conf diff --git a/contrib/debian/hush.install b/contrib/debian/hush.install deleted file mode 100644 index dae3a0633..000000000 --- a/contrib/debian/hush.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/bin/hushd -usr/bin/hush-cli -usr/bin/hush-tx diff --git a/contrib/debian/hush.manpages b/contrib/debian/hush.manpages deleted file mode 100644 index 6685edb09..000000000 --- a/contrib/debian/hush.manpages +++ /dev/null @@ -1,3 +0,0 @@ -DEBIAN/manpages/hush-cli.1 -DEBIAN/manpages/hush-tx.1 -DEBIAN/manpages/hushd.1 diff --git a/contrib/hush-cli.bash-completion b/contrib/dragonx-cli.bash-completion similarity index 84% rename from contrib/hush-cli.bash-completion rename to contrib/dragonx-cli.bash-completion index 90209c0d7..1a7b0a829 100644 --- a/contrib/hush-cli.bash-completion +++ b/contrib/dragonx-cli.bash-completion @@ -1,11 +1,11 @@ -# bash programmable completion for hush-cli(1) +# bash programmable completion for dragonx-cli(1) # Copyright (c) 2012-2016 The Bitcoin Core developers # Copyright (c) 2018-2020 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 -# call $hush-cli for RPC -_hush_rpc() { +# call $dragonx-cli for RPC +_dragonx_rpc() { # determine already specified args necessary for RPC local rpcargs=() for i in ${COMP_LINE}; do @@ -15,25 +15,25 @@ _hush_rpc() { ;; esac done - $hush_cli "${rpcargs[@]}" "$@" + $dragonx_cli "${rpcargs[@]}" "$@" } # Add wallet accounts to COMPREPLY -_hush_accounts() { +_dragonx_accounts() { local accounts - # Accounts are deprecated in hush - #accounts=$(_hush_rpc listaccounts | awk -F '"' '{ print $2 }') + # Accounts are deprecated in dragonx + #accounts=$(_dragonx_rpc listaccounts | awk -F '"' '{ print $2 }') accounts="\\\"\\\"" COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$accounts" -- "$cur" ) ) } -_hush_cli() { +_dragonx_cli() { local cur prev words=() cword - local hush_cli + local dragonx_cli - # save and use original argument to invoke hush-cli for -help, help and RPC - # as hush-cli might not be in $PATH - hush_cli="$1" + # save and use original argument to invoke dragonx-cli for -help, help and RPC + # as dragonx-cli might not be in $PATH + dragonx_cli="$1" COMPREPLY=() _get_comp_words_by_ref -n = cur prev words cword @@ -63,7 +63,7 @@ _hush_cli() { if ((cword > 3)); then case ${words[cword-3]} in addmultisigaddress) - _hush_accounts + _dragonx_accounts return 0 ;; getbalance|gettxout|importaddress|importpubkey|importprivkey|listreceivedbyaccount|listreceivedbyaddress|listsinceblock) @@ -92,7 +92,7 @@ _hush_cli() { return 0 ;; move|setaccount) - _hush_accounts + _dragonx_accounts return 0 ;; esac @@ -108,7 +108,7 @@ _hush_cli() { return 0 ;; getaccountaddress|getaddressesbyaccount|getbalance|getnewaddress|getreceivedbyaccount|listtransactions|move|sendfrom|sendmany) - _hush_accounts + _dragonx_accounts return 0 ;; esac @@ -132,12 +132,12 @@ _hush_cli() { # only parse -help if senseful if [[ -z "$cur" || "$cur" =~ ^- ]]; then - helpopts=$($hush_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) + helpopts=$($dragonx_cli -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) fi # only parse help if senseful if [[ -z "$cur" || "$cur" =~ ^[a-z] ]]; then - commands=$(_hush_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }') + commands=$(_dragonx_rpc help 2>/dev/null | awk '$1 ~ /^[a-z]/ { print $1; }') fi COMPREPLY=( $( compgen -W "$helpopts $commands" -- "$cur" ) ) @@ -150,7 +150,7 @@ _hush_cli() { ;; esac } && -complete -F _hush_cli hush-cli +complete -F _dragonx_cli dragonx-cli # Local variables: # mode: shell-script diff --git a/contrib/hush-tx.bash-completion b/contrib/dragonx-tx.bash-completion similarity index 74% rename from contrib/hush-tx.bash-completion rename to contrib/dragonx-tx.bash-completion index 23fcacf0c..f913d0283 100644 --- a/contrib/hush-tx.bash-completion +++ b/contrib/dragonx-tx.bash-completion @@ -1,15 +1,15 @@ -# bash programmable completion for hush-tx(1) +# bash programmable completion for dragonx-tx(1) # Copyright (c) 2016 The Bitcoin Core developers # Distributed under the GPLv3 software license, see the accompanying # file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html -_hush_tx() { +_dragonx_tx() { local cur prev words=() cword - local hush_tx + local dragonx_tx - # save and use original argument to invoke hush-tx for -help + # save and use original argument to invoke dragonx-tx for -help # it might not be in $PATH - hush_tx="$1" + dragonx_tx="$1" COMPREPLY=() _get_comp_words_by_ref -n =: cur prev words cword @@ -27,15 +27,15 @@ _hush_tx() { if [[ "$cword" == 1 || ( "$prev" != "-create" && "$prev" == -* ) ]]; then # only options (or an uncompletable hex-string) allowed - # parse hush-tx -help for options + # parse dragonx-tx -help for options local helpopts - helpopts=$($hush_tx -help | sed -e '/^ -/ p' -e d ) + helpopts=$($dragonx_tx -help | sed -e '/^ -/ p' -e d ) COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) else # only commands are allowed # parse -help for commands local helpcmds - helpcmds=$($hush_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d ) + helpcmds=$($dragonx_tx -help | sed -e '1,/Commands:/d' -e 's/=.*/=/' -e '/^ [a-z]/ p' -e d ) COMPREPLY=( $( compgen -W "$helpcmds" -- "$cur" ) ) fi @@ -46,7 +46,7 @@ _hush_tx() { return 0 } && -complete -F _hush_tx hush-tx +complete -F _dragonx_tx dragonx-tx # Local variables: # mode: shell-script diff --git a/contrib/hush-uri.bat b/contrib/dragonx-uri.bat similarity index 61% rename from contrib/hush-uri.bat rename to contrib/dragonx-uri.bat index 08f4bc1ef..7ed2e86c6 100644 --- a/contrib/hush-uri.bat +++ b/contrib/dragonx-uri.bat @@ -8,8 +8,8 @@ Exit :RegExport Set RegFile="%Temp%\~etsaclu.tmp" -Set "hush=%~dp0" -set "hush=%hush:\=\\%" +Set "dragonx=%~dp0" +set "dragonx=%dragonx:\=\\%" If Exist %RegFile% ( Attrib -R -S -H %RegFile% & Del /F /Q %RegFile% @@ -17,19 +17,19 @@ If Exist %RegFile% ( ) > %RegFile% Echo Windows Registry Editor Version 5.00 >> %RegFile% Echo. ->> %RegFile% Echo [HKEY_CLASSES_ROOT\hush] ->> %RegFile% Echo @="URL:hush protocol" +>> %RegFile% Echo [HKEY_CLASSES_ROOT\dragonx] +>> %RegFile% Echo @="URL:dragonx protocol" >> %RegFile% Echo "URL Protocol"="" >> %RegFile% Echo. ->> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\DefaultIcon] +>> %RegFile% Echo [HKEY_CLASSES_ROOT\dragonx\DefaultIcon] >> %RegFile% Echo @="silentdragon.exe" >> %RegFile% Echo. ->> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell] +>> %RegFile% Echo [HKEY_CLASSES_ROOT\dragonx\Shell] >> %RegFile% Echo. ->> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell\Open] +>> %RegFile% Echo [HKEY_CLASSES_ROOT\dragonx\Shell\Open] >> %RegFile% Echo. ->> %RegFile% Echo [HKEY_CLASSES_ROOT\hush\Shell\Open\Command] ->> %RegFile% Echo @="%hush%silentdragon.exe \"%%1\"" +>> %RegFile% Echo [HKEY_CLASSES_ROOT\dragonx\Shell\Open\Command] +>> %RegFile% Echo @="%dragonx%silentdragon.exe \"%%1\"" Start /Wait %systemroot%\Regedit.exe /S %RegFile% Del %RegFile% diff --git a/contrib/hushd.bash-completion b/contrib/dragonxd.bash-completion similarity index 82% rename from contrib/hushd.bash-completion rename to contrib/dragonxd.bash-completion index bd341a6fd..d2385b5f6 100644 --- a/contrib/hushd.bash-completion +++ b/contrib/dragonxd.bash-completion @@ -1,17 +1,17 @@ -# bash programmable completion for hushd(1) +# bash programmable completion for dragonxd(1) # Copyright (c) 2012-2017 The Bitcoin Core developers # Copyright (c) 2016-2017 The Zcash developers # Copyright (c) 2018 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 -_hushd() { +_dragonxd() { local cur prev words=() cword - local hushd + local dragonxd - # save and use original argument to invoke hushd for -help + # save and use original argument to invoke dragonxd for -help # it might not be in $PATH - hushd="$1" + dragonxd="$1" COMPREPLY=() _get_comp_words_by_ref -n = cur prev words cword @@ -35,7 +35,7 @@ _hushd() { # only parse -help if senseful if [[ -z "$cur" || "$cur" =~ ^- ]]; then local helpopts - helpopts=$($hushd -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) + helpopts=$($dragonxd -help 2>&1 | awk '$1 ~ /^-/ { sub(/=.*/, "="); print $1 }' ) COMPREPLY=( $( compgen -W "$helpopts" -- "$cur" ) ) fi @@ -47,7 +47,7 @@ _hushd() { ;; esac } && -complete -F _hushd hushd +complete -F _dragonxd dragonxd # Local variables: # mode: shell-script diff --git a/contrib/fresh_clone_compile_and_run.sh b/contrib/fresh_clone_compile_and_run.sh index 93b134f83..c0273c780 100755 --- a/contrib/fresh_clone_compile_and_run.sh +++ b/contrib/fresh_clone_compile_and_run.sh @@ -11,19 +11,19 @@ BRANCH=$1 -git clone https://git.hush.is/hush/hush3 -cd hush3 +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx git checkout $BRANCH # You need 2GB of RAM per core, don't use too many -# (GB of RAM)/2 - 1 is the optimal core count for compiling Hush +# (GB of RAM)/2 - 1 is the optimal core count for compiling DragonX # `nproc` tells you how many cores you have JOBS=$2 JOBZ=$(nproc) # if build.sh fails, we can use many more jobs with make -# Want to fix this parrallel-only build system bug we inherited ? you are a new hush dev +# Want to fix this parrallel-only build system bug we inherited ? you are a new DragonX dev # Sometimes the parrallel build fails because of a race condition, so # we do it a few times to Make Really Sure ./build.sh -j$JOBS;make -j$JOBZ;make -j$JOBZ;make -j$JOBZ -./src/hushd &> hush.log & -# You can give the entire or parts of this file to Hush developers for debugging, +./src/dragonxd &> dragonx.log & +# You can give the entire or parts of this file to DragonX developers for debugging, # but there is a lot of metadata!!! We don't want any more than we need to fix bugz -tail -f hush.log +tail -f dragonx.log diff --git a/contrib/gen-zaddrs.pl b/contrib/gen-zaddrs.pl index c5abc57e4..05a9718ee 100755 --- a/contrib/gen-zaddrs.pl +++ b/contrib/gen-zaddrs.pl @@ -4,8 +4,8 @@ use warnings; use strict; -my $hush = "./src/hush-cli"; -my $znew = "$hush z_getnewaddress"; +my $cli = "./src/dragonx-cli"; +my $znew = "$cli z_getnewaddress"; my $count = 1; my $howmany = shift || 50; diff --git a/contrib/gitian-descriptors/README.md b/contrib/gitian-descriptors/README.md index 07c2ba98b..e1dae7d38 100644 --- a/contrib/gitian-descriptors/README.md +++ b/contrib/gitian-descriptors/README.md @@ -1,4 +1,8 @@ -### Gavin's notes on getting gitian builds up and running using KVM:### +### Notes on getting gitian builds up and running using KVM:### + +Note: These are legacy notes inherited from upstream. The real, supported DragonX +build path is `./build.sh` together with the `depends/` system; gitian is legacy +and is retained here only for historical reference. These instructions distilled from: [ https://help.ubuntu.com/community/KVM/Installation]( https://help.ubuntu.com/community/KVM/Installation) @@ -20,7 +24,7 @@ Sanity checks: Once you've got the right hardware and software: - git clone git://github.com/bitcoin/bitcoin.git + git clone https://git.dragonx.is/DragonX/dragonx.git git clone git://github.com/devrandom/gitian-builder.git mkdir gitian-builder/inputs cd gitian-builder/inputs @@ -62,5 +66,5 @@ Here's a description of Gavin's setup on OSX 10.6: 5. Still inside Ubuntu, tell gitian-builder to use LXC, then follow the "Once you've got the right hardware and software" instructions above: export USE_LXC=1 - git clone git://github.com/bitcoin/bitcoin.git + git clone https://git.dragonx.is/DragonX/dragonx.git ... etc diff --git a/contrib/init/README.md b/contrib/init/README.md index d3142512e..9e6e99388 100644 --- a/contrib/init/README.md +++ b/contrib/init/README.md @@ -2,11 +2,11 @@ Sample configuration files for: -SystemD: hushd.service -Upstart: hushd.conf -OpenRC: hushd.openrc - hushd.openrcconf -CentOS: hushd.init +SystemD: dragonxd.service +Upstart: dragonxd.conf +OpenRC: dragonxd.openrc + dragonxd.openrcconf +CentOS: dragonxd.init have been made available to assist packagers in creating node packages here. diff --git a/contrib/init/dragonxd.conf b/contrib/init/dragonxd.conf index e7c451f25..48d9dc6dc 100644 --- a/contrib/init/dragonxd.conf +++ b/contrib/init/dragonxd.conf @@ -1,4 +1,4 @@ -description "Hush Daemon" +description "DragonX Daemon" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] @@ -9,7 +9,7 @@ env HUSHD_GROUP="hush" env HUSHD_PIDDIR="/var/run/dragonxd" # upstart can't handle variables constructed with other variables env HUSHD_PIDFILE="/var/run/dragonxd/dragonxd.pid" -env HUSHD_CONFIGFILE="/etc/hush/hush.conf" +env HUSHD_CONFIGFILE="/etc/dragonx/DRAGONX.conf" env HUSHD_DATADIR="/var/lib/dragonxd" expect fork diff --git a/contrib/init/dragonxd.init b/contrib/init/dragonxd.init index 9eda12a62..279aedc4c 100644 --- a/contrib/init/dragonxd.init +++ b/contrib/init/dragonxd.init @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# dragonxd The hush core server. +# dragonxd The DragonX core server. # # # chkconfig: 345 80 20 diff --git a/contrib/init/dragonxd.openrc b/contrib/init/dragonxd.openrc index f0f755cc1..c9ec1c449 100644 --- a/contrib/init/dragonxd.openrc +++ b/contrib/init/dragonxd.openrc @@ -8,7 +8,7 @@ else HUSHD_DEFAULT_DATADIR="/var/lib/dragonxd" fi -HUSHD_CONFIGFILE=${HUSHD_CONFIGFILE:-/etc/hush/hush.conf} +HUSHD_CONFIGFILE=${HUSHD_CONFIGFILE:-/etc/dragonx/DRAGONX.conf} HUSHD_PIDDIR=${HUSHD_PIDDIR:-/var/run/dragonxd} HUSHD_PIDFILE=${HUSHD_PIDFILE:-${HUSHD_PIDDIR}/dragonxd.pid} HUSHD_DATADIR=${HUSHD_DATADIR:-${HUSHD_DEFAULT_DATADIR}} @@ -18,8 +18,8 @@ HUSHD_BIN=${HUSHD_BIN:-/usr/bin/dragonxd} HUSHD_NICE=${HUSHD_NICE:-${NICELEVEL:-0}} HUSHD_OPTS="${HUSHD_OPTS:-${HUSH_OPTS}}" -name="Hush Full Node Daemon" -description="Hush cryptocurrency P2P network daemon" +name="DragonX Full Node Daemon" +description="DragonX cryptocurrency P2P network daemon" command="/usr/bin/dragonxd" command_args="-pid=\"${HUSHD_PIDFILE}\" \ diff --git a/contrib/init/dragonxd.openrcconf b/contrib/init/dragonxd.openrcconf index eda99dc69..972ba695c 100644 --- a/contrib/init/dragonxd.openrcconf +++ b/contrib/init/dragonxd.openrcconf @@ -1,7 +1,7 @@ # /etc/conf.d/dragonxd: config file for /etc/init.d/dragonxd # Config file location -#HUSHD_CONFIGFILE="/etc/hush/hush.conf" +#HUSHD_CONFIGFILE="/etc/dragonx/DRAGONX.conf" # What directory to write pidfile to? (created and owned by $HUSHD_USER) #HUSHD_PIDDIR="/var/run/dragonxd" diff --git a/contrib/init/dragonxd.service b/contrib/init/dragonxd.service index 525a7725d..381f3f65f 100644 --- a/contrib/init/dragonxd.service +++ b/contrib/init/dragonxd.service @@ -1,15 +1,17 @@ [Unit] -Description=Hush: Speak And Transact Freely +Description=DragonX: private RandomX-mined full node After=network.target [Service] +# The 'hush' service user/group is intentional for packaging compatibility; +# renaming it is a separate decision. User=hush Group=hush Type=forking PIDFile=/var/lib/dragonxd/dragonxd.pid ExecStart=/usr/bin/dragonxd -daemon -pid=/var/lib/dragonxd/dragonxd.pid \ --conf=/etc/hush/hush.conf -datadir=/var/lib/dragonxd -disablewallet +-conf=/etc/dragonx/DRAGONX.conf -datadir=/var/lib/dragonxd -disablewallet Restart=always PrivateTmp=true diff --git a/contrib/init/hushd.conf b/contrib/init/hushd.conf deleted file mode 100644 index eb26f3fdb..000000000 --- a/contrib/init/hushd.conf +++ /dev/null @@ -1,59 +0,0 @@ -description "Hush Daemon" - -start on runlevel [2345] -stop on starting rc RUNLEVEL=[016] - -env HUSHD_BIN="/usr/bin/hushd" -env HUSHD_USER="hush" -env HUSHD_GROUP="hush" -env HUSHD_PIDDIR="/var/run/hushd" -# upstart can't handle variables constructed with other variables -env HUSHD_PIDFILE="/var/run/hushd/hushd.pid" -env HUSHD_CONFIGFILE="/etc/hush/hush.conf" -env HUSHD_DATADIR="/var/lib/hushd" - -expect fork - -respawn -respawn limit 5 120 -kill timeout 60 - -pre-start script - # this will catch non-existent config files - # hushd will check and exit with this very warning, but it can do so - # long after forking, leaving upstart to think everything started fine. - # since this is a commonly encountered case on install, just check and - # warn here. - if ! grep -qs '^rpcpassword=' "$HUSHD_CONFIGFILE" ; then - echo "ERROR: You must set a secure rpcpassword to run hushd." - echo "The setting must appear in $HUSHD_CONFIGFILE" - echo - echo "This password is security critical to securing wallets " - echo "and must not be the same as the rpcuser setting." - echo "You can generate a suitable random password using the following" - echo "command from the shell:" - echo - echo "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'" - echo - exit 1 - fi - - mkdir -p "$HUSHD_PIDDIR" - chmod 0755 "$HUSHD_PIDDIR" - chown $HUSHD_USER:$HUSHD_GROUP "$HUSHD_PIDDIR" - chown $HUSHD_USER:$HUSHD_GROUP "$HUSHD_CONFIGFILE" - chmod 0660 "$HUSHD_CONFIGFILE" -end script - -exec start-stop-daemon \ - --start \ - --pidfile "$HUSHD_PIDFILE" \ - --chuid $HUSHD_USER:$HUSHD_GROUP \ - --exec "$HUSHD_BIN" \ - -- \ - -pid="$HUSHD_PIDFILE" \ - -conf="$HUSHD_CONFIGFILE" \ - -datadir="$HUSHD_DATADIR" \ - -disablewallet \ - -daemon - diff --git a/contrib/init/hushd.init b/contrib/init/hushd.init deleted file mode 100644 index 370aaf101..000000000 --- a/contrib/init/hushd.init +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env bash -# -# hushd The hush core server. -# -# -# chkconfig: 345 80 20 -# description: hushd -# processname: hushd -# - -# Source function library. -. /etc/init.d/functions - -# you can override defaults in /etc/sysconfig/hushd, see below -if [ -f /etc/sysconfig/hushd ]; then - . /etc/sysconfig/hushd -fi - -RETVAL=0 - -prog=hushd -# you can override the lockfile via HUSHD_LOCKFILE in /etc/sysconfig/hushd -lockfile=${HUSHD_LOCKFILE-/var/lock/subsys/hushd} - -# hushd defaults to /usr/bin/hushd, override with HUSHD_BIN -hushd=${HUSHD_BIN-/usr/bin/hushd} - -# hushd opts default to -disablewallet, override with HUSHD_OPTS -hushd_opts=${HUSHD_OPTS--disablewallet} - -start() { - echo -n $"Starting $prog: " - daemon $DAEMONOPTS $hushd $hushd_opts - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && touch $lockfile - return $RETVAL -} - -stop() { - echo -n $"Stopping $prog: " - killproc $prog - RETVAL=$? - echo - [ $RETVAL -eq 0 ] && rm -f $lockfile - return $RETVAL -} - -case "$1" in - start) - start - ;; - stop) - stop - ;; - status) - status $prog - ;; - restart) - stop - start - ;; - *) - echo "Usage: service $prog {start|stop|status|restart}" - exit 1 - ;; -esac diff --git a/contrib/init/hushd.openrc b/contrib/init/hushd.openrc deleted file mode 100644 index 4443b1223..000000000 --- a/contrib/init/hushd.openrc +++ /dev/null @@ -1,87 +0,0 @@ -#!/sbin/runscript - -# backward compatibility for existing gentoo layout -# -if [ -d "/var/lib/hush/.hush" ]; then - HUSHD_DEFAULT_DATADIR="/var/lib/hush/.hush" -else - HUSHD_DEFAULT_DATADIR="/var/lib/hushd" -fi - -HUSHD_CONFIGFILE=${HUSHD_CONFIGFILE:-/etc/hush/hush.conf} -HUSHD_PIDDIR=${HUSHD_PIDDIR:-/var/run/hushd} -HUSHD_PIDFILE=${HUSHD_PIDFILE:-${HUSHD_PIDDIR}/hushd.pid} -HUSHD_DATADIR=${HUSHD_DATADIR:-${HUSHD_DEFAULT_DATADIR}} -HUSHD_USER=${HUSHD_USER:-${HUSH_USER:-hush}} -HUSHD_GROUP=${HUSHD_GROUP:-hush} -HUSHD_BIN=${HUSHD_BIN:-/usr/bin/hushd} -HUSHD_NICE=${HUSHD_NICE:-${NICELEVEL:-0}} -HUSHD_OPTS="${HUSHD_OPTS:-${HUSH_OPTS}}" - -name="Hush Full Node Daemon" -description="Hush cryptocurrency P2P network daemon" - -command="/usr/bin/hushd" -command_args="-pid=\"${HUSHD_PIDFILE}\" \ - -conf=\"${HUSHD_CONFIGFILE}\" \ - -datadir=\"${HUSHD_DATADIR}\" \ - -daemon \ - ${HUSHD_OPTS}" - -required_files="${HUSHD_CONFIGFILE}" -start_stop_daemon_args="-u ${HUSHD_USER} \ - -N ${HUSHD_NICE} -w 2000" -pidfile="${HUSHD_PIDFILE}" - -# The retry schedule to use when stopping the daemon. Could be either -# a timeout in seconds or multiple signal/timeout pairs (like -# "SIGKILL/180 SIGTERM/300") -retry="${HUSHD_SIGTERM_TIMEOUT}" - -depend() { - need localmount net -} - -# verify -# 1) that the datadir exists and is writable (or create it) -# 2) that a directory for the pid exists and is writable -# 3) ownership and permissions on the config file -start_pre() { - checkpath \ - -d \ - --mode 0750 \ - --owner "${HUSHD_USER}:${HUSHD_GROUP}" \ - "${HUSHD_DATADIR}" - - checkpath \ - -d \ - --mode 0755 \ - --owner "${HUSHD_USER}:${HUSHD_GROUP}" \ - "${HUSHD_PIDDIR}" - - checkpath -f \ - -o ${HUSHD_USER}:${HUSHD_GROUP} \ - -m 0660 \ - ${HUSHD_CONFIGFILE} - - checkconfig || return 1 -} - -checkconfig() -{ - if ! grep -qs '^rpcpassword=' "${HUSHD_CONFIGFILE}" ; then - eerror "" - eerror "ERROR: You must set a secure rpcpassword to run hushd." - eerror "The setting must appear in ${HUSHD_CONFIGFILE}" - eerror "" - eerror "This password is security critical to securing wallets " - eerror "and must not be the same as the rpcuser setting." - eerror "You can generate a suitable random password using the following" - eerror "command from the shell:" - eerror "" - eerror "bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo'" - eerror "" - eerror "" - return 1 - fi -} diff --git a/contrib/init/hushd.openrcconf b/contrib/init/hushd.openrcconf deleted file mode 100644 index b36b81f28..000000000 --- a/contrib/init/hushd.openrcconf +++ /dev/null @@ -1,33 +0,0 @@ -# /etc/conf.d/hushd: config file for /etc/init.d/hushd - -# Config file location -#HUSHD_CONFIGFILE="/etc/hush/hush.conf" - -# What directory to write pidfile to? (created and owned by $HUSHD_USER) -#HUSHD_PIDDIR="/var/run/hushd" - -# What filename to give the pidfile -#HUSHD_PIDFILE="${HUSHD_PIDDIR}/hushd.pid" - -# Where to write hushd data (be mindful that the blockchain is large) -#HUSHD_DATADIR="/var/lib/hushd" - -# User and group to own hushd process -#HUSHD_USER="hush" -#HUSHD_GROUP="hush" - -# Path to hushd executable -#HUSHD_BIN="/usr/bin/hushd" - -# Nice value to run hushd under -#HUSHD_NICE=0 - -# Additional options (avoid -conf and -datadir, use flags above) -HUSHD_OPTS="-disablewallet" - -# The timeout in seconds OpenRC will wait for hushd to terminate -# after a SIGTERM has been raised. -# Note that this will be mapped as argument to start-stop-daemon's -# '--retry' option, which means you can specify a retry schedule -# here. For more information see man 8 start-stop-daemon. -HUSHD_SIGTERM_TIMEOUT=60 diff --git a/contrib/init/hushd.service b/contrib/init/hushd.service deleted file mode 100644 index f014f54d4..000000000 --- a/contrib/init/hushd.service +++ /dev/null @@ -1,22 +0,0 @@ -[Unit] -Description=Hush: Speak And Transact Freely -After=network.target - -[Service] -User=hush -Group=hush - -Type=forking -PIDFile=/var/lib/hushd/hushd.pid -ExecStart=/usr/bin/hushd -daemon -pid=/var/lib/hushd/hushd.pid \ --conf=/etc/hush/hush.conf -datadir=/var/lib/hushd -disablewallet - -Restart=always -PrivateTmp=true -TimeoutStopSec=60s -TimeoutStartSec=2s -StartLimitInterval=120s -StartLimitBurst=5 - -[Install] -WantedBy=multi-user.target diff --git a/contrib/macdeploy/README.md b/contrib/macdeploy/README.md index 6163734e6..6e54c76f4 100644 --- a/contrib/macdeploy/README.md +++ b/contrib/macdeploy/README.md @@ -1,9 +1,5 @@ ### MacDeploy ### -For Snow Leopard (which uses [Python 2.6](http://www.python.org/download/releases/2.6/)), you will need the param_parser package: - - sudo easy_install argparse - This script should not be run manually, instead, after building as usual: make deploy @@ -11,5 +7,4 @@ This script should not be run manually, instead, after building as usual: During the process, the disk image window will pop up briefly where the fancy settings are applied. This is normal, please do not interfere. -When finished, it will produce `Bitcoin-Core.dmg`. - +When finished, it will produce `DragonX.dmg`. diff --git a/contrib/qos/README.md b/contrib/qos/README.md index cd5fef6b6..f3a681b35 100644 --- a/contrib/qos/README.md +++ b/contrib/qos/README.md @@ -1,5 +1,5 @@ ### Qos ### -This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the Hush network. It limits outbound TCP traffic with a source or destination port of 18030, but not if the destination IP is within a LAN (defined as 192.168.x.x). +This is a Linux bash script that will set up tc to limit the outgoing bandwidth for connections to the DragonX network. It limits outbound TCP traffic with a source or destination port of 18030, but not if the destination IP is within a LAN (defined as 192.168.x.x). -This means one can have an always-on hushd instance running, and another local hushd/bitcoin-qt instance which connects to this node and receives blocks from it. +This means one can have an always-on dragonxd instance running, and another local dragonxd instance which connects to this node and receives blocks from it. diff --git a/contrib/sda_checkpoints.pl b/contrib/sda_checkpoints.pl index e93c497e7..8af693386 100755 --- a/contrib/sda_checkpoints.pl +++ b/contrib/sda_checkpoints.pl @@ -3,22 +3,23 @@ # Distributed under the GPLv3 software license, see the accompanying # file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html -# This script is used to generate the checkpoint data used by the SilentDragon Android SDK -# https://git.hush.is/fekt/hush-android-wallet-sdk/src/branch/main/sdk-lib/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet +# This script is used to generate the checkpoint data used by the SilentDragonX Android SDK +# https://git.dragonx.is/DragonX/SilentDragonXAndroid +# (checkpoint format follows the upstream co.electriccoin.zcash/checkpoint/mainnet layout) use warnings; use strict; -my $hush = "./src/hush-cli"; -my $getblock= "$hush getblock"; -my $gethash = "$hush getblockhash"; -my $gettree = "$hush getblockmerkletree"; +my $cli = "./src/dragonx-cli"; +my $getblock= "$cli getblock"; +my $gethash = "$cli getblockhash"; +my $gettree = "$cli getblockmerkletree"; my $start = shift || 1390000; my $end = shift || 1422000; my $stride = shift || 10000; -my $blocks = qx{$hush getblockcount}; +my $blocks = qx{$cli getblockcount}; if($?) { - print "ERROR, is hushd running? exiting...\n"; + print "ERROR, is dragonxd running? exiting...\n"; exit 1; } diff --git a/contrib/sdl_checkpoints.pl b/contrib/sdl_checkpoints.pl index 179f6f19b..05b6ac128 100755 --- a/contrib/sdl_checkpoints.pl +++ b/contrib/sdl_checkpoints.pl @@ -3,7 +3,8 @@ # Distributed under the GPLv3 software license, see the accompanying # file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html -# This script is used to generate the data used by the silentdragonlite-cli checkpoints.rs file +# This script is used to generate the data used by a light-wallet checkpoints.rs file. +# The checkpoint format follows the upstream silentdragonlite-cli reference: # https://git.hush.is/hush/silentdragonlite-cli/src/branch/master/lib/src/lightclient/checkpoints.rs#L24 use warnings; @@ -12,16 +13,16 @@ use strict; # call this script like this to generate checkpoints for another chain: # CLI=./src/hac-cli ./contrib/sdl_checkpoints.pl ... -my $hush = $ENV{CLI} || "./src/hush-cli"; -my $gethash = "$hush getblockhash"; -my $gettree = "$hush getblockmerkletree"; +my $cli = $ENV{CLI} || "./src/dragonx-cli"; +my $gethash = "$cli getblockhash"; +my $gettree = "$cli getblockmerkletree"; my $start = shift || 300000; my $end = shift || 840000; my $stride = shift || 10000; -my $blocks = qx{$hush getblockcount}; +my $blocks = qx{$cli getblockcount}; if($?) { - print "ERROR, is hushd running? exiting...\n"; + print "ERROR, is dragonxd running? exiting...\n"; exit 1; } diff --git a/contrib/seeds/README.md b/contrib/seeds/README.md index 10948e1b4..de9e186be 100644 --- a/contrib/seeds/README.md +++ b/contrib/seeds/README.md @@ -1,10 +1,8 @@ # Seeds Utility to generate the seeds.txt list that is compiled into the client -(see [src/chainparamsseeds.h](hush/hush3/src/branch/master/src/chainparamsseeds.h) and other utilities in [contrib/seeds](hush/hush3/src/branch/master/contrib/seeds/)). +(see [src/chainparamsseeds.h](../../src/chainparamsseeds.h) and other utilities in [contrib/seeds](.)). ## Updating seeds -Update [contrib/seeds/nodes_main.txt](hush/hush3/src/branch/master/contrib/seeds/nodes_main.txt) and run `make seeds` in the hush root directory of this repo (not the directory of this README) to update [src/chainparamsseeds.h](hush/hush3/src/branch/master/src/chainparamsseeds.h) then commit the result. - - +Update [contrib/seeds/nodes_main.txt](nodes_main.txt) and run `make seeds` in the DragonX root directory of this repo (not the directory of this README) to update [src/chainparamsseeds.h](../../src/chainparamsseeds.h) then commit the result. diff --git a/contrib/testgen/README.md b/contrib/testgen/README.md index 903e4ed6d..c1ea3f6e2 100644 --- a/contrib/testgen/README.md +++ b/contrib/testgen/README.md @@ -1,6 +1,6 @@ ### TestGen ### -Utilities to generate test vectors for the data-driven Hush tests. +Utilities to generate test vectors for the data-driven DragonX tests. Usage: diff --git a/contrib/verifysfbinaries/README.md b/contrib/verifysfbinaries/README.md index 8c038865b..b47660ca3 100644 --- a/contrib/verifysfbinaries/README.md +++ b/contrib/verifysfbinaries/README.md @@ -1,6 +1,15 @@ ### Verify SF Binaries ### -This script attempts to download the signature file `SHA256SUMS.asc` from https://bitcoin.org. + +This is a legacy SourceForge-era script inherited from upstream and is not used +for DragonX releases. It originally attempted to download a signature file +`SHA256SUMS.asc` from an upstream release host and verify the binaries listed in +it. + +For DragonX, release artifacts and checksums are published via the DragonX +project host at https://git.dragonx.is/DragonX and https://dragonx.is . The +script would need to be pointed at those locations before it could be useful; it +is retained here only for historical reference. It first checks if the signature passes, and then downloads the files specified in the file, and checks if the hashes of these files match those that are specified in the signature file. -The script returns 0 if everything passes the checks. It returns 1 if either the signature check or the hash check doesn't pass. If an error occurs the return value is 2. \ No newline at end of file +The script returns 0 if everything passes the checks. It returns 1 if either the signature check or the hash check doesn't pass. If an error occurs the return value is 2. diff --git a/doc/CONTRIBUTING.md b/doc/CONTRIBUTING.md index 5866ab2e3..b118477df 100644 --- a/doc/CONTRIBUTING.md +++ b/doc/CONTRIBUTING.md @@ -1,7 +1,7 @@ -# Hush Core (hushd) Software Contribution Guidelines +# DragonX Core (dragonxd) Software Contribution Guidelines -Thank you for reaching out and trying to make Hush an even better software application and cryptocoin platform. These contribution guidelines shall help you figuring out where you can be helpful and how to easily get started. +Thank you for reaching out and trying to make DragonX an even better software application and cryptocoin platform. These contribution guidelines shall help you figuring out where you can be helpful and how to easily get started. ## Table of Contents @@ -14,15 +14,13 @@ Thank you for reaching out and trying to make Hush an even better software appli 0. [Community](#community) ## Types of contributions we're looking for -There are many ways you can directly contribute to Hush: +There are many ways you can directly contribute to DragonX: -* Debug and test the Hush Core code +* Debug and test the DragonX Core code * Find and fix bugs * Improve suboptimal code * Extend our software -* Perform a secure code review of Hush Full Node and other Hush-related software - -We have a curated list of projects with details about difficulty level and languages involved: https://git.hush.is/hush/projects +* Perform a secure code review of DragonX Full Node and other DragonX-related software Interested in making a contribution? Read on! @@ -31,15 +29,14 @@ Interested in making a contribution? Read on! Before we get started, here are a few things we expect from you (and that you should expect from others): * Be kind and thoughtful in your conversations around this project. We all come from different backgrounds and projects, which means we likely have different perspectives on "how free software and open source is done." Try to listen to others rather than convince them that your way is correct. -* Open Source Guides are released with a [Contributor Code of Conduct](./code_of_conduct.md). By participating in this project, you agree to abide by its terms. * If you open a pull request, please ensure that your contribution does not increase test failures. If there are additional test failures, you will need to address them before we can merge your contribution. * When adding content, please consider if it is widely valuable. Please don't add references or links to things you or your employer have created as others will do so if they appreciate it. ## How to contribute -If you'd like to contribute, start by searching through the [issues](https://git.hush.is/hush/hush3/issues) and [pull requests](https://git.hush.is/hush/hush3/pulls) to see whether someone else has raised a similar idea or question. +If you'd like to contribute, start by searching through the [issues](https://git.dragonx.is/DragonX/dragonx/issues) and [pull requests](https://git.dragonx.is/DragonX/dragonx/pulls) to see whether someone else has raised a similar idea or question. -If you don't see your idea listed, and you think it can contribute to Hush, do one of the following: +If you don't see your idea listed, and you think it can contribute to DragonX, do one of the following: * **If your contribution is minor,** such as a fixing a typo, open a pull request. * **If your contribution is major,** such as a new feature or bugfix, start by opening an issue first. That way, other contributors can weigh in on the discussion before you do any work. @@ -49,9 +46,9 @@ Don't write shitty code. Do not emulate "jl777 code style" from Komodo, we consi ## Setting up your environment -The Hush Core (hushd) is mainly written in C++ with specific modules written in C. Follow the [Install](https://git.hush.is/hush/hush3/src/branch/master/INSTALL.md) instructions to build hushd from sources. For more informations about the Hush Platform and a full API documentation please visit the official [Hush Developer documentation](https://faq.hush.is/rpc/) +DragonX Core (dragonxd) is mainly written in C++ with specific modules written in C. See the build instructions in the [README](../README.md) to build dragonxd from sources. -Other Hush software is written in Rust or Go. We avoid Javascript at all costs. +Other DragonX software is written in Rust or Go. We avoid Javascript at all costs. ## Contribution review process diff --git a/doc/DEVELOPING.md b/doc/DEVELOPING.md index 4b6302daf..31a441e73 100644 --- a/doc/DEVELOPING.md +++ b/doc/DEVELOPING.md @@ -1,6 +1,6 @@ -# Being a Hush Developer +# Being a DragonX Developer -## Compiling Hush +## Compiling DragonX Normal compiling is as simple as: @@ -20,7 +20,7 @@ Divide how many GBs of RAM you have by 2, subtract one. Use that many jobs. ## Dealing with dependency changes Let's say you change a dependency and want the compile to notice. If your -change is outside of the main Hush source code, in ./src, simply running +change is outside of the main DragonX source code, in ./src, simply running `make` will not notice, and sometimes not even `build.sh`. You can always do a fresh clone or `make clean`, but that will take a lot of time. Those methods are actually best for Continuous Integration systems, but to help @@ -54,14 +54,14 @@ If `make clean` produces a compilation error, you just experienced it. ## Switching branches -Switching branches and doing partial compiles in Hush source code +Switching branches and doing partial compiles in DragonX source code can introduce weird bugs, which are fixed by running `build.sh` again. Additionally, it's a good idea to run `make clean` before you switch between branches. ## Partial compiles -At any point, you can modify hush source code and then use `make` or `build.sh` +At any point, you can modify DragonX source code and then use `make` or `build.sh` to do a partial compile. The first is faster but the latter is more likely to work correctly in all circustances. Sometimes partial compiles break weird build system dependencies, and you must do a `make clean` first, or even @@ -75,14 +75,14 @@ of a dependency or something inside of Rust, you will need `build.sh` . ## Generating new unix man pages -Make sure that you have updated all version numbers in hushd and compiled, then +Make sure that you have updated all version numbers in dragonxd and compiled, then to generate new unix man pages for that version : ./util/gen-manpages.sh ## Generating new debian packages -After successfully compiling Hush, you can generate a debian package of these binaries with: +After successfully compiling DragonX, you can generate a debian package of these binaries with: ./util/build-debian-package.sh @@ -113,9 +113,8 @@ port) are ways to prevent them from communicating. This is good because these two HACs will eventually chain fork due to their different consensus rules and ban each other, wasting time, bandwidth and sanity. -An example of doing this can be seen in the commit -https://git.hush.is/hush/hush3/commit/d39503c13b7419620d138050899705ced557eef9 -which added the `-ac_burn` consensus changing option. +An example of this pattern in the Git history is the commit which added the +`-ac_burn` consensus changing option; search the log for `ac_burn` to find it. The chain magic value is the CRC32 checksum of every non-default consensus option the HAC uses. @@ -128,4 +127,4 @@ modify `src/miner.cpp` to do whatever they want. If you think something else should be in this guide, please send your suggestions! -Gitea: https://git.hush.is/hush/hush3 +Gitea: https://git.dragonx.is/DragonX/dragonx diff --git a/doc/OLD_WALLETS.md b/doc/OLD_WALLETS.md deleted file mode 100644 index 99f96f46f..000000000 --- a/doc/OLD_WALLETS.md +++ /dev/null @@ -1,71 +0,0 @@ -## Claiming Funds From Old Hush Wallets - -Hush migrated to a new mainnet after Block 500,000 on the old Hush blockchain. -Funds in addresses as of Block 500,000 were transported to our new chain. About -31,000 addresses with at least 0.00000001 HUSH were transported to the new Hush -mainnet. - -To claim funds on the new chain, there are few options. - -### Funds on exchanges - -Firstly, no bueno! Not your keys, not your coins. It's best not to store coins -on exchanges. But in this case, you lucked out! There is nothing to do to claim -new coins if you have coins on an exchange that supports the new Hush chain. -The exchange will follow the instructions from the next section and you will -magically have funds on the new chain. Note that old Hush addresses started -with `t1` and now they begin with `R`. - -To see what an old HUSH v2 address looks like on the new chain, this online tool -can be used: https://dexstats.info/addressconverter.php - -or this command line tool: https://git.hush.is/hush/hush3/src/master/contrib/convert_address.py - - -### Using an old wallet.dat - -Backup your old HUSH wallet.dat, and backup any current wallet.dat that is in - - ~/.komodo/HUSH3/ - -OR - ~/.hush/HUSH3/ - -There is no way to lose funds, as long as you have backups!!! Make sure -to make backups. Do not skip this step. - -Make sure any/all GUI wallets are stopped! Also make sure your old Hush node -and new Hush3 node are stopped: - - cd hush3 - ./src/hush-cli stop - -Do not copy wallets or move wallets while your full node is running! This could -corrupt your wallet! - -Now copy your old Hush wallet.dat to - - ~/.hush/HUSH3/ - -with a command like - - # DO NOT RUN THIS WITHOUT MAKING BACKUPS! - cp ~/.hush/wallet.dat ~/.hush/HUSH3/ - -The reason this works is that both old HUSH and new HUSH are still Bitcoin Protocol -coins, which both use secp256k1 public keys. Now start your HUSH3 node again, -with this special CLI argument that will clear out transactions from your wallet: - - cd hush3 - ./src/hushd -zapwallettxes - -This will cause a full history rescan, which will take some time. Once it's complete, -you can see your funds with this command: - - ./src/hush-cli getwalletinfo - -NOTE: Do not use this wallet except to send funds to a new wallet! - -### Private Keys - -You can also transport funds one address at a time via private keys. diff --git a/doc/beefy-HUSH3.conf b/doc/beefy-HUSH3.conf deleted file mode 100644 index ee1daff63..000000000 --- a/doc/beefy-HUSH3.conf +++ /dev/null @@ -1,7 +0,0 @@ -rpcuser=dontuseweakusernameoryougetrobbed -rpcpassword=dontuseweakpasswordoryougetrobbed -txindex=1 -server=1 -rpcworkqueue=64 -addnode=1.2.3.4 -addnode=5.6.7.8 diff --git a/doc/cjdns.md b/doc/cjdns.md index 17f5773d2..f0629b8d2 100644 --- a/doc/cjdns.md +++ b/doc/cjdns.md @@ -1,6 +1,6 @@ -# CJDNS support in Hush +# CJDNS support in DragonX -It is possible to run Hush over CJDNS, an encrypted IPv6 network that +It is possible to run DragonX over CJDNS, an encrypted IPv6 network that uses public-key cryptography for address allocation and a distributed hash table for routing. @@ -9,7 +9,7 @@ for routing. CJDNS is like a distributed, shared VPN with multiple entry points where every participant can reach any other participant. All participants use addresses from the `fc00::/8` network (reserved IPv6 range). Installation and configuration is -done outside of Hush, similarly to a VPN (either in the host/OS or on +done outside of DragonX, similarly to a VPN (either in the host/OS or on the network router). See https://github.com/cjdelisle/cjdns#readme and https://github.com/hyperboria/docs#hyperboriadocs for more information. @@ -17,7 +17,7 @@ Compared to IPv4/IPv6, CJDNS provides end-to-end encryption and protects nodes from traffic analysis and filtering. Used with Tor and I2P, CJDNS is a complementary option that can enhance network -redundancy and robustness for both the Hush network and individual nodes. +redundancy and robustness for both the DragonX network and individual nodes. Each network has different characteristics. For instance, Tor is widely used but somewhat centralized. I2P connections have a source address and I2P is slow. @@ -30,7 +30,7 @@ To install and set up CJDNS, follow the instructions at https://github.com/cjdelisle/cjdns#how-to-install-cjdns. You need to initiate an outbound connection to a peer on the CJDNS network -before it will work with your Hush node. This is described in steps +before it will work with your DragonX node. This is described in steps ["2. Find a friend"](https://github.com/cjdelisle/cjdns#2-find-a-friend) and ["3. Connect your node to your friend's node"](https://github.com/cjdelisle/cjdns#3-connect-your-node-to-your-friends-node) @@ -65,19 +65,19 @@ with some additional setup. The network connection can be checked by running `./tools/peerStats` from the CJDNS directory. -## Run Hush with CJDNS +## Run DragonX with CJDNS -Once you are connected to the CJDNS network, the following Hush +Once you are connected to the CJDNS network, the following DragonX configuration option makes CJDNS peers automatically reachable: ``` -cjdnsreachable ``` -When enabled, this option tells Hush that it is running in an +When enabled, this option tells DragonX that it is running in an environment where a connection to an `fc00::/8` address will be to the CJDNS network instead of to an [RFC4193](https://datatracker.ietf.org/doc/html/rfc4193) -IPv6 local network. This helps Hush perform better address management: +IPv6 local network. This helps DragonX perform better address management: - Your node can consider incoming `fc00::/8` connections to be from the CJDNS network rather than from an IPv6 private one. - If one of your node's local addresses is `fc00::/8`, then it can choose to @@ -93,20 +93,18 @@ Make automatic outbound connections only to CJDNS addresses. Inbound and manual connections are not affected by this option. It can be specified multiple times to allow multiple networks, e.g. onlynet=cjdns, onlynet=i2p, onlynet=onion. -CJDNS support was added to Hush in version 3.9.3 and there may be fewer -CJDNS peers than Tor or IP ones. You can use `hush-cli -addrinfo` to see the -number of CJDNS addresses known to your node. +There may be fewer CJDNS peers than Tor or IP ones. You can use +`dragonx-cli -addrinfo` to see the number of CJDNS addresses known to your node. In general, a node can be run with both an onion service and CJDNS (or any/all of IPv4/IPv6/onion/I2P/CJDNS), which can provide a potential fallback if one of the networks has issues. There are a number of ways to configure this; see -[doc/tor.md](https://git.hush.is/hush/hush3/src/branch/master/doc/tor.md) for -details. +[doc/tor.md](tor.md) for details. -## CJDNS-related information in Hush +## CJDNS-related information in DragonX -There are several ways to see your CJDNS address in Hush: +There are several ways to see your CJDNS address in DragonX: - in the "localaddresses" output of RPC `getnetworkinfo` -To see which CJDNS peers your node is connected to, use `hush-cli getpeerinfo` +To see which CJDNS peers your node is connected to, use `dragonx-cli getpeerinfo` RPC. diff --git a/doc/config.md b/doc/config.md index e91b2f48d..2258f14d1 100644 --- a/doc/config.md +++ b/doc/config.md @@ -1,10 +1,10 @@ -# HUSH3.conf config options +# DRAGONX.conf config options -This document explains all options that can be used in HUSH3.conf +This document explains all options that can be used in DRAGONX.conf # Basics -Options can either be put in HUSH3.conf or given on the `hushd` commandline when starting. If you think you will want to continually use a feature, it's better to put it in HUSH3.conf. If you don't, and start `hushd` without an option on accident, it can cause downtime from a long rescan, that you didn't want to do anyway. +Options can either be put in DRAGONX.conf or given on the `dragonxd` commandline when starting. If you think you will want to continually use a feature, it's better to put it in DRAGONX.conf. If you don't, and start `dragonxd` without an option on accident, it can cause downtime from a long rescan, that you didn't want to do anyway. ## Common Options @@ -15,20 +15,20 @@ Tells your node to connect to another node, by IP address or hostname. ## consolidation=1 -Defaults to 0 in CLI hushd, defaults to 1 in SilentDragon. This option consolidates many unspent shielded UTXOs (zutxos) into one zutxo, which makes spending them in the future faster and potentially cost less in fees. It also helps prevent -certain kinds of metadata leakages and spam attacks. It is not recommended for very large wallets (wallet.dat files with thousands of transactions) for performance reasons. This is why it defaults to OFF for CLI full nodes but ON for GUI wallets that use an embedded hushd. +Defaults to 0 in CLI dragonxd, and may default to 1 in GUI wallets that embed a full node. This option consolidates many unspent shielded UTXOs (zutxos) into one zutxo, which makes spending them in the future faster and potentially cost less in fees. It also helps prevent +certain kinds of metadata leakages and spam attacks. It is not recommended for very large wallets (wallet.dat files with thousands of transactions) for performance reasons. This is why it defaults to OFF for CLI full nodes but may be ON for GUI wallets that use an embedded dragonxd. ## rescan=1 Defaults to 0. Performs a full rescan of all of chain history. Can take a very long time. Speed this up with `rescanheight=123` to only rescan from a certain block height. Also speed this up with `keepnotewitnesscache=1` to not rebuild the zaddr witness cache. -## rpcuser=hushpuppy +## rpcuser=yourusername -No default. This option sets the RPC username and should only be used in HUSH3.conf, because setting it from the command-line makes it show up in `ps` output. +No default. This option sets the RPC username and should only be used in DRAGONX.conf, because setting it from the command-line makes it show up in `ps` output. -## rpcpassword=TOOMANYSECRETS +## rpcpassword=aLongRandomSecret -No default. This option sets the RPC password and should only be used in HUSH3.conf, because setting it from the command-line makes it show up in `ps` output. +No default. This option sets the RPC password and should only be used in DRAGONX.conf, because setting it from the command-line makes it show up in `ps` output. ## txindex=1 @@ -56,7 +56,7 @@ Defaults to: bind to all interfaces. This option Binds to given address to liste ## stratumport= -Defaults to 19031 or 19031 for testnet. This option sets the to listen for Stratum work requests on. +Defaults to 22769. This option sets the to listen for Stratum work requests on. ## stratumallowip= @@ -68,12 +68,12 @@ These options are not commonly used and likely on for advanced users and/or deve ## addressindex=1 -Defaults to 0 in hushd, defaults to 1 in some GUI wallets. Maintain a full address index, used to query for the balance, txids and unspent outputs for addresses +Defaults to 0 in dragonxd, defaults to 1 in some GUI wallets. Maintain a full address index, used to query for the balance, txids and unspent outputs for addresses ## timestampindex=1 -Defaults to 0 in hushd, defaults to 1 in some GUI wallets. Maintain a timestamp index for block hashes, used to query blocks hashes by a range of timestamps +Defaults to 0 in dragonxd, defaults to 1 in some GUI wallets. Maintain a timestamp index for block hashes, used to query blocks hashes by a range of timestamps ## spentindex=1 -Defaults to 0 in hushd, defaults to 1 in some GUI wallets. Maintain a full spent index, used to query the spending txid and input index for an outpoint +Defaults to 0 in dragonxd, defaults to 1 in some GUI wallets. Maintain a full spent index, used to query the spending txid and input index for an outpoint diff --git a/doc/developer-notes.md b/doc/developer-notes.md index 28b112f76..40ed1fe18 100644 --- a/doc/developer-notes.md +++ b/doc/developer-notes.md @@ -5,11 +5,11 @@ First the basics, how to compile code in this repo. First you will want to clone the code locally: ``` -git clone https://git.hush.is/hush/hush3 -cd hush3 +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ``` -If you want to compile a branch other than master (the default), such as +If you want to compile a branch other than `dragonx` (the default), such as our development tip (the `dev` branch) you can switch to it: ``` @@ -17,7 +17,7 @@ git checkout dev ``` Then install needed dependencies. This is different on each OS as well as -older or newer systems. See https://git.hush.is/hush/hush3/src/branch/dev/INSTALL.md for +older or newer systems. See the build instructions in the repo README for details on installing dependencies. If you are using a recent-ish Ubuntu or Debian Linux distro, this is probably what you need: @@ -59,20 +59,21 @@ A fresh sync preserves peers.dat, so it will always be faster than a "fresh clon One way to do a fresh sync is: ``` -cd ~/.hush/HUSH3 -rm blocks chainstate database notarizations hushstate +cd ~/.hush/DRAGONX +rm -rf blocks chainstate database notarizations hushstate hushsignedmasks minerids ``` -NOTE: The legacy directory is ~/.komodo/HUSH3 and hushd will use data from either, or ~/.hush/HUSH3 if both exist. +NOTE: The DragonX data directory is `~/.hush/DRAGONX`. The on-disk notarization/state +files are still named `hushstate`/`hushsignedmasks` (inherited names, not rebranded). If you are using `zindex=1` then you need to also delete zindex.dat ``` -cd ~/.hush/HUSH3 -rm zindex.dat blocks chainstate database notarizations hushstate +cd ~/.hush/DRAGONX +rm -rf zindex.dat blocks chainstate database notarizations hushstate hushsignedmasks minerids ``` -It's possible to confused hush if you ran old code, stop, restart, and then write out zindex.dat that is incorrect, which later hushds will load from disk and believe. +It's possible to confuse the node if you ran old code, stop, restart, and then write out a zindex.dat that is incorrect, which later dragonxd instances will load from disk and believe. # Generating a backtrace from a coredump @@ -93,12 +94,11 @@ core_filename` and then type bt to generate the backtrace. For this repo, it's likely this is the command you need: ``` -gdb src/hushd core +gdb src/dragonxd core ``` -NOTE: Even if you are debugging a coredump on a HAC, the file `src/blahd` -is just a shell script that calls `src/hushd` and you always want to give an actual executable -file as the first argument to `gdb`, not a bash script. +NOTE: `src/blahd` is just a shell script that calls `src/dragonxd`; you always want to +give an actual executable file as the first argument to `gdb`, not a bash script. This link about Advanced GDB is very useful: https://interrupt.memfault.com/blog/advanced-gdb @@ -113,7 +113,7 @@ unspendable funds mixed together. This can happen when you import a viewing key. the address of a viewing key will have `spendable = false` : - hush-cli listunspent|jq '.[] | {spendable, address, amount} | select(.spendable != false)' + dragonx-cli listunspent|jq '.[] | {spendable, address, amount} | select(.spendable != false)' The above command will only show spendable UTXOs. The jq language is very powerful and is very useful for devops and developer scripts. @@ -121,7 +121,7 @@ useful for devops and developer scripts. The jq manual can be found here: https://stedolan.github.io/jq/manual/ -# Making a new release of Hush +# Making a new release of DragonX See doc/release-process.md for details. @@ -132,39 +132,39 @@ To test a branch called `zindexdb` with a fresh clone: ``` # TODO: this should probably become a script in ./contrib -git clone https://git.hush.is/hush/hush3 hush3-testing -cd hush3-testing +git clone https://git.dragonx.is/DragonX/dragonx dragonx-testing +cd dragonx-testing git checkout zindexdb # you need 2GB RAM free per -jN ./build.sh -j2; make; make; make # this deals with build-system race condition bugs # we want to test a fresh sync, so backup current data TIME=`perl -e "print time"` -mv ~/.hush/{HUSH3,HUSH3-backup-$TIME} -mkdir ~/.hush/HUSH3 +mv ~/.hush/{DRAGONX,DRAGONX-backup-$TIME} +mkdir ~/.hush/DRAGONX # Use your previous config as a base -cp ~/.hush/{HUSH3-backup-$TIME,HUSH3}/HUSH3.conf +cp ~/.hush/{DRAGONX-backup-$TIME,DRAGONX}/DRAGONX.conf # Add zindex to your node -echo "zindex=1" >> ~/.hush/HUSH3/HUSH3.conf +echo "zindex=1" >> ~/.hush/DRAGONX/DRAGONX.conf # This is optional but will likely speed up sync time greatly -cp ~/.hush/{HUSH3-backup,HUSH3}/peers.dat +cp ~/.hush/{DRAGONX-backup-$TIME,DRAGONX}/peers.dat # This log file is helpful for debugging more and will contain a history of the # size of the anonset at every block height -./src/hushd &> hushd.log & +./src/dragonxd &> dragonxd.log & # to look at the log -tail -f hushd.log +tail -f dragonxd.log ``` To get a CSV file of the value of the anonset size for every block height: ``` -grep anonset hushd.log | cut -d= -f2 > anonset.csv +grep anonset dragonxd.log | cut -d= -f2 > anonset.csv ``` -This only needs to be calculated once, if we can verify it's correct. These are historical values that do not change. The goal is a web page with a historical view of the HUSH anonset size. +This only needs to be calculated once, if we can verify it's correct. These are historical values that do not change. The goal is a web page with a historical view of the DRAGONX anonset size. These values should match on all nodes: @@ -180,17 +180,22 @@ These values should match on all nodes: We should also check a recent block height to verify it's working correctly. The big "test" for this `zindexdb` branch is: * If you stop a node, and restart, are the stats from `getchaintxtstats` correct, i.e. the anonset stats? For instance, `shielded_pool_size` should be close to 500000, if it's close to or exactly 0, something is wrong. - * Is there a new file called `zindex.dat` in `~/.hush/HUSH3/` ? + * Is there a new file called `zindex.dat` in `~/.hush/DRAGONX/` ? * Is `zindex.dat` 149 bytes ? # Adding a PoW algorithm We will describe here the high-level ideas on how to add a new PoW algorithm to -the Hush codebase. Adding a new PoW algo means adding a new option to the `-ac_algo` -CLI param for HSC's. +the codebase. Adding a new PoW algo means adding a new option to the `-ac_algo` +CLI param. + +Note: DragonX itself uses **RandomX** (CPU) as its Proof-of-Work — it is selected by +default for the DRAGONX chain (`isdragonx ? "randomx"` in `src/hush_utils.h`). The +generic `ASSETCHAINS_ALGORITHMS` array below still lists Equihash as its first element +(the array default), but that is not DragonX's algorithm. * Add the new value to the end of the `ASSETCHAINS_ALGORITHMS` array in `src/hush_utils.h` - * You cannot add it to the front because the first element is the default "equihash" + * You cannot add it to the front because the first element is the array default "equihash" * You will also need to add a new constant, such as `ASSETCHAINS_FOOHASH` to `src/hush_globals.h` * Increase the value of `ASSETCHAINS_NUMALGOS` by one * This value cannot be automatically be determined by the length of the above array because Equihash has different supported variants of (N,K) values @@ -263,7 +268,7 @@ on all categories (and give you a very large debug.log file). **test coins** The main way to test new things is directly on mainnet or you can also make a -Hush Arrakis Chain "testcoin" with a single command: `hushd -ac_name=COIN ...` +test "testcoin" chain with a single command: `dragonxd -ac_name=COIN ...` If you are testing something that can run on one machine you can use `-testnode=1` which makes it so a single machine can create a new blockchain and mine blocks, i.e. @@ -271,7 +276,7 @@ no peers are necessary. **DEBUG_LOCKORDER** -Hush is a multithreaded application, and deadlocks or other multithreading bugs +DragonX is a multithreaded application, and deadlocks or other multithreading bugs can be very difficult to track down. Compiling with -DDEBUG_LOCKORDER (configure CXXFLAGS="-DDEBUG_LOCKORDER -g") inserts run-time checks to keep track of which locks are held, and adds warnings to the debug.log file if inconsistencies are detected. @@ -306,7 +311,7 @@ Threads - ThreadMapPort : Universal plug-and-play startup/shutdown -- ThreadSocketHandler : Sends/Receives data from peers on port 8233. +- ThreadSocketHandler : Sends/Receives data from peers on the P2P port (18030 on DragonX mainnet). - ThreadOpenAddedConnections : Opens network connections to added nodes. @@ -318,9 +323,9 @@ Threads - ThreadFlushWalletDB : Close the wallet.dat file if it hasn't been used in 500ms. -- ThreadRPCServer : Remote procedure call handler, listens on port 8232 for connections and services them. +- ThreadRPCServer : Remote procedure call handler, listens on the RPC port (21769 on DragonX mainnet) for connections and services them. -- HushMiner : Generates zcash (if wallet is enabled). +- Miner threads : Generate DRAGONX blocks via RandomX (if wallet and mining are enabled). - Shutdown : Does an orderly shutdown of everything. diff --git a/doc/dnsseed-policy.md b/doc/dnsseed-policy.md index 554158b17..15d1dac53 100644 --- a/doc/dnsseed-policy.md +++ b/doc/dnsseed-policy.md @@ -1,11 +1,11 @@ # Expectations for DNS Seed operators -Hush attempts to minimize the level of trust in DNS seeds, +DragonX attempts to minimize the level of trust in DNS seeds, but DNS seeds still pose a small amount of risk for the network. As such, DNS seeds must be run by entities which have some minimum -level of trust within the Hush community. +level of trust within the DragonX community. -Other implementations of Hush software may also use the same +Other implementations of DragonX software may also use the same seeds and may be more exposed. In light of this exposure, this document establishes some basic expectations for operating DNS seeds. @@ -15,7 +15,7 @@ and not sell or transfer control of the DNS seed. Any hosting services contracted by the operator are equally expected to uphold these expectations. 1. The DNS seed results must consist exclusively of fairly selected and -functioning Hush nodes from the public network to the best of the +functioning DragonX nodes from the public network to the best of the operator's understanding and capability. 2. For the avoidance of doubt, the results may be randomized but must not @@ -25,7 +25,7 @@ urgent technical necessity and disclosed. 3. The results may not be served with a DNS TTL of less than one minute. 4. Any logging of DNS queries should be only that which is necessary -for the operation of the service or urgent health of the Hush +for the operation of the service or urgent health of the DragonX network and must not be retained longer than necessary nor disclosed to any third party. @@ -41,13 +41,8 @@ details of their operating practices. related to the DNS seed operation. If these expectations cannot be satisfied the operator should discontinue -providing services and contact the active Hush development team as well as -creating an issue in the [Hush Git repository](https://git.hush.is./hush/hush3). +providing services and contact the active DragonX development team as well as +creating an issue in the [DragonX Git repository](https://git.dragonx.is/DragonX/dragonx). Behavior outside of these expectations may be reasonable in some situations but should be discussed in public in advance. - -See also ----------- -- [hush-seeder](https://git.hush.is/hush/hush-seeder) is a reference - implementation of a DNS seed. diff --git a/doc/dragonx/logo_dragonx.svg b/doc/dragonx/logo_dragonx.svg new file mode 100644 index 000000000..d6a515a77 --- /dev/null +++ b/doc/dragonx/logo_dragonx.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/doc/dragonx/logo_dragonx_128.png b/doc/dragonx/logo_dragonx_128.png new file mode 100644 index 0000000000000000000000000000000000000000..adc8edad17224c14693cd8d6eb84420091671161 GIT binary patch literal 7060 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