Go to file
Don Shin 2ba9805c86 Updated protocol version to 180004, and updated the checks to accept new IP address requests from nodes down to protocol version 180003 but only report 180004 nodes. 2018-04-14 08:42:26 -05:00
.gitignore Add .gitignore 2013-10-12 15:39:31 -04:00
Dockerfile added dockerfile for running seeder 2018-02-08 14:31:24 -08:00
Makefile Fix per-flag-cache size tracking 2016-10-29 12:15:18 -07:00
README.md Updated protocol version to 180004, and updated the checks to accept new IP address requests from nodes down to protocol version 180003 but only report 180004 nodes. 2018-04-14 08:42:26 -05:00
bitcoin.cpp customized zclseeder to btcpseeder 2018-03-05 09:57:21 +00:00
bitcoin.h Only poll nodes once a week for new addresses 2013-04-25 01:55:26 +02:00
combine.pl Better combination formula 2012-04-18 02:12:21 +02:00
compat.h removed redundant insert and added a missing define on mac os x 2014-03-24 22:17:43 +01:00
db.cpp Improve filter whitelist 2016-06-07 18:55:16 +02:00
db.h Updated protocol version to 180004, and updated the checks to accept new IP address requests from nodes down to protocol version 180003 but only report 180004 nodes. 2018-04-14 08:42:26 -05:00
dns.c Add support to filter nodes by node flags 2016-05-27 16:22:42 +02:00
dns.h Add support to filter nodes by node flags 2016-05-27 16:22:42 +02:00
main.cpp customized zclseeder to btcpseeder 2018-03-05 09:57:21 +00:00
netbase.cpp Merge pull request #19 2015-07-29 15:55:49 +02:00
netbase.h Merge pull request #19 2015-07-29 15:55:49 +02:00
protocol.cpp customized zclseeder to btcpseeder 2018-03-05 09:57:21 +00:00
protocol.h customized zclseeder to btcpseeder 2018-03-05 09:57:21 +00:00
serialize.h Updated protocol version to 180004, and updated the checks to accept new IP address requests from nodes down to protocol version 180003 but only report 180004 nodes. 2018-04-14 08:42:26 -05:00
strlcpy.h Add missing files 2012-05-25 15:43:37 +02:00
test.pl IPv6/AAAA record support 2012-05-25 15:41:27 +02:00
uint256.h Fix per-flag-cache size tracking 2016-10-29 12:15:18 -07:00
util.cpp Add missing files 2012-05-25 15:43:37 +02:00
util.h fix logging 2012-05-25 16:03:10 +02:00

README.md

Bitcoin Private Seeder

btcp-seeder is a crawler for the BTCP network, based on bitcoin-seeder, which exposes a list of reliable nodes via a built-in DNS server.

Features:

  • regularly revisits known nodes to check their availability
  • bans nodes after enough failures, or bad behaviour
  • accepts nodes down to protocol version 180003 to request new IP addresses from, but only reports good (180004) nodes.
  • keeps statistics over (exponential) windows of 2 hours, 8 hours, 1 day and 1 week, to base decisions on.
  • very low memory (a few tens of megabytes) and cpu requirements.
  • crawlers run in parallel (by default 24 threads simultaneously).

REQUIREMENTS

$ sudo apt-get install build-essential libboost-all-dev libssl-dev

USAGE

Assuming you want to run a dns seed on dnsseed.example.com, you will need an authorative NS record in example.com's domain record, pointing to for example vps.example.com:

$ dig -t NS dnsseed.example.com

;; ANSWER SECTION dnsseed.example.com. 86400 IN NS vps.example.com.

On the system vps.example.com, you can now run dnsseed:

./dnsseed -h dnsseed.example.com -n vps.example.com

If you want the DNS server to report SOA records, please provide an e-mail address (with the @ part replaced by .) using -m.

COMPILING

Compiling will require boost and ssl. On debian systems, these are provided by libboost-dev and libssl-dev respectively.

$ make

This will produce the dnsseed binary.

RUNNING AS NON-ROOT

Typically, you'll need root privileges to listen to port 53 (name service).

One solution is using an iptables rule (Linux only) to redirect it to a non-privileged port:

$ iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-port 5353

If properly configured, this will allow you to run dnsseed in userspace, using the -p 5353 option.