ВИБОРИ ОНЛАЙН: ЯКИЙ БЛОКЧЕЙН ОБРАТИ? (ЧАСТИНА 4)

Який блокчейн вибрати для Електронних виборів в Україні?

У завершальній частині статті щодо впровадження онлайн-виборів в Україні ми пропонуємо проаналізувати найвідоміші публічні блокчейни, а саме те, які з них будуть найбільш ефективними для використання у вітчизняних реаліях. Прочитати першу, другу та третю частини можна тут, тут і тут.

Як уже згадувалось раніше, блокчейн повинен бути великим (щоб будь-які маніпуляції над інформацією у ньому було вкрай складно провести) та публічним (щоби будь-який бажаючий міг перевірити дані в блокчейні).

Наступною не менш важливою характеристикою блокчейна є його пропускна здатність. Наприклад, у другому турі президентських виборів 2019 року взяли участь більш ніж 18 мільйонів виборців. Вибори тривали з 8 години ранку до 20 години вечора (крім дільниць за межами території України). В середньому, за годину голосувало 1,5 мільйонів виборців, що становить 25 тис. за хвилину і 416 людей щосекунди. Безсумнівно, були хвилини чи навіть години, коли за секунду голосувало більш ніж 1000 виборців. Тим не менше, для блокчейна важливо не те, щоб він міг опрацювати більше 1000 транзакцій за секунду, а те, щоби він міг справитися з усіма проведеними транзакціями за розумно відведені часові рамки (наприклад за добу, не більше). До того ж, захист анонімності результатів голосування до його закінчення передбачає велику кількість фейкових “голосувань”. Тому блокчейн повинен мати можливість справитись з усіма транзакціями за добу (12 годин на голосування і, наприклад, 12 годин на фіксацію всіх транзакцій, які ще не потрапили в блок блокчейна). Отже, необхідно, щоби блокчейн міг опрацювати в середньому від 400 до 1000 транзакцій в секунду (така похибка пов’язана з “фейковими” транзакціями — що їх більше, то більш захищеним буде результат голосування до закінчення виборів).

До того ж, не зовсім правильно судити лише з огляду на теоретичну пропускну здатність блокчейна, оскільки напевне якісь транзакції усередині нього відбуваються і без електронних виборів (тобто частина пропускної здатності вже й так зайнята). Тим не менше, ми пропонуємо не загострювати на цьому уваги й обмежитися вибором великого публічного блокчейна, який теоретично міг би впоратися з онлайн-голосуванням по формальному критерію “пропускна здатність”.

Наведемо варіанти блокчейнів, які дозволяють опрацьовувати наступну кількість транзакцій.

Блокчейн                                Пропускна здатність
                                                         (транзакцій\сек)
Bitcoin                                                           7
Ethereum                                                    20
Litecoin                                                        56
EOS                                                              250
Bitcoin Cash ABC                                       60
Ripple                                                         1500
Tron                                                            2000
Ethereum Classic                                       16

Як можна побачити у табличці, з наведених блокчейнів для завдань онлайн виборыв теоритично підійдуть тільки Ripple і Tron.

При цьому Ripple не є формально блокчейном (хоча цей термін і вживається на офіційному сайті) з точки зору багатьох користувачів, оскільки виконує роль розподіленої бази даних, транзакції якої узгоджуються між усіма «нодами» (серверами, на яких зберігається повна копія БД і які беруть участь у діяльності мережі). Кількість таких серверів перевищує 100. Успішних атак на мережу Ripple, які могли б призвести до істотних збитків, не було здійснено, хоча ступінь децентралізації мережі менший, ніж у біткоїну (хоча є люди, які вважають навпаки, —біткоїн більш централізований, ніж Ripple!). Тим не менше, Ripple вже використовується банками та іншими організаціями, тому, за умови рівності інших невідомих, ця мережа є не менш надійною, ніж переважна більшість публічних блокчейнів.

Блокчейн Tron зовсім молодий (тестова мережа була запущена в 2018, а основна — у 2019 році), проте один з найбільших. Успішних атак на нього поки не було здійснено (хоча критичні вразливі місця були знайдені та виправлені). Зважаючи на темпи розвитку, це — один з найперспективніших блокчейнів. Блокчейн працює на алгоритмі DPOS (Delegated Proof Of Stake) приблизно таким чином: будь-який власник монет TRX може проголосувати за валідатора блоків (на момент написання цієї статті їх — 1100), 20-50 валідаторів з найбільшою кількістю голосів (враховуються баланси всіх, хто брав участь у голосуванні) вибираються для валідації блоків. Блоки генеруються кожні 3 секунди й обрані валідатори по черзі їх опрацьовують. Так триває до тих пір, поки власники монет TRX не змінять свого рішення або балансу гаманця (а це можна зробити в будь-який момент). Складність атаки шляхом перезапису блокчейну на алгоритмі DPOS полягає в тому, що:

А) щоби атакуючий міг потрапити до списку валідаторів блоків, потрібно, щоб за нього проголосувала достатня кількість учасників (або декілька учасників з дуже великими балансами гаманців);

