Всем привет, предлагаю вашему вниманию независимый скрипт, который будет рассчитывать цену на основании стоимости золота через API Центральный банк Российской Федерации и среднюю цену токена Golos через API CoinMarketCap.
Скрипт требуется запускать на сервере с настроенным cli_wallet. Позже рассмотрю вариант с поднятием отдельного обслуживающего гейта на nodejs, чтобы следить за состоянием ноды и отключать ее в случае появления пропущенных блоков. А пока пишу все на php :)
Установка на debian/ubuntu:
sudo apt-get install php php-xml -y
cd ~
mkdir php-scripts
cd php-scripts
PHP_SCRIPTS_DIR=`pwd`
touch publish_feed.php
chmod +x publish_feed.php
nano publish_feed.php
Код скрипта (измените 3 первых переменных, логин делегата, путь до cli_wallet с указанием файла кошелька, и ключ для разблокировки кошелька):
#!/usr/bin/php
<?php
$witness='WITNESS';//WITNESS LOGIN
$cli_wallet='/root/golos16/golos/build/programs/cli_wallet/cli_wallet --server-rpc-endpoint="ws://127.0.0.1:9090" --wallet-file="/golos16/cli_wallet.json"';//CLI_WALLET PATH
$cli_code='000000';//CLI_WALLET LOCK CODE
putenv('TZ=Etc/GMT');
date_default_timezone_set('Etc/GMT');
$metall_cost_url='http://www.cbr.ru/scripts/xml_metall.asp?date_req1='.date('d/m/Y',time()-86400).'&date_req2='.date('d/m/Y');
if(!$metall_cost_url){
print 'CBR API error';
exit;
}
$metall_cost=file_get_contents($metall_cost_url);
$metall_cost_xml=new SimpleXMLElement($metall_cost);
$metall_cost_json=json_encode($metall_cost_xml);
$metall_cost_array=json_decode($metall_cost_json,TRUE);
$gbg_rub=floatval(str_replace(',','.',$metall_cost_array['Record'][0]['Buy']))/1000;
$currency_global=file_get_contents('https://api.coinmarketcap.com/v1/ticker/golos/?convert=rub');
if(!$currency_global){
print 'CoinMarketCap API error';
exit;
}
$currency_arr=json_decode($currency_global,true);
$golos_rub=floatval($currency_arr[0]['price_rub']);
$golos_gbg=round($golos_rub/$gbg_rub,3);
if($golos_gbg>0){
$fp=popen($cli_wallet,'w');
sleep(3);
$cmd='unlock '.$cli_code.PHP_EOL;
fwrite($fp,$cmd,strlen($cmd));
sleep(3);
$cmd='publish_feed "'.$witness.'" {"quote":"1.000 GOLOS", "base":"'.$golos_gbg.' GBG"} true'.PHP_EOL;
fwrite($fp,$cmd,strlen($cmd));
sleep(4);
pclose($fp);
}
После этого поместите выполнение скрипта в crontab:
(crontab -l 2>/dev/null; echo "*/20 * * * * /usr/bin/php ${PHP_SCRIPTS_DIR}/publish_feed.php &") | crontab -
Если у вас есть идеи по необходимым возможностям в nodejs witness gate - пишите. Предположительно займусь им на следующей неделе.
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
knopki, t3ran13, ianboil, ukrainian, mir, dimarss, tristamoff, forbon21, shuler, brovaryleaks, lenarius, vasilisapor2, vict0r, semasping, tnam0rken, karusel1, on1x, newodin, vika-teplo, borisss, del137, kertar, nerengot, lokkie, astrofilosof, dignityinside
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
благодарю вас за эту замечательную работу (и большую экономию времени)!