LTC Web Miner #Share отклонил причину, работа не найдена
litecoin-web-майнер на хешах github за 300 часов с использованием javascript и web-работника php POST ajax. Я изменил исходный код в рамках стандартной структуры, чтобы улучшить стабильность, эффективность и добавить общие улучшения функций. Внедренная пользователем сетевая империя ботнета, рекламируемого пользователем, собирает запросы протокола getwork на прокси-сервере litecoin, указанном на litecoinpool.org.
Скорость хэширования в сети обычно возрастает до 15000 в секунду, когда я использую дух трафика. Только ошибка отклонена акциями, причина работы не найдена. Много возможностей для этой ошибки. Предоставление доли. Использует фрагмент данных 0 или заголовок плюс трафарет в nonce. Должны ли это быть оригинальные данные из запроса getwork плюс выигрыш nonce или иным образом. Возможен тайм-аут новой работы, возможно, сброс, предотвращение отправки предыдущей общей папки, если так, пожалуйста, сообщите. Прокси-сервер, получающий много опросов в секунду от того же зарегистрированного майнера, также может вызвать проблемы. litecoinpool.org dash сообщает 0 акций 0 недействительных 0 устаревших.
Javascript, определяющий веб-работника
function meetsTarget(header, target, nonce, hashes)
{
header[76] = nonce >> 0;
header[77] = nonce >> 8;
header[78] = nonce >> 16;
header[79] = nonce >> 24;
var hash = scrypt.crypto_scrypt(header, header, 1024, 1, 1, 32);
for(var i = hash.length - 1; i >= 0; i--)
{
if((hash[i] & 0xff) > (target[i] & 0xff))
{
return false;
}
if((hash[i] & 0xff) < (target[i] & 0xff))
{
return true;
}
}
return true;
};
function scanhash(job, progress_report, cb)
{
lastTime = (new Date()).getTime();
var t = (new Date()).getTime() + reportPeriod;
//nonce = job.from;
nonce = job.nonce;
//nonce_end = job.step + nonce;
nonce_end = maxNonce;
while(run)
{
if(meetsTarget(job.header, job.target, nonce, hashes))
{
job.nonce = nonce;
//pause and activate callback
run = false;
cb(nonce);
}
nonce++;
hashes++;
TotalHashes++;
job.nonce = nonce;
if(t < (new Date()).getTime())
{
t = (new Date()).getTime() + reportPeriod;
progress_report();
}
if(nonce > nonce_end)
{
run = false;
cb(null);
}
}
}
POST AJAX для представления акций
var d = job.data.slice(0);
//var d = job.header;
d[79] = job.golden_ticket >> 0;
d[78] = job.golden_ticket >> 8;
d[77] = job.golden_ticket >> 16;
d[76] = job.golden_ticket >> 24;
var lhash = byteArrayToHexString(d);
lhash = AddPadding(lhash);
console.log(lhash);
if (!testmode)
{
$.post("link-request-getwork-lc.php", { w: username, id: minerid, hashes: minerhashes, hs: hashes_per_second, method: 'getwork', solution: lhash, nonce: job.golden_ticket, target: job.target, pooldiff: g_pooldiff, assetid: assetid, assetofficeid: 2}, function (data, status)
{
var resp = data;
var sharecount = resp.sharecount;
var shares = resp.shares;
var netper = sharecount / shares;
netper *= 100;
var coinvalue = resp.coinvalue;
var ltcexchangerate = 186.77;
var ltc = resp.amt.toFixed(9);
var usd = ltc * ltcexchangerate;
//11 Miner Hs
$('#total-12').val(resp.hs);
$('#total-13').val(resp.users);
$('#total-21').val(resp.shrs);
$('#total-22').val(sharecount);
$('#total-23').val(shares);
//31 Username
$('#total-32').val(netper);
$('#total-33').val("$" + usd);
$('#total-41').val(resp.nonce);
$('#total-42').val(resp.hashes);
$('#total-43').val(ltc);
}, "json");
PHP link-запрос для клиента curl rpc
# woooha! nonce to submit!
$stratumProxy = "http://****.com:9332";
$workerName = "stormmorr.4";
$workerPass = "4";
$data_string = '{"method":"getwork","params":["' . $solution . '"],"id":1}';
$ch = curl_init($stratumProxy);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_USERPWD, $workerName.":".$workerPass);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$rs = curl_exec($ch);
fappend('lcsolutions.dat', '\nDATE:' . $date . ' DATA:' . $solution . "RESULT:" . $rs);
$ren = json_decode('{}');
$ren->{'id'} = $oo->{'id'};
$ren->{'result'} = $rs;
$ren->{'error'} = null;
$ren->{'sharecount'} = $arr["sharecount"];
$ren->{'shares'} = $arr["shares"];
$ren->{'hs'} = $arr["hs"];
$ren->{'users'} = $arr["users"];
$ren->{'shrs'} = $arr["shrs"];
$ren->{'hashes'} = $arr["hashes"];
$ren->{'amt'} = $arr["amt"];
$ren->{'coinvalue'} = $arr["coinvalue"];
echo json_encode($ren);