Определение сложности и скорости хеширования Ethereum

Я пытаюсь понять хешрейт geth и настройку сложности Ethereum. Я запускаю частную тестовую сеть и устанавливаю фиксированное значение сложности (до big.NewInt(250)), как описано на https://ethereum.stackexchange.com/a/7159/5293 . Я запускаю майнинг ЦП в geth, используя один поток с miner.start(1). Затем я измеряю хешрейт с помощью eth.hashrate, обычно это значение от 8 до 12 (скажем, h = 10 H/s в среднем). Я измерил среднее время блока при майнинге в течение 15 минут, и оно составило около 65 секунд.

Теперь я хотел бы использовать настройку сложности и скорость хеширования для расчета ожидаемого времени блокировки. Если бы я рассчитал это так, как термины «сложность» (d) и «хешрейт» (h) используются в биткойнах, я бы получил

т = 2^32 * д/ч,

что даже близко не соответствует 65 секундам.

Я запускаю geth на процессоре Intel(R) Core(TM) i5 с тактовой частотой 2,80 ГГц. Я предполагаю, что значение h = 10 H/s довольно бесполезно, так как оно должно быть намного выше (но откуда оно тогда)? Я бы предположил, что с моим процессором я не могу подняться выше, чем, может быть, h = 50 кГц/с. Однако, чтобы получить 65 секунд, мне потребуется скорость хеширования

ч = 2 ^ 32 * д / т = 1,7 * 10 ^ 10

что намного выше моего максимального хешрейта.

Нет, это не то, как рассчитывается сложность. Вы проверили желтую бумагу на странице 6 уравнений с 39 по 44 ?
Да, я проверил уравнения 39-44. Но поскольку я установил фиксированное значение сложности, я думаю, что для меня актуальны только уравнения 39 и 40. Следовательно, моя сложность D(H) всегда равна D_0 = 250. Тогда допустимый блок должен иметь хэш меньше или равный (2^256)/250.

Ответы (1)

Вы не правы.

  1. Вероятность того, что хэш является решением проблемы, равна 1/d.
  2. Среднее количество хэшей, которое необходимо вычислить для решения проблемы, равновведите описание изображения здесь
  3. Таким образом, среднее количество хэшей на блок составляет 250.
  4. Поскольку ваш хэшрейт равен 10H/S, мы можем рассчитать среднее время — 25 секунд. Это не ваш точный номер, но что угодно.

Точная формула, которую вы спрашиваете, такова: t = d / h.