В 2019 году к нам обратился «Ростелеком» с запросом о создании федеральной системы дистанционного электронного голосования (ДЭГ) на основе блокчейна. По сравнению с обычным голосованием ДЭГ на блокчейне явно дешевле и быстрее для подсчета голосов; оно также может обеспечить большую явку. Но при этом для большинства людей блокчейн-голосование — это черный ящик, а в голосованиях такого уровня ящик все-таки должен быть прозрачным. О том, как мы добились этого и выполнили другие требования заказчика, я расскажу далее в посте.

Требования к системе ДЭГ формировала Центральная избирательная комиссия. Вот их исходный список на 2019 год.

  • Запуск более 1000 голосований одновременно. Забегая вперед, скажу, что в 2021 году, пока что самом нагруженном для системы, мы одновременно запустили около 1700 голосований.

  • Обработка 10 млн голосов за 12 часов, то есть примерно 230 tps (транзакций в секунду). Впоследствии минимально допустимая скорость выросла в два раза, поскольку, на каждый голос пришлось отправлять дополнительную транзакцию — подтверждающую факт выдачи слепой подписи, то есть выдачи бюллетеня.

  • Гарантированный учет всех голосов.

  • Защита тайны голосования.

  • Защита промежуточных результатов голосования.

  • Защита итогов голосования.

  • Возможность проверки того, как все эти требования соблюдены.

К началу проекта у нас уже был готовый криптографический протокол и собственная блокчейн-платформа Waves Enterprise. Через смарт-контракты в ней можно было сразу развернуть всю необходимую логику и защитить данные в соответствии с требованиями. Но есть нюансы.

  • Производительность (пропускная способность). Мы всегда уделяли ей внимание, но к 500 tps с ходу на смарт-контрактах были не готовы.

  • Гарантия исполнения транзакций. По умолчанию блокчейн очень старается исполнять все транзакции, но не гарантирует этого — принцип best effort basis. Для голосования так не пойдет, нужны железные гарантии. 

Далее я в общем виде опишу, как работает наша блокчейн платформа WE.Vote для дистанционных голосований, а затем то, как мы ее изменили для ДЭГ, чтобы соответствовать требованиям ЦИК.

Исходная архитектура WE.Vote

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

Над блокчейн-сетью — уровень криптографических сервисов, которые отвечают за распределенную генерацию ключа для шифрования бюллетеней. Дешифрование результатов происходит здесь же. Криптографические сервисы не общаются друг с другом напрямую, они взаимодействуют только через отправку данных в блокчейне, что повышает прозрачность системы. На этом уровне реализована защита от фильтрации голосов и защита тайны голосования. Распределенная архитектура позволяет также сузить поверхность атаки на главный ключ.

Третьим идет классический клиент-серверный слой — веб-интерфейсы администратора и участника голосования, а также некоторые вспомогательные сервисы. Администратор управляет запуском/остановкой голосований через взаимодействие с криптосервисами. Участник отправляет бюллетень напрямую в ноду.

Изменения для федерального ДЭГ

Исходная архитектура нашей платформы голосования соответствовала требованиям ЦИК частично. Вот что мы сделали, чтобы закрыть оставшиеся вопросы.

В нашей платформе создание ключа голосования полностью автоматизировано. В ЦИК нас попросили сделать его более наглядным — чтобы члены избирательных комиссий несли ответственность за запуск и проведение голосований, создавая таким образом дополнительный барьер для злоумышленников.

В рамках федерального ДЭГ создание ключей частично вынесено в офлайн. У избирательной комиссии есть ноутбук со специальной утилитой, которая создает ключ. Затем по схеме разделения секрета Шамира ключ разбивают на несколько частей и на съемных носителях раздают членам комиссии. После завершения голосования ключ снова собирают. Имея ключ системы и собранный ключ комиссии, можно расшифровать итоги голосования. Благодаря распределенному хранению, злоумышленник не сможет манипулировать ключами, даже попав в контур голосования.

Следующий шаг — интеграция с компонентами, разработанными «Ростелекомом». Здесь мы поставили очередь сообщений на поток управления голосованиями. В этой части системы нет ни особых нагрузок, ни секретных данных, сделано это только для упрощения интеграции.

Интересным получился пайплайн обработки голосов. Он состоит из двух частей. Первая — это зона ЕСИА, где избиратель авторизуется и отправляет заявку на участие в ДЭГ. На этом этапе система проверяет, есть ли у избирателя право на участие в ДЭГ и вычеркнут ли он из списков офлайн-голосования.

Когда эти проверки пройдены, избиратель у себя на устройстве создает пару ключей, «маскирует» открытый ключ и запрашивает подпись такого «замаскированного ключа». Сервис, который выдает подпись, не знает, что именно он подписывает, поэтому подпись «слепая». Ее нельзя сопоставить с открытым ключом, от имени которого пользователь отправляем голос, а значит, личность избирателя тоже установить нельзя. Все, что может сделать система — убедиться, что слепая подпись, приложенная к транзакции, корректна, и по этому «пропуску» пустить пользователя дальше.

Вторая часть пайплайна — это анонимная зона, где избиратель отправляет транзакцию с голосом. Электронная урна добавляет транзакцию в очередь Kafka. Адаптер слушает очередь и отправляет транзакции оттуда в нашу часть системы, которую я описывал выше, а затем проверяет, что голос был успешно принят блокчейном.

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

В зависимости от предполагаемой нагрузки на дистанционное голосование, эта архитектура каждый год реплицируется на несколько ЦОД. Теперь — о том, как мы работали с «нюансами», отмеченными в начале поста.

Оптимизация пропускной способности

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

К началу проекта ДЭГ собственная платформа, мейннет Waves Enterprise, обеспечивал всего 10–20 транзакций в секунду. Предстояла большая работа, и мы начали исследование. 

Число транзакций в секунду обратно пропорционально размеру транзакции. На размер транзакции мы повлиять не можем, так как бюллетени предоставляет заказчик. Поэтому мы взяли за стандарт бюллетень с выбором одной партии из восьми и сосредоточились на оптимизации. Перевели транзакции в бинарный вид, научили ноды сериализовывать Protobuf и перекодировали криптографические константы в HEX. Ноды получили дополнительную нагрузку в связи с введением сериализации/десериализации, но в итоге пропускная способность выросла примерно в 10 раз.

Затем мы начали разбирать ноду блокчейна. Она состоит из модулей, которые выполняют различные функции — это сетевые интерфейсы, модули для криптоопераций, запуска и исполнения смарт-контрактов, обработки внешних запросов и не только. При глубокой автоматизации их надо рассматривать независимо. Мы стали изучать, какой компонент тормозит больше всего, и неожиданно обнаружили, что нода не умеет работать со смарт-контрактами в параллельном режиме — пришлось ее этому научить. Это дало хороший прирост производительности.

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

Попробовали подойти к вопросу через железо. Проводили тесты на мощнейших стендах в лаборатории Intel, занимались профилированием ПО с Intel Vtune. В итоге на самых мощных стендах добивались 500–600 tps. В целом влияние процессора и памяти оказалось не таким значительным, как мы предполагали, так что развивать эту тему мы не стали. Однако с помощью инструментов профилирования мы также нашли пару багов, и после фикса ноды стали работать быстрее.

Еще один простой путь ускорения блокчейна — кластеризация. Разбивая систему, мы кратно увеличиваем ее пропускную способность. Данные, которые мы отправляем в разные шарды, не должны быть связаны между собой, чтобы их можно было обрабатывать независимо. Таким образом мы тоже получили хороший буст, но для целей голосования 2021 и 2022 года это не потребовалось — мы выходили на нужную производительность и без шардинга. Оставим этот способ на будущее, для возможного масштабирования системы.

