From c05134e77e8a897b02ed7f5903a7b30568da124b Mon Sep 17 00:00:00 2001 From: DanS Date: Tue, 3 Mar 2026 19:01:24 -0600 Subject: [PATCH] Compliant rebrand: legal compliance, code audit, and documentation (Phases 0-3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 0 - Legal Compliance: - COPYING: Add DragonX copyright, preserve all upstream attributions - AUTHORS: Add DragonX developers section - LICENSE: Restore standard FSF GPLv3 text (fix GNU→GENERAL error) - Add DragonX copyright headers to all 21 modified source files - contrib/debian/copyright: Add DragonX attribution - README.md: Add GPLv3 Section 5(a) attribution section Phase 1 - init.cpp Cleanup: - PID file: hushd.pid → dragonxd.pid - Shutdown thread: hush-shutoff → dragonx-shutoff - Debug message: stopping HUSH → stopping DragonX Phase 2 - HUSH3/ishush3 Code Audit: - Rename ishush3 → isdragonx across ~15 source files - Update "HUSH3" chain-identity checks to "DRAGONX" in consensus, difficulty, notarization, devtax, and RPC code - Intentionally preserve cross-chain "HUSH3" refs (gateway, notary dest) - Build verified: all three binaries compile cleanly Phase 3 - Documentation: - README.md: Full rewrite with DragonX chain params, build instructions - Man pages: Create dragonxd.1, dragonx-cli.1, dragonx-tx.1 (v1.0.0) - Doc files: Add beefy-DRAGONX.conf, dragonxd-systemd.md, dragonxd.service - Init scripts: Create dragonxd.{conf,init,openrc,openrcconf,service} - Debian packaging: Update control, changelog, install, manpages, examples - Update doc/init.md and contrib/init/README.md --- AUTHORS | 4 + COPYING | 1 + LICENSE | 26 +- README.md | 209 ++----- configure.ac | 4 + contrib/debian/changelog | 9 + contrib/debian/control | 18 +- contrib/debian/copyright | 5 +- contrib/debian/dragonx.example | 1 + contrib/debian/dragonx.install | 3 + contrib/debian/dragonx.manpages | 3 + contrib/debian/examples/DRAGONX.conf | 209 +++++++ contrib/debian/hush.example | 2 +- contrib/debian/hush.install | 6 +- contrib/debian/hush.manpages | 6 +- contrib/init/README.md | 10 +- contrib/init/dragonxd.conf | 59 ++ contrib/init/dragonxd.init | 67 +++ contrib/init/dragonxd.openrc | 87 +++ contrib/init/dragonxd.openrcconf | 33 ++ contrib/init/dragonxd.service | 22 + doc/beefy-DRAGONX.conf | 7 + doc/dragonxd-systemd.md | 29 + doc/dragonxd.service | 9 + doc/init.md | 62 +-- doc/man/Makefile.am | 2 +- doc/man/dragonx-cli.1 | 91 ++++ doc/man/dragonx-tx.1 | 105 ++++ doc/man/dragonxd.1 | 781 +++++++++++++++++++++++++++ src/Makefile.am | 1 + src/bitcoin-cli.cpp | 1 + src/bitcoind.cpp | 1 + src/chainparams.cpp | 7 +- src/chainparamsbase.cpp | 1 + src/clientversion.cpp | 1 + src/clientversion.h | 1 + src/crosschain.cpp | 4 +- src/hush_bitcoind.h | 13 +- src/hush_events.h | 2 +- src/hush_globals.h | 21 +- src/hush_nSPV.h | 2 +- src/hush_nSPV_fullnode.h | 2 +- src/hush_notary.h | 8 +- src/hush_utils.h | 21 +- src/init.cpp | 7 +- src/main.cpp | 34 +- src/metrics.cpp | 1 + src/miner.cpp | 1 + src/notarizationdb.cpp | 6 +- src/pow.cpp | 7 +- src/rpc/mining.cpp | 1 + src/rpc/misc.cpp | 4 +- src/rpc/net.cpp | 1 + src/rpc/server.cpp | 10 +- src/util.cpp | 3 +- src/version.h | 1 + src/wallet-utility.cpp | 1 + src/wallet/rpcwallet.cpp | 2 +- util/build-win.sh | 1 + 59 files changed, 1746 insertions(+), 290 deletions(-) create mode 100644 contrib/debian/dragonx.example create mode 100644 contrib/debian/dragonx.install create mode 100644 contrib/debian/dragonx.manpages create mode 100644 contrib/debian/examples/DRAGONX.conf create mode 100644 contrib/init/dragonxd.conf create mode 100644 contrib/init/dragonxd.init create mode 100644 contrib/init/dragonxd.openrc create mode 100644 contrib/init/dragonxd.openrcconf create mode 100644 contrib/init/dragonxd.service create mode 100644 doc/beefy-DRAGONX.conf create mode 100644 doc/dragonxd-systemd.md create mode 100644 doc/dragonxd.service create mode 100644 doc/man/dragonx-cli.1 create mode 100644 doc/man/dragonx-tx.1 create mode 100644 doc/man/dragonxd.1 diff --git a/AUTHORS b/AUTHORS index 54de6e03c..c0a1c7747 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,3 +1,7 @@ +# The DragonX Developers + +Dan S https://git.dragonx.is/dan + # The Hush Developers Duke Leto https://git.hush.is/duke https://github.com/leto diff --git a/COPYING b/COPYING index c8e0c34c2..ddeda533f 100644 --- a/COPYING +++ b/COPYING @@ -1,3 +1,4 @@ +Copyright (c) 2024-2026 The DragonX developers Copyright (c) 2018-2025 The Hush developers Copyright (c) 2009-2017 The Bitcoin Core developers Copyright (c) 2009-2018 Bitcoin Developers diff --git a/LICENSE b/LICENSE index febd8b6d9..bc08fe2e4 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ - GENERAL GENERAL PUBLIC LICENSE + GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. @@ -7,15 +7,15 @@ Preamble - The GENERAL General Public License is a free, copyleft license for + The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, -the GENERAL General Public License is intended to guarantee your freedom to +the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the -GENERAL General Public License for most of our software; it applies also to +GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. @@ -37,7 +37,7 @@ freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - Developers that use the GENERAL GPL protect your rights with two steps: + Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. @@ -72,7 +72,7 @@ modification follow. 0. Definitions. - "This License" refers to version 3 of the GENERAL General Public License. + "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. @@ -549,35 +549,35 @@ to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - 13. Use with the GENERAL Affero General Public License. + 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed -under version 3 of the GENERAL Affero General Public License into a single +under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, -but the special requirements of the GENERAL Affero General Public License, +but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of -the GENERAL General Public License from time to time. Such new versions will +the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GENERAL General +Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the -GENERAL General Public License, you may choose any version ever published +GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future -versions of the GENERAL General Public License can be used, that proxy's +versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. diff --git a/README.md b/README.md index b1a7cbbbf..2f0c8a6dc 100644 --- a/README.md +++ b/README.md @@ -1,196 +1,107 @@ -

- -

+# DragonX -

+DragonX is a privacy-focused cryptocurrency full node using RandomX proof-of-work. +All transactions are shielded (z-to-z) by default, providing strong on-chain privacy. -| 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) +| | | +|---|---| +| **Algorithm** | RandomX (CPU-mineable) | +| **Block time** | 36 seconds | +| **Block reward** | 3 DRAGONX | +| **Halving** | Every 3,500,000 blocks | +| **Privacy** | All transactions shielded (`-ac_private=1`) | +| **P2P port** | 21768 | +| **RPC port** | 21769 | -

