Данный пост особенно касается пользователей, которые используют собственные скрипты для массового фолловинга и сканирования блокчейна тяжелыми API запросами на манер get account history
и используют паблик ноду ws.golos.io
Почему я НЕ РЕКОМЕНДУЮ использовать wss://ws.golos.io для ботов
- Вы мешаете работе голоса, так как подключаетесь к основной паблик ноде. Чем больше нагрузка - тем больше затраты. А затраты на голосе - затраты для всех :)
- Лимит нагрузки - ваш бот будет пропускать действия, поскольку возможен ratelimit для вашего ip/аккаунта
- Вытекающее из пункта 1 - ваша деанонимизация и запись логов обращений к wss://ws.golos.io
- Скорость работы. Если сравнивать с локальной нодой - обращение на внешний wss://ws.golos.io может быть в разы медленнее.
Поскольку подключение к ws.golos.io для массовых действий получит некоторые лимиты нагрузки, гораздо эффективнее будет использовать собственные, независимые и децентрализованные ноды.
Однако, если у вас нет возможности установить собственную ноду для golos (https://github.com/GolosChain/golos) , но вам нужно выполнять масс-фолловинг или другие массовые или объемные обращения к блокчейну, то я позднее предложу вам очередного бота, который будет подключен к моей локальной ноде.
Телеграм-Бот для массового фолловинга и получения подписчиков на локальной ноде Robot
Алгоритм бота-подписанта пока проектируется, а значит самое время оставить свои пожелания.
Пока идеи следующие:
Это будет бот для телеграм, подключенный к моим нодам (нет лимита rate limit по api запросам, нет нагрузки на публичные ноды)
Список юзеров-целей для подписки предполагается брать так:
Вы подписываетесь руками на доноров с большим количеством подписчиков, запускаете бот, он автоматически сканирует и подписывается на всех подписчиков донора.
При этом можно поднять пороги оценки пользователя, не подписываться на пустышек и новорегов.
Или вариант опции - подписка на свежих авторов размещающих посты
По поводу отписок - пока идея только такая: запуск бота через время после подписки - проверка своих подписчиков - если нет взаимности - отписка.
Почему я НЕ РЕКОМЕНДУЮ массовый фолловинг всех аккаунтов без фильтрации
Потому что, это плохой маркетинг :) Очевидная цель вашей авто-подписки - это взаимность пользователя.
При этом активно-голосующего пользователя, с некоторым опытом и силой на голосе. А такой экземпляр едва-ли подпишется на вашего бота, который добавляет всех по алфавиту :) Потому в основу бота будет заложен принцип не массовости, а эффектиности действий.
О делегате-неделегате @robot
Около двух недель назад я стал замечать растущее количество пропущенных блоков своей делегатской нодой vik, так как это совпало с проблемами у kuna и нескольких других делегатов, сперва я все списал на живое тестирование 17-й ветки хардфорка некоторыми пользователями, но заглянув в лог увидел нечто подобное:
"Нода курильщика"
"Нода здорового делегата"
Такая картина, как на первом скрине, практически 24/7, желтые строки - это обращение и активное взаимодействие с нодой более чем 20-ти разнообразных ботов на моем сервере.
Это прежде всего:
@robot и @dobrobot, а так же телеграм боты:
🤖 GolosRobot
🤖 hottabot
🤖 up2Bot
🤖 uppBot
🤖 upvBot
🤖 xvoteBot
🤖 votexBot
🤖 solocuratorBot
🤖 G0fuckBot
🤖 mapalabot
🤖 mapvotebot
🤖 upvotemebot
Все телеграм боты используются как минимум 5 аккаунтами, а в некоторых количество пользователей доходит до 50 и каждый из пользователей в каждом боте генерируюет как минимум один запрос каждые 3 секунды.
Так же на ноде работают мои скрипты для поиска твинков и фрауда в отношении робота.
Все это подключалось локально к ноде vik, что позволяло работать намного быстрее, чем при подключении к wss://ws.golos.io
, а кроме скорости мой ws://localhost:9090
можно было назвать ярким примером децентрализации и крипто-канонов - так как обращаясь к собственной ноде - действия ботов и характер запросов не только не нагружает паблик-ноду голоса, но так же не оставляет логов на сервере голоса. Например IP адреса вашего сервера или ПК.
Но следствием такой активной деятельности стали пропуски блоков у @vik
Поэтому на данный момент к ноде vik
больше не подключены боты, а создана отдельная нода @robot
Почему не нужно отдавать голос за @robot в делегатах
Если вы хотите поддержать @vik или @robot как делегата, поддерживайте только @vik
https://golos.id/~witnesses
@robot'y нет нужды подниматься в рейтинге выше, так как это повлечет только большее количество блоков на подпись, а робот будет занят другими задачами :)
Public seed & Public API для ботов на ноде @robot
Я так же планирую сделать ноду открытой-публично, но на данном этапе разбираюсь как это все сделать наилучшим образом в связке с TLS, UFW и Nginx
Ссылки которые могут пригодиться
https://t.me/chain_cf - Чат, где всегда можно получить ответ на множество технических вопросов.
Установка локальной ноды
Боты для голосования - последнее обновление
Античит фолловинга у robot
О Robor
О Dobrobot
@ropox - рекомендован к подписке, делегат и автор Добробота.
Зачем нужно самостоятельно поднимать альтернативные клиенты ГОЛОСа и как их монетизировать
Правильные советы. Думаю всем кто заводит ботов надо свои ноды поднимать.
я вам даю голос а вы мне https://golos.id/ru--avto/@abduhamid/r2-i-gm-vladeet-pyatyu-iz-samykh-dorogikh-inostrannykh-brendov-na-rossiiskii-rynok-vyshla
@vik, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
Подскажите пожалуйста, а что даёт новичку голосование за делегатов?
Напрямую - ничего.
А косвенно вы выбираете пользователей (делегатов) которые должны развивать голос, при условии, что делегат установил нужное оборудование на своем сервере.
Но в случае с новичками, если у вас слишком малая сила голоса - ваш голос почти не повлияет на позицию делегата, но может быть просто добрым жестом.
Голос - децентрализованная сеть. Например у Facebook, VK и других соцсетях есть свои главы правления, которые принимают решения, управляют компанией, финансами, вектором развития и т.д. Это централизованные корпорации, где мнения акционеров или пользователей имеют крайне незначительное влияние.
На голосе же, все ресурсы, мощности, экономику и развитие предполагается сосредоточить не в руках некоего ОДНОГО "хозяина" голоса, а в руках всех пользователей.
Но так как ВСЕ пользователи не могут устанавливать необходимое оборудование для поддержания сети, то его устанавливают только технически осведомленные участники. Делегаты. Они тратят свои ресурсы и средства на поддержание сети, а взамен получают вознаграждение от голоса каждый раз, когда подписывают блок. Частота такого вознаграждения делегату как раз и зависит от количества и веса полученых голосов от пользователей.
Более подробно описано здесь:
https://wiki.golos.io/delegatstvo.html
Спасибо за развёрнутый ответ!
Кардинальной и фатальной ошибкой божьего человека является попытка стать Богом. Робот, даже если Вы наимудрейший из мудрых ХХI века, не может быть Вами создан по образу и подобию. Это детство, оно пройдёт.)))
И это ^ тоже пройдет :)
))) хорошо, когда возрастные проблемы заигравшихся детей не приводят в тупик. Правда, vik?
Да, вы действительно поставили меня в тупик своей патетикой :)
Я предпочитаю немного более лаконичный диалог, без незрелой эзотерики и недосказанности.
@astrofilosof
Да, действительно, проблема бывает, только опишите ее чуть подробнее или пришлите ссылку на свой прошлый запрос :)
Какая именно история? Трансферы?
Не исключено, именно об этом я писал в посте выше - предлагал ботоводам использовать собственные ноды. Так как если "толчея" происходит на собственной ноде - это не создает нагрузку на голос.
Но ноды делегатов могут иметь негативное влияние иным способом: сейчас команда занимается обновлением (хардфорком) и он частично уже доступен на github, некоторые делегаты запускают версию, которая еще не принята большинством, это так же может привести к некоторым ошибкам на сайте.
Достаточно посмотреть здесь
http://golosd.com/witnesses
Когда
Participation
падает ниже 100% - это может быть плохим знакомВ любом случае о проблемах команда знает. Практически о каждом баге сообщается. Некоторые из них фиксятся почти сразу, а некоторые требует трудоемкого анализа, а поскольку главный приоритет - это обновление (хардфорк), то некоторые проблемы, как я полагаю, команда просто игнорирует и бросает основные силы на завершение обновления, которое кроме новшеств, устранит баги текущей версии.
@astrofilosof , не смотря на катастрофическую нехватку времени, я стараюсь всегда реагировать на любые вопросы/просьбы, потому немного удивился вашей реплике:
Мне казалось, что вы получили от меня ответ на свой пост :)
Вы имеете в ввиду, что @robot сообщает только о части действий. Это действительно так, и так задумано.
Робот просто как вспомогательный инструмент, он сообщает о тех действиях, о которых не сообщается на сайте. Поскольку ответы/комментарии сигнализируются в вашем профиле самим сайтом, то робот о них не сообщает. Робот сообщает об остальных уведомлениях: репостах, подписках, игноре и уведомлениях.
При этом уведомления могут быть пропущены в двух случаях:
Пропуск упоминания. Если автор поста с уведомлением не предусмотрел это технически (добавлял пост не через сайт голоса и не указал специальное поле имен, которое автоматически указывается при публикации через сайт)
Пропуск уведомления о подписке.
Робот не всегда сообщает о подписке, поскольку я ограничил это уведомление таким образом, что уведомление приходит только если инициатор действия не является ботом.
Причины такого ограничения тут
Так же напомню, что @robot не имеет отношения к команде голоса. Как и я. Это просто "народный" инструмент, но поскольку он требует ресурсов и ресурсы я оплачиваю сам - я оставляю за собой право вводить некоторые лимиты на злоупотребление :)
PS под злоупотреблением я имею в ввиду не вас, а тех пользователей, которые автоматически подписываются на всех-всех. Уведомление о их подписках я не присылаю.
Но вы можете всегда детально изучить историю аккаунта тут: http://golosd.com/@astrofilosof
Нет недосказанности @vik, ибо я Вам писал пару дней назад.Вероятно, не менее развитый программер подсказал мне адресата.Не звёзды.По поводу того, что глючит мою "историю" в кабинете. Подобные проблемы не только у меня. Есть веские причины предполагать, что это толчея скриптов разных кураторов, наблюдателей и т.д. Т.е. у меня не жалоба, я взрослый мальчик, но кто-то, обладающий квалификацией о проблемах ботов может адекватно делиться информацией и помочь юзеру, который не пользуется ботами, самостоятельно читает до 40 постов в день, радеет о новой сети и всем желает эволюционного развития? Я же Ваш подписчик. Я же на Вас рассчитываю.)))
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
yefet, losos, litrbooh, ianboil, strecoza, ukrainian, smotritelmayaka, kavalsky, andrvik, archibald116, oleg257, zoss, phoenix, dreamer, harhor, dimarss, kot, tristamoff, forbon21, shuler, genyakuc, brovaryleaks, vadbars, vasilisapor2, chika25, nikalaich, semasping, ladyzarulem, gans91, voltash, tnam0rken, karusel1, asuleymanov, bystree, exan, gapel, polyakov, vika-teplo, sva-lana, nims55, felicita, optimist, anomalywolf, talia, graff0x, bombo, makcum52, tati, astrofilosof, dignityinside, wedge, dunsky
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!
Подумалось: " пост @vik для меня, старпера, словно шифровка "Алекс Юстасу" , которую случайно держу в руках." Но, ёлы-палы, я же инженер СССР! Разберёмся! Спасибо, @vik, что Вы просвещаете, уже 2й раз с помощью Ваших текстов въезжаю в глюки собственного кабинета и расширяю(что очень важно для мозга) общие алгоритмы, имеющие место быть в Golos.io
Я бы поставил локальную ноду, да боюсь, не разберусь. Судя по моему опыту работы с api, документация оставляет желать документации.
У меня есть старенький комп с Убунтой, могу экспериментировать на нём. Или старенький не подойдёт, нужен помощнее?
touch golos-install.sh nano golos-install.sh
И всё, и у меня нода? Там же наверняка ещё человекосутки, а то и двое, уйдут на конфигурацию. Как к ней потом ботами обращаться - просто ws://192.168.0.123:9090?
Нет, это пару минут. Но почти сутки нужно ждать синхронизации блокчейна если это первый запуск и HDD диск. На SSD пару часов.
И надо хотя бы 8 GB оперативной памяти и диска 30GB
Да, после синхронизации :)
Да, но лучше для первого раза ставить руками, что бы понимать, что к чему:
Ставим зависимости
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
Клонируем ноду с гитхаб:
git clone https://github.com/GolosChain/golos && cd golos && git checkout tags/v0.16.4 && git submodule update --init --recursive && cmake -DCMAKE_BUILD_TYPE=Release . && make -j$(nproc)
Далее ждем достаточно долго компиляции
Обратите внимание на тэг
tags/v0.16.4
- ставить нужно актуальный, напримерtags/v0.17.0
когда примут ХФ. Но не сейчас!После компиляции
запускаем ноду, для этого нужно перейти по по пути
cd /golos/programms/golosd
и выполнить там команду
./golosd
Нода запустится с ошибкой и появится папка
witness_node_data_dir
Отредактируйте config.ini что бы выглядел вот так
https://pastebin.com/raw/U8X3znqJ
Там где приватный ключ подписи, вам нужно вставить ключ. Его нужно создать.
Для этого идем в кошелек по пути
cd /golos/programms/cli_wallet
И там вводим команду
./cli_wallet --server-rpc-endpoint="ws://localhost:9090"
Вам будет предложено создать локальный пароль для кошелька
После
unlock ***Ваш пароль***
И команда
import_key 5**************************************
Где ключ должен быть "активный" или "обсуждаемое" как названо в кошельке на голосе из-за трудностей перевода :)
Далее команду
suggest_brain_key
В ответ вы получите три ключа
Надежно сохраните их без доступа третьим лицам.
Далее wif ключ вставьте в конфиг по пути
/golos/programms/golosd/config.ini
Сам конфиг я упоминал выше, дублирую:
https://pastebin.com/raw/U8X3znqJ
В нем вам нужно править только
witness = "robot"
private-key = 555555555555ключ подписи5555555555555555555
Ваш логин и ключ для подписи блоков
wif_priv_key
, которые вы получили выше.Далее вы можете объявить себя делегатом.
Это будет публично видно в БЧ, потому не ошибитесь ключем - в команду вставлять следует только pub ключ, публичный, сама команда выглядит примерно так:
update_witness "robot" "https://golos.io/delegat/@robot/mini-faq-o-robot" GLS89giWPySnsWXf6z4V5rfQeizUKhzxkB6EYxzJkA78UVMB2KKYr {"account_creation_fee":"3.000 GOLOS", "maximum_block_size":131072, "sbd_interest_rate":1000} true
robot замените на свой логин, публичный ключ на свой.
Ссылку на пост о себе.
НО! Если вы не собираетесь держать ноду активной 24/7 вам следует указать публичный ключ вида:
GLS1111111111111111111111111111111114T1Anm
- этим вы как бы сообщите, что ваша нода не активна для подписания блоков и если вы не активны, а ваша очередь подписать блок - он не будет являться пропущенным и не будет отображаться в блокчейне как ваш missed блок. Это важно для репутации делегата.Все :)
Можно запускать.
Идем в папку:
cd /golos/programms/golosd
И там
./golosd
Только лучше через screen в отдельном терминале
Что бы нода работала в фоне
Например
screen -S OKNODLYADELEGATA
Создаст отдельный терминал в котором вы сможете запустит ноду:
cd /golos/programms/golosd
И там
./golosd
а затем
Ctrl
+A
+D
выйти из терминала не отключая скрипты в нем.Вы выходите в главное окно и делаете свои другие дела.
Что бы вернуться в окно, команда:
screen -x OKNODLYADELEGATA
Посмотреть все открытые терминалы:
screen -ls
При первом запуске нода может синхронизироваться почти целый день!
Эм... А почему не вынести этот комментарий в отдельный пост?)
У вас такие длинные пара минут, я прямо завидую. Думаю, у меня уйдёт пара часов, если найду памяти на восемь гигов. Но скорее всего, там два гига, а не восемь, так что я останусь без своей карманной ноды.
Прочитал сегодня про ситуацию с нодами на Стимит, довольно грустно выглядит...
Думаю, и здесь похоже все
https://steemit.com/steem/@furion/updates-on-steem-python-steemdata-and-the-node-situation
@vik, скажи, вот есть в сети скажем 300 нод - новый блок за 3 секунды успеет расползтись по всем нодам и записаться в них? То есть можно коннектиться к любой ноде, не боясь что проворонишь какой-то блок?
В теории - да.
Но в последнее время происходит какая-то мистика с потерей постов по пути к блокчейну и временном сохранении их в пребуфере по идее которого не делали :)
Так что:
Так что бдим...
Звал здесь @sept
по поводу того, что бот будет:
а) подписываться на новичка с первого поста;
б) присылать мониторящим кураторам уведомления-превью на первые 10 постов;
в) отписываться.
@vik
нам для п. а)
нужно ещё умения бота ориентироваться по тегам:
потому как будут работать разные кураторы по своим категориям:
вот источник
https://golos.id/ru--golos/@sept/predlozhenie-po-uluchsheniyu-pervogo-opyta-novykh-polzovatelei
А как определить этичные рэйты запросов к официальной ноде?
Сомневаюсь, что достижимо каждому ботоводу поднять свою ноду для этого.
Вот мой бот, например, каждые три секунды запрашивает новый блок данных? Историю не скачивает. Я вначале интересовался, нормально ли так делать, сказали, вроде, норм.
Опрашивание блоков - легкий запрос. Тут проблемы вообще нет.
Ресурсоемкие - это выборки разной истории, особенно циклами.
Кроме официальной ноды есть еще и не официальные :) Список их есть на github. Так же я открою публичный доступ к своей ноде/нодам, когда разберусь с настройкой сервера
супер! Вик молодец!
Спасибо за пост. Я не пользуюсь ботами, но мне просто интересно было всё это почитать и немного больше понять, как устроен голос.
Буду вынужден согласиться и не согласиться)) На мой взгляд боты в целом полезные, но конкретно бот-подписант это как-то дико для меня. А когда вижу сообщения от людей, что они подписались на ВСЕХ - вообще впадаю в прострацию
У меня абсолютно такое же мнение :)
Но некоторые вещи нельзя искоренить, даже если это абсурдные вещи.
Всегда будут пользователи, которые будут устраивать массовые, раздражающие действия. Поскольку в децентрализованном обществе запретить их нельзя - можно попытаться сделать их логичнее и гуманнее :)
Тот же принцип, что с ботами для голосования - их нельзя было искоренить как идею, но получилось сделать инструмент, в котором сочетается и бот и решения пользователя.
Если преступность нельзя искоренить - то пусть она будет организованной))
согласен.