🔬 Публичные ноды API.GOLOS.CF + 17.GOLOS.CF (Дополнительная публичная нода с новым API от goloscore)


Я как и все жду хардфорка, и как у всех для меня важна экономическая составляющая. Но поскольку я редко пишу в блог, для меня экономика в большей степени связана со стоимостью серверов и временем на обслуживание нод, а не кривой вознаграждений или бенефициарством с постов набравших 5 копеек :)
Потому в обновлении меня больше интересует производительность нод и новый API

Сегодня я запустил дополнительную публичную api-ноду wss://17.golos.cf на которую установлена 0.17-я ветка от @goloscore

ЭТО НЕ ТЕСТНЕТ, НОДА СИНХРОНИЗИРОВАНА С ЖИВЫМ БЛОКЧЕЙНОМ

При этом моя основная нода wss://api.golos.cf работает на текущей версии 0.16.4 - если вы используете ее, большая просьба переключится на новую ноду для "живых" тестов производительности и багов нового железа.
Нода синхронизирована с текущим блокчейном и по части экономики блокчейна до 4-го апреля работает в режиме 0.16.4, после она автоматически будет сигнализировать о новой экономике
#define STEEMIT_HARDFORK_0_17_TIME 1522832400 // 4 apr 2018 12:00:00 MSK

  • Удаление лимита вложенности комментариев
  • Окно выплат - неделя, вместо двух текущих - день и месяц
  • Возможность установить процент отката бенефактору при публикации поста
  • Линейная кривая вознаграждений

Вне зависимости от того, сколько делегатов установят новые ноды - перечисленные опции активируются только 4-го апреля. Но новым API пользоваться можно уже сейчас, а после 4-го апреля не останется альтернатив, потому считаю важным начать тестовую миграцию как можно скорее для выявления багов. Они наверняка есть. Как и баунти :)
В зависимости от своего рабочего стека можете оставлять issue в репозиториях библиотек
https://github.com/GolosChain/golos-js
https://github.com/GolosChain/golos-python
https://github.com/GolosChain/golos-php
https://github.com/GolosChain/golos-go
https://github.com/GolosChain/golosj

И непосредственно golosd:
https://github.com/GolosChain/golos/issues

JavaScript

Если вы использовали golos-js ранее - для нового api вам нужно поставить актуальную версию библиотеки командой:
npm i golos-js@0.6.1

И далее

const golos = require('golos-js')
golos.config.set('websocket','wss://17.golos.cf' )

Далее убедитесь, что в ваших скриптах нет методов которые больше не поддерживаются
⛔️ get_state aka golos.api.getState()
⛔️ get_api_by_name
⛔️ login_api

Если вы используете вебсокеты без библиотеки golos-js, следует изменить формат вызова

БЫЛО (Пример отправки запроса на получение блока № 12345):

