Proof-of-Stake

Proof-of-Stake это термин, означающий использование самой массы единиц (факта владения), для достижения определенных целей. В NovaCoin Proof-of-Stake используется, чтобы обеспечить майнинг и обработку транзакций наравне с Proof-of-Work.

Novacoin использует смешанный Coin-Age/CoinDayWeight подход, чтобы предоставить доказательство доли. Сложность Proof-of-Stake регулируется таким образом, чтобы ограничить скорость, с которой новые блоки могут быть сгенерированы сетью, до 10 минутного целевого интервала между блоками. Из-за очень низкой вероятности успешной генерации доказательства, это делает непредсказуемым определение того, какой именно компьютер в сети, сможет сгенерировать следующее решение.

Как это должно работать?

Это выполняется посредством сканирования всех доступных входов, чтобы найти один удачный, который удовлетворяет следующему условию:
SHA256(SHA256(KERNEL)) < CoinDayWeight *  NetworkTarget
Майнер должен найти хеш SHA256, который меньше целевого значения. Целевое значение получается из текущей сложности в сети, с использованием параметра CoinDayWeight. Доказательство представлено хешем ядра и подписью заголовка. Каждое coinstake ядро представлено структурой из 6 полей, некоторые из этих полей могут быть изменены довольно свободно.
ПолеТипРазмерТребования
nStakeModifierunsigned long int8Изменения вручную недопустимы.
nTimeBlockFromunsigned int4Метка времени для блока, который обеспечил предыдущую транзакцию.
nTxPrevOffsetunsigned int4Смещение предыдущей транзакции в блоке.
nTxPrevTimeunsigned int4Метка времени предыдущих транзакций.
nPrevoutNumunsigned int4Выходное число предыдущей транзакции.
nTimeTxunsigned int4Текущая метка времени.
Результат хеширования допустимого значения Proof-of-Stake должен быть ниже чем цель для блока. Майнер пытается найти это подходящее решение, проверяя все доступные неизрасходованные входы с подходящим CoinDayWeight.

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

Точно так же как с Proof-of-Work, никто не может сказать точно. Но можно оценить, сколько времени это могло бы занять. Вычисления очень похожи на вычисления вероятности Proof-of-Work, но вместо параметра скорость перебора хэшей в секунду, здесь используется единица * день-в-секунду. Так, если сложность 1.0 то необходимо ~ 4294967297 единица * день-в-секундах, чтобы найти блок.

Вероятность успешной генерации блока в течение одного дня может быть вычислена от доступного CoinDayWeight используя формулу:
P = CoinDayWeight * 86400 / (4294967297 * difficulty)
Оценим вероятность для предполагаемой сложности (0.23482093):
        Возраст
Сумма \
<= 306090120
100.00130.00260.00510.0077
1000.01280.02570.05140.0771
10000.12850.2570.5140.771

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

T =  4294967297 * difficulty / (CoinDayWeight * 86400)
        Возраст
Сумма \
<= 30456090120
1778.2389.1194.55129.7129.7
1077.8238.9119.4612.9712.97
1007.783.891.951.31.3

Как начать генерировать Proof-of-Stake блоки?

Если есть ненулевой баланс, то novacoind будет автоматически пытаться сгенерировать хеши. Если нашелся PoS-блок, то награда вычисляется используя текущую Proof-of-Stake сложность и использованное количество единица-дней. Величина награды добавляется к затраченному на этот PoS блок количеству единиц (иначе инпут, вход) и показывается суммарно, в поле stake вывода getinfo.

Поскольку доля временно удерживается от траты (на 520 блоков), предусмотрен параметр конфигурации reservebalance на случай, если есть необходимость сохранить баланс доступным для траты, предотвратив его использование в качестве доли. Можно добавить строку reservebalance=10000 в novacoin.conf и перезапустить novacoind. В этом случае novacoind будет пытаться сохранить баланс выше 10000 единиц при генерации доли.

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

Награда за блок основана на параметре Coin-Age и Proof-of-Stake сложности. Награда может быть вычислена, используя формулу
 nProofReward = min(10, CoinAge * (0.03125 / difficulty) ^ (1 / 3) * 33 / (365 * 33 + 8)) 
Другими словами награда ограничена значением в 10 единиц, запускается с 1 единицы на единица-год и ополовинивается каждое 8-ми кратное увеличение сложности.

Основные принципыБазовые определенияПрограммное обеспечениеСвязанные страницы