Bitcoin

Mining Pools – How does Ocean’s TIDES payout scheme work?

I’m curious how this works in practice since there is no official documentation on this. However, considering the information already available on the website, the shares and hash rates of all miners are public and some questions are answered by @wk057 and @GrassFedBitcoin on Twitter. I think you may already have the full picture of it.

The reward system consists of three main concepts:

  1. Each user gets a share.
  2. Total shares in the pool,
  3. And it is paid based on stocks.

Payouts are the simplest thing to explain. user s Shares and pools have total total_shares (sum of all user shares) The moment a block is discovered, the user

s * (block_reward) / total_shares

where block_reward This means grants and fees.

share window Z The maximum number of shares a pool can hold at any time. When new shares are added, old shares are discarded. total_shares <= Z. This number is 8 times the current tip block difficulty. Z = 8 * network_difficulty.

When a pool has been running for quite some time, the cumulative number of shares tends to increase as follows: ZSo it’s simpler to use. total_shares like Z For the calculations in the examples below.

One share corresponds to the work required to mine a block of high difficulty. 1. Ocean, like other pools, presents some difficulties for individual miners. d
Whenever a hash is approved d Stocks will be added to this miner’s account.

Older user shares are deleted if they are older than the oldest share in the pool to keep the shares pane below. Z. In other words, when miners start contributing at a certain hash rate, HHis number of shares starts increasing linearly until it reaches its maximum value.
Figure 1. Miners who enter the pool see their stake increase linearly over time.

In the plot I will call T that much rest time This is actually the temporal dimension of the sharing window, or simply the time difference between the most recent and oldest shares in the pool. I understand too. T How long the grass is expected to produce Z stock. For example, if the hash rate of the pool is constant, H_pool Then T It is calculated as follows:

T = W1 * Z / H_pool

where W1=0x100010001 Estimated work required to solve a difficulty 1 block (by definition of difficulty 1).

You can also see in the plot that the miner is reaching a certain number of shares. <S>_T This is the number of shares this miner is expected to receive in the future. T A few seconds of work.

<S>_T = H * T / W1 = Z * H / H_pool

For miners with hashrate H After reaching the expected maximum number of shares, if he leaves the pool forever, his shares will decrease linearly as the oldest share is discarded.
Figure 2. Miners leaving the pool see their stake decline linearly over time.

Assuming a constant hash rate of the pool, the shares earned at any time are approximately T. Now consider the expected number of blocks discovered by the pool in this time frame. <N>_T:

<N>_T = H_pool * T / W1 / network_difficulty = Z / network_difficulty = 8

Therefore the choice is Z = 8 * network_difficulty This can also be interpreted as setting the expected number of dividends for each stock to 8.

The pool will have a fair distribution of profits where expected. earning(W)
for a certain amount of work W
The diluted values ​​over time are:

earning(W) = block_reward * W / (W1 * network_difficulty)

Assume constant block reward and difficulty. In the denominator W1 * network_difficulty
This is the estimated work required to mine a block.

Each individual share acquired by a miner in Ocean Pool is acquired after: W1 The estimated number of tasks will be paid in blocks of 8.

earning_per_share = 1/Z * 8 * block_reward = block_reward / network_difficulty = earning(W1)

Therefore, the payout is fair (proportional to the work performed) regardless of the miner’s online time, hash rate, or the hash rate of the pool.

The hash rate of the pool H = 1.25 EH/sWe consider Alice as a miner with a hashrate. H_alice = 250 PH/sThis corresponds to 20% of the pool hashrate. and let’s see network_difficulty = 80T.

The swimming pool’s shared window is Z = 8*network_difficulty = 640T The time windows are: T = Z * W1/H_pool = 330 Ms Or about 25 days.

This means that due to the constant hashrate and difficulty, a new (small) miner, Charlie, will have to wait at least 25 days until he can reach the maximum number of shares he can achieve for his hashrate. Additionally, small miners who leave the pool will receive a portion of the rewards as long as one of their shares is still valid. This means that the expected earnings are 8 (the expected number of blocks found in the pool before all shares in Charlie’s account are found in the pool). is thrown out the window.)

Alice has been mining non-stop since the beginning, so she has already reached the maximum number of shares for that window. S_alice = H_alice * T / W1 = 128T. When a block is found, Alice S_alice / Z = 20% block reward

Now let’s say Bob, a large miner, enters the pool with: H_bob = 1.25 EH/s, which doubles the hash rate of the pool. Bob quickly starts adding shares, and the pool must delete old shares twice as fast as before to keep the window size constant. Z. i.e. rest time T It changes from the 25th to the 12th. It will take 12 days for Bob to reach the maximum number of shares. S_bob = Z/2. After this moment, whenever a block is found, Bob will receive half of the block reward.

If Bob decides to leave for good, his stake begins to decline linearly over time. However, since the pool’s hash rate is now lower than when Bob was mining, it will take 25 days for all of Bob’s shares to disappear. However, the expected number of blocks is still 8. Because of the fairness argument described above, each of Bob’s shares is as good as any other miner’s shares.

We can also calculate Bob’s expected earnings by assuming a constant after he leaves the pool. network_difficulty, block_reward and H_pool. If we divide the time interval from the moment Bob leaves until all of his shares are thrown away into several smaller time intervals (Figure 2): T total time N number of pieces and dt = T/Nand r_i Random variable representing the block reward of the ith time frame, random variable representing the total reward R It is calculated as follows:

R = sum_i r_i

where

r_i = block_reward * b_i * f(t_i) / Z

here f(t_i) This is the number of shares at the time t_iand b_i It is a random variable with a value of 1 if a block is found in the ith interval, and 0 otherwise. b_i = 1 happens stochastically
p_i = H_pool * dt / (W1 * network_difficulty)Therefore, we can calculate the expected value of R:

<R> = sum_i <r_i> = block_reward / Z sum_i <b_i> f(t_i) = block_reward * H_pool / (Z * W1 * network_difficulty) sum_i f(t_i) dt 

The terms of the sum converge to the integral under the curve of the departing miner (Figure 2). So for a linear function this is:
T * S_bob / 2. and we get

<R> = S_bob * block_reward / (2 * network_difficulty)

Or only half of your expected income. S_bob Shared fairly.

Related Articles

Back to top button