ws.send(JSON.stringify({ 
            id: 1,
            method: 'call', 
            params: ["database_api","get_block",[12345]]
})

СТАЛО (Вам нужно просто добавить в вызов jsonrpc: '2.0'):

ws.send(JSON.stringify({ 
            id: 1,
      👉 jsonrpc: '2.0',
            method: 'call', 
            params: ["database_api","get_block",[12345]]
})

Однако в таком виде большинство методов либо не работает, либо работает не совсем так как задумано.
Следует учитывать, что методы группированы по API от которых зависят. Так например get_block зависит от database_api, а вот get_active_votes уже связан с новым плагином social_network.

Позднее я подготовлю статью с описанием методов, а пока проще использовать готовые библиотеки

Примеры использования golos-js

На скрине пример того, как совершить несколько переводов одной транзакцией используя библиотеку golos-js для nodejs:
JS.PNG
Код

Результат

Инсталляция собственной ноды 0.17.0

Если ваше приложение совершает аномальное количество запросов - мои ноды будут ставить низкий приоритет для таких подключений - увы, это необходимо, так как иначе они будут постоянно лежать.
Но если ваше приложение рентабельно - вы можете с легкостью установить ноду и на собственный сервер. Пошагово ниже.

Установка зависимостей:

sudo apt-get -y upgrade && sudo apt-get -y install git cmake g++ python-dev autotools-dev libicu-dev build-essential libbz2-dev libboost-all-dev libssl-dev libncurses5-dev doxygen libreadline-dev dh-autoreconf screen

Установка golosd 0.17.0

git clone https://github.com/GolosChain/golos && cd golos && git checkout tags/v0.17.0 && git submodule update --init --recursive && cmake -DCMAKE_BUILD_TYPE=Release . && make -j$(nproc)

Загрузка снепшота

wget https://github.com/GolosChain/golos/raw/master/share/golosd/snapshot5392323.json

./golosd
CTRL+C

Подготовка среды:
Открыть в редакторе nano /etc/fstab
Добавить shm none /dev/shm tmpfs defaults,size=64G 0 0
Перемонтировать mount -o remount /dev/shm

Для эффективности настроек выше RAM и виртуальной озу в сумме должно быть не меньше 64GB

Конфигурация - /golos/programs/golosd/witness_node_data_dir/config.ini

plugin = social_network database_api network_broadcast_api

seed-node = 5.9.18.213:4243
seed-node = 52.32.75.69:4243
seed-node = 52.57.156.202:4243
seed-node = 88.99.13.48:4243
seed-node = golos-seed.arcange.eu:4243
seed-node = golos-seed.esteem.ws:4243
seed-node = golosnode.com:4243
seed-node = 138.68.101.115:4243
seed-node = golos.imcoins.org:2001
seed-node = 178.62.224.148:4242

shared-file-dir = /dev/shm
shared-file-size = 64G

rpc-endpoint =  127.0.0.1:9090
rpc-http-endpoint = 127.0.0.1:9091 
rpc-http-allowip = 127.0.0.1

Запускаем golosd в фоновом окне
screen -S G
В папке golos/programs/golosd: ./golosd --resync

Выходим их окна
CTRL+A+D
При необходимости заходим:

screen -x G

После завершения синхронизации API доступно по localhost:9090 (или по внешнему адресу, домену, см. инструкцию)

Моя нода доступна по адресу wss://17.golos.cf


Comments 27


..не могли бы Вы, как уважаемый делегат, дать какие нибудь внятные пояснения по ожидаемому всеми ХФ!?...с разных сторон слышатся какие-то даты, даже уже прошедшие, но никто толком ничего не может сказать, пусть не окончательно, но хотя бы близко к реальности!!! КОГДА ЖЕ ВСЕ-ТАКИ ОЖИДАЕТСЯ ЭТОТ ХФ!?!?!

17.03.2018 18:32
0

4 апреля.

17.03.2018 18:38
0

Печаль.... говорили что после 8-го марта... эдэк... теперь до 4 апреля растянулось.

17.03.2018 20:03
0

Это прописано в коде:
https://github.com/GolosChain/golos/blob/golos-v0.17.0/libraries/chain/hardfork.d/0_17.hf#L11

#define STEEMIT_HARDFORK_0_17_TIME 1522832400 // 4 apr 2018 12:00:00 MSK

Как я и написал выше:

Вне зависимости от того, сколько делегатов установят новые ноды - перечисленные опции активируются только 4-го апреля.

Если топ делегаты поставят себе новые ноды, то 4-апреля вступит в силу новая экономика.
Раньше - только если топ делегаты дружно поставят другие ноды, где дата будет другая.
Дата обусловлена тем, что обновить ноду должен и @bittrex - и обновлять сомнительное железо сомнительного токена для биттрекса не высокий приоритет, это очевидно :)

Мне кажется если выбирать между скоростью принятия ХФ и опасностью делестинга - лучше уж подождать неделю другую.
А вот если токен будет в любом случае делистнут - тогда уже можно брать хардфорк от гороха и ставить дату хоть на завтра.

17.03.2018 18:44
0

А вот если токен будет в любом случае делистнут - тогда уже можно брать хардфорк от гороха и ставить дату хоть на завтра.

А наступающий хардфорк... не от гороха разве? Эх, упустил видимо последние новости))

17.03.2018 20:04
0

...спасибо большое!...все понятно...

17.03.2018 20:20
0

