Files
dragonx/contrib
DanS 499f02a905 net: repair DragonX peer discovery, broken three separate ways
A DRAGONX node had no working peer discovery. Both mechanisms were broken, and a
third bug hid the fact.

1. DNS seeds were Hush's, and all three are dead. chainparams_commandline() sets an
   assetchain's port, magic, blocktime, upgrade heights and checkpoints but never
   touches vSeeds or vFixedSeeds, so DRAGONX silently inherited CMainParams':
   seed1.hush.is, seed2.hush.is and dns.leto.net. None of the three has an A record
   any more -- verified against 1.1.1.1 and 8.8.8.8, with google.com and
   node1..node5.dragonx.is resolving fine from the same host as a control. Replaced
   with the five DragonX node hostnames, which do resolve and do listen.

2. Every fixed seed carried port 0. contrib/seeds/generate-seeds.py documents its
   input as <ip>:<port>, but contrib/seeds/nodes_main.txt held bare IPs, so
   parse_spec() took the port as empty and emitted 0x00,0x00 for all five entries.
   The fixed-seed fallback -- which exists precisely for when DNS seeding yields
   nothing -- was therefore handing out unconnectable addresses. Added the port to
   nodes_main.txt and regenerated; entries now end 0x55,0x08 (21768).

3. ThreadDNSAddressSeed never incremented `found`, so "%d addresses found from DNS
   seeds" printed 0 unconditionally, whether seeding worked or not. That is almost
   certainly why nobody noticed the seeds had gone dead: the one diagnostic that
   would have shown it was hardcoded to say zero.

Verified on a fresh datadir (empty addrman, separate ports, real node untouched):
DNS seeding now reports "5 addresses found from DNS seeds" where it previously
reported 0, and the fixed-seed path adds 5 entries carrying the correct port.

Note on scope: the five hostnames are single-A-record hosts, so each contributes one
address rather than the spread a real seeder returns. A dedicated DNS seeder, or
simply a round-robin A record over the seed set, would be the proper fix and needs
only a DNS change rather than a release. This restores a working discovery path;
it does not make it a good one.

Also corrected the generated header's #endif comment, which said
HUSH_CHAINPARAMSSEEDS_H while the guard is DRAGONX_CHAINPARAMSSEEDS_H.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 00:11:55 +02:00
..
2026-08-25 21:52:51 +02:00
2024-02-27 23:59:59 +01:00
2024-03-04 08:57:14 -05:00
2024-02-27 23:59:59 +01:00

DragonX Contrib

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.

DragonX Tools

block_time.pl

Estimate when a DragonX block will happen.

Example:

./contrib/block_time.pl  123456 # Print out datetime of when block height 123456 happens

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

Repository Tools

Verify-Commits

Tool to verify that merge commits were signed by a developer.

Linearize

Construct a linear, no-fork, best version of the blockchain.

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.

Seeds

Utility to generate the seed node array that is compiled into the client.

Build Tools and Keys

Debian

Contains files used to package dragonxd for Debian-based Linux systems.

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

Various PGP files of developers.

MacDeploy

Scripts and notes for Mac builds.

Test and Verify Tools

TestGen

Utilities to generate test vectors for the data-driven base58 tests.

Verify SF Binaries

Legacy SourceForge-era signature verification script (unused for DragonX).