What to do with the jumping users of a pool?


#1

Hello,

I wonder if some of you faced the same problems running a pool.
There are some devoted users who contribute both to the pool hash rate and to the solved blocks. However, there are some users who show themselves for a small amount of time each block so they have regular payouts from the pool, but they don’t solve anything for the pool. Assume these users have an estimated large enough hash rate to solve the blocks themselves, and their hash rate contributions are sufficient enough each time to get them advantages in the proportional payout scheme.
What would be a suggestion how to deal with such irresponsible behavior?

Thank you so much!


#2

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. :slight_smile:

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. :slight_smile:

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. :slight_smile:

Hope this helps…


#3

i think PPLNS is hop proof

https://en.bitcoin.it/wiki/Comparison_of_mining_pools
https://arxiv.org/pdf/1112.4980.pdf

or some hybrid maybe
https://bitcointalk.org/index.php?topic=39497.0


#4

I think I might have been focusing on this part of his question. A miner who gets regular payouts, but doesn’t solve anything.

There’s enough of them out there that ruins pool mining, especially when some of them are sockpuppets for the pool operator. :frowning:


#5

Sorry, didn’t look through all the explanations for the PPLNS. Need to learn more how it will work for both “fixed” and “blockavg” options.

Thank you so much for the references. Yes it should work.
For the “fixed” option: If the hopper stops earlier enough it, will not count the shares.
For the “blockavg” option: If the average time spent by the hopper over last N blocks is small, the expected payout is small for each following block. But I think this option is still vulnerable because the payouts will be spread over the N following blocks where the hopper is absent even though there is a linear decay in payouts.


#6

[quote=“ppcman, post:2, topic:3917”]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. :slight_smile:

Miners should be “tested” and it should be an inherent part of the design of pool mining.[/quote]

Nice Idea! It would be possible to use the -test option of the -daemon to “Deliver an easy difficulty” to the miners for the initial testing.
In this case, the stratum-server could be modified to allow switching between the options (or between the testing and working wallets).


#7

[quote=“ppcman, post:2, topic:3917”]There should also be a law of averages taking place… for instance…

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. :slight_smile:

Hope this helps…[/quote]

Thank you so much.
Agree that these large hopping miners need to be subject of checks. And eventually even the hopper can trap itself and deliver a solved block before he stops early mining. However, he definitely tries to take an advantage of the “law of averages” assuming that the block will not be delivered for some average time.

Yes, PPLNS can stop early mining hoppers


#8

[quote=“PPCskiv, post:6, topic:3917”][quote=“ppcman, post:2, topic:3917”]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. :slight_smile:

Miners should be “tested” and it should be an inherent part of the design of pool mining.[/quote]

Nice Idea! It would be possible to use the -test option of the -daemon to “Deliver an easy difficulty” to the miners for the initial testing.
In this case, the stratum-server could be modified to allow switching between the options (or between the testing and working wallets).[/quote]

actually, this is already how mining works “normally” on most pools, if im not mistaken, some change difficulty automatically depending on number of submitted shares, some you can manually set the difficulty for your miner to get work from the pool, when you submit a share at difficulty n (share accepted), it is basically the same as solving a block at difficulty n, but for the pool it is just a share you submitted (that was above the set difficulty for your miner)


#9

[quote=“irritant, post:8, topic:3917”][quote=“PPCskiv, post:6, topic:3917”][quote=“ppcman, post:2, topic:3917”]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. :slight_smile:

Miners should be “tested” and it should be an inherent part of the design of pool mining.[/quote]

Nice Idea! It would be possible to use the -test option of the -daemon to “Deliver an easy difficulty” to the miners for the initial testing.
In this case, the stratum-server could be modified to allow switching between the options (or between the testing and working wallets).[/quote]

actually, this is already how mining works “normally” on most pools, if im not mistaken, some change difficulty automatically depending on number of submitted shares, some you can manually set the difficulty for your miner to get work from the pool, when you submit a share at difficulty n (share accepted), it is basically the same as solving a block at difficulty n, but for the pool it is just a share you submitted (that was above the set difficulty for your miner)[/quote]

Yes, this is the VARDIFF option in work when you setup the minimal and maximal difficulty for the shares in a stratum-server.
I guess it is actually true that if miner can generate a valid share, it can also solve a block.
I had couple of “users” who tried to submit very low difficulty shares, but they all were rejected by the stratum-server with the description “share is above the target”.