ты наверное хотел написать
100 / difficulty ^ 1/3
?
Речь о proof-of-work наградах, не о proof-of-stake. Да и показатель 1/3 в знаменателе слишком велик для proof-of-work т.к. порядок сложности совсем другой. В proof-of-stake еще не добрались даже до 0.2, а в proof-of-work с выходом скриптовых асиков улетим за 1000 достаточно быстро.
В PoW майнинге используется некий перебор значений (итерация) переменной для подбора значения хэша, удовлетворяющего условию сложности. Если рассмотреть PoS:
sha256(sha256(nTimeBlockFrom + nTxPrevOffset + txPrev.nTime + prevout.n + nTimeTx)) < bnTarget * bnCoinDays
nTimeBlockFrom - таймстамп блока, из которого берется входная точка;
nTxPrevOffset - номер транзакции в блоке;
txPrev.nTime - таймстамп входной точки;
prevout.n - номер аутпута транзакции, являющегося нашей входной точкой;
nTimeTx - таймстамп создаваемой coinstake-транзакции;
bnTarget - маска, определяется сложностью;
bnCoinDays - произведение количества монет на возраст.
Что является элементом итерации в PoS функции? Какую переменную ищет PoS майнер, чтобы неравенство было верным?
В proof-of-stake майнинге перебирается массив доступных для траты входных точек и таймстамп транзакции.
То есть, процесс майнинга в существенно упрощенном виде выглядит примерно так:
Получить массив доступных для траты выходов, имеющих возраст больше 30 дней.
Цикл пока блок не найден или последний блок сети не изменился
1. Загрузить заголовок блока, содержащего транзакцию текущего выхода и вычислить смещение транзакции в блоке.
2. Посчитать двойной sha256 хэш от (модификатор + таймстамп заголовка + смещение транзакции в блоке + таймстамп транзакции + номер точки выхода в транзакции + GetTime()).
3. Посчитать вес данного инпута, как произведение количества монет в нем на min(90 дней в секундах, Возраст в секундах - 30 дней в секундах).
4. Сравнить хэш с произведением текущего таргета на полученное в предыдущем шаге значение. Если меньше, то удачный хэш найден и выходим из цикла.
5. Повтор.
После того как хэш найден, майнер формирует блок c нулевым значением nNonce, добавляет в него сформированную coinstake транзакцию и подписывает заголовок блока тем же приватным ключом, что и транзакцию. Хэш и подпись заголовка вместе и являются тем-самым proof-of-stake.
20:53:34 getblock 84ba042228ffc90fb53af7c82e922e5e67be269576f2094d6a773b2670262bc0
20:53:34
{
"hash" : "84ba042228ffc90fb53af7c82e922e5e67be269576f2094d6a773b2670262bc0",
"confirmations" : 1,
"size" : 834,
"height" : 71635,
"version" : 6,
"merkleroot" : "46ce64885d273c7243670f61d5ab95fcfbfeb74fa4c7069c58b8512f63640006",
"mint" : 3.99641400,
"time" : 1391100443,
"nonce" : 0,
"bits" : "1d068251",
"difficulty" : 0.15362994,
"blocktrust" : "2754720f",
"chaintrust" : "6c613efee43",
"previousblockhash" : "0000000000070bb44b908139becf7b82fb442b5f928ba6e200e4aacb84594f30",
"flags" : "proof-of-stake",
"proofhash" : "00000305dfdfe4d7d1814261e0207b6a903963cb4f28bac9719d6aeaf07bfc64",
"entropybit" : 0,
"modifier" : "dfb5ad660dae6bc0",
"modifierchecksum" : "1be97133",
"tx" : [
"f346695636b92885adf04f17a8f60584d2a9ea1a84595d2af32830d6722ea7db",
"61411e1fa59b3dbcfb78e9a5394ff9d2aed18bd0989a1a7ccd3b79576d833b4f",
"dea35962f5ed013498fec1af5382778af86dfb5d72bef8365d5530399b2c5df2"
],
"generator" : "028ff201c2b3021234f3800a8bf71a74b4d8601f554098888f745075e8b21397e5",
"signature" : "3045022059adcc94364f981db4a298b74167da1244d965ab97d924c67ba6712721505d91022100e 959ede7a0a44640607b529723793c71d04ca79f4dbe67ced9572394e404b575"
}
P.S. модификатор является квазислучайным значением, пересчитываемым регулярно с использованием хэшей 64 выбранных детерминированным, но труднопредсказуемым образом блоков. Его предназначением является предотвращение генерации удачных proof-хэшей "в прок".