Гарантированная доставка

Я писал выше, что блокчейн сам по себе не гарантирует, что все транзакции будут проведены. Нашим спасением здесь стала Kafka, с помощью которой мы создали очередь на обработку голосов. Другой сценарий для Kafka здесь — убежище при перезагрузке системы для данных, которые нода не приняла в блокчейн. По умолчанию данные хранятся только в оперативной памяти ноды и при перезагрузке уничтожаются. В этой роли Kafka, к счастью, нам не пригодилась, но перестраховаться стоило. Третий сценарий Kafka — это троттлинг нагрузки для пиковых часов. 40–50% избирателей приходят голосовать в первые часы работы ДЭГ, и Kafka позволяет эту нагрузку сглаживать.

Также ДЭГ стала первым проектом, где мы развернули свою версию CFT-консенсуса, который не приводит к роллбэкам. Когда мы начинали с PoS, роллбэки усложняли взаимодействие компонентов и нам приходилось объяснять, что это не мы выкинули голоса из системы, а потом что-то обратно записали, а это технологическая особенность. Если интересно узнать о нашем CFT-консенсусе подробнее, напишите в комментариях.

На самом масштабном голосовании на данный момент, в 2021 году, мы не потеряли ни одну из 1,5 млн транзакций. Но один голосов пришлось все-таки отклонить — он не прошел проверку ZKP.

Мониторинг всей системы ДЭГ

Весь фронтенд системы, как я уже писал, был в зоне ответственности «Ростелекома». Нам осталось протестировать только бэкенд — по сути, большую трубу, на выходе которой должно получиться столько же голосов, сколько и на входе.

Для тестов мы разработали утилиту нагрузки; она умела создавать голосования пачками и прожигать систему как следует. На каждом участке мы повесили счетчики транзакций и стали ждать ошибок майнинга и валидации.

Grafana прекрасно подходит для таких целей. Если у нас увеличивается число голосов со статусом pending — «было отправлено на ноду, но не обработано» — мы понимаем, что нода не справляется и есть какие-то проблемы. Аналогично мы можем отслеживать и другие этапы. Grafana может мониторить и Kafka: сколько голосов через нее было отправлено, какой лаг вычитки.

Помимо подсчета голосов, мы должны распределить ресурсы по компонентам «трубы» так, чтобы не возникало ботлнеков. Поэтому у каждого компонента предусмотрен мониторинг ресурсов. Удивительно, но инструмент мониторинга местами сам требовал больше ресурсов, чем отдельные компоненты системы, обрабатывающие голоса. Так что счетчики мы повесили и на мониторинг. 

Мониторинг блокчейн-сети 

Через Grafana мы развернули мониторинг майнинга. Если высота блокчейна на графике равномерно растет, значит, ноды майнят и все работает как надо:

Если ноды обрабатывают блоки неравномерно, то сеть начинает разъезжаться и надо принимать меры:

Здесь мы столкнулись только с одним интересным эпизодом, на тестовом прогоне. На скорости 200 tps безопасники по ошибке отключили доступ по сети. После восстановления и перезапуска метода отправки все ноды в течение 5–10 минут собрались, синхронизировались и обработали все транзакции из UTX-пула — а их накопилось около полутора тысяч. В итоге не потеряли ни одной.

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

Во втором режиме предусмотрена длительная нагрузка, когда голоса генерируются и отправляются в обработку постоянно. Так мы можем тестировать вторую метрику — живучесть системы при наполнении баз голосами и пользователями. Эти тесты мы проводили на слабых стендах, в результате чего поймали несколько деградирующих процессов, когда запросы к БД начинали выполняться слишком долго и приводили к остановке.

Если говорить о боевых метриках, то в этом году пропускная способность на проекте ДЭГ не поднималась выше 16 tps — голосование было менее масштабным по сравнению с прошлым годом, когда показатели доходили до 120 tps. И у нас всегда имелся большой запас по производительности. 

