Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: mndrix on December 23, 2011, 05:03:12 PM



Title: Decentralized P2P bootstrapping
Post by: mndrix on December 23, 2011, 05:03:12 PM
I came across an interesting paper about bootstrapping a peer to peer network without a central authority (http://grothoff.org/christian/bootstrap.pdf) (no IRC channel, no DNS seeds, not even a hardcoded seed list).

Quote
Bootstrapping Peer-to-peer Networks
Chris GauthierDickey; Christian Grothoff

In this paper, we present the first heuristic for fully distributed bootstrapping of peer-to-peer networks. Our
heuristic generates a stream of promising IP addresses to be probed as entry points. This stream is generated using statistical profiles using the IP ranges of start-of-authorities (SOAs) in the domain name system (DNS). We present experimental results demonstrating that with this approach it is efficient and practical to bootstrap Gnutella-sized peerto-peer networks – without the need for centralized services or the public exposure of end-user’s private IP addresses

The Bitcoin network may have too few nodes accepting incoming connections for this to work today, but thought it might be useful someday, as the network grows.


Title: Re: Decentralized P2P bootstrapping
Post by: HostFat on December 23, 2011, 06:08:08 PM
I hope to see this implemented on the v0.7.0 :)


Title: Re: Decentralized P2P bootstrapping
Post by: btc_artist on December 23, 2011, 10:18:33 PM
So you basically just hit random (not exactly random) IPs until you find some that respond to the bitcoin protocol?  Interesting idea, and is a good option for when the Bitcoin network is larger.


Title: Re: Decentralized P2P bootstrapping
Post by: blueadept on December 23, 2011, 11:37:33 PM
Many more machines run Khashmir or Kad or something similar for P2P filesharing. Why not piggyback on one of those DHTs for bootstrapping? You could still bootstrap the DHT using this method and then look for agreed-upon keys to find peers.

I've been thinking about using that method of bootstrapping for a fully decentralized Bitcoin mixing network for automated "laundering."


Title: Re: Decentralized P2P bootstrapping
Post by: tiberiandusk on December 23, 2011, 11:48:33 PM
Why doesn't bitcoin use an open bittorrent tracker with encryption instead of bootstrapping off IRC?


Title: Re: Decentralized P2P bootstrapping
Post by: Atheros on December 25, 2011, 02:15:44 AM
The idea proposed in the paper is foolish.

Firstly, IPv6 would kill it.

Secondly, what is wrong with the distributor of the P2P software just including a list of one thousand open nodes? The paper already proposes that the software maker needs to distribute a "small database containing success probabilities for various organizations with the P2P software" in order for his idea to work. Why not just include a list of one or more thousand nodes? Are we really worried that the thousand nodes will all be taken offline by an attacker? Do we realize that it would be far easier to simply take out the software distributor?

We have vastly more important things to worry about than this.


Title: Re: Decentralized P2P bootstrapping
Post by: theymos on December 25, 2011, 03:37:13 AM
Firstly, IPv6 would kill it.

It's still possible with IPv6. Users are always given at least a /64 allocation, so users can put their public nodes on an IP address in a well-known range within that /64. For example, an address might only be searched if it ends with at least 60 trailing zero bits. That leaves ~64 bits to search, but most of this area has not been allocated and doesn't need to be searched.


Title: Re: Decentralized P2P bootstrapping
Post by: mndrix on December 26, 2011, 04:20:10 PM
Secondly, what is wrong with the distributor of the P2P software just including a list of one thousand open nodes?

Bitcoin already does this (see pnSeed in src/net.cpp).  The author mentions possible concerns about this approach in his paper.