No description
Find a file
Pieter Wuille 589fcd6ee2
Merge pull request #29
23aa36a indicate that IPv4/IPv6 proxy use SOCKS5 protocol (Jonas Schnelli)
134a393 add support for IPV6 proxy (Jonas Schnelli)
1d9d182 add support for IPV4 proxy (Jonas Schnelli)
6e5a391 avoid connecting to non valid ipv4 ranges (>=240.0.0.0) (Jonas Schnelli)
2015-07-29 14:54:37 +02:00
.gitignore Add .gitignore 2013-10-12 15:39:31 -04:00
bitcoin.cpp RequireHeight differs for mainnet and testnet 2013-08-09 11:25:54 +04: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 Only poll nodes once a week for new addresses 2013-04-25 01:55:26 +02:00
db.h RequireHeight differs for mainnet and testnet 2013-08-09 11:25:54 +04:00
dns.c Avoid circular references 2015-03-07 04:03:08 -08:00
dns.h IPv6/AAAA record support 2012-05-25 15:41:27 +02:00
main.cpp Merge pull request #29 2015-07-29 14:54:37 +02:00
Makefile Use more standard CXXFLAGS 2013-04-28 03:22:56 +02:00
netbase.cpp avoid connecting to non valid ipv4 ranges (>=240.0.0.0) 2015-07-18 20:43:24 +02:00
netbase.h avoid connecting to non valid ipv4 ranges (>=240.0.0.0) 2015-07-18 20:43:24 +02:00
protocol.cpp IPv6/AAAA record support 2012-05-25 15:41:27 +02:00
protocol.h IPv6/AAAA record support 2012-05-25 15:41:27 +02:00
README Add dependencies to README 2015-06-20 18:17:06 -04:00
serialize.h removed redundant insert and added a missing define on mac os x 2014-03-24 22:17:43 +01: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 working 2011-12-20 05:20:50 +01: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

bitcoin-seeder
==============

Bitcoin-seeder is a crawler for the Bitcoin network, 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 v0.3.19 to request new IP addresses from,
  but only reports good post-v0.3.24 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-mailadres (with the @ part replaced by .) using -m.

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.