# How does the pool know the share hashes are calculated and not cheated?

Miners calculate share hashes and submit them to the pool for their proof of work. And if the share hashes leads to a correct block hash in terms of difficulty, everybody in the pool gets paid according to their submitted work using different distribution methods.

Question: Why can't a miner just submit random numbers as fake share hashes (little work) to the pool, instead of doing the actual hard work of hashing?

So for the pool: Is there a way to prevent this without recalculating the hash to find out its fake? Recalculation is hard work, and annihilates the sense of delegating it to miners.

And if there is no control it would only be visible with statistics as the pool is too unlucky on the long term. Ex.: a miner submitting 100THash/s and never finding a match might doesn't even calculated the hashes but just submits random stuff.

Edit: Clarified question to distinguish from similar sounding questions.

• What makes you think the share hashes are not checked? But one can check by just computing one hash, rather than the trillions needed to find one that makes a valid share. That's the whole point of a proof of work - hard to find, easy to verify. Nov 12, 2017 at 21:58
• @HighlyIrregular Thats what I read but don't understand. If I submit a trillion random numbers with a simple laptop I will get a large reward portion from the pool as soon somebody else in the pool submits the correct one using expensive ASICs. So I didn't do any work but still am contributed a large portion simply because my hashes were "unlucky" and for the pool it looks as if I contributed. Nov 13, 2017 at 19:32
• No. If you run through a trillion hashes and find, for example, 10 hashes that are good enough to submit as "shares" to the pool, and the ASIC miners submit 100,000,000 shares, then you'll receive a proportion of the reward equal to 10 out of 100,000,010. If the reward is 20BTC, then you'd receive about 200 satoshis, currently worth about \$0.01. To earn that much without an ASIC device, you'd probably use \$1 or more of electricity. Those numbers are only an example, but it gives you an idea of the situation. Nov 13, 2017 at 20:30
• @HighlyIrregular I meant you submit 100,000,000 shares, which in a extreme context is 100,000,000 times the same number to fake "hashing work". Or does the pool keep a "submitted hashes from all miners database" to prevent this? Nov 14, 2017 at 20:14

## 2 Answers

If the hashes are not recalculated/checked by the pool independently

The hashes would be checked by the pool, so you can't just submit random numbers. Pools would most likely ban miners which did that, for wasting their time.

• But checking is the same amount of work as calculating the hash. They could never keep up with all the miners, if there isn't somewhere a shortcut for the pool, or a way to assign double work between miners to detect fraud (and loose hash power) Nov 12, 2017 at 22:32
• @Stefan: "But checking is the same amount of work as calculating the hash." No, it's not! Nov 13, 2017 at 3:08
• @NateEldredge Calculate the hash is same as check the hash, but to find the valid hash (share) miner must check (calculate) trillions of hashes, and the pool server only has to check (calculate) the one submitted by the miner. But I see that by calculate you assume finding the correct hash. Nov 13, 2017 at 12:42
• The key is that a share is not just any (nounce, hash) pair, it is a (nounce, hash) pair which reach a given difficulty level, but a level which is much easier than the "network difficulty". May 13, 2021 at 10:31

I had the exact same question and took me a while to find the answer.

TLDR: the pool simulates a smaller difficulty network and if you find a solution to it, the pool considered you did work and can check it in an instant. One of those solutions might be so good that it is the solution to the network.

As a background read:

• I recommend this answer to the question what is a pool share vs. a network block.
• And this article about Bitcoin Mining Pools, but applicable generally in my opinion.

In short, a share does not contain multiple calculations, but just a solution that is easy to verify because is just one.

For the argument, lets say you have 100MH hashing power. It would take you 100 minutes to find the block solution to the network in order to get the reward, because the network difficulty is 50.

A share given by a pool to work on has a difficulty you need to meet or exceed that is smaller than the network difficulty, lets say for example 20. With your computational power it would take you 1 minute to find the share the pool requests you. You submit your solution to the pool and it will calculate in a fraction of a second if what you calculated for a minute is valid. Now you have a valid share (hopefully, more details in the recommended links) and you took part in the work for that pool. A special and important thing about your computed solution is that the difficulty it meets is not necessarily exactly 20 (what the pool asked of you). It might meet a difficulty of 30, or even 50, case in which congrats you found a valid block (but can't steal it because the pool already inserted its information on what gave to you to calculate).