mining pools – Why does the Stratum protocol use a Share Difficulty of 2^32?

[ad_1]

bitcoin block headers have a field called Bits where the difficulty target is encoded as a 32 bits integer

mining shares are regular bitcoin blocks with higher difficulty targets (or in other words, they are “weaker” blocks)

the pool needs to establish some kind of “tuning” between what constitutes a minimally accepted amount of work to cross over a payout threshold

that is inherent to the tradeoffs to the pool’s architectural design and the finite infrastructure it’s running on

in order to define what constitutes minimally acceptable work threshold, there’s two fundamental variables at play:

  • rate of share submissions
  • share difficulty (how much work each share represents)

if a miner submits shares at a high rate (relative to connection bandwidth with the pool), but the share difficulty is too small, the pool could rightfully label these submissions as spam

hopefully, decentralization will lower this bar, and we will have smaller thresholds allowing for smaller miners to participate in PoW without having to resort to “lottery games” to fulfill their ideological motivations

in summary, a mining protocol needs to have some kind of “unit” that represents some minimal amount of work (let’s call it minDiffTarget). This unit is represented as a difficulty target, which needs to be relatively high number between 0x00000000 and 0xFFFFFFFF.

since we are encoding difficulty targets with 32 bits, we have a few options:

  • 0b11111111111111111111111111111111: human friendly, but inefficient because results in high traffic for share submission, while past (and current) centralized pool architectures do not have bandwidth nor computational resources to account for the amount of shares that would be submitted by each miner.
  • 0b10000000000000000000000000000000: a trade-off for a human-friendly number that still results in a reasonably efficient bandwidth consumption for share submission

so while using Stratum, the miner can configure their machines in a way that it will only submit a share if it is above N * minDiffTarget.


another relevant detail (although not exactly an answer to your question):

SV2 Translator Proxies have a configuration parameter where the miner can throttle the total amount of shares (coming from their SV1 machines) that are going to be submitted upstream towards the pool.

that way, even if the farm has many small machines (e.g.: Bitaxe), but its aggregate hashrate is above the pool’s accepted minimum, their shares will be more easily accepted and fairly accounted for

[ad_2]

Source link


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *