Как я могу использовать распределение хэшрейта, чтобы делать выводы о том, когда конкретный пул найдет блок?

Майнеры находят блоки случайным образом, но также пропорционально хешрейту майнера. Как я могу лучше всего предсказать и выразить этот «шанс» для майнинг-пула?

Например, если F2Pool имел 10% общего хэшрейта майнинга за последнюю неделю, имеет ли смысл говорить, что они, вероятно, найдут 10% блоков, движущихся вперед?

Как лучше всего выразить это понятие? Я хотел бы иметь возможность сказать что-то вроде:

«У F2Pool есть 10% шанс найти следующий блок в течение следующих 10 минут, и он приближается к 100% после 10 блоков. То есть у F2Pool очень хороший шанс найти хотя бы один блок в течение следующих 100 минут».

Очевидно, никогда не бывает 100% шанса найти блок среди следующих x блоков, так как же принято указывать число, но также с оттенком «а может, никогда?»

Есть ли API или библиотека, которую я могу использовать, чтобы вычислить/узнать эти значения «шанса» с течением времени для каждого майнинг-пула?

Ответы (2)

Например, если F2Pool имел 10% общего хэшрейта майнинга за последнюю неделю, имеет ли смысл говорить, что они, вероятно, найдут 10% блоков, движущихся вперед?

Если предположить, что многие майнеры не переключатся, то да.

«У F2Pool есть 10% шанс найти следующий блок в течение следующих 10 минут, и он приближается к 100% после 10 блоков. То есть у F2Pool очень хороший шанс найти хотя бы один блок в течение следующих 100 минут».

Вы задаете здесь два совершенно разных вопроса.

  1. Найду ли я следующий блок?
  2. Найду ли я блок в следующие десять минут?

Вы можете найти следующий квартал через одиннадцать минут. Вы можете найти блок за пять минут, опираясь на блок, обнаруженный четыре минуты назад.

Найду ли я следующий блок?

Это довольно просто. Если у вас есть 10% хэшрейта, вероятность того, что вы его найдете, равна 0,1. Если у вас есть p доля хешрейта, есть вероятность (1-(1-p)^n), что вы найдете блок в следующих n блоках. Для 10% хешрейта и 10 блоков это шанс 65%. Далеко не наверняка.

p = 0.1
Blocks  Probability of you getting a block
0       0.00000
1       0.10000
5       0.40951
10      0.65132
30      0.95761
50      0.99485
100     0.99997

график вероятности того, что мы найдем блок

Найду ли я блок в следующие десять минут?

Обнаружение блоков следует распределению Пуассона . Распределение Пуассона представляет собой набор независимых событий, где одно событие не влияет на его возникновение в будущем.

Мы хотим знать шансы k блоков быть найденными кем-либо за десятиминутный период, когда в среднем 1 блок каждые десять минут. В Википедии уже есть таблица для нас :

k   P(k)
0   0.368
1   0.368
2   0.184
3   0.061
4   0.015
5   0.003
6   0.0005

Но это не совсем то, что нам нужно — если найдено десять блоков, вероятность того, что один из них наш, гораздо больше, чем если бы был найден один блок. Умножьте на приведенное выше выражение и подставьте k вместо n и 0,1 (наша доля хешрейта) вместо p.

k   P(k)    P(k)*(1-(1-0.1)^k)
0   0.368   0.0000
1   0.368   0.0368
2   0.184   0.0350
3   0.061   0.0165
4   0.015   0.0052
5   0.003   0.0012
6   0.0005  0.0002
    Sum:    0.0949

Подведите итог последней колонке. Мы получаем вероятность 9,49%, то есть вероятность того, что вы получите хотя бы один блок в течение следующих десяти минут, если у вас есть 10% хешрейта. Но это не означает, что есть 95% шанс получить блок за десять минут при 100% хешрейта. Это не линейно. Если у вас 100% хешрейта:

k   P(k)    P(k)*(1-(1-1.0)^k)
0   0.368   0.0000
1   0.368   0.3680
2   0.184   0.1840
3   0.061   0.0610
4   0.015   0.0150
5   0.003   0.0030
6   0.0005  0.0005
    Sum:    0.6315

...тогда у вас есть шанс 63,2% получить блок в течение следующих десяти минут, если у вас есть вся вычислительная мощность.

(Наши расчеты занижены примерно на одну двадцатую процента, потому что мы не рассматривали случаи, подобные k = 7. Но я полагаю, что это хорошее приближение.)

У меня возникли проблемы с пониманием вашего мыслительного процесса в трех последних абзацах. Вы говорите о том, что у вас гораздо больше шансов найти один из десяти блоков, но таблицы или следующие абзацы, похоже, не учитывают этого.
@Murch Я внес некоторые изменения. Не могли бы вы взглянуть?
Ах да, теперь мне стало понятнее. Я также нашел ошибку в моем собственном мыслительном процессе. ;)

«У F2Pool есть 10% шанс найти следующий блок в течение следующих 10 минут, и он приближается к 100% после 10 блоков. То есть у F2Pool очень хороший шанс найти хотя бы один блок в течение следующих 100 минут».

Ник уже говорил об этом, но я хотел бы отметить, что мне кажется, что вы неправильно понимаете что-то очень фундаментальное в статистике: когда вы подбрасываете монету, ожидаемый шанс выпадения решки составляет 50%. Ваше заявление выше звучит так, как будто вы говорите, что два подбрасывания монеты будут иметь 100%-ную вероятность получения одного результата решки. -- Однако это неправда.

Очевидно, что при двух подбрасываниях монеты вы можете получить любой из четырех результатов: TT, TH, HT, или HH. Это означает, что есть 25% шанс получить две решки, 50% шанс получить одну решку и 25% шанс не получить решку. Если вы имели в виду «хотя бы один блок», то для нашего примера это будет 75%, а не 100%.

В переводе на обнаружение блокировки это означает следующее:

  • Распространение и проверка блока занимает очень мало времени, поэтому мы предполагаем, что вы всегда работаете с допустимым блоком.
  • Поиск блоков полностью независим от других найденных блоков.

Таким образом, ваш шанс найти ровно один блок за 100 минут с 10% хешрейта имеет то же распределение Пуассона, что и найти ровно один блок за 10 минут с 100% хешрейта. То, что вы пытаетесь открыть только один блок из десяти, не имеет никакого значения!

Ваш шанс найти ровно 1 блок за время, в течение которого вы должны были бы найти один блок, составляет 36,8% (см. также таблицы Ника), а шанс найти хотя бы один блок — 63,2%.


Просто потому, что я пропустил это, когда впервые прочитал ответ Ника: обратите внимание, что ваш шанс найти один блок из следующего nотличается от вашего шанса найти блок в то время, когда nблоки ожидаются.