Каков алгоритм создания калькулятора майнинга биткойнов?

Я хочу знать, как я могу рассчитать прибыль от майнинга биткойнов в биткойнах. Меня интересует формула, которая используется калькуляторами. Например, допустим, у меня хешрейт 700 мх/с, текущая сложность 908350862437. Калькулятор говорит, что я буду майнить 0,00038755 BTC в день. Какой алгоритм используется для расчета этих цифр?

Проверьте этот ответ: bitcoin.stackexchange.com/a/135/5406
где я могу оштрафовать текущую награду за блок?
Текущая награда за блок составляет 25 BTC, она будет составлять 12,5 BTC, начиная с 420 000 блоков. Проверьте биткойн-часы

Ответы (2)

Я хочу дать расширенный ответ, поскольку я обнаружил, что ранее существовавший здесь или где-либо еще нуждается в немного большем разъяснении, особенно для новичков.

Формула

Чтобы рассчитать приблизительный общий доход в биткойнах в месяц от операции майнинга (без учета затрат на майнинг [электричество, обслуживание оборудования и т. д.]), можно использовать следующую формулу:

H = Hashrate (hashes / second)
D = Difficulty (Reference for values below)
B = Reward per Block (Reference for value below)
N = Number of days per month (default = 30)
S = Number of seconds per day (S = 60 * 60 * 24 = 86400)

Формула дохода от майнинга

Пример

H = 21,990,232,555,520 h/s (~= 20TH/s)
D = 47,427,554,950.648
B = 25
N = 30
S = 86400

Формула дохода от майнинга

Общее количество биткойнов, заработанных за месяц в соответствии с указанными выше переменными, составит ~ 6,995 . Отбросьте Nчислитель, и вы получите дневную стоимость.

питон

Быстрый оператор Python в качестве примера реализации (вы можете ввести его прямо в терминале)

$ python -c "print (30*21990232555520*25*86400)/(47427554950.648*2**32)"
$ 6.99542703277

Некоторые ссылки:

Сложность ( Текущее значение | Вики )

Вознаграждение за блок ( текущее и будущее значения )

Эта логика применима ко всем монетам?
Откуда 2**32приходит? Это конкретный BTC?
@domdambrogia да, подробнее об этом читайте в вики-справке по сложности.

Среднее время поиска блока можно приблизительно вычислить, вычислив:

time = difficulty * 2**32 / hashrate

Где сложность — это текущая сложность, хешрейт — это количество хэшей, которые ваш майнер вычисляет в секунду, а время — это среднее значение в секундах между найденными вами блоками.

Почему эта формула всего лишь приближение? Я не вижу никаких других параметров, которые могли бы повлиять на результат (по крайней мере, если и сложность, и хешрейт постоянны, конечно).
Это приблизительно, потому что майнинг — это игра на удачу и дисперсию. Бывают случаи, когда вам может повезти, и вы сгенерируете больше блоков, чем предполагалось, и обязательно будут периоды засухи, когда блоки не появятся. Это можно увидеть, наблюдая за большими пулами майнинга, когда они решают блоки, блоки не создаются по установленному расписанию, сеть настраивается таким образом, что один блок должен генерироваться каждые 10 минут, но мы знаем, что это нужно будет регулярно корректировать. на основе новых майнеров, постоянно подключающихся к сети. Хешрейт сети и, следовательно, сложность будут регулярно меняться.
Вот почему формула может дать только среднее время. Тем не менее, даже формулы для средних значений могут быть аппроксимированы, но я думаю, что здесь мы имеем точную формулу для среднего значения (это может показаться немного придирчивым, но, на мой взгляд, это все же не так уж маловажное различие).