В чем проблема блокчейн-голосований, которые проводили российские власти, и можно ли сделать сбор голосов по-настоящему прозрачным – эти и многие другие вопросы редакция BeInCrypto обсудила с опытным блокчейн-разработчиком.
В России уже не первый год пытаются внедрить блокчейн-системы голосования, которые, по замыслу представителей власти, должны обеспечить прозрачность сбора голосов. Несмотря на попытки сделать выборы честными при помощи новых технологий, практически все связанные с инициативой разработки подвергались критике.
Одно из последних голосований, в котором власти задействовали технологию блокчейн для обеспечения прозрачности процесса сбора голосов, было посвящено принятию поправок в Конституцию РФ. Провели его летом 2020 года.
Во время выборов в системе произошел сбой. По некоторым данным, из-за него часть голосов не была записана. Представители инициативы сбой подтвердили, но при этом утверждают, что все голоса были зафиксированы.
К сожалению, разобраться в технической составляющей случившегося – практически непосильная задача для простого человека, который не увлекается созданием подобных платформ. Ответить на вопросы о возможных причинах сбоя и потенциале организации таких выборов редакции BeInCrypto помог блокчейн-разработчик и аудитор смарт-контрактов, известный в криптосообществе под ником Gettocat.
О разработчике
Эксперт занимается криптовалютами с 2014 года. Впервые услышал о них в 2010 году и уже тогда эта технология показалась Gettocat интересной, но для работы с ней у него не было необходимого опыта. В период с 2014 по 2017 год эксперт занимал должность разработчика в нескольких криптовалютных проектах – клонах биткоина (включая Peercoin и Novacoin), которые не пережили «криптозиму» 2018-2020 годов.
С 2017 года Gettocat начал собственные разработки в сфере децентрализованных приложений. В том числе, он создал протокол для хранения структурированных данных в блокчейне, а также протокол datascript, который позволяет передавать и синхронизировать информацию из различных баз данных в блокчейне.
На основе своих наработок Gettocat сделал и пытался продвигать криптовалюту, позволяющую создавать и размещать приложения, а также работать с ними через браузер, как с обычными сайтами. С наработками эксперта можно ознакомиться на GitHub.
На момент создания материала, разработчик занимается решением проблем безопасности в сфере смарт-контрактов и DeFi-приложений. Также Gettocat занят продвижением собственной аудиторской компании Telescr.in.
Чтобы разобраться в том, как, с технической точки зрения, устроена система блокчейн-голосования в РФ, редакция BeInCrypto попросила Gettocat изучить фрагменты исходного кода платформы, которую представители инициативы опубликовали на GitHub. Разработчик выполнил просьбу и поделился своим мнением о коде.
Блокчейн-голосования в России – мнение эксперта
Как вы оцениваете, с точки зрения разработчика, выбранную властями блокчейн-систему голосования? Считаете ли ее надежной?
Посмотрел код, доступный на GitHub, и не увидел там какой-то конкретной блокчейн-системы. Вижу там сырой код какой-то системы, написанной на PHP (язык интерпретации, возникший и использующийся в основном для написания сайтов).
То, что это написано на php говорит о том, что ничего серьезного не задумывалось изначально, так как php необходим для сайтов и интерпретируется, а более-менее серьезные проекты пишутся на компилируемых языках, которые работают в разы быстрее и стабильнее.
Но, допустим, это прототип, и он действительно был необходим чтобы проверить концепцию на прочность. Второй момент – это приложение написано на основе фреймворка (набора готовых инструментов и библиотек) Lumen Laravel, который позволяет создать рабочую версию сайта в кротчайшие сроки, предоставляя основные инструменты разработчику, тем самым избавляя его от всей рутины.
Напомню, что мы говорим про блокчейн, а тут уже с первого вопроса фигурируют сайты. Опять же, предположим, что это прототип, либо только открытая часть системы – верхушка айсберга. Даже в этом случае, доступный код никак не говорит в пользу надежности и безопасности системы.
Единственное, что как-то более-менее связано с блокчейном – генерация хешей и шифрование информации, но эта информация скрыта от нас разработчиками.
Как можно, с технической точки зрения, объяснить сбои, которые произошли в системе при сборе голосов за поправки в Конституцию?
Подозреваю что сбои произошли вследствие высокой нагрузки – система банально ушла в DDOS от количества пользователей. А возможно кто-то специально устроил атаку. Точнее ничего сказать не могу.
Можно ли верить такой системе или, при желании, с ее помощью реально «вбрасывать» голоса?
Короткий ответ: нет, верить нельзя, спокойно можно вбрасывать.
Длинный ответ: основа блокчейна – это полная открытость в сети «недоверия». Т.е. кто угодно может писать и читать данные в блокчейне, но при этом для записи информации нужно подходить под определенный ряд параметров и составить свое сообщение таким образом, чтобы пройти проверку от 1000 и более участников этой сети.
При этом изменить что-то внутри блокчейна так же невозможно (в классическом консенсусе). В данном же случае мы имеем сайт, написанный «на коленке», который хранит информацию в базе данных – это даже не сеть, это просто одно приложение. При этом нет понимания, где эта база, что в ней находится, в каком виде это хранится.
Код, который вроде как открыт и выложен на GitHub, тоже не внушает доверия, ведь сколько-то важные алгоритмы шифрования в нем закрыты «по причинам безопасности».
Наука о криптографии предполагает, что алгоритм всегда известен взломщику, а все важные данные – это ключи, которые можно в любой момент поменять, ведь если необходимо скрывать алгоритм – это значит лишь то, что он изначально не надежен. Видимо поэтому его стыдливо скрыли.
Какую систему блокчейн-голосования вы могли бы предложить? Например, можно ли токенизировать голоса избирателей, чтобы подтверждать их личность во время процесса передачи голоса?
Тут можно пойти по схеме постройки блокчейна с нуля (первый вариант), либо взять уже существующую систему (второй вариант).
Вариант №1
Основа блокчейна – это не хеш, как старательно пытались убедить (возможно, себя) разработчики «московской системы блокчейн голосования», а консенсус, – т.е. метод, которым независимые ноды договариваются между собой и строят «главную линию сети».
Допустим, мы используем простейший dBFT (метод поочередного голосования между списком заранее определенных доверенных нод, кто может создавать в сети новые блоки). В данном случае есть N-е количество нод, которые могут производить блоки.
В качестве примера, возьмем ноды под контролем правительства. Далее пишется список правил, согласно которым система должна пропускать новые транзакции (транзакции, в нашем случае, и будут голосами участников). Пример такой схемы:
- Каждый участник имеет право голосовать один раз.
- Публичный ключ участника должен быть выбран из какого-то реестра, например, из Госуслуг.
- Голоса принимаются только в день голосования в выбранные часы.
- Проголосовать можно только за одного из заранее определенных кандидатов.
И так далее.
После этого мы формируем сеть, в которой генерируются новые блоки и подгружаем в эти ноды список участников, которые могут голосовать (только публичные ключи для обезличивания). Далее предоставляем участникам голосования возможность отправить свой голос, например, через Госуслуги, с возможностью видеть и сверять свой приватный ключ.
В блокчейне же мы храним транзакции, которые предоставляют голос, отданный в пользу того или иного кандидата.
Повторяю, в блокчейне голоса обезличены, но блокчейн, в данном случае, должен быть открыт и читаем извне.
Таким образом мы будем иметь хоть сколько-то прозрачную систему, где каждый участник голосования может проверить, действительно ли он проголосовал за того, кто указан в электронном бюллетене. При этом кто угодно может подсчитать количество голосов за каждого кандидата.
Вариант №2
Чтобы пойти более простой дорожкой, можно взять уже существующую криптовалюту и сделать голосования на ее базе, используя, например, для этого смарт-контракты. Описать все смарт-контрактами куда проще, ведь там уже изначально есть механика для прозрачной работы с адресами и аккаунтами.
Остаются лишь важные моменты с обезличиванием и при этом связыванием адресов участников с блокчейном того же Ethereum, например. Но ничего не мешает использовать для этого Госуслуги.
Тем самым можно выдавать всем избирателям один токен, который будет представлять собой голос. С его помощью пользователь сможет проголосовать за одного человека из списка кандидатов.
Как вы считаете, можно ли сделать по-настоящему прозрачное голосование на блокчейне, результаты которого нельзя будет сфальсифицировать?
Вот где-где, а в голосованиях блокчейну просто нет равных. При соблюдении основных правил: открытости и обезличенности. При должной децентрализации возможно сделать прозрачное голосование, которое нельзя сфальсифицировать.
Какие еще технологии можно использовать для того, чтобы сделать платформу для по-настоящему честного голосования в России?
Технологии уже все есть. С их помощью можно даже прямую демократию сделать. Проблема – в централизации.
Навскидку, для проведения честного голосования также можно использовать подпись Шнорра. Она позволит разграничить права. При помощи фильтра Блума можно получать информацию, при этом не раскрывая, что именно необходимо получить. Также потребуется что-то, связанное с хранением данных в блокчейне. Например – узлы Kademlia (DHT).
В начале февраля 2021 года в сети появилась информация о намерении властей РФ расширить географию дистанционного электронного голосования (ДЭГ). В настоящий момент, по словам председателя Центризбиркома России Эллы Памфиловой, представители инициативы проводят сбор заявок от субъектов РФ на проведении голосования при помощи блокчейн-технологий. По мнению экспертов ведомства, у действующей системы ДЭГ практически нет недостатков.
Согласно правилам Trust Project, данная статья отражает точку зрения автора и может не совпадать с мнением редакции BeInCrypto. Политика BeInCrypto — освещать любые события беспристрастно и соблюдать высочайшие стандарты журналистики. BeInCrypto рекомендует читателям самостоятельно проверять информацию и консультироваться со специалистом, прежде чем принимать любые финансовые решения на основе этого контента. Также обратите внимание, что наши «Условия и положения», «Политика конфиденциальности» и «Дисклеймеры» были обновлены