Я как и все жду хардфорка, и как у всех для меня важна экономическая составляющая. Но поскольку я редко пишу в блог, для меня экономика в большей степени связана со стоимостью серверов и временем на обслуживание нод, а не кривой вознаграждений или бенефициарством с постов набравших 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 [email protected]
И далее
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:
Код
Результат
Инсталляция собственной ноды 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
По-моему,
get_following()
иget_followers()
возвращают одно и то же — тех, кто подписан, но не тех, на кого подписан.Вы правы! Оба метода возвращают followers.
https://github.com/GolosChain/golos/issues/477
После фикса моя нода будет пересобрана. К сожалению сроки не меньше дня, а если понадобится ресинхронизация - еще дольше. (перерывов в работе не будет, так как ресинх будет на резервной ноде, потом они просто переключатся)
Аномальное — это сколько? У меня постоянно вылетает то ConnectionTimeout, то ResponseTimeout, это оно? Я юнит-тесты сейчас прогоняю, там ну... пять запросов подряд, потом затишье на пару минут, пока код не поправлю, и опять запросы.
Я сделал лимиты мягче, подобные ошибки должны возникать значительно реже или не возникакать вовсе.
Если все останется по прежнему - сообщите пожалуйста, это будет значить, что проблема в чем-то другом.
Добавлю. Чуть схемы не расплавил, пока не поймал нюанс.
В вызовах функций не требующих параметров, надо указывать пустые параметры.
{
"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 ни на один. :-\
..не могли бы Вы, как уважаемый делегат, дать какие нибудь внятные пояснения по ожидаемому всеми ХФ!?...с разных сторон слышатся какие-то даты, даже уже прошедшие, но никто толком ничего не может сказать, пусть не окончательно, но хотя бы близко к реальности!!! КОГДА ЖЕ ВСЕ-ТАКИ ОЖИДАЕТСЯ ЭТОТ ХФ!?!?!
Это прописано в коде:
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-апреля вступит в силу новая экономика.
Раньше - только если топ делегаты дружно поставят другие ноды, где дата будет другая.
Дата обусловлена тем, что обновить ноду должен и @bittrex - и обновлять сомнительное железо сомнительного токена для биттрекса не высокий приоритет, это очевидно :)
Мне кажется если выбирать между скоростью принятия ХФ и опасностью делестинга - лучше уж подождать неделю другую.
А вот если токен будет в любом случае делистнут - тогда уже можно брать хардфорк от гороха и ставить дату хоть на завтра.
...спасибо большое!...все понятно...
А наступающий хардфорк... не от гороха разве? Эх, упустил видимо последние новости))
4 апреля.
Печаль.... говорили что после 8-го марта... эдэк... теперь до 4 апреля растянулось.
@vik , а сколько надо что бы установили делегатов новый ХФ, для того, чтобы он 4 апреля вступил в силу? 17 или 19?
@vik , а вот такой вопрос ещё как к знающему делегату: не затронет ли новая экономическая модель систему с начислением процентов за хранение gbg-шек? И вообще, сейчас каким образом эта система работает: начисляют проценты за хранение Gbg или gbg и Голос-токенов тоже? Читал статью в Вики на эту тему, не очень понятно там описано.
Новая экономическая модель не затрагивает эти параметры.
Эти параметры заложены изначально.
Печать GBG прекратилась
sbd_print_rate 0
Процент за хранение GBG прежний
sbd_interest_rate 1000
Процента за хранения GOLOS никогда не было, так как это было бы не логично учитывая концепцию с силой голоса.
Благодарю за ответ) Вик, а что значит печать ГБГ прекратилась? можно подробнее чуть?
Это оригинальная статья, которая поможет разобраться в экономике так, как ее задумал создатель стимита https://steemit.com/steem/@dantheman/steem-dollar-stability-enhancements
На голосе должен быть перевод, попробуйте в поиске
Если GBG превысит 20% капитализации GOLOS и если перенимать нынешний подход стимит - произойдет автоматическая конвертация 1-го %
https://steemit.com/steemit/@dantheman/steem-dollars-have-limits
Правила блокчейна (придуманные не основателями голоса, а основателем стимит)
GBG не может быть более 10% от общей капитализации GOLOS, потому когда GBG становится более 5% их печать останавливается.
Из WIKI:
—-
Золотой, обеспеченный ГОЛОСАМИ
В оригинальной разработке используется Стимдоллар. Стимдоллар - это долговое обязательство блокчейна Стим выплатить 1 американский доллар Стимами в течение недели по средненедельному курсу. В блокчейне Голос будет действовать аналогичный токен, но привязанный к цене 1 миллиграмма золота - Золотой или Золотой, обеспеченный ГОЛОСАМИ (Gold backed by GOLOS, GBG). Несмотря на то, что большинство русскоязычного населения планеты (или 52.6%) являются пользователями российских рублей - государственной денежной единицы Российской Федерации, мы считаем российский рубль не подходящим для наших целей по следующим причинам:
Постоянное обесценивание российского рубля как по отношению к прочим национальным валютам, так и золоту. График 1 показывает что с 2000 года по отношению к золоту рубль обесценился в 10 раз (доллар, для сравнения, - в 5 раз).
Неудобство использования рублей для пользователей из Украины, Беларуси, Казахстана и других стран, в которых Русский язык популярен.
Историческая стабильность курса на золото делает токен, привязанный к его цене, отличным инструментом для сбережений и международных расчетов. Предложенное нами решение является надежной альтернативой для хранения безналичной ценности в привязке к цене золота без ограничений и недостатков, накладываемых традиционными финансовыми инструментами.
понятно :) @vik , то есть на текущий момент ГБГ-шек уже более 5% от общей капитализации Голоса? А это влияет на что-нибудь ещё, кроме как останавливается их печать? И что будет, когда более 10% станет?
Этого же не было в ХФ от Гороха (который потом допилили Голос-кор), если не ошибаюсь. Объясните, что за фишка и откуда она взялась, @vik ? :)
Эта фишка давно есть в Steemit - дает возможность разработчику приложения через который публикуется пост брать себе процент с выплаты.
На стимит разработчики берут процент за публикацию через их приложения, но и ставят апвоты своим авторам. Выгодно обеим сторонам + привлекает новых разработчиков.
Понятно) просто в посте Голос-кор эта фишка звучит немного по другому:
"Reward beneficiaries - внесено вознаграждение приложений" , поэтому немного не понятно было - одно и тоже это или нет. Теперь ясно, что одно и тоже.
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
sharker, t3ran13, boddhisattva, narin, radomir, oleg257, dimarss, tinochka, vadbars, kotik, yourlastwinter, olga-olga, vict0r, semasping, ladyzarulem, kssenia, lira, gryph0n, ladynazgool, tnam0rken, decha, zivchakh, rubin, ovtretya, newodin, aivanouski, oksana0407, vika-teplo, sterh, lenutsa, virt, aiparnyuk, felicita, hyipov, amelina.elena, seagull15, talia, graff0x, olgaborisova, bombo, manavendra, dimas102, lengalenga, lokkie, bag, dim447, shenanigan, ksantoprotein, massatela, byurotegov, firestarter, amalinavia, chirakovalsky, konstab, yakubovruslan, doctormucle, astramar, cryptovisitor, zelivsky, html, benken, funt33, leonid96, valen-tina, orlova, siddxa, osra111, lologom, anykeycheg, delectat, yurij12, borgerry
Поэтому я тоже проголосовал за него!
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
@vik, в таком коде:
или в таком
уже сейчас можно добавлять
jsonrpc: '2.0'
?@vik, как думаешь, если собрать рядом новую версию ноды и просто переключить конфиг на старые данные - все подхватится? Не пробовал? А то у меня только опыт установки с нуля 0.17.0, апгрейдиться еще не пробовал.
Смотря какие плагины используются. API ведь поменялось. Без
--replay
будут данные не полными. Пройдет ли replay со старым индексом и новой нодой - сомневаюсь. А учитывая сколько занимает replay - не вижу причин не поставить чистую версию и засинхронизировать.Будет в вики внесены изменения в алгоритм действий для того чтобы стать делегатом?
Никаких изменений в алгоритме нет. И вряд-ли будут :)