Этика ботоводства на голосе и экономия ресурса паблик нод. Robot - делегат за которого не нужно голосовать :)


Данный пост особенно касается пользователей, которые используют собственные скрипты для массового фолловинга и сканирования блокчейна тяжелыми API запросами на манер get account history и используют паблик ноду ws.golos.io


Почему я НЕ РЕКОМЕНДУЮ использовать wss://ws.golos.io для ботов

tol.jpg


  1. Вы мешаете работе голоса, так как подключаетесь к основной паблик ноде. Чем больше нагрузка - тем больше затраты. А затраты на голосе - затраты для всех :)
  2. Лимит нагрузки - ваш бот будет пропускать действия, поскольку возможен ratelimit для вашего ip/аккаунта
  3. Вытекающее из пункта 1 - ваша деанонимизация и запись логов обращений к wss://ws.golos.io
  4. Скорость работы. Если сравнивать с локальной нодой - обращение на внешний 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

/~witnesses
@robot'y нет нужды подниматься в рейтинге выше, так как это повлечет только большее количество блоков на подпись, а робот будет занят другими задачами :)


Public seed & Public API для ботов на ноде @robot

Я так же планирую сделать ноду открытой-публично, но на данном этапе разбираюсь как это все сделать наилучшим образом в связке с TLS, UFW и Nginx


Ссылки которые могут пригодиться

https://t.me/chain_cf - Чат, где всегда можно получить ответ на множество технических вопросов.
Установка локальной ноды
Боты для голосования - последнее обновление
Античит фолловинга у robot
О Robor
О Dobrobot
@ropox - рекомендован к подписке, делегат и автор Добробота.
Зачем нужно самостоятельно поднимать альтернативные клиенты ГОЛОСа и как их монетизировать


Comments 21


поддерживайте только @vik

согласен.

04.08.2017 11:26
0

Правильные советы. Думаю всем кто заводит ботов надо свои ноды поднимать.

04.08.2017 11:27
0

Буду вынужден согласиться и не согласиться)) На мой взгляд боты в целом полезные, но конкретно бот-подписант это как-то дико для меня. А когда вижу сообщения от людей, что они подписались на ВСЕХ - вообще впадаю в прострацию

04.08.2017 11:29
0

бот-подписант это как-то дико для меня. А когда вижу сообщения от людей, что они подписались на ВСЕХ - вообще впадаю в прострацию

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

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

04.08.2017 11:43
0

Если преступность нельзя искоренить - то пусть она будет организованной))

04.08.2017 11:44
0

Спасибо за пост. Я не пользуюсь ботами, но мне просто интересно было всё это почитать и немного больше понять, как устроен голос.

04.08.2017 11:35
0

супер! Вик молодец!

04.08.2017 11:35
0

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

Вот мой бот, например, каждые три секунды запрашивает новый блок данных? Историю не скачивает. Я вначале интересовался, нормально ли так делать, сказали, вроде, норм.

04.08.2017 11:49
0

Опрашивание блоков - легкий запрос. Тут проблемы вообще нет.
Ресурсоемкие - это выборки разной истории, особенно циклами.

этичные рэйты запросов к официальной ноде?

Кроме официальной ноды есть еще и не официальные :) Список их есть на github. Так же я открою публичный доступ к своей ноде/нодам, когда разберусь с настройкой сервера

04.08.2017 12:15
0

Звал здесь @sept
по поводу того, что бот будет:
а) подписываться на новичка с первого поста;
б) присылать мониторящим кураторам уведомления-превью на первые 10 постов;
в) отписываться.

04.08.2017 11:52
0

@vik
нам для п. а)
нужно ещё умения бота ориентироваться по тегам:
1) чтобы он в превью выписывал заюзанные для поста теги;
2) чтобы он реагировал на юзеров с первым* постом только по заданным тегам.

  • с первым и последующими постами
    потому как будут работать разные кураторы по своим категориям:
    вот источник
    /ru--golos/@sept/predlozhenie-po-uluchsheniyu-pervogo-opyta-novykh-polzovatelei
04.08.2017 13:29
0

@vik, скажи, вот есть в сети скажем 300 нод - новый блок за 3 секунды успеет расползтись по всем нодам и записаться в них? То есть можно коннектиться к любой ноде, не боясь что проворонишь какой-то блок?

