As I continue to explore the code base for Bitcoin, I come back to the way that node peers are discovered for consensus. This is a foundational aspect of Bitcoin - validating blocks and agreeing on their hash values. I have discovered the DNS Seeds that are hardcoded into Bitcoin Core, which reveals the hostnames and some personal names of obviously some trusted and prominent developers. This may be the single most centralized and trustful aspect of Bitcoin. What's interesting to me is that there are a very small handful of hostnames that underpin the entire consensus framework.
What is your take on this potential centralized vulnerability?
$ grep vSeeds.emplace_back src/kernel/chainparams.cpp | sed 's/^\ \{1,\}//' | rev | sort -t";" -k2,2 | rev vSeeds.emplace_back("dummySeed.invalid."); vSeeds.emplace_back("seed.bitcoin.sipa.be."); // Pieter Wuille, only supports x1, x5, x9, and xd vSeeds.emplace_back("dnsseed.emzy.de."); // Stephan Oeste vSeeds.emplace_back("testnet-seed.bluematt.me."); // Just a static list of stable node(s), only supports x9 vSeeds.emplace_back("dnsseed.bluematt.me."); // Matt Corallo, only supports x9 vSeeds.emplace_back("dnsseed.bitcoin.dashjr.org."); // Luke Dashjr vSeeds.emplace_back("seed.bitcoin.jonasschnelli.ch."); // Jonas Schnelli, only supports x1, x5, x9, and xd vSeeds.emplace_back("testnet-seed.bitcoin.jonasschnelli.ch."); vSeeds.emplace_back("seed.bitcoin.sprovoost.nl."); // Sjors Provoost vSeeds.emplace_back("seed.signet.bitcoin.sprovoost.nl."); vSeeds.emplace_back("seed.testnet.bitcoin.sprovoost.nl."); vSeeds.emplace_back("seed.bitcoinstats.com."); // Christian Decker, supports x1 - xf vSeeds.emplace_back("seed.btc.petertodd.net."); // Peter Todd, only supports x1, x5, x9, and xd vSeeds.emplace_back("seed.tbtc.petertodd.net."); vSeeds.emplace_back("seed.bitcoin.wiz.biz."); // Jason Maurice vSeeds.emplace_back("v7ajjeirttkbnt32wpy3c6w3emwnfr3fkla7hpxcfokr3ysd3kqtzmqd.onion:38333"); vSeeds.emplace_back("178.128.221.177");
#bitcoin
onFreenode
). Any user can useaddnode=
to manually add different peer from the start and then that peer will be used to discover other peers too (and if you help setting up node to your friend, it's good idea toaddnode=
your node in config for him).