Hi jh00,
I don't know if you can prevent miner cheating by asking for sieve info but I think there is another solution that's possible.
Instead of the pool setting a fixed share difficulty, it would check all lengths above a minimum share difficulty. Let's say the minimum share difficulty is 8. So any 8-chain, 9-chain, 10-chain etc are all submitted as pool share, but the pool will set different share values for different length chains.
Let's assume that without proper sieving the transition ratio is 30, meaning a (n+1)-chain is 30 times rarer than n-chain. With proper sieving the transition ratio becomes 10. These are just example figures to illustrate the approach.
From pool's point of view, the different length chain shares are treated differently. Thus for the 9-chain share it would reward a share value x times more than an 8-chain share, instead of the current scheme of paying same share value for all length-chain shares. x is a ratio to be determined by the pool to thwart cheating, based on the transition ratios above of the honest miner and cheating miner.
This would mean that there is still luck factor when mining with the pool, as whoever mines the longer chain share gets paid more. However cheating on the sieve then probably would not gain the miner more income on average.
Just some food for thoughts.
Keep the good work up
craslovell, this guy is kind of rushing on us. He is right about the issue but considering that I am the only one developing the pool server and pool miner (well I got some help now) it's obvious that I can barely keep up with the work, yet I also have to stay on top with the performance updates of other miners. I have to set priorities and as many are likely aware, I have mentioned several times that the pool is still beta/experimental. The exploit he describes is not really unstoppable. Currently I record the difficulty of every single share submitted. In theory I can check the ratio of short/long chains and get a hint about the probability of the user cheating. However, using this method I cannot detect if someone sends only a small ratio of unfair shares. It's all a temporary solution.
On the bright side, I think I found a more permanent solution to this problem that will be good enough for a while. You can read about it in my response in the original reddit thread here.