Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
litvintech
8 лет назад

Обновленный скрипт для автоматической поставки ценовых фидов (для делегатов)

price feed script
картинка от @on0tole

С концом краудсэйла и стартом вестинга появились новые переменные, относительно которых нужно рассчитывать ценовые фиды.

Представленный ниже скрипт является обновленной версией скрипта updatefeed.sh из статьи с детальными инструкциями от @on0tole, который учитывает текущее количество голосов в системе. Также фид публикуется относительно одного Голоса, т.е количество золотых (GBG) за один Голос. Ключевой переменной является CAP, в которой следует указать оценку (субъективную) капитализации сети в биткоинах.

#!/bin/bash

# Load env vars
source $HOME/.bash_profile

CAP=600

# cli_wallet --rpc-http-endpoint url
if [ -z $GOLOS_WALLET ]; then
        echo "ERROR: Golos wallet is not set"
        exit 1
fi
WALLET=$GOLOS_WALLET

# cli_wallet unlock password
if [ -z $GOLOS_PASSWORD ]; then
        echo "ERROR: Golos wallet password is not set"
        exit 1
fi
PASSWORD=$GOLOS_PASSWORD

# publish_feed nickname:
if [ -z $GOLOS_WITNESS ]; then
        echo "ERROR: Golos witness name is not set"
        exit 1
fi
NICKNAME=$GOLOS_WITNESS

function is_locked {
        LOCKED=`curl -s --data-binary '{"id":"1","method":"is_locked","params":[""]}' "$WALLET" | jq -r '.result'`
}

function checkLockAndExit {
        if [ "$EXITLOCK" = true ]; then
                echo -n "Locking wallet again..."
                curl -s --data-binary '{"id":0,"method":"lock","params":[]}' "$WALLET" > /dev/null
                echo ""
                echo "Locked."
        fi
}

function getGoldMgPrice {
        local XAUOZ=`curl -s 'http://data-asg.goldprice.org/GetData/USD-XAU/1' | jq -r '.[0]' | cut -d ',' -f 2`
        local GRAMM_IN_OZ=31.1034768
        XAUMG=$(echo "scale=10 ; $XAUOZ / $GRAMM_IN_OZ / 1000" | bc)
}

function getSupply {
        GOLOS_SUPPLY=`curl -s --data-binary '{"id":"1","method":"info","params":[]}' $WALLET | jq -r ".result.current_supply" | cut -d '.' -f 1`
}

function getBtcUsdPrice {
        BTC_USD=`curl -s 'https://btc-e.nz/api/3/ticker/btc_usd-btc_btc?ignore_invalid=1' | jq -r '.btc_usd.last'`
}

is_locked
if [ "$LOCKED" == "true" ]; then
        EXITLOCK=true
        echo -n "Wallet is locked. Trying to unlock..."
        curl -s --data-binary '{"id":"1","method":"unlock","params":["'"$PASSWORD"'"]}' "$WALLET" > /dev/null
        echo ""
        is_locked
        if [ "$LOCKED" == "true" ]; then
                echo "Can't unlock wallet, exiting."
                checkLockAndExit                
        else
                echo "Wallet unlocked."
        fi
else
        if [ "$LOCKED" == "false" ]; then
                EXITLOCK=false
                echo "Wallet was unlocked before."
        else
                echo "Some error. Is cli_wallet running? Exit."
                exit
        fi
fi

# Getting input data
getGoldMgPrice
getSupply
getBtcUsdPrice

# Calc
GOLOS_USD=$(echo "scale=10 ; $CAP * $BTC_USD / $GOLOS_SUPPLY" | bc)
GOLOS_GBG=$(echo "scale=3 ; $GOLOS_USD / $XAUMG" | bc)

# Publish
BASE=$(echo "0${GOLOS_GBG}")
QUOTE="1.000"

PUB=`curl -s --data-binary '{"id":"2","method":"publish_feed","params":["'"$NICKNAME"'",{"base":"'"$BASE GBG"'", "quote":"'"$QUOTE GOLOS"'"}, true],"jsonrpc":"2.0"}' "$WALLET" | jq -r '.id'`
if [ $PUB -eq 2 ]; then
        echo "Feed was updated successfully. 'base'=${BASE} 'quote'=${QUOTE}"                
else
        echo "Some error. Feed wasn't updated."                
fi

checkLockAndExit

follow litvintech

4
12566.666 GOLOS
Комментарии (7)
Сортировать по:
Сначала старые