Я бы
данные
hash1
цель
Midstate
Я смотрел на пример, "Таро Кудо & друзья"И у меня есть два вопроса:
Мой вопрос
1: Почему он это делает "2809801765-1000000" ?
2: Где он даже получить эти цифры, как же он "знать" ответ на stnonce до любого вычисления даже начал?
Это его пример данных:
Код:
вар Midstate: String = "d9dcb3f73ba7083619c3d080e85dace2590fe00398dbbf388579e281cacf233f";
вар данные: String = "00000001041044ce884d97e1eb77e893d2fa6fdce53faaee42784297000007330000000052c68b98b11cefa06739f5d3a8ffddad25adfac6e0d360a496b8d82f3b40301c4e2581741a0abbcf00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000";
вар hash1: String = "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000";
целевая переменная: String = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000";
вар данные: String = "00000001041044ce884d97e1eb77e893d2fa6fdce53faaee42784297000007330000000052c68b98b11cefa06739f5d3a8ffddad25adfac6e0d360a496b8d82f3b40301c4e2581741a0abbcf00000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000";
вар hash1: String = "00000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000010000";
целевая переменная: String = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000";
Это его пример кода:
Код:
импорт myClass.BitCoin_Judge;
стоп();
вар Judge0: BitCoin_Judge = новый BitCoin_Judge (Midstate, данные, цель);
вар start_time: UINT = (. новый Date () время) / 100;
вар Nonce: UINT = 2809801765-1000000;
вар stnonce: UINT = Nonce;
status.text = "Начало:" + Stnonce;
вар таймер: Таймер = новый таймер (1000/12);
timer.addEventListener (TimerEvent.TIMER, OnTimer);
вар повтор: INT = 3000;
вар scannedunit: INT = 0;
Функция OnTimer (ЭВТ: TimerEvent): недействительная
{
для (вар II: INT = 0; б<повторение; б ++)
{
если (Judge0.judgement (Nonce))
{
hps.text = "решать";
current.text = "= нонс " + Nonce;
timer.stop ();
removeEventListener (Event.ENTER_FRAME, обновление);
ломать;
}
если (== Nonce 4294967295)
{
hps.text = "над потоком";
timer.stop ();
removeEventListener (Event.ENTER_FRAME, обновление);
ломать;
}
// Отчет о состоянии для браузера
если (Nonce% (повтор * 10) == 0)
{
вар Total_time: UINT = (. новый Date () время) / 100 - start_time;
hps.text = ((((Nonce - stnonce) * 10) / Total_time) / 1000) .toFixed (2) + " KH / S";
current.text = "Отсканированные хэши " + Math.round ((Nonce-stnonce) / 1000) + "К";
}
нонс ++;
}
}
timer.start ();
Функция Zpad (Числ: String, длина: целое)
{
вар из: String = "" + Num;
в то время как (out.length! = LEN)
{
из = "0" + Вне;
}
вернуться вне;
}
addEventListener (Event.ENTER_FRAME, обновление);
вар ms_prev: UINT;
вар ms_prevS: UINT;
вар кадров в секунду: UINT;
вар timer_c: UINT;
вар repeatControll: Boolean = True;
вар пт: INT = (1000 / (Stage.frameRate * 0,5));
обновление функции (е: Event): недействительная
{
timer_c = getTimer ();
если (repeatControll)
{
вар Num: INT = повтор * (фр / (timer_c - ms_prev));
если (NUM>1000)
{
повторить = повтор - (повтор - NUM) * 0,1;
}
еще
{
Повторяю = 1000;
}
repeatControll = ложь;
}
еще
{
repeatControll = TRUE;
}
если (timer_c - 1000 > ms_prevS)
{
ms_prevS = timer_c;
fpstx.text = "FPS: " + Кадров в секунду + " / " + Stage.frameRate + " X повтор " + Повторить;
кадров в секунду = 0;
}
кадров в секунду ++;
ms_prev = timer_c;
}
стоп();
вар Judge0: BitCoin_Judge = новый BitCoin_Judge (Midstate, данные, цель);
вар start_time: UINT = (. новый Date () время) / 100;
вар Nonce: UINT = 2809801765-1000000;
вар stnonce: UINT = Nonce;
status.text = "Начало:" + Stnonce;
вар таймер: Таймер = новый таймер (1000/12);
timer.addEventListener (TimerEvent.TIMER, OnTimer);
вар повтор: INT = 3000;
вар scannedunit: INT = 0;
Функция OnTimer (ЭВТ: TimerEvent): недействительная
{
для (вар II: INT = 0; б<повторение; б ++)
{
если (Judge0.judgement (Nonce))
{
hps.text = "решать";
current.text = "= нонс " + Nonce;
timer.stop ();
removeEventListener (Event.ENTER_FRAME, обновление);
ломать;
}
если (== Nonce 4294967295)
{
hps.text = "над потоком";
timer.stop ();
removeEventListener (Event.ENTER_FRAME, обновление);
ломать;
}
// Отчет о состоянии для браузера
если (Nonce% (повтор * 10) == 0)
{
вар Total_time: UINT = (. новый Date () время) / 100 - start_time;
hps.text = ((((Nonce - stnonce) * 10) / Total_time) / 1000) .toFixed (2) + " KH / S";
current.text = "Отсканированные хэши " + Math.round ((Nonce-stnonce) / 1000) + "К";
}
нонс ++;
}
}
timer.start ();
Функция Zpad (Числ: String, длина: целое)
{
вар из: String = "" + Num;
в то время как (out.length! = LEN)
{
из = "0" + Вне;
}
вернуться вне;
}
addEventListener (Event.ENTER_FRAME, обновление);
вар ms_prev: UINT;
вар ms_prevS: UINT;
вар кадров в секунду: UINT;
вар timer_c: UINT;
вар repeatControll: Boolean = True;
вар пт: INT = (1000 / (Stage.frameRate * 0,5));
обновление функции (е: Event): недействительная
{
timer_c = getTimer ();
если (repeatControll)
{
вар Num: INT = повтор * (фр / (timer_c - ms_prev));
если (NUM>1000)
{
повторить = повтор - (повтор - NUM) * 0,1;
}
еще
{
Повторяю = 1000;
}
repeatControll = ложь;
}
еще
{
repeatControll = TRUE;
}
если (timer_c - 1000 > ms_prevS)
{
ms_prevS = timer_c;
fpstx.text = "FPS: " + Кадров в секунду + " / " + Stage.frameRate + " X повтор " + Повторить;
кадров в секунду = 0;
}
кадров в секунду ++;
ms_prev = timer_c;
}