I run some wallet-less listening nodes behind Tor, for fuzzies and occasional somewhat-private TX submission. In this setup, minimising load on exits seems more important than having clearnet peers, so I use onlynet=tor
. To minimise room for leaks their network configuration also makes Tor their only window to the world. They do get inbound connections through their onion services. For reasons probably not relevant, they may be atypically peer-starved at times.
I see outbound connections to the seeds via exits:
02015-10-XX XX:XX:XX Bitcoin version v0.11.0.0-(the 0.11.0 tag from Github)
1 (omit OpenSSL, directories)
22015-10-XX XX:XX:XX Using at most 125 connections (1024 file descriptors available)
32015-10-XX XX:XX:XX Using 0 threads for script verification
42015-10-XX XX:XX:XX scheduler thread start
5 (omit RPC)
62015-10-XX XX:XX:XX Bound to X.X.X.X:8333
72015-10-XX XX:XX:XX AddLocal(XXXXXXXXXXXXXXXX.onion:8333,4)
8 (omit cache config, LevelDB lines)
92015-10-XX XX:XX:XX No wallet support compiled in!
10 (omit best chain)
112015-10-XX XX:XX:XX init message: Loading addresses...
122015-10-XX XX:XX:XX Loaded (several hundred) addresses from peers.dat 9ms
132015-10-XX XX:XX:XX init message: Done loading
142015-10-XX XX:XX:XX msghand thread start
152015-10-XX XX:XX:XX opencon thread start
162015-10-XX XX:XX:XX addcon thread start
172015-10-XX XX:XX:XX net thread start
182015-10-XX XX:XX:XX dnsseed thread start
192015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
202015-10-XX XX:XX:XX Loading addresses from DNS seeds (could take a while)
212015-10-XX XX:XX:XX 0 addresses found from DNS seeds
222015-10-XX XX:XX:XX dnsseed thread exit
23 (omit interspersed "receive version message", both with
24 us=XXXXXXXXXXXXXXXX.onion:8333 and us=dotted quad)
252015-10-XX XX:XX:XX SOCKS5 connecting seed.bitcoin.sipa.be
262015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
272015-10-XX XX:XX:XX SOCKS5 connecting dnsseed.bluematt.me
282015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
292015-10-XX XX:XX:XX SOCKS5 connecting dnsseed.bitcoin.dashjr.org
302015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
312015-10-XX XX:XX:XX SOCKS5 connecting seed.bitcoinstats.com
322015-10-XX XX:XX:XX SOCKS5 connected seed.bitcoinstats.com
332015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
342015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
352015-10-XX XX:XX:XX SOCKS5 connecting bitseed.xf2.org
362015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
372015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
382015-10-XX XX:XX:XX SOCKS5 connecting seed.bitcoin.jonasschnelli.ch
392015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
402015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
412015-10-XX XX:XX:XX SOCKS5 connecting seed.bitcoin.sipa.be
422015-10-XX XX:XX:XX SOCKS5 connected seed.bitcoin.sipa.be
432015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
442015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
452015-10-XX XX:XX:XX SOCKS5 connecting dnsseed.bluematt.me
462015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
472015-10-XX XX:XX:XX SOCKS5 connecting dnsseed.bitcoin.dashjr.org
482015-10-XX XX:XX:XX SOCKS5 connected dnsseed.bitcoin.dashjr.org
492015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
502015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
512015-10-XX XX:XX:XX SOCKS5 connecting bitseed.xf2.org
522015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
532015-10-XX XX:XX:XX SOCKS5 connecting seed.bitcoin.jonasschnelli.ch
542015-10-XX XX:XX:XX SOCKS5 connected seed.bitcoin.jonasschnelli.ch
552015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
562015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
572015-10-XX XX:XX:XX SOCKS5 connecting dnsseed.bluematt.me
582015-10-XX XX:XX:XX SOCKS5 connected dnsseed.bluematt.me
592015-10-XX XX:XX:XX SOCKS5 connecting bitseed.xf2.org
602015-10-XX XX:XX:XX SOCKS5 connecting XXXXXXXXXXXXXXXX.onion
612015-10-XX XX:XX:XX SOCKS5 connected XXXXXXXXXXXXXXXX.onion
62 (usually stops attempting seeds ~30m after startup)
@laanwj says “if you have a proxy it [still] does AddOneShot(seed.host)” and I dimly recall something about an exception being required for bootstrap before Core had an onion seed list, otherwise bootstrap would go nowhere. Even if the user is aware of that, the persistent attempted connections to the seeds for a while after apparent dnsseed thread exit
cause confusion (although maybe that peer starvation I mentioned is a prerequisite for getting confused).
Having healthy peer lists on these nodes already, I’m sure I can just use dnsseed=0
, but I think it’s worth making my existing configuration less surprising. onlynet=tor
really should mean “just onion peers”, or be renamed, or have clearly documented exceptions, because smells like the the sort of thing that bites you down the road when new code or an unexpected use case comes along.