aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2015-06-23 21:31:47 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2015-06-25 17:10:09 +0200
commit41bbc85ec9f20ec9f5dc9c96476180d2c57ed041 (patch)
tree90758288c2bbfdff10237be1e02bf18b952edf5c /contrib
parenta587606525242f76684208191436999ceadb8b56 (diff)
downloadbitcoin-41bbc85ec9f20ec9f5dc9c96476180d2c57ed041.tar.xz
Hardcoded seeds update June 2015
- Moved all seed related scripts to contrib/seeds for consistency - Updated `makeseeds.py` to handle IPv6 and onions, fix regular expression for recent Bitcoin Core versions - Fixed a bug in `generate-seeds.py` with regard to IPv6 parsing Allow for non-8333 nodes to appear in the internal seeds. This will allow bitcoind to bypas a filter on 8333. This also makes it possible to use the same tool for e.g. testnet. As hosts with multiple nodes per IP are likely abusive, add a filter to remove these (the ASN check will take care of them for IPv4, but not IPv6 or onion). Github-Pull: #6333 Rebased-From: ccd4369a23ca78cc348bc66a7a8c69a971ffcbf7 884454aebe9e20964643b70ff8c41f47709380bc b9329536cd8a6c152b41c9276f1def14b4d2442d
Diffstat (limited to 'contrib')
-rw-r--r--contrib/seeds/README.md2
-rwxr-xr-xcontrib/seeds/generate-seeds.py138
-rwxr-xr-xcontrib/seeds/makeseeds.py83
-rw-r--r--contrib/seeds/nodes_main.txt879
-rw-r--r--contrib/seeds/nodes_test.txt11
5 files changed, 1096 insertions, 17 deletions
diff --git a/contrib/seeds/README.md b/contrib/seeds/README.md
index bc88201f0f..63647fa11a 100644
--- a/contrib/seeds/README.md
+++ b/contrib/seeds/README.md
@@ -1,7 +1,7 @@
### Seeds ###
Utility to generate the seeds.txt list that is compiled into the client
-(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and [share/seeds](/share/seeds)).
+(see [src/chainparamsseeds.h](/src/chainparamsseeds.h) and other utilities in [contrib/seeds](/contrib/seeds)).
The 512 seeds compiled into the 0.10 release were created from sipa's DNS seed data, like this:
diff --git a/contrib/seeds/generate-seeds.py b/contrib/seeds/generate-seeds.py
new file mode 100755
index 0000000000..167c219c6e
--- /dev/null
+++ b/contrib/seeds/generate-seeds.py
@@ -0,0 +1,138 @@
+#!/usr/bin/python
+# Copyright (c) 2014 Wladmir J. van der Laan
+# Distributed under the MIT software license, see the accompanying
+# file COPYING or http://www.opensource.org/licenses/mit-license.php.
+'''
+Script to generate list of seed nodes for chainparams.cpp.
+
+This script expects two text files in the directory that is passed as an
+argument:
+
+ nodes_main.txt
+ nodes_test.txt
+
+These files must consist of lines in the format
+
+ <ip>
+ <ip>:<port>
+ [<ipv6>]
+ [<ipv6>]:<port>
+ <onion>.onion
+ 0xDDBBCCAA (IPv4 little-endian old pnSeeds format)
+
+The output will be two data structures with the peers in binary format:
+
+ static SeedSpec6 pnSeed6_main[]={
+ ...
+ }
+ static SeedSpec6 pnSeed6_test[]={
+ ...
+ }
+
+These should be pasted into `src/chainparamsseeds.h`.
+'''
+from __future__ import print_function, division
+from base64 import b32decode
+from binascii import a2b_hex
+import sys, os
+import re
+
+# ipv4 in ipv6 prefix
+pchIPv4 = bytearray([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff])
+# tor-specific ipv6 prefix
+pchOnionCat = bytearray([0xFD,0x87,0xD8,0x7E,0xEB,0x43])
+
+def name_to_ipv6(addr):
+ if len(addr)>6 and addr.endswith('.onion'):
+ vchAddr = b32decode(addr[0:-6], True)
+ if len(vchAddr) != 16-len(pchOnionCat):
+ raise ValueError('Invalid onion %s' % s)
+ return pchOnionCat + vchAddr
+ elif '.' in addr: # IPv4
+ return pchIPv4 + bytearray((int(x) for x in addr.split('.')))
+ elif ':' in addr: # IPv6
+ sub = [[], []] # prefix, suffix
+ x = 0
+ addr = addr.split(':')
+ for i,comp in enumerate(addr):
+ if comp == '':
+ if i == 0 or i == (len(addr)-1): # skip empty component at beginning or end
+ continue
+ x += 1 # :: skips to suffix
+ assert(x < 2)
+ else: # two bytes per component
+ val = int(comp, 16)
+ sub[x].append(val >> 8)
+ sub[x].append(val & 0xff)
+ nullbytes = 16 - len(sub[0]) - len(sub[1])
+ assert((x == 0 and nullbytes == 0) or (x == 1 and nullbytes > 0))
+ return bytearray(sub[0] + ([0] * nullbytes) + sub[1])
+ elif addr.startswith('0x'): # IPv4-in-little-endian
+ return pchIPv4 + bytearray(reversed(a2b_hex(addr[2:])))
+ else:
+ raise ValueError('Could not parse address %s' % addr)
+
+def parse_spec(s, defaultport):
+ match = re.match('\[([0-9a-fA-F:]+)\](?::([0-9]+))?$', s)
+ if match: # ipv6
+ host = match.group(1)
+ port = match.group(2)
+ elif s.count(':') > 1: # ipv6, no port
+ host = s
+ port = ''
+ else:
+ (host,_,port) = s.partition(':')
+
+ if not port:
+ port = defaultport
+ else:
+ port = int(port)
+
+ host = name_to_ipv6(host)
+
+ return (host,port)
+
+def process_nodes(g, f, structname, defaultport):
+ g.write('static SeedSpec6 %s[] = {\n' % structname)
+ first = True
+ for line in f:
+ comment = line.find('#')
+ if comment != -1:
+ line = line[0:comment]
+ line = line.strip()
+ if not line:
+ continue
+ if not first:
+ g.write(',\n')
+ first = False
+
+ (host,port) = parse_spec(line, defaultport)
+ hoststr = ','.join(('0x%02x' % b) for b in host)
+ g.write(' {{%s}, %i}' % (hoststr, port))
+ g.write('\n};\n')
+
+def main():
+ if len(sys.argv)<2:
+ print(('Usage: %s <path_to_nodes_txt>' % sys.argv[0]), file=sys.stderr)
+ exit(1)
+ g = sys.stdout
+ indir = sys.argv[1]
+ g.write('#ifndef BITCOIN_CHAINPARAMSSEEDS_H\n')
+ g.write('#define BITCOIN_CHAINPARAMSSEEDS_H\n')
+ g.write('/**\n')
+ g.write(' * List of fixed seed nodes for the bitcoin network\n')
+ g.write(' * AUTOGENERATED by contrib/seeds/generate-seeds.py\n')
+ g.write(' *\n')
+ g.write(' * Each line contains a 16-byte IPv6 address and a port.\n')
+ g.write(' * IPv4 as well as onion addresses are wrapped inside a IPv6 address accordingly.\n')
+ g.write(' */\n')
+ with open(os.path.join(indir,'nodes_main.txt'),'r') as f:
+ process_nodes(g, f, 'pnSeed6_main', 8333)
+ g.write('\n')
+ with open(os.path.join(indir,'nodes_test.txt'),'r') as f:
+ process_nodes(g, f, 'pnSeed6_test', 18333)
+ g.write('#endif // BITCOIN_CHAINPARAMSSEEDS_H\n')
+
+if __name__ == '__main__':
+ main()
+
diff --git a/contrib/seeds/makeseeds.py b/contrib/seeds/makeseeds.py
index b831395f2c..4072405ef5 100755
--- a/contrib/seeds/makeseeds.py
+++ b/contrib/seeds/makeseeds.py
@@ -22,26 +22,50 @@ SUSPICIOUS_HOSTS = set([
import re
import sys
import dns.resolver
+import collections
-PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):8333$")
-PATTERN_AGENT = re.compile(r"^(\/Satoshi:0.8.6\/|\/Satoshi:0.9.(2|3)\/|\/Satoshi:0.10.\d{1,2}\/)$")
+PATTERN_IPV4 = re.compile(r"^((\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})):(\d+)$")
+PATTERN_IPV6 = re.compile(r"^\[([0-9a-z:]+)\]:(\d+)$")
+PATTERN_ONION = re.compile(r"^([abcdefghijklmnopqrstuvwxyz234567]{16}\.onion):(\d+)$")
+PATTERN_AGENT = re.compile(r"^(\/Satoshi:0\.8\.6\/|\/Satoshi:0\.9\.(2|3|4|5)\/|\/Satoshi:0\.10\.\d{1,2}\/|\/Satoshi:0\.11\.\d{1,2}\/)$")
def parseline(line):
sline = line.split()
if len(sline) < 11:
return None
- # Match only IPv4
m = PATTERN_IPV4.match(sline[0])
+ sortkey = None
+ ip = None
if m is None:
- return None
- # Do IPv4 sanity check
- ip = 0
- for i in range(0,4):
- if int(m.group(i+2)) < 0 or int(m.group(i+2)) > 255:
+ m = PATTERN_IPV6.match(sline[0])
+ if m is None:
+ m = PATTERN_ONION.match(sline[0])
+ if m is None:
+ return None
+ else:
+ net = 'onion'
+ ipstr = sortkey = m.group(1)
+ port = int(m.group(2))
+ else:
+ net = 'ipv6'
+ if m.group(1) in ['::']: # Not interested in localhost
+ return None
+ ipstr = m.group(1)
+ sortkey = ipstr # XXX parse IPv6 into number, could use name_to_ipv6 from generate-seeds
+ port = int(m.group(2))
+ else:
+ # Do IPv4 sanity check
+ ip = 0
+ for i in range(0,4):
+ if int(m.group(i+2)) < 0 or int(m.group(i+2)) > 255:
+ return None
+ ip = ip + (int(m.group(i+2)) << (8*(3-i)))
+ if ip == 0:
return None
- ip = ip + (int(m.group(i+2)) << (8*(3-i)))
- if ip == 0:
- return None
+ net = 'ipv4'
+ sortkey = ip
+ ipstr = m.group(1)
+ port = int(m.group(6))
# Skip bad results.
if sline[1] == 0:
return None
@@ -59,7 +83,9 @@ def parseline(line):
blocks = int(sline[8])
# Construct result.
return {
- 'ip': m.group(1),
+ 'net': net,
+ 'ip': ipstr,
+ 'port': port,
'ipnum': ip,
'uptime': uptime30,
'lastsuccess': lastsuccess,
@@ -67,13 +93,27 @@ def parseline(line):
'agent': agent,
'service': service,
'blocks': blocks,
+ 'sortkey': sortkey,
}
+def filtermultiport(ips):
+ '''Filter out hosts with more nodes per IP'''
+ hist = collections.defaultdict(list)
+ for ip in ips:
+ hist[ip['sortkey']].append(ip)
+ return [value[0] for (key,value) in hist.items() if len(value)==1]
+
# Based on Greg Maxwell's seed_filter.py
def filterbyasn(ips, max_per_asn, max_total):
+ # Sift out ips by type
+ ips_ipv4 = [ip for ip in ips if ip['net'] == 'ipv4']
+ ips_ipv6 = [ip for ip in ips if ip['net'] == 'ipv6']
+ ips_onion = [ip for ip in ips if ip['net'] == 'onion']
+
+ # Filter IPv4 by ASN
result = []
asn_count = {}
- for ip in ips:
+ for ip in ips_ipv4:
if len(result) == max_total:
break
try:
@@ -86,13 +126,19 @@ def filterbyasn(ips, max_per_asn, max_total):
result.append(ip)
except:
sys.stderr.write('ERR: Could not resolve ASN for "' + ip['ip'] + '"\n')
+
+ # TODO: filter IPv6 by ASN
+
+ # Add back non-IPv4
+ result.extend(ips_ipv6)
+ result.extend(ips_onion)
return result
def main():
lines = sys.stdin.readlines()
ips = [parseline(line) for line in lines]
- # Skip entries with valid IPv4 address.
+ # Skip entries with valid address.
ips = [ip for ip in ips if ip is not None]
# Skip entries from suspicious hosts.
ips = [ip for ip in ips if ip['ip'] not in SUSPICIOUS_HOSTS]
@@ -106,13 +152,18 @@ def main():
ips = [ip for ip in ips if PATTERN_AGENT.match(ip['agent'])]
# Sort by availability (and use last success as tie breaker)
ips.sort(key=lambda x: (x['uptime'], x['lastsuccess'], x['ip']), reverse=True)
+ # Filter out hosts with multiple bitcoin ports, these are likely abusive
+ ips = filtermultiport(ips)
# Look up ASNs and limit results, both per ASN and globally.
ips = filterbyasn(ips, MAX_SEEDS_PER_ASN, NSEEDS)
# Sort the results by IP address (for deterministic output).
- ips.sort(key=lambda x: (x['ipnum']))
+ ips.sort(key=lambda x: (x['net'], x['sortkey']))
for ip in ips:
- print ip['ip']
+ if ip['net'] == 'ipv6':
+ print '[%s]:%i' % (ip['ip'], ip['port'])
+ else:
+ print '%s:%i' % (ip['ip'], ip['port'])
if __name__ == '__main__':
main()
diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt
new file mode 100644
index 0000000000..17339d514a
--- /dev/null
+++ b/contrib/seeds/nodes_main.txt
@@ -0,0 +1,879 @@
+1.34.168.128:8333
+1.202.128.218:8333
+2.30.0.210:8333
+5.9.96.203:8333
+5.45.71.130:8333
+5.45.98.141:8333
+5.102.145.68:8333
+5.135.160.77:8333
+5.189.134.246:8333
+5.199.164.132:8333
+5.249.135.102:8333
+8.19.44.110:8333
+8.22.230.8:8333
+14.200.200.145:8333
+18.228.0.188:8333
+18.228.0.200:8333
+23.24.168.97:8333
+23.28.35.227:8333
+23.92.76.170:8333
+23.99.64.119:8333
+23.228.166.128:8333
+23.229.45.32:8333
+24.8.105.128:8333
+24.16.69.137:8333
+24.94.98.96:8333
+24.102.118.7:8333
+24.118.166.228:8333
+24.122.133.49:8333
+24.166.97.162:8333
+24.213.235.242:8333
+24.226.107.64:8333
+24.228.192.171:8333
+27.140.133.18:8333
+31.41.40.25:8333
+31.43.101.59:8333
+31.184.195.181:8333
+31.193.139.66:8333
+37.200.70.102:8333
+37.205.10.151:8333
+42.3.106.227:8333
+42.60.133.106:8333
+45.56.85.231:8333
+45.56.102.228:8333
+45.79.130.235:8333
+46.28.204.61:11101
+46.38.235.229:8333
+46.59.2.74:8333
+46.101.132.37:8333
+46.101.168.50:8333
+46.163.76.230:8333
+46.166.161.103:8333
+46.182.132.100:8333
+46.223.36.94:8333
+46.227.66.132:8333
+46.227.66.138:8333
+46.239.107.74:8333
+46.249.39.100:8333
+46.250.98.108:8333
+50.7.37.114:8333
+50.81.53.151:8333
+50.115.43.253:8333
+50.116.20.87:8333
+50.116.33.92:8333
+50.125.167.245:8333
+50.143.9.51:8333
+50.188.192.133:8333
+54.77.162.76:8333
+54.153.97.109:8333
+54.165.192.125:8333
+58.96.105.85:8333
+59.167.196.135:8333
+60.29.227.163:8333
+61.35.225.19:8333
+62.43.130.178:8333
+62.109.49.26:8333
+62.202.0.97:8333
+62.210.66.227:8333
+62.210.192.169:8333
+64.74.98.205:8333
+64.156.193.100:8333
+64.203.102.86:8333
+64.229.142.48:8333
+65.96.193.165:8333
+66.30.3.7:8333
+66.114.33.49:8333
+66.118.133.194:8333
+66.135.10.126:8333
+66.172.10.4:8333
+66.194.38.250:8333
+66.194.38.253:8333
+66.215.192.104:8333
+67.60.98.115:8333
+67.164.35.36:8333
+67.191.162.244:8333
+67.207.195.77:8333
+67.219.233.140:8333
+67.221.193.55:8333
+67.228.162.228:8333
+68.50.67.199:8333
+68.62.3.203:8333
+68.65.205.226:9000
+68.106.42.191:8333
+68.150.181.198:8333
+68.196.196.106:8333
+68.224.194.81:8333
+69.46.5.194:8333
+69.50.171.238:8333
+69.64.43.152:8333
+69.65.41.13:8333
+69.90.132.200:8333
+69.143.1.243:8333
+69.146.98.216:8333
+69.165.246.38:8333
+69.207.6.135:8333
+69.251.208.26:8333
+70.38.1.101:8333
+70.38.9.66:8333
+70.90.2.18:8333
+71.58.228.226:8333
+71.199.11.189:8333
+71.199.193.202:8333
+71.205.232.181:8333
+71.236.200.162:8333
+72.24.73.186:8333
+72.52.130.110:8333
+72.53.111.37:8333
+72.235.38.70:8333
+73.31.171.149:8333
+73.32.137.72:8333
+73.137.133.238:8333
+73.181.192.103:8333
+73.190.2.60:8333
+73.195.192.137:8333
+73.222.35.117:8333
+74.57.199.180:8333
+74.82.233.205:8333
+74.85.66.82:8333
+74.101.224.127:8333
+74.113.69.16:8333
+74.122.235.68:8333
+74.193.68.141:8333
+74.208.164.219:8333
+75.100.37.122:8333
+75.145.149.169:8333
+75.168.34.20:8333
+76.20.44.240:8333
+76.100.70.17:8333
+76.168.3.239:8333
+76.186.140.103:8333
+77.92.68.221:8333
+77.109.101.142:8333
+77.110.11.86:8333
+77.242.108.18:8333
+78.46.96.150:9020
+78.84.100.95:8333
+79.132.230.144:8333
+79.133.43.63:8333
+79.160.76.153:8333
+79.169.34.24:8333
+79.188.7.78:8333
+80.217.226.25:8333
+80.223.100.179:8333
+80.240.129.221:8333
+81.1.173.243:8333
+81.7.11.50:8333
+81.7.16.17:8333
+81.66.111.3:8333
+81.80.9.71:8333
+81.140.43.138:8333
+81.171.34.37:8333
+81.174.247.50:8333
+81.181.155.53:8333
+81.184.5.253:8333
+81.187.69.130:8333
+81.230.3.84:8333
+82.42.128.51:8333
+82.74.226.21:8333
+82.142.75.50:8333
+82.199.102.10:8333
+82.200.205.30:8333
+82.221.108.21:8333
+82.221.128.35:8333
+82.238.124.41:8333
+82.242.0.245:8333
+83.76.123.110:8333
+83.150.9.196:8333
+83.162.196.192:8333
+83.162.234.224:8333
+83.170.104.91:8333
+83.255.66.118:8334
+84.2.34.104:8333
+84.45.98.91:8333
+84.47.161.150:8333
+84.212.192.131:8333
+84.215.169.101:8333
+84.238.140.176:8333
+84.245.71.31:8333
+85.17.4.212:8333
+85.114.128.134:8333
+85.159.237.191:8333
+85.166.130.189:8333
+85.199.4.228:8333
+85.214.66.168:8333
+85.214.195.210:8333
+85.229.0.73:8333
+86.21.96.45:8333
+87.48.42.199:8333
+87.81.143.82:8333
+87.81.251.72:8333
+87.104.24.185:8333
+87.104.168.104:8333
+87.117.234.71:8333
+87.118.96.197:8333
+87.145.12.57:8333
+87.159.170.190:8333
+88.150.168.160:8333
+88.208.0.79:8333
+88.208.0.149:8333
+88.214.194.226:8343
+89.1.11.32:8333
+89.36.235.108:8333
+89.67.96.2:15321
+89.98.16.41:8333
+89.108.72.195:8333
+89.156.35.157:8333
+89.163.227.28:8333
+89.212.33.237:8333
+89.212.160.165:8333
+89.231.96.83:8333
+89.248.164.64:8333
+90.149.193.199:8333
+91.77.239.245:8333
+91.106.194.97:8333
+91.126.77.77:8333
+91.134.38.195:8333
+91.156.97.181:8333
+91.207.68.144:8333
+91.209.77.101:8333
+91.214.200.205:8333
+91.220.131.242:8333
+91.220.163.18:8333
+91.233.23.35:8333
+92.13.96.93:8333
+92.14.74.114:8333
+92.27.7.209:8333
+92.221.228.13:8333
+92.255.207.73:8333
+93.72.167.148:8333
+93.74.163.234:8333
+93.123.174.66:8333
+93.152.166.29:8333
+93.181.45.188:8333
+94.19.12.244:8333
+94.190.227.112:8333
+94.198.135.29:8333
+94.224.162.65:8333
+94.226.107.86:8333
+94.242.198.161:8333
+95.31.10.209:8333
+95.65.72.244:8333
+95.84.162.95:8333
+95.90.139.46:8333
+95.183.49.27:8005
+95.215.47.133:8333
+96.23.67.85:8333
+96.44.166.190:8333
+97.93.225.74:8333
+98.26.0.34:8333
+98.27.225.102:8333
+98.229.117.229:8333
+98.249.68.125:8333
+98.255.5.155:8333
+99.101.240.114:8333
+101.100.174.138:8333
+101.251.203.6:8333
+103.3.60.61:8333
+103.30.42.189:8333
+103.224.165.48:8333
+104.36.83.233:8333
+104.37.129.22:8333
+104.54.192.251:8333
+104.128.228.252:8333
+104.128.230.185:8334
+104.130.161.47:8333
+104.131.33.60:8333
+104.143.0.156:8333
+104.156.111.72:8333
+104.167.111.84:8333
+104.193.40.248:8333
+104.197.7.174:8333
+104.197.8.250:8333
+104.223.1.133:8333
+104.236.97.140:8333
+104.238.128.214:8333
+104.238.130.182:8333
+106.38.234.84:8333
+106.185.36.204:8333
+107.6.4.145:8333
+107.150.2.6:8333
+107.150.40.234:8333
+107.155.108.130:8333
+107.161.182.115:8333
+107.170.66.231:8333
+107.190.128.226:8333
+107.191.106.115:8333
+108.16.2.61:8333
+109.70.4.168:8333
+109.162.35.196:8333
+109.163.235.239:8333
+109.190.196.220:8333
+109.191.39.60:8333
+109.234.106.191:8333
+109.238.81.82:8333
+114.76.147.27:8333
+115.28.224.127:8333
+115.68.110.82:18333
+118.97.79.218:8333
+118.189.207.197:8333
+119.228.96.233:8333
+120.147.178.81:8333
+121.41.123.5:8333
+121.67.5.230:8333
+122.107.143.110:8333
+123.2.170.98:8333
+123.110.65.94:8333
+123.193.139.19:8333
+125.239.160.41:8333
+128.101.162.193:8333
+128.111.73.10:8333
+128.140.229.73:8333
+128.175.195.31:8333
+128.199.107.63:8333
+128.199.192.153:8333
+128.253.3.193:20020
+129.123.7.7:8333
+130.89.160.234:8333
+131.72.139.164:8333
+131.191.112.98:8333
+133.1.134.162:8333
+134.19.132.53:8333
+137.226.34.42:8333
+141.41.2.172:8333
+141.255.128.204:8333
+142.217.12.106:8333
+143.215.129.126:8333
+146.0.32.101:8337
+147.229.13.199:8333
+149.210.133.244:8333
+149.210.162.187:8333
+150.101.163.241:8333
+151.236.11.189:8333
+153.121.66.211:8333
+154.20.2.139:8333
+159.253.23.132:8333
+162.209.106.123:8333
+162.210.198.184:8333
+162.218.65.121:8333
+162.222.161.49:8333
+162.243.132.6:8333
+162.243.132.58:8333
+162.248.99.164:53011
+162.248.102.117:8333
+163.158.35.110:8333
+164.15.10.189:8333
+164.40.134.171:8333
+166.230.71.67:8333
+167.160.161.199:8333
+168.103.195.250:8333
+168.144.27.112:8333
+168.158.129.29:8333
+170.75.162.86:8333
+172.90.99.174:8333
+172.245.5.156:8333
+173.23.166.47:8333
+173.32.11.194:8333
+173.34.203.76:8333
+173.171.1.52:8333
+173.175.136.13:8333
+173.230.228.139:8333
+173.247.193.70:8333
+174.49.132.28:8333
+174.52.202.72:8333
+174.53.76.87:8333
+174.109.33.28:8333
+176.28.12.169:8333
+176.35.182.214:8333
+176.36.33.113:8333
+176.36.33.121:8333
+176.58.96.173:8333
+176.121.76.84:8333
+178.62.70.16:8333
+178.62.111.26:8333
+178.76.169.59:8333
+178.79.131.32:8333
+178.162.199.216:8333
+178.175.134.35:8333
+178.248.111.4:8333
+178.254.1.170:8333
+178.254.34.161:8333
+179.43.143.120:8333
+179.208.156.198:8333
+180.200.128.58:8333
+183.78.169.108:8333
+183.96.96.152:8333
+184.68.2.46:8333
+184.73.160.160:8333
+184.94.227.58:8333
+184.152.68.163:8333
+185.7.35.114:8333
+185.28.76.179:8333
+185.31.160.202:8333
+185.45.192.129:8333
+185.66.140.15:8333
+186.2.167.23:8333
+186.220.101.142:8333
+188.26.5.33:8333
+188.75.136.146:8333
+188.120.194.140:8333
+188.121.5.150:8333
+188.138.0.114:8333
+188.138.33.239:8333
+188.166.0.82:8333
+188.182.108.129:8333
+188.191.97.208:8333
+188.226.198.102:8001
+190.10.9.217:8333
+190.75.143.144:8333
+190.139.102.146:8333
+191.237.64.28:8333
+192.3.131.61:8333
+192.99.225.3:8333
+192.110.160.122:8333
+192.146.137.1:8333
+192.183.198.204:8333
+192.203.228.71:8333
+193.0.109.3:8333
+193.12.238.204:8333
+193.91.200.85:8333
+193.234.225.156:8333
+194.6.233.38:8333
+194.63.143.136:8333
+194.126.100.246:8333
+195.134.99.195:8333
+195.159.111.98:8333
+195.159.226.139:8333
+195.197.175.190:8333
+198.48.199.108:8333
+198.57.208.134:8333
+198.57.210.27:8333
+198.62.109.223:8333
+198.167.140.8:8333
+198.167.140.18:8333
+199.91.173.234:8333
+199.127.226.245:8333
+199.180.134.116:8333
+200.7.96.99:8333
+201.160.106.86:8333
+202.55.87.45:8333
+202.60.68.242:8333
+202.60.69.232:8333
+202.124.109.103:8333
+203.30.197.77:8333
+203.88.160.43:8333
+203.151.140.14:8333
+203.219.14.204:8333
+205.147.40.62:8333
+207.235.39.214:8333
+207.244.73.8:8333
+208.12.64.225:8333
+208.76.200.200:8333
+209.40.96.121:8333
+209.126.107.176:8333
+209.141.40.149:8333
+209.190.75.59:8333
+209.208.111.142:8333
+210.54.34.164:8333
+211.72.66.229:8333
+212.51.144.42:8333
+212.112.33.157:8333
+212.116.72.63:8333
+212.126.14.122:8333
+213.66.205.194:8333
+213.111.196.21:8333
+213.122.107.102:8333
+213.136.75.175:8333
+213.155.7.24:8333
+213.163.64.31:8333
+213.163.64.208:8333
+213.165.86.136:8333
+213.184.8.22:8333
+216.15.78.182:8333
+216.55.143.154:8333
+216.115.235.32:8333
+216.126.226.166:8333
+216.145.67.87:8333
+216.169.141.169:8333
+216.249.92.230:8333
+216.250.138.230:8333
+217.20.171.43:8333
+217.23.2.71:8333
+217.23.2.242:8333
+217.25.9.76:8333
+217.40.226.169:8333
+217.123.98.9:8333
+217.155.36.62:8333
+217.172.32.18:20993
+218.61.196.202:8333
+218.231.205.41:8333
+220.233.77.200:8333
+223.18.226.85:8333
+223.197.203.82:8333
+223.255.166.142:8333
+[2001:1291:2bf:1::100]:8333
+[2001:1418:100:5c2::2]:8333
+[2001:16d8:dd24:0:86c9:681e:f931:256]:8333
+[2001:19f0:1624:e6::579d:9428]:8333
+[2001:19f0:300:1340:225:90ff:fec9:2b6d]:8333
+[2001:19f0:4009:1405::64]:8333
+[2001:1b40:5000:2e::3fb0:6571]:8333
+[2001:410:a000:4050:8463:90b0:fffb:4e58]:8333
+[2001:410:a002:cafe:8463:90b0:fffb:4e58]:8333
+[2001:41d0:1:541e::1]:8333
+[2001:41d0:1:6a34::3]:8333
+[2001:41d0:1:6cd3::]:8333
+[2001:41d0:1:8b26::1]:8333
+[2001:41d0:1:a33d::1]:8333
+[2001:41d0:1:b855::1]:8333
+[2001:41d0:1:c139::1]:8333
+[2001:41d0:1:c8d7::1]:8333
+[2001:41d0:1:dd3f::1]:8333
+[2001:41d0:1:e29d::1]:8333
+[2001:41d0:1:f59f::33]:8333
+[2001:41d0:1:f7cc::1]:8333
+[2001:41d0:1:ff87::1]:8333
+[2001:41d0:2:2f05::1]:8333
+[2001:41d0:2:37c3::]:8200
+[2001:41d0:2:3e13::1]:8333
+[2001:41d0:2:8619::]:8333
+[2001:41d0:2:9c94::1]:8333
+[2001:41d0:2:a24f::]:8333
+[2001:41d0:2:adbf::]:8333
+[2001:41d0:2:b721::1]:8333
+[2001:41d0:2:ee52::1]:8333
+[2001:41d0:2:f1a5::]:8333
+[2001:41d0:2:fa54::1]:8333
+[2001:41d0:51:1::2036]:8333
+[2001:41d0:52:a00::1a1]:8333
+[2001:41d0:52:cff::6f5]:8333
+[2001:41d0:52:d00::2c0]:8333
+[2001:41d0:52:d00::cf2]:8333
+[2001:41d0:8:1087::1]:8333
+[2001:41d0:8:4a3c::b7c]:8333
+[2001:41d0:8:6728::]:8333
+[2001:41d0:8:b779::1]:8333
+[2001:41d0:8:c30f::1]:8333
+[2001:41d0:8:d2b2::1]:8333
+[2001:41d0:8:d5c3::1]:8333
+[2001:41d0:8:eb8b::]:8333
+[2001:41d0:a:16d0::1]:8333
+[2001:41d0:a:2b18::1]:8333
+[2001:41d0:a:3a9c::1]:8333
+[2001:41d0:a:4903::]:8333
+[2001:41d0:a:57b::1]:8333
+[2001:41d0:a:5c7a::]:8333
+[2001:41d0:a:6c29::1]:8333
+[2001:41d0:a:f482::1]:8333
+[2001:41d0:b:854:b7c:b7c:b7c:b7c]:8333
+[2001:41d0:d:111c::]:8333
+[2001:44b8:4116:7801:4216:7eff:fe78:3fe4]:8333
+[2001:470:1f08:837::2]:8333
+[2001:470:1f08:c33::2]:8333
+[2001:470:1f09:bca:218:7dff:fe10:be33]:8333
+[2001:470:1f0f:22d::212:26]:8333
+[2001:470:1f11:12d5::ae1:5611]:8333
+[2001:470:1f14:57a::2]:8333
+[2001:470:1f14:7d::2]:8333
+[2001:470:1f15:57c::1]:8333
+[2001:470:1f15:dda:3d9a:3f11:9a56:ed64]:8333
+[2001:470:25:482::2]:8333
+[2001:470:25:e4::2]:8333
+[2001:470:4:26b::2]:8333
+[2001:470:5f:5f::232]:8333
+[2001:470:66:119::2]:8333
+[2001:470:67:39d::71]:8333
+[2001:470:6c4f::cafe]:8333
+[2001:470:8:2e1::43]:8333
+[2001:470:90a7:96::afe:6021]:8333
+[2001:470:95c1::2]:8333
+[2001:470:b1d0:ffff::1000]:8333
+[2001:470:c1f2:3::201]:8333
+[2001:470:d00d:0:3664:a9ff:fe9a:5150]:8333
+[2001:470:e250:0:211:11ff:feb9:924c]:8333
+[2001:4800:7817:101:be76:4eff:fe04:dc52]:8333
+[2001:4800:7819:104:be76:4eff:fe04:7809]:8333
+[2001:4800:7819:104:be76:4eff:fe05:c828]:8333
+[2001:4802:7800:2:30d7:1775:ff20:1858]:8333
+[2001:4802:7802:101:be76:4eff:fe20:256]:8333
+[2001:4802:7802:103:be76:4eff:fe20:2de8]:8333
+[2001:4830:1100:2e8::2]:8333
+[2001:4ba0:fff7:181:dead::1]:8333
+[2001:4ba0:fffa:5d::93]:8333
+[2001:4ba0:ffff:1be:1:1005:0:1]:8335
+[2001:4c48:110:101:216:3eff:fe24:1162]:8333
+[2001:4dd0:f101::32]:8333
+[2001:4dd0:ff00:867f::3]:8333
+[2001:4dd0:ff00:9a67::9]:8333
+[2001:4dd0:ff00:9c55:c23f:d5ff:fe6c:7ee9]:8333
+[2001:5c0:1400:b::3cc7]:8333
+[2001:5c0:1400:b::3d01]:8333
+[2001:5c0:1400:b::8df]:8333
+[2001:5c0:1501:300::3]:8333
+[2001:610:1b19::3]:8333
+[2001:620:500:fff0:f21f:afff:fecf:91cc]:8333
+[2001:67c:1220:80c:ad:8de2:f7e2:c784]:8333
+[2001:67c:21ec:1000::b]:8333
+[2001:6f8:1296:0:76d4:35ff:feba:1d26]:8333
+[2001:840:f000:4250:3e4a:92ff:fe6d:145f]:8333
+[2001:8d8:840:500::39:1ae]:8333
+[2001:980:efd8:0:21:de4a:2709:912]:8333
+[2001:981:46:1::3]:8333
+[2001:981:9319:2:c0:a8:c8:8]:8333
+[2001:9d8:cafe:3::91]:8333
+[2001:ad0:1:1:26be:5ff:fe25:959d]:8333
+[2001:ba8:1f1:f34c::2]:8333
+[2001:bc8:381c:100::1]:8333
+[2002:175c:4caa::175c:4caa]:8333
+[2002:4404:82f1:0:8d55:8fbb:15fa:f4e0]:8333
+[2002:4475:2233:0:21f:5bff:fe33:9f70]:8333
+[2002:596c:48c3::596c:48c3]:8333
+[2002:8c6d:6521:9617:12bf:48ff:fed8:1724]:8333
+[2002:a646:5e6a::1:2]:8333
+[2002:b009:20c5::b009:20c5]:8333
+[2400:8900::f03c:91ff:fe6e:823e]:8333
+[2400:8900::f03c:91ff:fe70:d164]:8333
+[2400:8901::f03c:91ff:fe37:9761]:8333
+[2403:4200:403:2::ff]:8333
+[2403:b800:1000:64:40a:e9ff:fe5f:94c1]:8333
+[2403:b800:1000:64:9879:17ff:fe6a:a59f]:8333
+[2600:3c00::f03c:91ff:fe18:59b2]:8333
+[2600:3c00::f03c:91ff:fe37:a4b1]:8333
+[2600:3c00::f03c:91ff:fe56:2973]:8333
+[2600:3c00::f03c:91ff:fe6e:7297]:8333
+[2600:3c00::f03c:91ff:fe84:8a6e]:8333
+[2600:3c01::f03c:91ff:fe18:6adf]:8333
+[2600:3c01::f03c:91ff:fe18:e217]:8333
+[2600:3c01::f03c:91ff:fe33:1b31]:8333
+[2600:3c01::f03c:91ff:fe33:2fe1]:8333
+[2600:3c01::f03c:91ff:fe33:a03f]:8333
+[2600:3c01::f03c:91ff:fe50:5e06]:8333
+[2600:3c01::f03c:91ff:fe56:d645]:8333
+[2600:3c01::f03c:91ff:fe6e:a3dc]:8333
+[2600:3c01::f03c:91ff:fe89:a659]:8333
+[2600:3c02::f03c:91ff:fe6e:6f0b]:8333
+[2600:3c03::f03c:91ff:fe33:f6fb]:8333
+[2600:3c03::f03c:91ff:fe50:5fa7]:8333
+[2600:3c03::f03c:91ff:fe6e:1803]:8333
+[2600:3c03::f03c:91ff:fe6e:4ac0]:8333
+[2601:6:4800:47f:1e4e:1f4d:332c:3bf6]:8333
+[2601:d:5400:fed:8d54:c1e8:7ed7:d45e]:8333
+[2602:100:4b8f:6d2a:20c:29ff:feaf:c4c2]:8333
+[2602:ffc5:1f::1f:2d61]:8333
+[2602:ffc5:1f::1f:9211]:8333
+[2602:ffc5::ffc5:b844]:8333
+[2602:ffe8:100:2::457:936b]:8333
+[2602:ffea:1001:125::2ad4]:8333
+[2602:ffea:1001:6ff::837d]:8333
+[2602:ffea:1001:72b::578b]:8333
+[2602:ffea:1001:77a::9cae]:8333
+[2602:ffea:1:2fe::6bc8]:8333
+[2602:ffea:1:701::7968]:8333
+[2602:ffea:1:70d::82ec]:8333
+[2602:ffea:1:9ff::e957]:8333
+[2602:ffea:1:a5d::4acb]:8333
+[2602:ffea:a::24c4:d9fd]:8333
+[2602:ffea:a::c06:ae32]:8333
+[2604:0:c1:100:1ec1:deff:fe54:2235]:8333
+[2604:180:1:1af::42a9]:8333
+[2604:180::b208:398]:8333
+[2604:2880::6072:aed]:8333
+[2604:4080:1114:0:3285:a9ff:fe93:850c]:8333
+[2604:7c00:17:3d0::5a4d]:8333
+[2604:9a00:2100:a009:2::]:8333
+[2604:a880:1:20::22a:4001]:8333
+[2604:a880:800:10::752:f001]:8333
+[2604:c00:88:32:216:3eff:fee4:fcca]:8333
+[2604:c00:88:32:216:3eff:fef5:bc21]:8333
+[2605:7980:1:2::1761:3d4e]:8333
+[2605:e000:1417:4068:223:32ff:fe96:e2d]:8333
+[2606:6000:a441:9903:5054:ff:fe78:66ff]:8333
+[2606:df00:2::ae85:8fc6]:8333
+[2607:5300:100:200::e7f]:8333
+[2607:5300:10::a1]:8333
+[2607:5300:60:116e::1]:8333
+[2607:5300:60:1535::]:8333
+[2607:5300:60:1b32::1]:8333
+[2607:5300:60:2337::1]:8333
+[2607:5300:60:2b90::1]:8333
+[2607:5300:60:2d99::1]:8333
+[2607:5300:60:3cb::1]:8333
+[2607:5300:60:4a85::]:8333
+[2607:5300:60:5112:0:2:4af5:63fe]:8333
+[2607:5300:60:6dd5::]:8333
+[2607:5300:60:a91::1]:8333
+[2607:f1c0:820:1500::7f:3f44]:8333
+[2607:f1c0:848:1000::48:943c]:8333
+[2607:f948:0:1::7]:8333
+[2607:fcd0:100:2300::4ad:e594]:8333
+[2607:fcd0:100:2300::659e:9cb3]:8333
+[2607:fcd0:100:2300::c74b:a8ae]:8333
+[2607:fcd0:100:2300::d82:d8c2]:8333
+[2607:fcd0:100:4300::8795:2fa8]:8333
+[2607:fcd0:daaa:901::9561:e043]:8333
+[2a00:1178:2:43:5054:ff:fee7:2eb6]:8333
+[2a00:1328:e100:cc42:230:48ff:fe92:55d]:8333
+[2a00:14f0:e000:80d2:cd1a::1]:8333
+[2a00:16d8:c::5b6a:c261]:8333
+[2a00:61e0:4083:6d01:6852:1376:e972:2091]:8333
+[2a00:c98:2030:a02f:2::2]:8333
+[2a01:1b0:7999:402::131]:8333
+[2a01:1e8:e100:811c:700f:65f0:f72a:1084]:8333
+[2a01:238:42da:c500:6546:1293:5422:ab40]:8333
+[2a01:348:6:473::2]:8333
+[2a01:368:e010:2::2]:8333
+[2a01:430:17:1::ffff:549]:8333
+[2a01:430:17:1::ffff:830]:8333
+[2a01:488:66:1000:53a9:d04:0:1]:8333
+[2a01:488:66:1000:57e6:578c:0:1]:8333
+[2a01:488:66:1000:b01c:178d:0:1]:8333
+[2a01:488:67:1000:523:fdce:0:1]:8333
+[2a01:488:67:1000:b01c:30ab:0:1]:8333
+[2a01:4f8:100:24aa::2]:8333
+[2a01:4f8:100:44e7::2]:8333
+[2a01:4f8:100:5128::2]:8333
+[2a01:4f8:100:84a7::1:1]:8333
+[2a01:4f8:110:516c::2]:8333
+[2a01:4f8:110:536e::2]:8333
+[2a01:4f8:120:62e6::2]:8333
+[2a01:4f8:120:702e::2]:8333
+[2a01:4f8:120:8005::2]:8333
+[2a01:4f8:120:8203::2]:8333
+[2a01:4f8:120:8422::2]:8333
+[2a01:4f8:121:11eb::2]:8333
+[2a01:4f8:121:261::2]:8333
+[2a01:4f8:130:242b::10]:8333
+[2a01:4f8:130:242b::5]:8333
+[2a01:4f8:130:2468::3]:8333
+[2a01:4f8:130:632c::2]:8333
+[2a01:4f8:130:6366::2]:8333
+[2a01:4f8:130:6426::2]:8333
+[2a01:4f8:130:934f::2]:8333
+[2a01:4f8:131:2070::2]:8333
+[2a01:4f8:131:54a2::2]:8333
+[2a01:4f8:140:80ad::2]:8333
+[2a01:4f8:141:186::2]:8333
+[2a01:4f8:150:210b::2]:8333
+[2a01:4f8:150:2263::5]:8333
+[2a01:4f8:150:2349::2]:8333
+[2a01:4f8:150:61ee::2]:8333
+[2a01:4f8:150:7088:5054:ff:fe45:bff2]:8333
+[2a01:4f8:150:8324::2]:9001
+[2a01:4f8:151:1d8::2]:8333
+[2a01:4f8:151:5128::2]:8333
+[2a01:4f8:151:6347::2]:9001
+[2a01:4f8:161:526d::2]:8333
+[2a01:4f8:161:9349::2]:8333
+[2a01:4f8:162:23c6::2]:8333
+[2a01:4f8:162:4348::2]:8333
+[2a01:4f8:162:7345::2]:8333
+[2a01:4f8:162:7383::2]:8333
+[2a01:4f8:162:74e3::2]:8333
+[2a01:4f8:190:6065::2]:8333
+[2a01:4f8:190:6349::2]:8333
+[2a01:4f8:190:64c9::2]:8333
+[2a01:4f8:190:91ce::2]:8333
+[2a01:4f8:191:2194::83]:8333
+[2a01:4f8:191:40a1::2]:8333
+[2a01:4f8:191:4a7::2]:8333
+[2a01:4f8:191:63b4:5000::1]:8333
+[2a01:4f8:191:7121::2]:8333
+[2a01:4f8:191:83a2::2]:8333
+[2a01:4f8:191:93c4::2]:8333
+[2a01:4f8:192:60a9:0:1:5:2]:8333
+[2a01:4f8:192:73b2::2]:8333
+[2a01:4f8:192:8098::2]:8333
+[2a01:4f8:192:db::2]:8333
+[2a01:4f8:200:1012::2]:8333
+[2a01:4f8:200:22e3::2]:8333
+[2a01:4f8:200:414e::2]:8333
+[2a01:4f8:200:63af::222]:8333
+[2a01:4f8:200:71e3:78b4:f3ff:fead:e8cf]:8333
+[2a01:4f8:201:5164::2]:8333
+[2a01:4f8:201:6011::4]:8333
+[2a01:4f8:201:60d5::2]:8333
+[2a01:4f8:202:53c3::2]:8333
+[2a01:4f8:210:24aa::2]:8333
+[2a01:4f8:210:502f::2]:8333
+[2a01:4f8:211:14cf::2]:8333
+[2a01:4f8:211:1a59::2]:8333
+[2a01:4f8:211:2ac1::2]:8333
+[2a01:4f8:211:cca::2]:8333
+[2a01:4f8:a0:22a5::2]:8333
+[2a01:4f8:a0:5023::2]:8333
+[2a01:4f8:a0:5243::2]:8333
+[2a01:4f8:a0:74c8::2]:8333
+[2a01:4f8:a0:8227::2]:8333
+[2a01:4f8:a0:822d::2]:8333
+[2a01:4f8:d13:2183::2]:8333
+[2a01:608:ffff:a009:8bf5:879d:e51a:f837]:8333
+[2a01:79d:469e:ed94:c23f:d5ff:fe65:20c5]:8333
+[2a01:7c8:aab5:3e6:5054:ff:fed7:4e54]:8333
+[2a01:7e00::f03c:91ff:fe18:301e]:8333
+[2a01:7e00::f03c:91ff:fe18:7749]:8333
+[2a01:7e00::f03c:91ff:fe33:2d67]:8333
+[2a01:7e00::f03c:91ff:fe33:347c]:8333
+[2a01:7e00::f03c:91ff:fe33:ae50]:8333
+[2a01:7e00::f03c:91ff:fe56:6b5c]:8333
+[2a01:7e00::f03c:91ff:fe56:bee6]:8333
+[2a01:7e00::f03c:91ff:fe69:4895]:8333
+[2a01:7e00::f03c:91ff:fe69:9912]:8333
+[2a01:7e00::f03c:91ff:fe6e:26ee]:8333
+[2a01:7e00::f03c:91ff:fe73:42f1]:8333
+[2a01:7e00::f03c:91ff:fe84:434f]:8333
+[2a01:7e00::f03c:91ff:fe84:b36b]:8333
+[2a01:7e00::f03c:91ff:fe89:1faa]:8333
+[2a01:7e00::f03c:91ff:fe98:816]:8333
+[2a01:7e00::f03c:91ff:fedb:352e]:8333
+[2a01:7e00::f03c:91ff:fedb:4a1d]:8333
+[2a01:e34:edbb:6750:224:1dff:fe89:3897]:8333
+[2a01:e35:2f1d:3fb0:7187:c7ba:bcfc:80ce]:8333
+[2a01:e35:8787:96f0:9032:9297:39ae:496d]:8333
+[2a01:e35:8a3f:47c0:c617:feff:fe3c:9fbd]:8333
+[2a01:e35:8b66:6a0:4900:9dfd:d841:d025]:8333
+[2a02:168:4a01::39]:8333
+[2a02:168:5404:2:c23f:d5ff:fe6a:512e]:8333
+[2a02:180:1:1::5b8f:538c]:8333
+[2a02:2028:1016::2]:8333
+[2a02:2528:503:2::14]:8333
+[2a02:2528:503:2::15]:8333
+[2a02:2528:ff00:81a6:21e:c5ff:fe8d:f9a5]:8333
+[2a02:2770:5:0:21a:4aff:fee4:c7db]:8333
+[2a02:2770:8:0:21a:4aff:fe7b:3dcd]:8333
+[2a02:348:5e:5a29::1]:8333
+[2a02:7aa0:1619::202f:c06a]:8333
+[2a02:8109:8e40:35fc:ba27:ebff:feae:cf16]:8333
+[2a02:af8:6:1500::1:130]:8333
+[2a02:c200:0:10:1:0:6314:2222]:8333
+[2a02:c200:0:10:2:3:3295:1]:8332
+[2a02:c200:0:10:3:0:5449:1]:8333
+[2a02:c200:1:10:2:3:5899:1]:8333
+[2a02:c200:1:10::2705:1]:8333
+[2a02:ce80:0:20::1]:8333
+[2a02:fe0:c321:27e0:6ef0:49ff:fe11:a61d]:8333
+[2a03:4000:2:496::8]:8333
+[2a03:b0c0:0:1010::62:f001]:8333
+[2a03:f80:ed16:ca7:ea75:b12d:2af:9e2a]:8333
+3ffk7iumtx3cegbi.onion:8333
+3hshaantu6ot4upz.onion:8333
+45c5lc77qgpikafy.onion:8333
+77mx2jsxaoyesz2p.onion:8333
+7g7j54btiaxhtsiy.onion:8333
+b6fr7dlbu2kpiysf.onion:8333
+bitcoincfqcssig5.onion:8333
+bitcoinostk4e4re.onion:8333
+bmutjfrj5btseddb.onion:8333
+drp4pvejybx2ejdr.onion:8333
+gixnv56d63buypan.onion:8333
+h2vlpudzphzqxutd.onion:8333
+hhiv5pnxenvbf4am.onion:8333
+lzxpkn6ptp3ohh63.onion:8333
+msphsgfiqfq5stne.onion:8333
+ncwk3lutemffcpc4.onion:8333
+okdzjarwekbshnof.onion:8333
+sjdomi4yb2dwkjbc.onion:8333
+uvwozwxlihntigbb.onion:8333
+v6ylz45dn5ybpk4d.onion:8333
+vk3qjdehyy4dwcxw.onion:8333
+vqpye2k5rcqvj5mq.onion:8333
+xudkoztdfrsuyyou.onion:8333
+z55v4ostefnwfy32.onion:8333
diff --git a/contrib/seeds/nodes_test.txt b/contrib/seeds/nodes_test.txt
new file mode 100644
index 0000000000..98365ee505
--- /dev/null
+++ b/contrib/seeds/nodes_test.txt
@@ -0,0 +1,11 @@
+# List of fixed seed nodes for testnet
+
+# Onion nodes
+thfsmmn2jbitcoin.onion
+it2pj4f7657g3rhi.onion
+nkf5e6b7pl4jfd4a.onion
+4zhkir2ofl7orfom.onion
+t6xj6wilh4ytvcs7.onion
+i6y6ivorwakd7nw3.onion
+ubqj4rsu3nqtxmtp.onion
+