- -# What is Hush? - -Hush implements Extreme Privacy via blockchain tech. We have our own -genesis block. We are not a chain fork (copy) of another coin. We are based on -Bitcoin code, with sophisticated zero-knowledge mathematics added for privacy. -This keeps your transaction metadata private! - -# What is this repository? - -This software is the Hush node and command-line client. It downloads and stores -the entire history of Hush transactions; depending on the speed of your -computer and network connection, it will likely take a few hours at least, but -some people report full nodes syncing in less than 1.5 hours. - -# Banned by GitHub - -In working on this release, Duke Leto was suspended from Github, which gave Hush developers -the impetus to completely leave that racist and censorship-loving platform. Hush now has it's own [git.hush.is](https://git.hush.is/hush) Gitea instance, -because we will not be silenced by Microsoft. All Hush software will be released from git.hush.is and hush.is, downloads from any other -domains should be assumed to be backdoored. - -**Hush is unfinished and highly experimental.** Use at your own risk! Just like Bitcoin. - -# Build on Debian or Ubuntu +## Build on Debian or Ubuntu ```sh -# install build dependencies +# 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. + bsdmainutils automake curl unzip libsodium-dev cmake + +# Clone the repo +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx + +# Build (uses ~2GB RAM per -j thread) ./build.sh -j3 ``` -Video Tutorial: https://videos.hush.is/videos/how-to-install-on-linux -# Build on Arch +## Build on Arch ```sh -# install build dependencies sudo pacman -S gcc libsodium lib32-zlib unzip wget git python rust curl autoconf cmake -# clone git repo -git clone https://git.hush.is/hush/hush3 -cd hush3 -# Build -# This uses 3 build processes, you need 2GB of RAM for each. + +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -# Build on Fedora +## Build on Fedora ```sh -# install build dependencies sudo dnf install make automake gcc gcc-c++ kernel-devel cmake libtool ncurses-devel patch -y -# clone git repo -git clone https://git.hush.is/hush/hush3 -cd hush3 -# Build -# This uses 3 build processes, you need 2GB of RAM for each. + +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -# Install on Windows 10 +## Build on 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 - -``` -sudo port update -sudo port upgrade outdated +```sh +sudo port update && sudo port upgrade outdated sudo port install qt5 -# clone git repo -git clone https://git.hush.is/hush/hush3 -cd hush3 -# Build -# This uses 3 build processes, you need 2GB of RAM for each. +git clone https://git.dragonx.is/DragonX/dragonx +cd dragonx ./build.sh -j3 ``` -# Installing Hush binaries +## Cross-compile for Windows (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: +## Running ```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 +# Start the daemon +./src/dragonxd + +# In another terminal, interact via CLI +./src/dragonx-cli getinfo +./src/dragonx-cli z_getnewaddress ``` -# Official Explorers +Data directory: `~/.hush/DRAGONX/` +Config file: `~/.hush/DRAGONX/DRAGONX.conf` -The links for the Official Hush explorers: - * [explorer.hush.is](https://explorer.hush.is) +## Mining -# What is SilentDragon? +DragonX uses the RandomX algorithm and is CPU-mineable. Point any RandomX-compatible +miner (e.g. XMRig) at a DragonX stratum pool, or solo-mine with: -* [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. +```sh +./src/dragonxd -gen -genproclimit=$(nproc) -mineraddress= +``` -# What is HushChat? +## Attribution -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. +DragonX is a fork of the [Hush Full Node](https://hush.is). +Based on code from Zcash, Komodo, and Bitcoin Core. +Licensed under GPLv3 — see [COPYING](COPYING) and [LICENSE](LICENSE). -# Can I mine with CPU or GPU? - -Hush cannot be efficiently mined with CPU or GPU, only ASIC mining is recommended. HUSH uses Equihash (200,9) algo, as does Zcash, Horizen or Komodo. - -# Where can I buy Hush? - -1. https://nonkyc.io/market/HUSH_BTC -1. https://tradeogre.com/exchange/BTC-HUSH - -# Where can I spend Hush? - -AgoraX market: https://agorax.is - -# Earn Hush bounty - -Developers can earn bounty by fixing bugs or solving feature requests listed in `Issues->Label`: -- https://git.hush.is/hush/hush3/issues -- https://git.hush.is/hush/SilentDragon/issues -- https://git.hush.is/hush/SilentDragonLite/issues - -![Logo](doc/hush/earnhush.png "Hush Bounty") - -# 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) - -# License +## License For license information see the file [COPYING](COPYING). diff --git a/configure.ac b/configure.ac index 7f6b47d9a..4c556a7ce 100644 --- a/configure.ac +++ b/configure.ac @@ -1,3 +1,7 @@ +dnl Copyright (c) 2024-2026 The DragonX developers +dnl Copyright (c) 2016-2024 The Hush developers +dnl Distributed under the GPLv3 software license, see the accompanying +dnl file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 1) diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 0afb9c9d7..a01385923 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,12 @@ +dragonx (1.0.0) stable; urgency=medium + + * Initial release of DragonX, forked from Hush Full Node + * Full legal-compliant rebrand: binaries, config, documentation + * RandomX proof-of-work, 36-second block time, fully shielded transactions + * New binary names: dragonxd, dragonx-cli, dragonx-tx + + -- DragonX Mon, 03 Mar 2026 00:00:00 +0000 + hush (3.10.5) stable; urgency=medium * DragonX is no longer supported by this codebase diff --git a/contrib/debian/control b/contrib/debian/control index 0402371c0..1dd3c1917 100644 --- a/contrib/debian/control +++ b/contrib/debian/control @@ -1,18 +1,18 @@ -Source: hush +Source: dragonx Section: utils Priority: optional -Maintainer: Hush -Homepage: https://hush.is +Maintainer: DragonX +Homepage: https://dragonx.is Build-Depends: autoconf, automake, bsdmainutils, build-essential, cmake, curl, git, g++-multilib, libc6-dev, libsodium-dev, libtool, m4, ncurses-dev, pkg-config, python, unzip, wget, zlib1g-dev -Vcs-Git: https://git.hush.is/hush/hush3.git -Vcs-Browser: https://git.hush.is/hush/hush3 +Vcs-Git: https://git.dragonx.is/DragonX/dragonx.git +Vcs-Browser: https://git.dragonx.is/DragonX/dragonx -Package: hush +Package: dragonx Architecture: amd64 arm64 Depends: ${shlibs:Depends} -Description: Cryptocoin full node for Hush - Speak And Transact Freely with Hush, which inherits from Bitcoin Protocol and - Zcash Protocol and is focused on private communications. +Description: Privacy-focused cryptocurrency full node for DragonX + DragonX is a privacy-focused cryptocurrency using RandomX proof-of-work. + All transactions are shielded by default. Fork of the Hush Full Node. diff --git a/contrib/debian/copyright b/contrib/debian/copyright index b9fdca286..aee87ab30 100644 --- a/contrib/debian/copyright +++ b/contrib/debian/copyright @@ -1,8 +1,9 @@ Files: * -Copyright: 2016-2026, The Hush developers +Copyright: 2024-2026, The DragonX developers + 2016-2026, The Hush developers 2009-2016, Bitcoin Core developers License: GPLv3 -Comment: https://hush.is +Comment: https://dragonx.is Files: depends/sources/libsodium-*.tar.gz Copyright: 2013-2016 Frank Denis diff --git a/contrib/debian/dragonx.example b/contrib/debian/dragonx.example new file mode 100644 index 000000000..e54e8a817 --- /dev/null +++ b/contrib/debian/dragonx.example @@ -0,0 +1 @@ +DEBIAN/examples/DRAGONX.conf diff --git a/contrib/debian/dragonx.install b/contrib/debian/dragonx.install new file mode 100644 index 000000000..a79293ac4 --- /dev/null +++ b/contrib/debian/dragonx.install @@ -0,0 +1,3 @@ +usr/bin/dragonxd +usr/bin/dragonx-cli +usr/bin/dragonx-tx diff --git a/contrib/debian/dragonx.manpages b/contrib/debian/dragonx.manpages new file mode 100644 index 000000000..f4a5b20c9 --- /dev/null +++ b/contrib/debian/dragonx.manpages @@ -0,0 +1,3 @@ +DEBIAN/manpages/dragonx-cli.1 +DEBIAN/manpages/dragonx-tx.1 +DEBIAN/manpages/dragonxd.1 diff --git a/contrib/debian/examples/DRAGONX.conf b/contrib/debian/examples/DRAGONX.conf new file mode 100644 index 000000000..a9d275f3f --- /dev/null +++ b/contrib/debian/examples/DRAGONX.conf @@ -0,0 +1,209 @@ +## DRAGONX.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 dragonxd 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 dragonxd + +#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 dragonxd to send commands to dragonxd +# 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 index 43111f548..e54e8a817 100644 --- a/contrib/debian/hush.example +++ b/contrib/debian/hush.example @@ -1 +1 @@ -DEBIAN/examples/HUSH3.conf +DEBIAN/examples/DRAGONX.conf diff --git a/contrib/debian/hush.install b/contrib/debian/hush.install index dae3a0633..a79293ac4 100644 --- a/contrib/debian/hush.install +++ b/contrib/debian/hush.install @@ -1,3 +1,3 @@ -usr/bin/hushd -usr/bin/hush-cli -usr/bin/hush-tx +usr/bin/dragonxd +usr/bin/dragonx-cli +usr/bin/dragonx-tx diff --git a/contrib/debian/hush.manpages b/contrib/debian/hush.manpages index 6685edb09..f4a5b20c9 100644 --- a/contrib/debian/hush.manpages +++ b/contrib/debian/hush.manpages @@ -1,3 +1,3 @@ -DEBIAN/manpages/hush-cli.1 -DEBIAN/manpages/hush-tx.1 -DEBIAN/manpages/hushd.1 +DEBIAN/manpages/dragonx-cli.1 +DEBIAN/manpages/dragonx-tx.1 +DEBIAN/manpages/dragonxd.1 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 new file mode 100644 index 000000000..e7c451f25 --- /dev/null +++ b/contrib/init/dragonxd.conf @@ -0,0 +1,59 @@ +description "Hush Daemon" + +start on runlevel [2345] +stop on starting rc RUNLEVEL=[016] + +env HUSHD_BIN="/usr/bin/dragonxd" +env HUSHD_USER="hush" +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_DATADIR="/var/lib/dragonxd" + +expect fork + +respawn +respawn limit 5 120 +kill timeout 60 + +pre-start script + # this will catch non-existent config files + # dragonxd 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 dragonxd." + 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/dragonxd.init b/contrib/init/dragonxd.init new file mode 100644 index 000000000..9eda12a62 --- /dev/null +++ b/contrib/init/dragonxd.init @@ -0,0 +1,67 @@ +#!/usr/bin/env bash +# +# dragonxd The hush core server. +# +# +# chkconfig: 345 80 20 +# description: dragonxd +# processname: dragonxd +# + +# Source function library. +. /etc/init.d/functions + +# you can override defaults in /etc/sysconfig/dragonxd, see below +if [ -f /etc/sysconfig/dragonxd ]; then + . /etc/sysconfig/dragonxd +fi + +RETVAL=0 + +prog=dragonxd +# you can override the lockfile via HUSHD_LOCKFILE in /etc/sysconfig/dragonxd +lockfile=${HUSHD_LOCKFILE-/var/lock/subsys/dragonxd} + +# dragonxd defaults to /usr/bin/dragonxd, override with HUSHD_BIN +dragonxd=${HUSHD_BIN-/usr/bin/dragonxd} + +# dragonxd opts default to -disablewallet, override with HUSHD_OPTS +dragonxd_opts=${HUSHD_OPTS--disablewallet} + +start() { + echo -n $"Starting $prog: " + daemon $DAEMONOPTS $dragonxd $dragonxd_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/dragonxd.openrc b/contrib/init/dragonxd.openrc new file mode 100644 index 000000000..f0f755cc1 --- /dev/null +++ b/contrib/init/dragonxd.openrc @@ -0,0 +1,87 @@ +#!/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/dragonxd" +fi + +HUSHD_CONFIGFILE=${HUSHD_CONFIGFILE:-/etc/hush/hush.conf} +HUSHD_PIDDIR=${HUSHD_PIDDIR:-/var/run/dragonxd} +HUSHD_PIDFILE=${HUSHD_PIDFILE:-${HUSHD_PIDDIR}/dragonxd.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/dragonxd} +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/dragonxd" +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 dragonxd." + 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/dragonxd.openrcconf b/contrib/init/dragonxd.openrcconf new file mode 100644 index 000000000..eda99dc69 --- /dev/null +++ b/contrib/init/dragonxd.openrcconf @@ -0,0 +1,33 @@ +# /etc/conf.d/dragonxd: config file for /etc/init.d/dragonxd + +# 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/dragonxd" + +# What filename to give the pidfile +#HUSHD_PIDFILE="${HUSHD_PIDDIR}/dragonxd.pid" + +# Where to write dragonxd data (be mindful that the blockchain is large) +#HUSHD_DATADIR="/var/lib/dragonxd" + +# User and group to own dragonxd process +#HUSHD_USER="hush" +#HUSHD_GROUP="hush" + +# Path to dragonxd executable +#HUSHD_BIN="/usr/bin/dragonxd" + +# Nice value to run dragonxd under +#HUSHD_NICE=0 + +# Additional options (avoid -conf and -datadir, use flags above) +HUSHD_OPTS="-disablewallet" + +# The timeout in seconds OpenRC will wait for dragonxd 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/dragonxd.service b/contrib/init/dragonxd.service new file mode 100644 index 000000000..525a7725d --- /dev/null +++ b/contrib/init/dragonxd.service @@ -0,0 +1,22 @@ +[Unit] +Description=Hush: Speak And Transact Freely +After=network.target + +[Service] +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 + +Restart=always +PrivateTmp=true +TimeoutStopSec=60s +TimeoutStartSec=2s +StartLimitInterval=120s +StartLimitBurst=5 + +[Install] +WantedBy=multi-user.target diff --git a/doc/beefy-DRAGONX.conf b/doc/beefy-DRAGONX.conf new file mode 100644 index 000000000..ee1daff63 --- /dev/null +++ b/doc/beefy-DRAGONX.conf @@ -0,0 +1,7 @@ +rpcuser=dontuseweakusernameoryougetrobbed +rpcpassword=dontuseweakpasswordoryougetrobbed +txindex=1 +server=1 +rpcworkqueue=64 +addnode=1.2.3.4 +addnode=5.6.7.8 diff --git a/doc/dragonxd-systemd.md b/doc/dragonxd-systemd.md new file mode 100644 index 000000000..101523a83 --- /dev/null +++ b/doc/dragonxd-systemd.md @@ -0,0 +1,29 @@ +# Systemd script for the DragonX daemon + +## Set it up + +First set it up as follows: +* Copy dragonxd.service to the systemd user directory, which is /usr/lib/systemd/user directory + +## Basic Usage + +How to start the script: +`systemctl start --user dragonxd.service` + +How to stop the script: +`systemctl stop --user dragonxd.service` + +How to restart the script: +`systemctl restart --user dragonxd.service` + +## How to watch it as it starts + +Use the following on most Linux distros: +`watch systemctl status --user dragonxd.service` + +Or watch the log directly: +`tail -f ~/.hush/DRAGONX/debug.log` + +## Troubleshooting + +* Don't run it with sudo or root, or it won't work with the wallet. diff --git a/doc/dragonxd.service b/doc/dragonxd.service new file mode 100644 index 000000000..688181e98 --- /dev/null +++ b/doc/dragonxd.service @@ -0,0 +1,9 @@ +[Unit] +Description=DragonX daemon +After=network.target + +[Service] +ExecStart=/usr/bin/dragonxd + +[Install] +WantedBy=default.target diff --git a/doc/init.md b/doc/init.md index 87366e4b8..44a2e219c 100644 --- a/doc/init.md +++ b/doc/init.md @@ -1,37 +1,37 @@ -*** Warning: This document has not been updated for Hush and may be inaccurate. *** -Sample init scripts and service configuration for bitcoind + +Sample init scripts and service configuration for dragonxd ========================================================== Sample scripts and configuration files for systemd, Upstart and OpenRC can be found in the contrib/init folder. - contrib/init/bitcoind.service: systemd service unit configuration - contrib/init/bitcoind.openrc: OpenRC compatible SysV style init script - contrib/init/bitcoind.openrcconf: OpenRC conf.d file - contrib/init/bitcoind.conf: Upstart service configuration file - contrib/init/bitcoind.init: CentOS compatible SysV style init script + contrib/init/dragonxd.service: systemd service unit configuration + contrib/init/dragonxd.openrc: OpenRC compatible SysV style init script + contrib/init/dragonxd.openrcconf: OpenRC conf.d file + contrib/init/dragonxd.conf: Upstart service configuration file + contrib/init/dragonxd.init: CentOS compatible SysV style init script 1. Service User --------------------------------- -All three startup configurations assume the existence of a "bitcoin" user +All three startup configurations assume the existence of a "dragonx" user and group. They must be created before attempting to use these scripts. 2. Configuration --------------------------------- -At a bare minimum, bitcoind requires that the rpcpassword setting be set +At a bare minimum, dragonxd requires that the rpcpassword setting be set when running as a daemon. If the configuration file does not exist or this -setting is not set, bitcoind will shutdown promptly after startup. +setting is not set, dragonxd will shutdown promptly after startup. This password does not have to be remembered or typed as it is mostly used -as a fixed token that bitcoind and client programs read from the configuration +as a fixed token that dragonxd and client programs read from the configuration file, however it is recommended that a strong and secure password be used as this password is security critical to securing the wallet should the wallet be enabled. -If bitcoind is run with "-daemon" flag, and no rpcpassword is set, it will +If dragonxd is run with "-daemon" flag, and no rpcpassword is set, it will print a randomly generated suitable password to stderr. You can also generate one from the shell yourself like this: @@ -39,24 +39,24 @@ bash -c 'tr -dc a-zA-Z0-9 < /dev/urandom | head -c32 && echo' For an example configuration file that describes the configuration settings, -see contrib/debian/examples/bitcoin.conf. +see contrib/debian/examples/DRAGONX.conf. 3. Paths --------------------------------- All three configurations assume several paths that might need to be adjusted. -Binary: /usr/bin/bitcoind -Configuration file: /etc/bitcoin/bitcoin.conf -Data directory: /var/lib/bitcoind -PID file: /var/run/bitcoind/bitcoind.pid (OpenRC and Upstart) - /var/lib/bitcoind/bitcoind.pid (systemd) -Lock file: /var/lock/subsys/bitcoind (CentOS) +Binary: /usr/bin/dragonxd +Configuration file: /etc/dragonx/DRAGONX.conf +Data directory: /var/lib/dragonxd +PID file: /var/run/dragonxd/dragonxd.pid (OpenRC and Upstart) + /var/lib/dragonxd/dragonxd.pid (systemd) +Lock file: /var/lock/subsys/dragonxd (CentOS) The configuration file, PID directory (if applicable) and data directory -should all be owned by the bitcoin user and group. It is advised for security +should all be owned by the dragonx user and group. It is advised for security reasons to make the configuration file and data directory only readable by the -bitcoin user and group. Access to bitcoin-cli and other bitcoind rpc clients +dragonx user and group. Access to dragonx-cli and other dragonxd rpc clients can then be controlled by group membership. 4. Installing Service Configuration @@ -68,19 +68,19 @@ Installing this .service file consists of just copying it to /usr/lib/systemd/system directory, followed by the command "systemctl daemon-reload" in order to update running systemd configuration. -To test, run "systemctl start bitcoind" and to enable for system startup run -"systemctl enable bitcoind" +To test, run "systemctl start dragonxd" and to enable for system startup run +"systemctl enable dragonxd" 4b) OpenRC -Rename bitcoind.openrc to bitcoind and drop it in /etc/init.d. Double +Rename dragonxd.openrc to dragonxd and drop it in /etc/init.d. Double check ownership and permissions and make it executable. Test it with -"/etc/init.d/bitcoind start" and configure it to run on startup with -"rc-update add bitcoind" +"/etc/init.d/dragonxd start" and configure it to run on startup with +"rc-update add dragonxd" 4c) Upstart (for Debian/Ubuntu based distributions) -Drop bitcoind.conf in /etc/init. Test by running "service bitcoind start" +Drop dragonxd.conf in /etc/init. Test by running "service dragonxd start" it will automatically start on reboot. NOTE: This script is incompatible with CentOS 5 and Amazon Linux 2014 as they @@ -88,11 +88,11 @@ use old versions of Upstart and do not supply the start-stop-daemon utility. 4d) CentOS -Copy bitcoind.init to /etc/init.d/bitcoind. Test by running "service bitcoind start". +Copy dragonxd.init to /etc/init.d/dragonxd. Test by running "service dragonxd start". -Using this script, you can adjust the path and flags to the bitcoind program by -setting the BITCOIND and FLAGS environment variables in the file -/etc/sysconfig/bitcoind. You can also use the DAEMONOPTS environment variable here. +Using this script, you can adjust the path and flags to the dragonxd program by +setting the DRAGONXD and FLAGS environment variables in the file +/etc/sysconfig/dragonxd. You can also use the DAEMONOPTS environment variable here. 5. Auto-respawn ----------------------------------- diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am index 13be3322e..a2f4265a1 100644 --- a/doc/man/Makefile.am +++ b/doc/man/Makefile.am @@ -1 +1 @@ -dist_man1_MANS=hushd.1 hush-cli.1 hush-tx.1 +dist_man1_MANS=dragonxd.1 dragonx-cli.1 dragonx-tx.1 diff --git a/doc/man/dragonx-cli.1 b/doc/man/dragonx-cli.1 new file mode 100644 index 000000000..ef1f62532 --- /dev/null +++ b/doc/man/dragonx-cli.1 @@ -0,0 +1,91 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH DRAGONX-CLI "1" "March 2026" "dragonx-cli v1.0.0" "User Commands" +.SH NAME +dragonx-cli \- manual page for dragonx-cli v1.0.0 +.SH DESCRIPTION +DragonX RPC client version v1.0.0\-04916cdf5 +.PP +In order to ensure you are adequately protecting your privacy when using DragonX, +please see . +.SS "Usage:" +.TP +dragonx\-cli [options] [params] +Send command to DragonX +.TP +dragonx\-cli [options] help +List commands +.TP +dragonx\-cli [options] help +Get help for a command +.SH OPTIONS +.HP +\-? +.IP +This help message +.HP +\fB\-conf=\fR +.IP +Specify configuration file (default: DRAGONX.conf) +.HP +\fB\-datadir=\fR +.IP +Specify data directory (this path cannot use '~') +.HP +\fB\-testnet\fR +.IP +Use the test network +.HP +\fB\-regtest\fR +.IP +Enter regression test mode, which uses a special chain in which blocks +can be solved instantly. This is intended for regression testing +tools and app development. +.HP +\fB\-rpcconnect=\fR +.IP +Send commands to node running on (default: 127.0.0.1) +.HP +\fB\-rpcport=\fR +.IP +Connect to JSON\-RPC on (default: 18030 ) +.HP +\fB\-rpcwait\fR +.IP +Wait for RPC server to start +.HP +\fB\-rpcuser=\fR +.IP +Username for JSON\-RPC connections +.HP +\fB\-rpcpassword=\fR +.IP +Password for JSON\-RPC connections +.HP +\fB\-rpcclienttimeout=\fR +.IP +Timeout in seconds during HTTP requests, or 0 for no timeout. (default: +900) +.HP +\fB\-stdin\fR +.IP +Read extra arguments from standard input, one per line until EOF/Ctrl\-D +(recommended for sensitive information such as passphrases) +.SH COPYRIGHT + +In order to ensure you are adequately protecting your privacy when using DragonX, +please see . + +Copyright (C) 2024-2026 The DragonX Developers + +Copyright (C) 2016-2026 Duke Leto and The Hush Developers + +Copyright (C) 2016-2020 jl777 and SuperNET developers + +Copyright (C) 2016-2018 The Zcash developers + +Copyright (C) 2009-2014 The Bitcoin Core developers + +This is experimental Free Software! Fuck Yeah!!!!! + +Distributed under the GPLv3 software license, see the accompanying file COPYING +or . diff --git a/doc/man/dragonx-tx.1 b/doc/man/dragonx-tx.1 new file mode 100644 index 000000000..dc88e2c19 --- /dev/null +++ b/doc/man/dragonx-tx.1 @@ -0,0 +1,105 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH DRAGONX-TX "1" "March 2026" "dragonx-tx v1.0.0" "User Commands" +.SH NAME +dragonx-tx \- manual page for dragonx-tx v1.0.0 +.SH DESCRIPTION +DragonX TX utility version v1.0.0\-04916cdf5 +.SS "Usage:" +.TP +dragonx\-tx [options] [commands] +Update hex\-encoded DragonX transaction +.TP +dragonx\-tx [options] \fB\-create\fR [commands] +Create hex\-encoded DragonX transaction +.SH OPTIONS +.HP +\-? +.IP +This help message +.HP +\fB\-create\fR +.IP +Create new, empty TX. +.HP +\fB\-json\fR +.IP +Select JSON output +.HP +\fB\-txid\fR +.IP +Output only the hex\-encoded transaction id of the resultant transaction. +.HP +\fB\-regtest\fR +.IP +Enter regression test mode, which uses a special chain in which blocks +can be solved instantly. +.HP +\fB\-testnet\fR +.IP +Use the test network +.PP +Commands: +.IP +delin=N +.IP +Delete input N from TX +.IP +delout=N +.IP +Delete output N from TX +.IP +in=TXID:VOUT(:SEQUENCE_NUMBER) +.IP +Add input to TX +.IP +locktime=N +.IP +Set TX lock time to N +.IP +nversion=N +.IP +Set TX version to N +.IP +outaddr=VALUE:ADDRESS +.IP +Add address\-based output to TX +.IP +outscript=VALUE:SCRIPT +.IP +Add raw script output to TX +.IP +sign=HEIGHT:SIGHASH\-FLAGS +.IP +Add zero or more signatures to transaction. This command requires JSON +registers:prevtxs=JSON object, privatekeys=JSON object. See +signrawtransaction docs for format of sighash flags, JSON +objects. +.PP +Register Commands: +.IP +load=NAME:FILENAME +.IP +Load JSON file FILENAME into register NAME +.IP +set=NAME:JSON\-STRING +.IP +Set register NAME to given JSON\-STRING +.SH COPYRIGHT + +In order to ensure you are adequately protecting your privacy when using DragonX, +please see . + +Copyright (C) 2024-2026 The DragonX Developers + +Copyright (C) 2016-2026 Duke Leto and The Hush Developers + +Copyright (C) 2016-2020 jl777 and SuperNET developers + +Copyright (C) 2016-2018 The Zcash developers + +Copyright (C) 2009-2014 The Bitcoin Core developers + +This is experimental Free Software! Fuck Yeah!!!!! + +Distributed under the GPLv3 software license, see the accompanying file COPYING +or . diff --git a/doc/man/dragonxd.1 b/doc/man/dragonxd.1 new file mode 100644 index 000000000..7440dada4 --- /dev/null +++ b/doc/man/dragonxd.1 @@ -0,0 +1,781 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH DRAGONXD "1" "March 2026" "dragonxd v1.0.0" "User Commands" +.SH NAME +dragonxd \- manual page for dragonxd v1.0.0 +.SH DESCRIPTION +DragonX Daemon version v1.0.0\-04916cdf5 +.PP +In order to ensure you are adequately protecting your privacy when using DragonX, +please see . +.SS "Usage:" +.TP +dragonxd [options] +Start a DragonX Daemon +.SH OPTIONS +.HP +\-? +.IP +This help message +.HP +\fB\-blocknotify=\fR +.IP +Execute command when the best block changes (%s in cmd is replaced by +block hash) +.HP +\fB\-checkblocks=\fR +.IP +How many blocks to check at startup (default: 288, 0 = all) +.HP +\fB\-checklevel=\fR +.IP +How thorough the block verification of \fB\-checkblocks\fR is (0\-4, default: 3) +.HP +\fB\-clientname=\fR +.IP +Full node client name, default 'GoldenSandtrout' +.HP +\fB\-conf=\fR +.IP +Specify configuration file (default: DRAGONX.conf) +.HP +\fB\-daemon\fR +.IP +Run in the background as a daemon and accept commands +.HP +\fB\-datadir=\fR +.IP +Specify data directory (this path cannot use '~') +.HP +\fB\-exportdir=\fR +.IP +Specify directory to be used when exporting data +.HP +\fB\-dbcache=\fR +.IP +Set database cache size in megabytes (4 to 16384, default: 512) +.HP +\fB\-loadblock=\fR +.IP +Imports blocks from external blk000??.dat file on startup +.HP +\fB\-maxdebugfilesize=\fR +.IP +Set the max size of the debug.log file (default: 15) +.HP +\fB\-maxorphantx=\fR +.IP +Keep at most unconnectable transactions in memory (default: 100) +.HP +\fB\-maxreorg=\fR +.IP +Specify the maximum length of a blockchain re\-organization +.HP +\fB\-mempooltxinputlimit=\fR +.IP +[DEPRECATED/IGNORED] Set the maximum number of transparent inputs in a +transaction that the mempool will accept (default: 0 = no limit +applied) +.HP +\fB\-par=\fR +.IP +Set the number of script verification threads (\fB\-32\fR to 16, 0 = auto, <0 = +leave that many cores free, default: 0) +.HP +\fB\-pid=\fR +.IP +Specify pid file (default: dragonxd.pid) +.HP +\fB\-txexpirynotify=\fR +.IP +Execute command when transaction expires (%s in cmd is replaced by +transaction id) +.HP +\fB\-prune=\fR +.IP +Reduce storage requirements by pruning (deleting) old blocks. This mode +disables wallet support and is incompatible with \fB\-txindex\fR. +Warning: Reverting this setting requires re\-downloading the +entire blockchain. (default: 0 = disable pruning blocks, >550 = +target size in MiB to use for block files) +.HP +\fB\-reindex\fR +.IP +Rebuild block chain index from current blk000??.dat files on startup +.HP +\fB\-sysperms\fR +.IP +Create new files with system default permissions, instead of umask 077 +(only effective with disabled wallet functionality) +.HP +\fB\-txindex\fR +.IP +Maintain a full transaction index, used by the getrawtransaction rpc +call (default: 0) +.HP +\fB\-txsend=\fR +.IP +Execute command to send a transaction instead of broadcasting (%s in cmd +is replaced by transaction hex) +.HP +\fB\-addressindex\fR +.IP +Maintain a full address index, used to query for the balance, txids and +unspent outputs for addresses (default: 0) +.HP +\fB\-timestampindex\fR +.IP +Maintain a timestamp index for block hashes, used to query blocks hashes +by a range of timestamps (default: 0) +.HP +\fB\-spentindex\fR +.IP +Maintain a full spent index, used to query the spending txid and input +index for an outpoint (default: 0) +.HP +\fB\-zindex\fR +.IP +Maintain extra statistics about shielded transactions and payments +(default: 0) +.PP +Connection options: +.HP +\fB\-addnode=\fR +.IP +Add a node to connect to and attempt to keep the connection open +.HP +\fB\-asmap=\fR +.IP +Specify ASN mapping used for bucketing of the peers (default: +asmap.dat). Relative paths will be prefixed by the net\-specific +datadir location. +.HP +\fB\-banscore=\fR +.IP +Threshold for disconnecting misbehaving peers (default: 100) +.HP +\fB\-bantime=\fR +.IP +Number of seconds to keep misbehaving peers from reconnecting (default: +86400) +.HP +\fB\-bind=\fR +.IP +Bind to given address and always listen on it. Use [host]:port notation +for IPv6 +.HP +\fB\-connect=\fR +.IP +Connect only to the specified node(s) +.HP +\fB\-discover\fR +.IP +Discover own IP addresses (default: 1 when listening and no \fB\-externalip\fR +or \fB\-proxy\fR) +.HP +\fB\-dns\fR +.IP +Allow DNS lookups for \fB\-addnode\fR, \fB\-seednode\fR and \fB\-connect\fR (default: 1) +.HP +\fB\-dnsseed\fR +.IP +Query for peer addresses via DNS lookup, if low on addresses (default: 1 +unless \fB\-connect\fR) +.HP +\fB\-externalip=\fR +.IP +Specify your own public address +.HP +\fB\-forcednsseed\fR +.IP +Always query for peer addresses via DNS lookup (default: 0) +.HP +\fB\-listen\fR +.IP +Accept connections from outside (default: 1 if no \fB\-proxy\fR or \fB\-connect\fR) +.HP +\fB\-listenonion\fR +.IP +Automatically create Tor hidden service (default: 1) +.HP +\fB\-maxconnections=\fR +.IP +Maintain at most connections to peers (default: 384) +.HP +\fB\-maxreceivebuffer=\fR +.IP +Maximum per\-connection receive buffer, *1000 bytes (default: 5000) +.HP +\fB\-maxsendbuffer=\fR +.IP +Maximum per\-connection send buffer, *1000 bytes (default: 1000) +.HP +\fB\-onion=\fR +.IP +Use separate SOCKS5 proxy to reach peers via Tor hidden services +(default: \fB\-proxy\fR) +.HP +\fB\-nspv_msg\fR +.IP +Enable NSPV messages processing (default: true when \fB\-ac_private\fR=\fI\,1\/\fR, +otherwise false) +.HP +\fB\-i2psam=\fR +.IP +I2P SAM proxy to reach I2P peers and accept I2P connections (default: +none) +.HP +\fB\-i2pacceptincoming\fR +.IP +If set and \fB\-i2psam\fR is also set then incoming I2P connections are +accepted via the SAM proxy. If this is not set but \fB\-i2psam\fR is set +then only outgoing connections will be made to the I2P network. +Ignored if \fB\-i2psam\fR is not set. Listening for incoming I2P +connections is done through the SAM proxy, not by binding to a +local address and port (default: 1) +.HP +\fB\-onlynet=\fR +.IP +Only connect to nodes in network (ipv4, ipv6, onion or i2p) +.HP +\fB\-disableipv4\fR +.IP +Disable Ipv4 network connections (default: 0) +.HP +\fB\-disableipv6\fR +.IP +Disable Ipv6 network connections (default: 0) +.HP +\fB\-clearnet\fR +.IP +Enable clearnet connections. Setting to 0 will disable clearnet and use +sane defaults for Tor/i2p (default: 1) +.HP +\fB\-permitbaremultisig\fR +.IP +Relay non\-P2SH multisig (default: 1) +.HP +\fB\-peerbloomfilters\fR +.IP +Support filtering of blocks and transaction with Bloom filters (default: +1) +.HP +\fB\-port=\fR +.IP +Listen for connections on (default: 55555 or testnet: 55420) +.HP +\fB\-proxy=\fR +.IP +Connect through SOCKS5 proxy +.HP +\fB\-proxyrandomize\fR +.IP +Randomize credentials for every proxy connection. This enables Tor +stream isolation (default: 1) +.HP +\fB\-seednode=\fR +.IP +Connect to a node to retrieve peer addresses, and disconnect +.HP +\fB\-timeout=\fR +.IP +Specify connection timeout in milliseconds (minimum: 1, default: 60000) +.HP +\fB\-torcontrol=\fR: +.IP +Tor control port to use if onion listening enabled (default: +127.0.0.1:9051) +.HP +\fB\-torpassword=\fR +.IP +Tor control port password (default: empty) +.HP +\fB\-tls=\fR