Wanted to pass some thoughts by you guys - in as brief a manner as I can
The problem: large pools create unfair advantage for their members and thus create an incentive for centralisation when decentralisation is what we are seeking as it adds stability and security to the currency.
Example: If all mining nodes for a currency have joined the same pool, the pool tracks what work has already been done and distributes new work such that overlap is avoided (stratum protocol). No one ever examines number ranges which someone else has already looked at and found no solution.
With the current state if there is just one pool for a currency that has 50% of the network hash rate, and 1000 solo miners with 0.05% of the network hash rate each, then the chance that pool workers will be wasting hash rate doing repeat, pointless work can be up to 50%. For the solo miners that chance can be up to 99.95%. This means that mining within the largest pool is currently more profitable and that effect increases if the pool hash rate as a percentage of the global rate rises.
What I think is worth discussing is introducing support for a stratum-like protocol on nodes and thus organising all miners in a distributed pool.
Problem 1: Network delay will reduce accuracy and some, even if much smaller, overlap of work will remain.
Problem 2: the data submitted by nodes about the work already done needs verification and sanity checking
a) a node could 'reserve' work by reporting it done when it hasn't yet been done
b) a node could hide work done, causing miners to explore ranges already tested and slowing them down - this seems to be the main problem.
How is the network hash rate calculated - is there a secure, established way to get a specific miner's sols/s rate?