I agree that pools are the biggest problem.
They logically result from the winner take all algo.
I postulate that in a theoretically ideal POW system, every single participant that contributes cycles/work towards securing the network would be rewarded in direct proportion to their contribution. ie, even if they only calculate 1 hash during a given block and do not match target difficulty.
How to achieve that? I have no idea. haha. But I'd like to see more discussion/brainpower/research on it.
First question: Is the above scenario ideal/desirable for maximizing distribution of work across non-colluding parties? Or the incentives are flawed somehow?
Followup question: What technical obstacles prevent it, and how might they be overcome? (assuming a brand-new system with no legacy code/chain).
I will leave these open-ended for now...
It is odd, imo, too much concerns about ASICs and zero interest in the situation with pools.