Б) вибирається не один валідатор, а декілька десятків, і кожен з них створює блок для блокчейна за строгою послідовністю, використовуючи свій підпис (відповідно, чужий блок не підпишеш, не знаючи приватного ключа попереднього/попередніх валідаторів, а мережа точно визначає, хто який блок повинен підписати);

В) спотворити можна тільки свій блок. Тим більше, якщо про це дізнається хтось інший, то валідатор одразу втрачає свій статус і перестає бути валідатором блоків, а публічність блокчейна, в свою чергу, дозволяє віднайти усі транзакції, що були підписані цим валідатором і не враховувати їх у процесі голосування.

Ще одною перевагою голосування на блокчейні Tron є те, що на ньому можна випустити свій цифровий токен, назвавши його наприклад “Криптоголос” і сказати, що випущено їх було відповідно до кількості голосувальників — 18 мільйонів. Заплатити за все це доведеться лише 1024 TRX (~$25). Вартість транзакції приблизно дорівнює нулю, проте деколи транзакція може коштувати біля $0.0001 за одиницю. Отже, теоретично, всі вибори можна провести за суму, що складає всього $25-6000. Не мільйонів доларів, а до шести тисяч доларів! Крім того, блокчейн Tron підтримує dApps (систему смарт-контрактів для децентралізованих програм), що може бути корисним для реалізації спеціальних виборчих контрактів, або чогось корисного у рамках виборчого процесу.

Отже, блокчейни Tron і Ripple наразі виглядають найбільш привабливими та імовірними для використання для проведення електронних виборів (проте їх придатність до поставленої задачі потребує подальшого вивчення). Імовірно, що існують й інші перспективні блокчейни, проте голосування передбачає високий рівень відповідальності і що більшим буде блокчейн, то краще з огляду на безпеку. Зважаючи на ці критерії, некрупні та/або приватні блокчейни ми не розглядали.

Висновки

Все можливо, в тому числі і електронні вибори. Це – великий, перспективний та інноваційний проект.

ПЗ, яке потрібно розробити

     У нижчеподаному списку, словосполучення на кшталт “труднощів виникнути не повинно” зовсім не означають, що завдання є простим (може бути навіть дуже складним), а лише підкреслює, що подібні завдання вирішувалися великим колом програмістів в межах багатьох проектів і алгоритм реалізації такого завдання є на загал зрозумілим.

1)   Серверне програмне забезпечення в ЦВК.

Функції:

А) Реєстрація виборця та валідація його права на голосування;

Б) зв’язок з реєстром виборців;

В) зв’язок з демреєстром (для перевірки цифрового підпису);

Г) формування реєстру виборців онлайн;

Д) розсилання монет на публічні гаманці виборців та “фейкові” гаманці, що беруть участь у захисті результатів голосування до його завершення;

Е) публікація реєстру виборців та його хешу (+часу) в блокчейні\сайті\тощо.

Основна складність – реалізувати розсилку монет – вирішується, проте може виявитись не найпростішим завданням. Решту завдань (інтеграція з реєстрами тощо) можна назвати хоча і великими за об’ємом, проте рутинними.

2)   Proxy-сервер для анонімізації виборця.

Функції:

А) Зареєструвати “себе” у ЦВК в якості проксі-сервера;

Б) Прийом повідомлень від виборця і транзитна передача їх у ЦВК чи до іншого проксі-сервера.

Тут труднощів не передбачається жодних.

3)   Android і Windows\Linux-додатки для голосування.

Функції:

А) Отримання списку проксі-серверів;

Б) Генерація блокчейн-гаманця виборця;

В) Реєстрація виборця у ЦВК;

Г) Відправлення монет на гаманець кандидата;

Д) Перевірка відданого голосу в блокчейні;

Е) Зчитування id-картки, підпис.

Складніть розробки може полягати хіба що у організації відправлення монет.

4) Open Source додаток (сервер або web-сервер) або смарт-контракт для підрахунку голосів.

Функції:

А) отримання хешів списку виборців, звірення хешів з опублікованим у ЦВК списком виборців;

Б) підрахунок голосів в блокчейні;

В) API для створення додатків на базі мобільних ОС і Windows\Linux.

При умові, що попередні три пункти були успішно виконані, труднощів бути не повинно.

5)   Реалізація сліпого підпису Шнорра на С\С++\Java\….

Труднощі на цьому етапі можуть виникнути тільки щодо сертифікації бібліотеки, оскільки бібліотека повинна бути кросс-платформовою.

6) Open Source додаток (-ки) для Android, iOS, Windows, Linux для показу результатів.

Труднощів виникнути не повинно. Цей пункт не є обов’язковим для виконання, проте публікації вихідних кодів для цих додатків додасть відкритості процесу голосування.

7) Додаток, який буде здійснювати голосування з “фейкових” гаманців.

8) Web-сервіс з API, який буде моніторити коректність роботи проксі-серверів.