Subject: Re: [bitcoin-dev] Small Nodes: A Better Alternative to Pruned Nodes

From: Tom Zander <[email-masked]>
Date: Fri, 21 Apr 2017 10:27:36 +0200

On Thursday, 20 April 2017 22:32:12 CEST Andrew Poelstra wrote:
> > > If you are downloading 450,000 blocks, you will need to
> > > connect to an expected 46 peers to download the whole blockchain.
> > 
> > I don’t really see the problem here, even if your math is a off.
> > (Statistics is difficult, I know). Connecting to many nodes to download
> > faster is really not an issue and already happens.
> 
> I think the expected number of peers is actually ~47.75

Nice to join bitcoin-dev, Andrew. Haven’t seen you post here before.

I’m not sure how you reached that strange number, but I have to point out 
your number is quite useless.

The actual amount of nodes you need to be 100% sure you find all the blocks 
when you know each node will have a completely random 25% of the blocks is 
not a maths problem that leads to a single answer because of the randomness 
involved.
The actual answer is a series of probabilities.

Same as the answer is to the age old question; how many coin flips does it 
take to be 100% certain I have at least one “Heads”.

In our blocks retrieval scenario; with num-nodes < 4, probability is zero.
There is a really really small chance you will get 100% of the blocks with 4 
nodes (actual number depends on the amount of total blocks you are looking 
for).
And this goes up as you add more nodes, but never reaches 100%

At the other end of this question you can ask what the chance is of at least 
one block being lost when there are N nodes, a block nobody has. That chance 
is small with current > 6000 nodes, but not zero (a second reason why the 
previous parag never reaches 100%).

Bottom line, it is silly to assume 100% of the nodes would be partial-
pruning, and if you continue on that path you will only have probabilities 
to predict how many nodes it takes to have 100% coverage, exact numbers are 
worse than useless, they are misleading.

As I said in my initial email, statistics is hard. Crypto is much easier in 
that it is absolute. Either correct or false. Never in between.

To repeat, the goal of this pruning method is not to replace a full 
“archival” node, the goal of this pruning node is to provide an improvement 
over the current pruning node which stops any and all serving of historical 
blocks.
Anyone that feels the need to talk about pruning modes like 100% of the full 
nodes will run it are in actual fact not talking about the real world. 
Distributed systems will never (and should never) end up being a mono-
culture. Diversity is the essential thing you aim for.

I would suggest we focus on the real world and not on irreleavant math 
experiments that only lead to confusion.
-- 
Tom Zander
Blog: https://zander.github.io
Vlog: https://vimeo.com/channels/tomscryptochannel