This is quite easy, if you have a coder handy.
Deliver an easy difficulty, with an easy block solve, and see if the miner solves it and returns it.
If not, the miner is tainted and should be booted off the pool.
I’m surprised no one has coded this yet, or thought of it yet.
Miners should be “tested” and it should be an inherent part of the design of pool mining.
Of course, if this becomes common knowledge, miners will modify code to detect super easy difficulties different from the norm. So you have that… But you can we can combat that later, if need be…
There should also be a law of averages taking place… for instance…
If buddy A, with 50 Terrahash solves 30 blocks out of every 200
AND
If buddy B with 80 Terrahash solves 1 block out of every 2000
Its obvious who is cheating the system.
Small miners can get just as lucky as big miners. So I know lucky is really at play.
For instance, small miners can hit 500M difficulty with 1 single antminer U2, as much as someone with an S7 with multiple asic chips.
However…
If you have 200 miners at 10 Gigahash, and they all deliver 1M results every 20 days (or whatever)
…that seems, and is plausibly, normal.
But then some guy shows up with 50 Terrahash, and never delivers much, even anything >1M, then you know he’s cheating the system.
Small miners are a good thing. Every large miner needs to be suspect. Watch them, feed them traps, and if the law of averages shows they are either super unlucky, or cheating, then they are either super unlucky or cheating.
Hope this helps…