Наверное многие замечали последние месяца три, что иногда не переводятся монеты, не доходят апвоты, пропадают посты или комментарии.
Мне кажется я нашел причину этому. Может быть я ошибаюсь, возможно причина в другом. Пусть поправят меня разработчики @kotbegemot и @nemo1369 если я не прав.
Одновременно с пропажами постов и прочих действий пользоватей, топ делегаты стали пропускать блоки, причем не понятно было почему. Это затрагивало практически всех делегатов из топа и группу поддержки. Последние подписывают блоки реже, поэтому вероятность пропустить блок по причне, которую я опишу ниже у не-топов меньше.
@vik даже создал бота, который отслеживает пропуски блоков и скрипт каждые несколько минут сообщает об ошибке. В логах ноды сразу обноружили, что к моменту пропуска появляются сообщения подобные этому
Encountered a block num collision due to a fork. Walking the current fork to determine the correct block. block_num:12152554
Я посмотрел в коде, там вот этот код выдает это сообщение
Как видно, нода запрашивает блок под определенным номером и получает из базы два блока под одним номером. Это не нормально, это говорит о том, что произошел форк. Нода в данном случае берет самую длинную цепочку, а один из блоков отбрасывает.
От куда взялся второй блок? Я честно говоря досконально не изучал вопрос, но по словам разработчиков, это происходит в том случае, если подписант (делегат или майнер) работает через две ноды с одинаковым ключем. То-есть подписант подписывает сразу два блока одновременно. Часть транзакций попадает в один блок, а часть в другой с тем же номером. Как вы догадываетсь, так как один из блоков отбрасывается, то с ним теряются и данные записанные в нем. Чей то пост, апвоты, переводы.
Все это приводит к тому, что невозможно на голосе заниматься бизнесом. Кода твой перевод не доходит по назначению или пост не постится, не может быть и речи о доверии к сети. Это получается ад для разработчиков, так как каждое совершенное действие приходится перепроверять спустя 45 секунд, что бы убедиться, что транзакция была записана в правильную ветку и не отброшена по дурацкой причине.
Что бы понять, в чем причина, я добавил логгирование в этот код. Посмотреть, кем были подписаны блоки с одинаковыми номерами и получил список (смотри ниже) фигурантов этого дела за сутки работы. Как видно в основном это bla, grub и так далее. Это майнеры. В списке есть и делегаты, но их не так много и скорее всего причина у них другая. Я думаю медленная сеть или проблемы с нодой. @lehard и @xanoxt надо проверить свои ноды. Возможно пересмотреть списки сидов и убрать те, к котором пинг большой.
Но вернемся к этим баранам, тобишь майнерам. Очевидно проблема большей частью вызвана ими, вернее неверной конфигурацией нод. Я так думаю это детище одного и того же человека. Появились они недавно. Еще летом я их не встречал в списке майнеров. Можно проверить когда они были созданы. Если автор этого бесчинства читает эти строки, пожалуйста перепроверьте конфигурацию ваших майнеров.
Что можно сделать если владелец этих майнеров не откликнется? Я не знаю. На мой взгляд на данный момент сеть оказалась беззащитной перед нашествием бусурманов. У голоса нету механизмов противодействия этой болезни. На заре стимита, была возможность забрать у подписантов всю их СГ, но эту возможность почти сразу убрали. Убрав майнинг и вовсе убрали вероятный источник этих проблем. Майнинг конечно сам по себе не виноват, виноват владелец, который не правильно использует его.
Разработчики предлагают добавить возможность принудительно отключать таких подписантов, сменив им ключ на пустой. Но при таком количестве майнеров мне кажется это не поможет. Владельцу будет проще их снова активировать, чем заниматься перенастройкой всей сети.
Ну и как вариант, можно отключить сам майнинг. В блокчейне golos он бесполезен. У нас DPOS, то-есть подписанты выбираются голосованием и им нет нужды доказывать свою нужность перебирая хэши. Мне майнинг жаль только потому, что с его помощью можно создать полностью анонимный аккаунт, не привязанный ни к кому.
В любом случае надо делать ХФ. Потому я и предлагаю, пока ХФ 17 еще не готов, выпустить минорный релиз 16.5 с отключенным майнингом. Это добавит стабильности сети, и думаю пойдет всем на пользу.
Не будет вопросов "я проголосовал за пост, а мне не пришел откат", "я перевел монеты бустеру, а они не дошли и бустер не проголосовал" или "я написал пост, его показало мне в ленте, а через пол минуты он исчез как и не бывало"
За одно сделаем хотя бы одно доброе дело до НГ и покажем, что не зря нодами заведуем и можем договариваться )
Как на это смотрят другие делегаты и разработчики? Может есть какой то другой, не такой радикальный способ?
@arcange, @on0tole, @vik, @on1x, @primus, @litvintech, @smailer, @creator, @dmilash, @dr2073, @phenom, @kuna, @lockchained, @lehard, @testz, @anyx, @vitaly-lvov, @roelandp, @dark.sun, @aleksandraz, @yudina-cat, @xtar, @litrbooh, @good-karma, @cheetah, @xanoxt, @jesta, @kulturagolosa, @stakepool, @vvk, @dreamer, @someguy123, @golos.loto
UPD:
В телеграме ко мне обратился хозяин этих майнеров
Привет, похоже мои майнеры косячат. Включил вторую ноду с тем же конфигом. Сейчас я выключил её, проверь сохранилась ли проблема, потому что так я сделал всего сутки назад, а потери блоков идут давно.
Так что дело действительно было в двух нодах. Примерно с момента обращения была только одна коллизия, вызванная нодой @lehard. Эх не бывать ХФ до НГ )
1 baybak
1 bla1
1 bla13
1 bla14
1 bla18
1 bla19
1 bla20
1 bla21
1 bla22
1 bla23
1 bla24
1 bla26
1 bla33
1 bla40
1 bla5
1 bla6
1 bla8
1 grub10
1 grub13
1 grub14
1 grub16
1 grub21
1 grub23
1 grub25
1 grub26
1 grub29
1 grub3
1 grub8
1 grub9
1 grud10
1 grud1
1 grud4
1 grud5
1 grud6
1 mway1
1 mway27
1 mway28
1 mway30
1 mway3
1 mway4
2 bla30
2 bla32
2 bla38
2 grub15
2 grub17
2 grub20
2 grub22
2 grub27
2 grub30
2 grub4
2 grud
2 grud3
2 grud7
2 jesta
2 mway23
2 mway29
3 bla
3 bla34
3 grub
3 grub1
3 grub12
3 grub28
3 xanoxt
4 bla17
4 grub11
4 grub5
4 lehard
Выпилить майнинг путём отдачи 21-й позиции в раунде ещё одному делегату не из топа.
за отмену майнинга и за "микрофорки"
Могу только подозревать но чем черт не шутит. (Это только мое мнение)
Такое может быть из-за того что и майнер и делегат настроены на одной ноде. И в момент подписания блока майнер и делегат делят между собой блок.
Я за отмену майнинга в данном случае, так как оказать влияние на злоумышлинников мы не можем, а сеть страдает.
@gemini up!
Ок, @klubnika!
роботы @gemini, @btc-e и @upbot проголосовали за пост: HF 16.5 или что делать с нерадивыми майнерами
Я за отмену майнинга. Вреда больше чем пользы )
Что-то сегодня произошло и сеть стала лучше работать. Кто-то нерадивый отключился, наверное.Супер!
@ropox, несколько раз пропадали комментарии, и не только у меня. Пишу посты и комменты в goldvoice, ибо golos.io тормозит сильно.
Давно поддерживал отмену майнинга, по крайней мере в текущем виде.
@on0tole, а в каком виде вы его видите? Я бы тоже проголосовал за отмену майнинга, так как моя нода майнера больше не может попасть в очередь на подписание блока(
Честно все прочитала и ничего не поняла. Тарабарский язык для меня... вот же что знают люди! И вас таких тут много!
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
litrbooh, littleboo, t3ran13, boddhisattva, ukrainian, neo, one, polyideic, fetta, max-max, niiu, dreamer, vik, brovaryleaks, vadbars, maksina, nefer, guepetto, renat242, andreyprosto, semasping, romapush, tnam0rken, arystarch, yudina-cat, arturio777, boltyn, gapel, on1x, master-set, vika-teplo, elena.mihajlovna, felicita, amelina.elena, varya-davydova, mryabinin, seagull15, brika, manavendra, kertar, lengalenga, lokkie, igrinov, ifingramota, ieshua, student61, mp42b, zhenek, abloud, ksantoprotein, shafarevich, etnospace, gogirotsky, dinosaurmike, irimeiff, konstab, brainmechanic, kalter, risha
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!

Поддержите нас:
За отмену майнинга.
Интересно кого будут винить когда майнинг выпилят а блоки будут теряться как и прежде, а они будут теряться.
Делегатов. Ну не погоду же.
Либо убрать майнинг, или запилить код, который будет провинившихся отлучать от очереди навсегда
Только отмена!
@bla1 и его аналоги: Created 2017-12-06
Сеть же форкалась всё время. Просто транзакций было меньше и поэтому было не так заметно.
Можно подробнее - как вы определили, что сеть форкается именно из-за майнеров и как определяли конкретных майнеров, виноватых в этом, на ваш взгляд?
Как я написал, к моменту пропуска блока делегатом, в ноде у всех появляется вот эта строка в логе
Ее пишет в лог вот этот код
https://github.com/GolosChain/golos/blob/v0.16.4/libraries/chain/database.cpp#L3639
Я просто после этой строки добавил цикл и дополнительный лог, что бы распечатать делегатов подписавших двойные блоки
Скомпилировал и поднял ноду и она мне выдает в лог что то подобное этому
Встречаются и делегаты вроде того
Проблема реально мешает работать. Мои скрипты нарываются не редко на пропажу транзакций. Делать все равно надо что то. Я понимаю, что майнинг сам по себе не виноват, но майнеры усугубили это дело.
Спасибо за пояснение.
Подозреваю, что проблема в медленных дисках нод. Поэтому в первую очередь это заметно на майнерах - вряд ли там SSD специально для майнинга ставят. И поэтому иногда и делегаты производят дублирующиеся блоки - просто на момент когда пришла очередь подписывать блок нода может не полностью синхронизоваться с сетью.
@primus, была такая проблема и нода пропускала блоки и почему то повторяла блоки по два раза, проблема ушла с установкой SSD, посоветовал @dreamer
Но почему майнеры подписывают два блока одним и тем же акком? Делегаты разные у обоих блоков, а вот майнеры всегда двойные. Как я в тексте написал, разработчики это объясняют двумя нодами с одинаковыми ключами и прямо категоричны в этом.
https://github.com/GolosChain/golos/issues/271
Да, вполне может и так.
технический вопрос, а почему именно 45 сек? Ибо проблема случается постоянно и доп костылей для обвязки кода на выявление подобных ошибок не хватает, плюс затраты временные.
Блок помечается irreversible - принадлежащим основной цепочке, если 75% делегатов подтвердили его своими нодами. В среднем блок помечается irreversible через 45 секунд после создания. 21*0,75 ~ 15 * 3сек. ~ 45 секунд
Как раз вот этот отрезок кода, что я привел и занимается этим. Он и определяет, состоялся форк и в какую сторону пойдем.
(21 раунд по 3 секунды) * 2/3 = 42 секунды, это время за которое происходит Irreversible block — необратимый блок. Если транзакция случилась, то через 42 секунды можно точно узнать не была ли она отвергнута из-за того, что попала не в тот блок.
Я давно выступаю за отмену майнинга, поэтому я за!