Будет в вики внесены изменения в алгоритм действий для того чтобы стать делегатом?

17.03.2018 18:48
0

Никаких изменений в алгоритме нет. И вряд-ли будут :)

  1. Устанавливаете актуальную версию ноды с плагином witness и указанием логина/ключа подписи блоков.
  2. Привлекаете пользователей голосовать за себя (необязательно, если у вас достаточно СГ)
17.03.2018 18:55
0

@vik, как думаешь, если собрать рядом новую версию ноды и просто переключить конфиг на старые данные - все подхватится? Не пробовал? А то у меня только опыт установки с нуля 0.17.0, апгрейдиться еще не пробовал.

17.03.2018 20:10
0

Смотря какие плагины используются. API ведь поменялось. Без --replay будут данные не полными. Пройдет ли replay со старым индексом и новой нодой - сомневаюсь. А учитывая сколько занимает replay - не вижу причин не поставить чистую версию и засинхронизировать.

17.03.2018 20:29
0

@vik, в таком коде:

ws.send(JSON.stringify({
    id: 1,
    method: 'call',
    "params": ["database_api","set_block_applied_callback",[0],]
}));

или в таком

ws.send(JSON.stringify({
            id: 2,
            method: 'call',
            params: ["database_api","get_ops_in_block",[height,"false"]]
}));

уже сейчас можно добавлять jsonrpc: '2.0' ?

18.03.2018 07:14
0

Возможность установить процент отката бенефактору при публикации поста

Этого же не было в ХФ от Гороха (который потом допилили Голос-кор), если не ошибаюсь. Объясните, что за фишка и откуда она взялась, @vik ? :)

21.03.2018 20:57
0

Эта фишка давно есть в Steemit - дает возможность разработчику приложения через который публикуется пост брать себе процент с выплаты.
На стимит разработчики берут процент за публикацию через их приложения, но и ставят апвоты своим авторам. Выгодно обеим сторонам + привлекает новых разработчиков.

21.03.2018 21:36
0

Понятно) просто в посте Голос-кор эта фишка звучит немного по другому:
"Reward beneficiaries - внесено вознаграждение приложений" , поэтому немного не понятно было - одно и тоже это или нет. Теперь ясно, что одно и тоже.

22.03.2018 08:24
0

@vik , а вот такой вопрос ещё как к знающему делегату: не затронет ли новая экономическая модель систему с начислением процентов за хранение gbg-шек? И вообще, сейчас каким образом эта система работает: начисляют проценты за хранение Gbg или gbg и Голос-токенов тоже? Читал статью в Вики на эту тему, не очень понятно там описано.

22.03.2018 08:43
0

Новая экономическая модель не затрагивает эти параметры.
Эти параметры заложены изначально.

Печать GBG прекратилась
sbd_print_rate 0

Процент за хранение GBG прежний
sbd_interest_rate 1000

Процента за хранения GOLOS никогда не было, так как это было бы не логично учитывая концепцию с силой голоса.

22.03.2018 08:54
0

Благодарю за ответ) Вик, а что значит печать ГБГ прекратилась? можно подробнее чуть?

22.03.2018 08:56
0

Правила блокчейна (придуманные не основателями голоса, а основателем стимит)

GBG не может быть более 10% от общей капитализации GOLOS, потому когда GBG становится более 5% их печать останавливается.

Из WIKI:
—-

Золотой, обеспеченный ГОЛОСАМИ

В оригинальной разработке используется Стимдоллар. Стимдоллар - это долговое обязательство блокчейна Стим выплатить 1 американский доллар Стимами в течение недели по средненедельному курсу. В блокчейне Голос будет действовать аналогичный токен, но привязанный к цене 1 миллиграмма золота - Золотой или Золотой, обеспеченный ГОЛОСАМИ (Gold backed by GOLOS, GBG). Несмотря на то, что большинство русскоязычного населения планеты (или 52.6%) являются пользователями российских рублей - государственной денежной единицы Российской Федерации, мы считаем российский рубль не подходящим для наших целей по следующим причинам:

Постоянное обесценивание российского рубля как по отношению к прочим национальным валютам, так и золоту. График 1 показывает что с 2000 года по отношению к золоту рубль обесценился в 10 раз (доллар, для сравнения, - в 5 раз).
Неудобство использования рублей для пользователей из Украины, Беларуси, Казахстана и других стран, в которых Русский язык популярен.
Историческая стабильность курса на золото делает токен, привязанный к его цене, отличным инструментом для сбережений и международных расчетов. Предложенное нами решение является надежной альтернативой для хранения безналичной ценности в привязке к цене золота без ограничений и недостатков, накладываемых традиционными финансовыми инструментами.

22.03.2018 09:16
0

понятно :) @vik , то есть на текущий момент ГБГ-шек уже более 5% от общей капитализации Голоса? А это влияет на что-нибудь ещё, кроме как останавливается их печать? И что будет, когда более 10% станет?

22.03.2018 10:39
0

5% от общей капитализации Голоса? А это влияет на что-нибудь ещё, кроме как останавливается их печать? И что будет, когда более 10% станет?

Это оригинальная статья, которая поможет разобраться в экономике так, как ее задумал создатель стимита https://goldvoice.club/steem/@dantheman/steem-dollar-stability-enhancements

На голосе должен быть перевод, попробуйте в поиске


Если GBG превысит 20% капитализации GOLOS и если перенимать нынешний подход стимит - произойдет автоматическая конвертация 1-го %

https://goldvoice.club/steem/@dantheman/steem-dollars-have-limits

22.03.2018 11:06
0

@vik , а сколько надо что бы установили делегатов новый ХФ, для того, чтобы он 4 апреля вступил в силу? 17 или 19?

22.03.2018 19:56
0

начать тестовую миграцию как можно скорее для выявления багов.

По-моему, get_following() и get_followers() возвращают одно и то же — тех, кто подписан, но не тех, на кого подписан.

24.03.2018 23:30
0

Вы правы! Оба метода возвращают followers.


https://github.com/GolosChain/golos/issues/477
После фикса моя нода будет пересобрана. К сожалению сроки не меньше дня, а если понадобится ресинхронизация - еще дольше. (перерывов в работе не будет, так как ресинх будет на резервной ноде, потом они просто переключатся)

25.03.2018 05:37
0

Если ваше приложение совершает аномальное количество запросов - мои ноды будут ставить низкий приоритет для таких подключений

Аномальное — это сколько? У меня постоянно вылетает то ConnectionTimeout, то ResponseTimeout, это оно? Я юнит-тесты сейчас прогоняю, там ну... пять запросов подряд, потом затишье на пару минут, пока код не поправлю, и опять запросы.

25.03.2018 23:09
0

ConnectionTimeout, то ResponseTimeout

Я сделал лимиты мягче, подобные ошибки должны возникать значительно реже или не возникакать вовсе.

Если все останется по прежнему - сообщите пожалуйста, это будет значить, что проблема в чем-то другом.

26.03.2018 08:28
0

Добавлю. Чуть схемы не расплавил, пока не поймал нюанс.

В вызовах функций не требующих параметров, надо указывать пустые параметры.

{
"id":22,
"jsonrpc":"2.0",
"method":"call",
"params":["database_api","get_dynamic_global_properties",[ ]]
}
или (php)
$req = json_encode( [ 'id' => 30, 'jsonrpc' => '2.0', 'method' => 'call', 'params' => ["database_api","get_account_count",[]] ] );

Иначе, выдаётся ошибка.

При этом запросы в таком виде ( с 'jsonrpc' => '2.0' ) можно использовать и при обращении к старой ноде 0.16 (wss://ws.golos.io/). По крайней мере те, которые используются в моих ботах проблем, вроде, не доставляют.

Upd.
Что характерно
{"id":26,"jsonrpc":"2.0","method":"call","params":["database_api","get_active_votes",["aaaladno","prud-pered-grozoij"]]}

{"id":26,"jsonrpc":"2.0","method":"call","params":["social_network","get_active_votes",["aaaladno","prud-pered-grozoij"]]}

ws.golos.io отдаёт информацию на любой из этих запросов.
api.golos.cf ни на один. :-\

27.03.2018 07:10
0