04.08.2017 12:11
0

В теории - да.

Но в последнее время происходит какая-то мистика с потерей постов по пути к блокчейну и временном сохранении их в пребуфере по идее которого не делали :)

Так что:

04.08.2017 13:12
0

Так что бдим...

04.08.2017 13:50
0

Я бы поставил локальную ноду, да боюсь, не разберусь. Судя по моему опыту работы с api, документация оставляет желать документации.

У меня есть старенький комп с Убунтой, могу экспериментировать на нём. Или старенький не подойдёт, нужен помощнее?

touch golos-install.sh nano golos-install.sh

И всё, и у меня нода? Там же наверняка ещё человекосутки, а то и двое, уйдут на конфигурацию. Как к ней потом ботами обращаться - просто ws://192.168.0.123:9090?

04.08.2017 12:22
0

Прочитал сегодня про ситуацию с нодами на Стимит, довольно грустно выглядит...
Думаю, и здесь похоже все
https://goldvoice.club/steem/@furion/updates-on-steem-python-steemdata-and-the-node-situation

04.08.2017 12:53
0

И всё, и у меня нода? Там же наверняка ещё человекосутки, а то и двое

Нет, это пару минут. Но почти сутки нужно ждать синхронизации блокчейна если это первый запуск и HDD диск. На SSD пару часов.
И надо хотя бы 8 GB оперативной памяти и диска 30GB

Как к ней потом ботами обращаться - просто ws://192.168.0.123:9090?

Да, после синхронизации :)

И всё, и у меня нода?

Да, но лучше для первого раза ставить руками, что бы понимать, что к чему:

Ставим зависимости
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

В ответ вы получите три ключа

  • brain_priv_key
  • wif_priv_key
  • pub_priv_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" "/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

При первом запуске нода может синхронизироваться почти целый день!

04.08.2017 13:02
0

Нет, это пару минут.
Нода запустится с ошибкой
Отредактируйте config.ini
вставить ключ. Его нужно создать
там вводим команду
создать локальный пароль
и команда
Далее команду
сохраните
Далее wif ключ вставьте
нужно править только
можете объявить себя делегатом
Все :)
Можно запускать.

У вас такие длинные пара минут, я прямо завидую. Думаю, у меня уйдёт пара часов, если найду памяти на восемь гигов. Но скорее всего, там два гига, а не восемь, так что я останусь без своей карманной ноды.

04.08.2017 14:51
0

Эм... А почему не вынести этот комментарий в отдельный пост?)

04.08.2017 14:55
0

Подумалось: " пост @vik для меня, старпера, словно шифровка "Алекс Юстасу" , которую случайно держу в руках." Но, ёлы-палы, я же инженер СССР! Разберёмся! Спасибо, @vik, что Вы просвещаете, уже 2й раз с помощью Ваших текстов въезжаю в глюки собственного кабинета и расширяю(что очень важно для мозга) общие алгоритмы, имеющие место быть в Golos.io

04.08.2017 15:52
0

Правильно ли я рассуждаю, что если устанавливать свою ноду, то есть смысл поставить цель стать делегатом? Где бы подробно почитать о делегатстве?

04.08.2017 21:03
0

Все разобрался.

05.08.2017 02:13
0

Кардинальной и фатальной ошибкой божьего человека является попытка стать Богом. Робот, даже если Вы наимудрейший из мудрых ХХI века, не может быть Вами создан по образу и подобию. Это детство, оно пройдёт.)))

05.08.2017 16:18
0

И это ^ тоже пройдет :)

05.08.2017 16:35
0

))) хорошо, когда возрастные проблемы заигравшихся детей не приводят в тупик. Правда, vik?

05.08.2017 16:39
0

Да, вы действительно поставили меня в тупик своей патетикой :)
Я предпочитаю немного более лаконичный диалог, без незрелой эзотерики и недосказанности.

05.08.2017 17:52
0

Нет недосказанности @vik, ибо я Вам писал пару дней назад.Вероятно, не менее развитый программер подсказал мне адресата.Не звёзды.По поводу того, что глючит мою "историю" в кабинете. Подобные проблемы не только у меня. Есть веские причины предполагать, что это толчея скриптов разных кураторов, наблюдателей и т.д. Т.е. у меня не жалоба, я взрослый мальчик, но кто-то, обладающий квалификацией о проблемах ботов может адекватно делиться информацией и помочь юзеру, который не пользуется ботами, самостоятельно читает до 40 постов в день, радеет о новой сети и всем желает эволюционного развития? Я же Ваш подписчик. Я же на Вас рассчитываю.)))

