Proof-of-Work

Proof-of-Work это решение для тяжёлой (дорогостоящей) математической задачи. Это решение должно быть тривиальным, чтобы можно было легко проверить, удовлетворяет ли данное решение заявленным требованиям.

Для обеспечения Proof-of-Work Novacoin использует метод hashcash. Сложность этой работы регулируется таким образом, чтобы ограничить частоту, с которой новые блоки могут быть сгенерированы сетью, до необходимого целевого интервала (от 10 до 30 минут). Из-за очень низкой вероятности успешной генерации доказательства, это делает непредсказуемым определение того, какой именно компьютер в сети сможет сгенерировать следующее решение.

Сколько времени займет генерация Proof-of-Work?

Никто не может сказать точно. Но существует оценка того, сколько времени может потребоваться.

Представим, что есть оборудование со скоростью хэширования в 1 MH/s. Оценим сколько в среднем займёт у Вас генерация Proof-of-Work с текущей сложностью Proof-of-Work в сети Novacoin.

Сложность 1.0 представлена целевым значением в

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Итак, чтобы получить успешное доказательство работы, необходимо выполнить 0xFFFFFFFFFFFFFFFF / 0x00000000FFFFFFFF или ~ 4294967297 попыток.

При сложности 360 мы нуждаемся в ~ 360 * 4294967297 = 1546188226920 попытках. Если имеется 1 MH/s (или 1000000 хешей в секунду) тогда возможно отсканировать такое количество хешей в пределах 1546188226920 / 1000000 = 1546188 секунд или 1546188 / 86400 = 17,89 дней.

Вероятность успешной генерации блока в течение одного дня может быть вычислена исходя из доступного hashrate, согласно формуле:

 P = nHashesPerSecond * 86400 / (4294967297 * difficulty)

Как это работает?

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

ПолеТипРазмерТребовани
nVersionunsigned int4Изменения вручную недопустимы
hashPrevBlockunsigned char[]32Изменения вручную недопустимы
hashMerkleRootunsigned char[]32Это хэш дерева merkle. Может быть изменено посредством модификации, дополнения или удаления транзакций
nTimeunsigned int4Может быть обновлено вручную на любое значение из интервала [max tx timestamp, time() + 3600] interval.
nBitsunsigned int4Изменения вручную недопустимы
nNonceunsigned int4Счетчик попыток для Proof-of-Work. Необходимо обновлять это поле при каждой новой попытке хеширования

Результат хеширования допустимого значения Proof-of-Work должен быть меньше, чем текущая цель. Майнер пытается найти это подходящее решение, сканируя все возможные значения nNonce (от 0 до UINT_MAX). В случае переполнения будет создаваться новая coinbase транзакция. Это позволяет майнеру заменять значение merkle хеша новым и снова начать nNonce сканирование с нуля. Корректировка метки времени также возможна.

Что относительно наград?

Награда за блок может быть вычислена, используя формулу
 nBlockReward = 100 / (diffuculty / 0,000244) ^ (1/6)
Это означает, максимальную награду в 100 единиц и уполовинивание награды при росте сложности в 64 раза.

Основные принципыБазовые определенияПрограммное обеспечениеСвязанные страницы
Valid XHTML 1.0 Transitional Valid XHTML 1.0 Transitional Valid CSS Valid CSS      I find a bug/typo or I have a suggestion
Adapted for Lynx-like browsers
2013-2017 © Zloy & Co
For donations: 4ZLoY6T8wXKgrbZM9gL8fQt48NUzGo2yAg