Прозрачность системы

Напоследок — о том, что легко упустить в процессе разработки. Обычно, если для задачи заказчика у нас есть работающее решение, то дело в шляпе. Но в проекте национальных выборов очень важно, чтобы решение было еще и прозрачным. В этом направлении мы ведем активную работу.

В прошлом году за нашей системой ДЭГ следили всего пять наблюдателей, а в этом их их стало уже 109. Для них мы разработали портал наблюдателя, который подключен к очереди обратной связи и получает данные одновременно с остальными компонентами системы. Выгрузки с этого портала наблюдатели могли загружать в дополнительно разработанную нами open-source утилиту. Сравнивая данные, прозрачно обработанные этой утилитой, и данные блокчейна голосования, наблюдатели могли убедиться, что всё обрабатывается одинаково.

Кроме того, к системе были подключены ноды в режиме наблюдателей. Они не обрабатывают транзакции и не синхронизируют UTX, а просто получают данные из блокчейна и применяют их к стейту. Наблюдатели могли подключить к таким нодам свои инструменты мониторинга, сравнить их с общедоступными данными и убедиться, что все совпадает.

Выводы

На основе проекта федеральной системы ДЭГ можно сделать несколько выводов с точки зрения технологии.

  • Производительность блокчейна — это не то, что заявляет маркетинг, а то, что выявляется при крупном промышленном внедрении. Это стоит учитывать в реальных проектах.

  • Блокчейн — это не самая удобная технология, но при правильной обвязке и внедрении на ее основе можно строить масштабные системы, не теряя уникальные преимущества.

  • Эффективность блокчейна зависит от его места в общей архитектуре. Он обеспечивает прозрачность, но производительность его ограничена. Поэтому есть смысл фиксировать в блокчейне только ключевые точки бизнес-процессов. Здесь важно уметь положить сквозной процесс на блокчейн, но при этом не положить сам блокчейн.

Для дальнейшего погружения советую свой предыдущий пост о том, как работает дистанционное голосование на блокчейне. Также в сети выходили отчеты независимых наблюдателей о нашей с «Ростелекомом» системе по итогам голосования 2021 и 2022 гг. На Youtube можно посмотреть видеоверсию этого поста.