05.08.2017 19:15
0

@astrofilosof

По поводу того, что глючит мою "историю" в кабинете. Подобные проблемы не только у меня.

Да, действительно, проблема бывает, только опишите ее чуть подробнее или пришлите ссылку на свой прошлый запрос :)
Какая именно история? Трансферы?

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

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

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

http://golosd.com/witnesses

Когда Participation падает ниже 100% - это может быть плохим знаком


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

05.08.2017 19:44
0

@astrofilosof , не смотря на катастрофическую нехватку времени, я стараюсь всегда реагировать на любые вопросы/просьбы, потому немного удивился вашей реплике:

ибо я Вам писал пару дней назад.Вероятно, не менее развитый программер подсказал мне адресата.Не звёзды.

Мне казалось, что вы получили от меня ответ на свой пост :)

Вы имеете в ввиду, что @robot сообщает только о части действий. Это действительно так, и так задумано.

Робот просто как вспомогательный инструмент, он сообщает о тех действиях, о которых не сообщается на сайте. Поскольку ответы/комментарии сигнализируются в вашем профиле самим сайтом, то робот о них не сообщает. Робот сообщает об остальных уведомлениях: репостах, подписках, игноре и уведомлениях.

При этом уведомления могут быть пропущены в двух случаях:

  1. Пропуск упоминания. Если автор поста с уведомлением не предусмотрел это технически (добавлял пост не через сайт голоса и не указал специальное поле имен, которое автоматически указывается при публикации через сайт)
  2. Пропуск уведомления о подписке.
    Робот не всегда сообщает о подписке, поскольку я ограничил это уведомление таким образом, что уведомление приходит только если инициатор действия не является ботом.
    Причины такого ограничения тут

    Так же напомню, что @robot не имеет отношения к команде голоса. Как и я. Это просто "народный" инструмент, но поскольку он требует ресурсов и ресурсы я оплачиваю сам - я оставляю за собой право вводить некоторые лимиты на злоупотребление :)

PS под злоупотреблением я имею в ввиду не вас, а тех пользователей, которые автоматически подписываются на всех-всех. Уведомление о их подписках я не присылаю.
Но вы можете всегда детально изучить историю аккаунта тут: http://golosd.com/@astrofilosof

05.08.2017 20:17
0

Подскажите пожалуйста, а что даёт новичку голосование за делегатов?

05.08.2017 17:51
0

а что даёт новичку голосование за делегатов?

Напрямую - ничего.
А косвенно вы выбираете пользователей (делегатов) которые должны развивать голос, при условии, что делегат установил нужное оборудование на своем сервере.
Но в случае с новичками, если у вас слишком малая сила голоса - ваш голос почти не повлияет на позицию делегата, но может быть просто добрым жестом.

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

На голосе же, все ресурсы, мощности, экономику и развитие предполагается сосредоточить не в руках некоего ОДНОГО "хозяина" голоса, а в руках всех пользователей.
Но так как ВСЕ пользователи не могут устанавливать необходимое оборудование для поддержания сети, то его устанавливают только технически осведомленные участники. Делегаты. Они тратят свои ресурсы и средства на поддержание сети, а взамен получают вознаграждение от голоса каждый раз, когда подписывают блок. Частота такого вознаграждения делегату как раз и зависит от количества и веса полученых голосов от пользователей.

Более подробно описано здесь:
https://wiki.golos.io/delegatstvo.html

05.08.2017 18:04
0

Спасибо за развёрнутый ответ!

05.08.2017 18:08
0

@vik, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:

  • Голосов - 3 позицию - 229 Голосов
  • Выплаты - 8 позицию - 1761,5630 GBG
06.08.2017 06:33
0

я вам даю голос а вы мне /ru--avto/@abduhamid/r2-i-gm-vladeet-pyatyu-iz-samykh-dorogikh-inostrannykh-brendov-na-rossiiskii-rynok-vyshla

09.08.2017 18:02
0