🔬 Публичные ноды 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:
Код
Результат
Инсталляция собственной ноды 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