Комментарии (40)


  1. brotchen
    27.10.2022 14:51
    +6

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

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


    1. Antibunny Автор
      27.10.2022 15:16

      Чтобы наблюдатели могли быть уверенными в правильном подсчете голосов, мы сделали open-source утилиту для проверки голосования. Чтобы разобраться в коде надо иметь квалификацию. Но так работает любой open-source.


      1. aploskov
        27.10.2022 17:27
        +5

        Ну, и всё голосование превращается в театр доверия кадру, который выглядит, как наперсточник, пахнет, как наперточник, говорит, как наперсточник.

        Классическое голосование хорошо как раз тем, что простое донельзя.


        1. Antibunny Автор
          27.10.2022 17:39

          Не согласен. Проще не всегда значит лучше. На счетах считать - очень наглядно. Но вы считаете на компьютере, хотя и не понимаете что именно происходит внутри. Идеально если можно поднять тридцать рук и посчитать, но эта схема не масштабируется. Плюс нашем случае система гораздо прозрачнее условного "компьютера". А дальше дело за вами - доверять, как компьютеру, или разобраться как оно работает.

          Ну и схема бумажного голосования проста только в очень первом приближеннии - "поставлю галочку, опущу в урну". Если взять этот процесс в целом - он очень непростой и с большим пространством для ошибок (не зря про 146% ниже вспомнили )))


          1. rpc1
            27.10.2022 20:34
            +1

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


          1. red_dragon
            28.10.2022 08:40

            "Проще не значит лучше" - некая околофилософкая сентенция, рождённая применительно к человеческим отношениям. Что же касается реального, окружающего мира, то проще, всегда лучше. То что лежит, уже не может упасть. Если же рассматривать более сложные явления, то необходимо определить критерии этого самого лучше.
            Пример со счётами и компьютером плох именно по тому, что критерии оценки не определены. Но он ни коем образом не подтверждает того, что проще не всегда лучше.
            Система бумажного голосования очень проста. Арифметика для детского сада. Даже человек обделённый интеллектом способен в ней разобраться. А если дотошно выполнять все шаги методических руководств, то никакого пространства для ошибок там нет. 146% - это следствие нарушения методики. Потому как, подтасовка результатов требует уже зачатков некоторого интеллекта. Но "и так сойдёт", очень часто побеждает здравый смысл. Особенно в этой стране. А как известно, от раздолбайства не спасает даже самая изощренная защита.
            На контрасте с бумажным голосованием, чтобы разобраться в криптографии надо иметь интеллект гораздо выше зачаточного.


            1. Antibunny Автор
              28.10.2022 12:58

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

              Разобраться в криптографии - да, нужны компетенции. Но это же не значит что не стоит искать более эффективные и в итоге даже более честные/прозрачные инструменты потому что это сложно?


              1. red_dragon
                28.10.2022 14:32

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

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


      1. alexxisr
        28.10.2022 06:54

        ну вот представим, что я тракторист, умею сидеть в одноклассниках и считать формулы в екселе. Как мне посчитать количество и распределение голосов на каждом участке по последнему голосованию? Есть достаточно подробная и понятная среднему пользователю пк инструкция? Надпись в какой-то программе "все ок" меня не устраивает ибо ничем не отличается от заявления в телевизоре, которое я и хочу проверить.


        1. Antibunny Автор
          28.10.2022 09:28

          Экселя для проверки итогов голосования будет недостаточно. Чтобы трактористу подтвердить честность выборов ему нужно:

          1) Попросить друга программиста посмотреть на исходный код утилиты наблюдения и подтвердить что там нет закладок вроде "Половину всех голосов начислить за Иванова"

          2) Записаться в наблюдатели и получить доступ к выгрузкам

          3) Запихнуть эти выгрузки в утилиту

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


  1. cthtuf
    27.10.2022 14:55
    +4

    Много сложных технологий, но где-то баг, ведь система очевидно не работает!


    1. Antibunny Автор
      27.10.2022 15:00

      Очевидно не работает что? )


      1. alex-open-plc
        27.10.2022 17:02

        Правда что! 146% !


        1. Antibunny Автор
          27.10.2022 17:28

          146% насчитали на бумаге ))


  1. TonnyRed
    27.10.2022 14:59
    +4

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


    1. Antibunny Автор
      27.10.2022 15:13

      Эта часть системы в большой степени работает по тем же принципам что и бумажное голосование. Там так же готовятся списки избирателей ДЭГ, они сверяются с "бумажными", проверяется что нет дублирования. Наша команда не очень погружена в этот процесс. Но наблюдатели имеют доступ к этим спискам, они могут сопоставить тех кто в них заявлен со счетчиками голосов и теми изберателями которые прошли авторизацию в ЕСИА и "получили бюллетень".


      1. TonnyRed
        27.10.2022 15:19
        +4

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


        1. Antibunny Автор
          27.10.2022 16:00

          Я думаю часть системы, которая занимается идентификацией можно доработать и сделать такой же прозрачной как и то что запущено на блокчейне. Система федерального ДЭГ активно дорабатывается, но это происходит постепенно.


      1. Akito7
        27.10.2022 21:14

        За формированием списка ДЭГ наблюдают наблюдатели от разных партий как на обыкновенных выборах? Если нет - грош цена всей вашей системе т.к. в на этом этапе можно наделать кучу ботов с соответсвующим результатом голосования потом.


        1. Antibunny Автор
          28.10.2022 09:30

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


  1. GDragon
    27.10.2022 15:20
    +2

    Кроме того, к системе были подключены ноды в режиме наблюдателей. Они не обрабатывают транзакции и не синхронизируют UTX, а просто получают данные из блокчейна и применяют их к стейту. Наблюдатели могли подключить к таким нодам свои инструменты мониторинга, сравнить их с общедоступными данными и убедиться, что все совпадает.

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

    ну не смешите, а?


    1. Antibunny Автор
      27.10.2022 15:53
      +2

      Не смешу, вы участвовали в наблюдении? Возможно вы путаете Федеральный ДЭГ и Московский. На Федеральном голосовании ноды наблюдаталей доступны 24/7 и не отключались ни разу за три года.


  1. AL_o
    27.10.2022 15:45

    Сколько стоит?


  1. alexhott
    27.10.2022 16:04
    +7

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


  1. Gryphon88
    27.10.2022 16:05
    +3

    Можно ли захостить у себя ноду? Просто когда весь блокчейн имеет одного оунера, это здоровенная уязвимость.


  1. shokerplz
    27.10.2022 17:01
    +2

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

    PS я не блокчейн специалист, так что не отрицаю технические качества системы, но вот архитектурные явно вызывают вопросы, а они выше


    1. Antibunny Автор
      27.10.2022 17:17

      Смысл в том, чтобы отработать технические и организационные решения. В 20-м году основной фокус был на том чтобы в принципе система полетела и не умерла под нагрузкой. В 21-м начали работать над инструментами наблюдения, но ими никто не заинтересовался. Наблюдателей было 5 человек и они не понимали что им нужно делать и за чем следить. В этом году и их экспертиза, и число выросли в разы.

      А блокчейн здесь для того, чтобы автоматизировать и гарантировать корректный подсчет после попадания электронного бюллетеня в урну. То что ноды находятся под одной крышей, это конечно не идеальное решение, но уверен что оно временное. Чтобы от него отойти, необходимо чтобы нашлись компетентные участники, готовые гарантировать надежность своей инраструктуры. Очевидно же что такую систему не отдашь в полностью открытый доступ, где отдельные ноды, стоящие непонятно где, то потухнут, то погаснут. Идеальными участниками могли бы стать представители политических партий - они заинтересованы в том, чтобы система работала честно. Как только они будут готовы к такой ответственности, с точки зрения технологии преград не будет.

      А пока этого не произошло, наблюдатели, получающие доступ к транзакциям в режиме реального времени, выполняют роль "независимых узлов" в "ручном режиме". Они не участвуют в создании блоков, но имея полную выгрузку данных в любой момент времени, могут обнаружить перезапись данных блокчейна, если она вдруг случится.


  1. newpavlov
    27.10.2022 17:41
    +3

    Просто продублирую мой прошлый комментарий на данную тему:

    Без обязательного self-custody ключей и подробно описанного протокола для которого можно написать свой клиент доверия к системе априори быть не может. Причём ключи должны быть достаточно важными (на уровне возможности создания юридически значимых ЭЦП) дабы их нельзя было собирать или покупать пачками. Блокчейны тоже по сути дела не нужны и являются пусканием модной пыли в глаза.

    По ссылке выше можно прочесть моё обсуждение с автором данной статьи. Думаю, не имеет смысл его повторять. Заинтересованные читатели могут сделать выводы самостоятельно.


  1. nehrung
    27.10.2022 20:06

    Из чтения статьи уразумел, что описанная здесь система ДЭГ и та московская, которую большинство интересующихся считает дырявой и за которую топил А.А. Венедиктов, погубивший на этом свою репутацию — это разные системы. В описываемой нет очень полезной опции, которая была в московской — возможности отозвать свой предыдущий голос и затем переголосовать по-другому. Это прекрасная мера против голосования под давлением/контролем, и если её в описываемой нету, то уже одно это делает её хуже.
    А что касается «дырявости» — хотелось бы детального сравнения, какие изменения внесены в описываемую, чтобы избежать той же критики, которой подверглась московская. Именно сравнения, поскольку мы, читатели, не настолько специалисты, чтобы вникать в витиеватые технические формулировки.


    1. rpc1
      27.10.2022 20:23

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


      1. nehrung
        27.10.2022 22:04

        Да плевать, за что конкретно больше всего переголосовывали — в этот раз за Едро, в другой ещё за кого-нибудь. Это просто статистический выброс. А вот то, что нельзя было привязать к конкретному лицу — это не баг, а фича, именно так должна работать сохранность тайны голосования.


        1. rpc1
          27.10.2022 22:32

          Это понятно, я о другом, переголосование было не привязано к изначальному голосу, т.е. нельзя было отследить какой голос переголосовывался, что делало процесс вообще непрозрачным...
          По мне, это и есть самая большая проблема в системе - ее непрозрачность


        1. Antibunny Автор
          28.10.2022 09:22

          У нас есть два способа анонимизации. 1) Мы не расшифровываем конкретные голоса, они остаются зашифрованными навсегда. Итоги считаются в зашифрованном виде и только потом расшифровываются. В итоги мы получаем счетчики голосов за каждого кандидата, но не знаем кто за кого проголосовал (при этом можем математически доказать что все посчитано честно).

          2) слепая подпись - ключ участника, которым он подписывает свой голос известен только ему, поэтому даже если будут расшифрованы все голоса, нет возможности установить связь между ключом, подписавшим голос и персональными данными участника


        1. rrrad
          28.10.2022 12:40

          Как докажите, что перенолосовали избиратели, которые изначальный голос подавали?


          1. Antibunny Автор
            28.10.2022 12:51

            Ключ участника которым он подписал первый голос известен только ему, больше ни у кого его нет. Повторный голос он подпишет им же. Оба голоса останутся на блокчейне, но мы будем учитывать только последний. Т.к. гомоморфное шифрование позволяет как "прибавлять", так и "вычитать" голоса, мы спокойно вычитаем его первый голос, и добавляем свежий.


    1. Antibunny Автор
      28.10.2022 09:15

      Да, вы правы, это именно Федеральный ДЭГ, не Московский. Очень многие упускают этот момент ))

      Непросто провести сравнительный анализ, т.к. нет описания того как реализована Московская система. Плюс реализация радикально меняется из года в год.

      "Описания изменений" которые внесены в нашу систему в принципе нет, т.к. система создавалась самостоятельно, без огладки на московскую. Но материалы о том как устроен федеральный ДЭГ мы публикуем регулярно (кажется были и такие, которые написаны максимально просто).

      По возможности переголосования - теоретически такая возможность есть, она может работать без "секретных вторых блокчейнов" и мы ее реализовали в своем сервисе для голосований ЮЛ (we.vote). В федеральном ДЭГ эта возможность отключена по техзаданию.


  1. miga
    27.10.2022 20:17
    +2

    Ну как, пахнут денежки-то, или норм?


  1. uhf
    27.10.2022 20:56
    +4

    В том году придумали «переголосования» в «дополнительном» (facepalm) блокчейне, недоступном вообще никому.
    В этом году айди кандидатов сделали рэндомными, так что невозможно стало понять, какой бюллетень за кого проголосовал, а информация о сопоставлении опять «где надо» (facepalm).
    Что придумают в следующий раз? Да уже не интересно.


    1. rpc1
      27.10.2022 22:35

      игра с аферистом по его правилам ) главное вы верьте наслово, что итоговый результат будет какой нужен


    1. Antibunny Автор
      28.10.2022 09:33

      Вопросы о переголосованиях в секретном блокчейне и рандомные ID кандидатов это другая система )) если ее разработчики расскажут вам как это работает, мне тоже будет интересно послушать