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:
- Each user gets a share.
- Total shares in the pool,
- 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: Z
So 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, H
His number of shares starts increasing linearly until it reaches its maximum value.
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.
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/s
We consider Alice as a miner with a hashrate. H_alice = 250 PH/s
This 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/N
and 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_i
and 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.