Уважаемые делегаты и члены коммьюнити!
Вчера 17.01.19 случился «чёрный лебедь» - остановилась цепь блокчейн Голоса.
Вскоре проблема была локализована, и команда выяснила, что при вычислениях процента отчислений делегатору при голосовании за пост возникло переполнение числового значения.
Команда Голос Кор изучила смежные участки кода на предмет подобных проблем и провела диагностику на наличие переполнения на уже осуществленные выплаты (а также на наличие каких-либо возможных проблем при предстоящих выплатах).
Первоначально команда Голос Кор планировала остановить выплату вознаграждений за посты до принятия делегатами 20 ХФ. Но после изучения проблемы и выяснения, кто может пострадать, было принято решение не останавливать выплаты за посты, а пострадавшим делегаторам и кураторам предоставить информацию, необходимую для решения проблемы в индивидуальном порядке.
В ходе проверки работы цепи был обнаружен 141 пост, на котором случилось вышеуказанное переполнение. Все случаи возникли при курировании пользователями @liga.avtorov и @vp-liganovi4kov, которым пользователь @bender делегировал свою СГ.
Ночью 17.01.19 наши разработчики собрали новую версию и протестировали исправление выявленной проблемы.
В данный ХФ включены следующие фичи:
- Исправление переполнения при вычислениях процента отчислений делегатору при голосовании за пост;
- Для делегаторов, у которых случилось переполнение при вычислении процента выплаты от кураторской награды, выплата будет начисляться полностью на счет куратора. Данное решение было принято для упрощения программного кода и согласовано с пострадавшими кураторами и делегаторами;
- Тем делегаторам, у которых проблем с переполнением не возникло, награда будет начислена в соответствии с выставленным процентом;
- Ввиду некоторого напряжения в сообществе относительно вопроса с кураторскими выплатами был введен запрет на смену их процента автором после первого фактического голосования за пост. Процент поддается изменениям неограниченное количество раз, пока за пост не проголосует первый куратор.
Так как цепочка была запущена в нештатном режиме, при котором она возвращается в рабочее состояние при наборе определенного количества активных нод, команда Голос Кор считает необходимым пояснить, каким именно образом был произведен перезапуск цепочки.
Делегатская нода @goloscore была переведена в режим генерации блоков, не дожидаясь синхронизации с состоянием блокчейна. Также ей было позволено генерировать блоки, не ожидая появления 1/3 делегатских нод. После этого к сети начали подключаться другие делегатские ноды, которые также включались в процесс генерации блоков, не обращая внимания на количество активных делегатских нод. После подключения к сети 1/3 активных делегатских нод, сеть автоматически перешла в штатный режим работы.
При старте сети использовались следующие параметры, которые изменяются в конфигурационном файле делегатской ноды.
- Параметр enable-stale-production - обеспечивает автономную генерацию своего блока делегатской нодой в раунде, не дожидаясь синхронизации с текущим состоянием блокчейна. Данный параметр желательно выставлять только лишь на одной делегатской ноде с целью сокращения количества ответвлений в цепи блоков;
- Параметр required-participation - указывается общий процент активных делегатских нод в сети, при котором данной ноде разрешается генерировать блоки.
Наша команда выражает благодарность делегатам и членам сообщества, не оставшимся равнодушным к произошедшему, в частности делегатам @vik, @ropox, @kuna, @creator, @steepshot и многим другим, которые оперативно подключились к обновлению и помогли восстановить работу блокчейна в краткие сроки.
Спасибо всем, кто оставался с нами на связи до утра!
Каналы коммуникации с Golos•Core
- https://t.me/goloscoretc (решение технических вопросов, связанных с работой блокчейн, нод, api и др.)
- https://t.me/joinchat/BLwf_A118xQ57nsM1Q4MPA (канал для вноса предложений от комьюнити, обсуждение перехода на кодовую базу EOS)
- https://t.me/golos_tools (решение вопросов по различным интерфейсам и дополнительным инструментам, создаваемым Golos•Core)
- https://t.me/goloscore_analytics (решение вопросов по работе экономики блокчейн, статистическим экономическим данным, аналитике данных)
- https://t.me/goloscoretech (новостной канал, с актуальной информацией от Golos•Core)
Мы будем очень рады, если вы поддержите делегата @goloscore. Заходите на страничку https://golos.id/~witnesses голосуйте за делегата Golos•Core!
Спасибо за внимание и хорошего дня!
С уважением,
Команда Golos•Core: @andreypf, @korpusenko, @maslenitsa, @muhazokotuha, @zxcat, @annaeq, @anazarov79, @kaynarov, @s-medvedev, @eugin, @dedbaraded, @jimak.
...получился своеобразный стресс тест, который благополучно завершился благодаря слаженной работе команды и делегатов...лично мне это внушает дополнительный оптимизм, который никогда не иссякал в отношении проекта...))
@smotritelmayaka эх, мне тоже полегчало)
спасибо за оперативную работу!!! прошу прощения за то, что невольно мое активное курирование привело к остановке бч. зато был найден баг, и это хорошо. вдвойне хорошо, что исправлен. спасибо всем неравнодушным делегатам, кто не спал всю ночь. и команде!!!
@ladyzarulem так вот кто во всем виноват!)
@anela
я очень активный куратор))) и комментов у меня 28 000. но я не бот. хотя иногда сомневаюсь...
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
chugoi, ladyzarulem, ksantoprotein, midnight, max-max, nefer, amidabudda, abloud, gryph0n, semasping, gapel, benken, narin, brainmechanic, irkinmick, seagull15, veta-less, aleos, hyipov, osincevata, tom123, mp42b, duremarr, ifingramota, alena4e, archibald116, lanna, korzhimanov, boliwar, svetozarhobbot, evgeniybb, amelina.elena, kanalex, vadbars, ezavarov, animememes, cryptobitcoinpro
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас:
Вот именно "ввиду некоторого напряжения" с этим вопросом, не могли бы вы пояснить, почему
хотя лишь пятеро топ-делегатов установили max_curation_percent равным 50% ( остальные указали 75-90% )
Тем не менее блок-эксплорер показывает, что в данный момент
max_curation_percent = 50%
Насколько я понимаю, ответ содержится в этой цитате :
То есть, давайте повторим это еще раз :
штатный режим работы заключается для вас в том, что к сети подключилась 1/3 активных делегатских нод
При этом абсолютно наплевать , что эта самая треть не является топ-делегатами, выдвинутыми в топ стек-холдерами, любой делегат, за которого проголосовал 0.1% процент стека вполне подойдет ?
То есть, вы по факту сейчас признаетесь в том, что вся концепция DPOS - это хуцпа ?
Не имеет значения, за кого голосуют стекхолдеры, для перехвата цепочки достаточно @goloscore и нескольких присоединившихся делегатов из третьего десятка ?
Кстати, почему из "каналов коммуникации с GolosCore" вы решили исключить комментарии к публикациям аккаунта @goloscore ?
@svamiva, не так, просто реализовали не совсем очевидный расчёт медианы max_curation_percent.
Сортировка значений мин-макс идёт "парами": сначала вычисляется медиана по min_curation_percent, а вот max_curation_percent определяется только среди делегатов выбранной медианы по min_curation_percent.
Полагаю это было сделано для того, чтобы максимальная медиана при случае не оказалась ниже минимальной, но мне сложно смоделировать ситуацию в которой они могли быть перепутаны...
@lex сложно разобраться конкретно, но как то уж очень "совпало", что уже укоренившиеся 75/75 вдруг сменились на 50/50.
Объяснение лежащее на поверхности - это то, котороея и озвучил. Если это не так, то хотелось бы "официального опровержения" от разработчиков.
В описаной тобой модели, если 10 топ-делегатов установили 25/75, десять установили 75/75 и один установил 50/50 мы будем на выходе иметь 50/50.
Зачем нужен такой алгоритм - действительно, смоделировать сложно.
Разве что для того, чтобы инсайдеры могли манипулировать параметрами сети запустив 10000 клонированых "делегатов поддержки" ?
Просто совпадение. С переходом на обещанный большинством делегатов "коридор", вероятно станет мин. 25, а макс. по медианному значению среди них ~75-80
К сожалению да...
Сложно (из резервных делегатов в раунде только 1 + 1 майнер), да и только если топы разделяться пополам в значении своих параметров.
@svamiva Комментарии к публикациям @goloscore являются предпочтительным и наиболее очевидным способом связи с командой. Из списка он не был удален, в нем всегда были указаны лишь альтернативные способы (посредством разнообразных чатов).
@goloscore спасибо.
Как вы можете посмотреть в истории, вопрос насчет комментариев я добавил после того, как в течение дня не увидел никакой реакции на мой первый, вполне релевантный содержанию вашего поста вопрос.
Ну и, соответственно, повторю его еще раз
В тот момент когда к ноде @goloscore присоединилась 1/3 активных нод сети, кем определяются параметры сети?
Они определяются этой самой присоединившейся 1/3, вне зависимости от того, являются ли они топ-делегатами ?
@svamiva Данный пост о технической составляющей вопроса - о том, как ноды друг с другом соединяются. Правила о том, кто является делегатом - подписывает блоки, и выставляет параметры сети, определяется правилами голосования за делегатов.