These can be a serious pain in the ass to get working and let’s face it – the information available on them is rather fragmented and vague at best, even if you are already accustomed to the workings of currencies.
This guide is divided into three parts:1) Adapting the seeder software
2) The web stuff
3) Running the seeder
Before doing anything else, it would be best to have a web address in mind for your seeder. Most of them use subdomains i.e. dnsseed.yourcoin.org rather than regular page links such as yourcoin.org/dnsseed (this is for DNS record reasons). You don’t have to call yours dnsseed; in fact you can call it what the hell you like.
Adapting the Software1.1) In your currency’s net.cpp enter the address that will be used for your seeder i.e.
static const char *strMainNetDNSSeed[][2] = {
{"yourcoin.org", " dnsseed.yourcoin.org "},
{NULL, NULL}
}
You will need to recompile all your wallets before release for these changes to take effect, so make sure you settle for something that won’t need to be changed later.
1.2) Download or make a fork of the Litecoin Seeder
https://github.com/pooler/litecoin-seeder which is based on sipa’s Bitcoin Seeder
https://github.com/sipa/bitcoin-seeder). You can use either version and it doesn’t matter whether your coin is SHA-256, Scrypt, X-11 etc. The LTC version is used here for demonstration purposes because it has already been customized and the most relevant/important stuff has already been changed. This means there’s commit history and it’s much easier to show changes using GitHub as it has color coded syntax highlighting - which isn’t possible on this forum. Whichever version you use, read the README to familiarize yourself with the process.
1.3) Using this Litecoin Seeder historical commit as a reference:
https://github.com/pooler/litecoin-seeder/commit/3c64ed5ab35f597480712818a27d442100332719#diff-4ed1bfdfd26731997cfdb6c1085c6692, you need to alter your own seeder code with your coin’s ports, magic bytes (pchMessageStart stuff), protocol version, seeder name and the web address of your of your DNS seed.
Note: When adding your domain name in the seeder’s main.cpp, if you only have one site to enter, use the following syntax in full:
static const string mainnet_seeds[] = {"dnsseed.yourcoin.org", ""};
Otherwise you will get segmentation faults when compiling later.
1.4) Upload your repo to GitHub.
The Web StuffThe main point of this stage is to (very loosely put it) redirect traffic from your website by creating a DNS 'NS Record' and an 'A record' to instruct where the resources can be found. This will enable your web address to forward to a host somewhere else, such as a VPS running the DNS Seeder software.
2.1) In your website host’s admin panel website, create a subdomain. If you are self-hosting you probably might not need to create a subdomain and can just use DNS records to achieve the desired result. Use the address entered in your currency’s main.cpp i.e dnsseed.yourcoin.org. Web host admin panels vary tremendously, so you may need to Google how to do this on yours. This link has useful info on creating an NS record
http://help.dnsmadeeasy.com/spry_menu/ns-record/You might need to do this twice – once for dnsseed.yourcoin.org and again for
www.dnsseed.yourcoin.org. Alternatively, if you self-host, you will need to use the run in this Linux terminal command to create the NS record:
dnsseed.yourcoin.org 86400 IN NS 192.168.0.1
(Obviously changing the dnsseed.yourcoin.org and 192.168.0.1 to the relevant domain name and IP address of your VPS).
2.2) Create an 'A Record' (Address record) that points your dnsseed.yourcoin.org to the IP address of your VPS.
You can check the DNS status by typing the following into a Windows/Linux/Mac command prompt/terminal, even on your home PC:
nslookup dnsseed.yourcoin.org
The IP address of your VPS should be displayed if the record is working correctly but be aware it may take a while for the DNS record to propagate, so please be patient.
Please note that some web hosts do not allow you to create NS records on shared hosting plans, so if the option to create one isn't available, send their support team a message. They create one for you or may tell you that you need to upgrade your hosting plan. Try your luck with just an A record instead and see if it works.
Running the seederThe seeder has to be compiled before it can be used!
3.1) Clone your seeder’s GitHub repository onto the VPS/server that will be running it and navigate into the seeder’s main folder.
3.2) If you are using 64-bit operating systems, make sure that initial compiler flags in the Makefile are set to:
CXXFLAGS = -O3 -g0 (i.e. remove –march=native because this will cause architecture issues)
3.3) To compile, type the following the terminal:
3.4) Now you need to instruct the seeder to run and look up the host and name server, so in the terminal you need to enter something along the lines of the following but (obviously!!)..... change dnsseed.yourcoin.org to your seeder’s website address and the 192.168.0.1 to your server/VPS IP address.
./dnsseed -h dnsseed.yourcoin.org -n 192.168.0.1
This guide isn’t a definitive guide and WILL need some improvements so if you come across any problems, please post them in here rather than PM me as I don’t have time to help everybody. Hopefully people who have come across similar issues too will be able to help out and turn this thread into something that is a useful resource.