Bootstrap lists remain the only necessary centralized feature of libp2p. Are there any efforts being made today to get rid of this centralization?
The libp2p documentation lists 3 methods beside bootstrap lists for peer discovery, random walk (the discovery method of the Kad DHT), mDNS discovery and star discovery:
But peer discovery is not the same as bootstrapping, these methods only allow to find other peers, but they cannot introduce a new node to the network. To do that, we need more than a simple
/p2p/ key, we also need the IP address and the TCP/UDP port number of another peer that we can dial to, and bootstrap lists provide exactly that. But random walk cannot do bootstrapping, the star discovery utilizes a rendezvous point, which makes it even more centralized AND it is becoming deprecated, and mDNS only works in local networks, so as far as I can see there is no alternative to bootstrap lists right now.
Maybe people could start to share their IP address, port and public key (provided that they won’t change in the future) that constitute their multiaddr as a QR code on their business card to share easily to other users. Or maybe, once libp2p becomes widespread, to bootstrap our node, we could send requests to a lot of IP addresses picked at random at a fixed port, until we find one that is a libp2p node that can introduce us to the network (I know, that sounds like a terrible idea).
I think bootstrap lists become less of a problem when there are multiple implementations of a protocol that each provide their own list. For example, the different BitTorrent clients (µTorrent, Vuze, BitTorrent, …) have their own authoritative list for bootstrapping to the mainline DHT. But for libp2p, we have only one implementation, so only one point of failure: the official Protocol Labs bootstrapping list.