On 4/28/2013 8:55 PM, Peter Todd wrote: > On Mon, Apr 29, 2013 at 03:48:18AM +0000, John Dillon wrote: >> We can build this stuff incrementally I'll agree. It won't be the case that >> one >> in a thousand nodes serve up the part of the chain you need overnight. So >> many >> I am over engineering the solution with BitTorrent. > > I think that pretty much sums it up. > > With the block-range served in the anounce message you just need to find > an annoucement with the right range, and at worst connect to a few more > node to get what you need.
One of the technologies that can be borrowed from Bittorrent (besides downloading from multiple peers at once) is analysis by clients of the part distribution, which allows a client to download and share the least-propagated parts first to maintain high availability of the whole file, even when not one individual currently has downloaded the complete file (the seed has left the swarm). Unlike Bittorrent, a partial-blockchain swarm client needs to make informed decisions about how much to download, such as rules like "until it sees at least 20 complete blockchain-equivalents in the swarm", "until it has 10% of the blockchain itself", "work backwards, all blocks from the hash tree required to verify my payments" or other minimums that might all be criteria. Bittorrent only considers directly connected peers' piecemaps when making decisions of what to download. Bitcoin, however, already has a protocol to allow peer discovery beyond the connected nodes; this could be extended to communicate what parts the peer is hosting. Careful thought into attack vectors would need to be paid in design, so that only a majority of outbound-connected peers's advertisement are able to inform consensus about part or peer availability, messages able to remove a peer or part availability from other's lists are confirmed independently without such removal verification generating DDOS traffic amplification, lying clients can be marked as discovered by the majority, etc. Such thought doesn't have to be paid if directly implementing Bittorrent, but it has the burden of centralized trackers or expensive DHT, and it also doesn't have any logic informing it besides "don't quit until I get the whole file". ------------------------------------------------------------------------------ Try New Relic Now & We'll Send You this Cool Shirt New Relic is the only SaaS-based application performance monitoring service that delivers powerful full stack analytics. Optimize and monitor your browser, app, & servers with just a few lines of code. Try New Relic and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr _______________________________________________ Bitcoin-development mailing list Bitcoin-development@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bitcoin-development