mirror of
https://github.com/LBRYFoundation/pool.git
synced 2025-08-23 17:37:25 +00:00
210 lines
5.7 KiB
PHP
210 lines
5.7 KiB
PHP
<?php
|
|
|
|
function BackendUpdateServices()
|
|
{
|
|
// debuglog(__FUNCTION__);
|
|
|
|
$table = array(
|
|
0=>'scrypt',
|
|
1=>'sha256',
|
|
2=>'scryptn',
|
|
3=>'x11',
|
|
4=>'x13',
|
|
6=>'x15',
|
|
7=>'nist5',
|
|
8=>'neoscrypt',
|
|
9=>'lyra2',
|
|
11=>'qubit',
|
|
12=>'quark',
|
|
);
|
|
|
|
$res = fetch_url('https://www.nicehash.com/api?method=stats.global.current');
|
|
if(!$res) return;
|
|
|
|
$a = json_decode($res);
|
|
if(!$a || !isset($a->result)) return;
|
|
|
|
foreach($a->result->stats as $stat)
|
|
{
|
|
if($stat->price <= 0) continue;
|
|
if(!isset($table[$stat->algo])) continue;
|
|
$algo = $table[$stat->algo];
|
|
|
|
$service = getdbosql('db_services', "name='Nicehash' and algo=:algo", array(':algo'=>$algo));
|
|
if(!$service)
|
|
{
|
|
$service = new db_services;
|
|
$service->name = 'Nicehash';
|
|
$service->algo = $algo;
|
|
}
|
|
|
|
$service->price = $stat->price/1000;
|
|
$service->speed = $stat->speed*1000000000;
|
|
$service->save();
|
|
|
|
$list = getdbolist('db_jobs', "percent>0 and algo=:algo and (host='stratum.westhash.com' or host='stratum.nicehash.com')", array(':algo'=>$algo));
|
|
foreach($list as $job)
|
|
{
|
|
$job->price = round($service->price*1000*(100-$job->percent)/100, 2);
|
|
$job->save();
|
|
}
|
|
}
|
|
|
|
$list = getdbolist('db_renters', "custom_address is not null and custom_server is not null");
|
|
foreach($list as $renter)
|
|
{
|
|
$res = fetch_url("https://$renter->custom_server/api?method=stats.provider&addr=$renter->custom_address");
|
|
if(!$res) continue;
|
|
|
|
$renter->custom_balance = 0;
|
|
$renter->custom_accept = 0;
|
|
$renter->custom_reject = 0;
|
|
|
|
$a = json_decode($res);
|
|
foreach($a->result->stats as $stat)
|
|
{
|
|
if(!isset($table[$stat->algo])) continue;
|
|
$algo = $table[$stat->algo];
|
|
|
|
$renter->custom_balance += $stat->balance;
|
|
$renter->custom_accept += $stat->accepted_speed*1000000000;
|
|
$renter->custom_reject += $stat->rejected_speed*1000000000;
|
|
}
|
|
|
|
$renter->save();
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////////////
|
|
|
|
// renting from nicehash
|
|
if(!YAAMP_PRODUCTION) return;
|
|
return;
|
|
|
|
$apikey = 'c9534a11-0e4e-4d00-be64-a00e34cd927a';
|
|
$apiid = '7215';
|
|
|
|
$deposit = '1C23KmLeCaQSLLyKVykHEUse1R7jRDv9j9';
|
|
$amount = '0.01';
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=balance&id=$apiid&key=$apikey");
|
|
$a = json_decode($res);
|
|
$balance = $a->result->balance_confirmed;
|
|
|
|
foreach($table as $i=>$algo)
|
|
{
|
|
$nicehash = getdbosql('db_nicehash', "algo=:algo", array(':algo'=>$algo));
|
|
if(!$nicehash)
|
|
{
|
|
$nicehash = new db_nicehash;
|
|
$nicehash->active = false;
|
|
$nicehash->algo = $algo;
|
|
}
|
|
|
|
if(!$nicehash->active)
|
|
{
|
|
if($nicehash->orderid)
|
|
{
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.remove&id=$apiid&key=$apikey&algo=$i&order=$nicehash->orderid");
|
|
debuglog($res);
|
|
|
|
$nicehash->orderid = null;
|
|
}
|
|
|
|
$nicehash->btc = null;
|
|
$nicehash->price = null;
|
|
$nicehash->speed = null;
|
|
$nicehash->last_decrease = null;
|
|
|
|
$nicehash->save();
|
|
continue;
|
|
}
|
|
|
|
$price = dboscalar("select price from hashrate where algo=:algo order by time desc limit 1", array(':algo'=>$algo));
|
|
$minprice = $price*0.5;
|
|
$setprice = $price*0.7;
|
|
$maxprice = $price*0.9;
|
|
$cancelprice = $price*1.1;
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.get&my&id=$apiid&key=$apikey&algo=$i");
|
|
if(!$res) break;
|
|
|
|
$a = json_decode($res);
|
|
if(count($a->result->orders) == 0)
|
|
{
|
|
if($balance < $amount) continue;
|
|
$port = getAlgoPort($algo);
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.create&id=$apiid&key=$apikey&algo=$i&amount=$amount&price=$setprice&limit=0&pool_host=yaamp.com&pool_port=$port&pool_user=$deposit&pool_pass=xx");
|
|
debuglog($res);
|
|
|
|
$nicehash->last_decrease = time();
|
|
$nicehash->save();
|
|
|
|
continue;
|
|
}
|
|
|
|
$order = $a->result->orders[0];
|
|
debuglog("$algo $order->price $minprice $setprice $maxprice $cancelprice");
|
|
|
|
$nicehash->orderid = $order->id;
|
|
$nicehash->btc = $order->btc_avail;
|
|
$nicehash->workers = $order->workers;
|
|
$nicehash->price = $order->price;
|
|
$nicehash->speed = $order->limit_speed;
|
|
$nicehash->accepted = $order->accepted_speed;
|
|
$nicehash->rejected = $order->rejected_speed;
|
|
|
|
if($order->price > $cancelprice && $order->workers > 0)
|
|
{
|
|
debuglog("* cancel order $algo");
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.remove&id=$apiid&key=$apikey&algo=$i&order=$order->id");
|
|
debuglog($res);
|
|
}
|
|
|
|
else if($order->price > $maxprice && $order->limit_speed == 0)
|
|
{
|
|
debuglog("* decrease speed $algo");
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.set.limit&id=$apiid&key=$apikey&algo=$i&order=$order->id&limit=0.05");
|
|
debuglog($res);
|
|
}
|
|
|
|
else if($order->price > $maxprice && $nicehash->last_decrease+10*60 < time())
|
|
{
|
|
debuglog("* decrease price $algo");
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.set.price.decrease&id=$apiid&key=$apikey&algo=$i&order=$order->id");
|
|
debuglog($res);
|
|
|
|
$nicehash->last_decrease = time();
|
|
}
|
|
|
|
else if($order->price < $minprice && $order->workers <= 0)
|
|
{
|
|
debuglog("* increase price $algo");
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.set.price&id=$apiid&key=$apikey&algo=$i&order=$order->id&price=$setprice");
|
|
debuglog($res);
|
|
}
|
|
|
|
else if($order->price < $maxprice && $order->limit_speed == 0.05)
|
|
{
|
|
debuglog("* increase speed $algo");
|
|
|
|
$res = fetch_url("https://www.nicehash.com/api?method=orders.set.limit&id=$apiid&key=$apikey&algo=$i&order=$order->id&limit=0");
|
|
debuglog($res);
|
|
}
|
|
|
|
$nicehash->save();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|