Share is a unit which mining pools use for calculating the work done by a miner.
When a mining device is connected to the pool, it receives a computational task to be solved - computing hash values with certain properties (the outputs must be lower than the limit derived from difficulty). Hashes satisfying the requirements are sent back to the pool and are used as a proof of the miner's work. The quantity of miner's work is registered in units called shares. If a hash (proof of work) with difficulty \(d\) is submitted by a miner then \(d\) shares is counted by the pool.
To put it as simple as it could be:
- 1 share = 1 proof of work on difficulty 1
- 5 shares = 1 proof of work on difficulty 5 (or 5 proofs of work on difficulty 1)
- 100 shares = 10 proofs of work on difficulty 10 (or .. you can see the pattern)
The value that determines whether a hash results in a block find is network difficulty, but at the pool level there's share difficulty, which is how difficult it is for a miner to submit a valid share to the pool. So in the same way that there can be variance in finding blocks, there can be variance in finding shares because both processes are just inputting random numbers and looking for low enough outputs. The difference is only that the output needs to be much lower to find a block than it does to find a share (i.e. the network difficulty is significantly greater than the share difficulty.)
We have also created a detailed article on this topic that explains all the basics in broader context.