Өкілетті демократияға негізделген қазіргі жүйелерімізде көптеген мәселелер бар. Шындығында, олар демократияның негізгі мақсатын, яғни көпшіліктің еркі басым болуын қамтамасыз етуді орындамайды деген мағынада дисфункциялы.
Келесі диаграмма бәріне таныс:
Сайлау округтерін стратегиялық таңдай отырып, сайлаушылардың аз бөлігі ғана қолдаса да, партия жеңіске жетуі мүмкін. Бірақ бұл көп мәселенің бірі ғана. Саясатқа қатысу көп ақшаны қажет етеді, бұл саяси жүйені қаржылық ықпалға осал етеді. Біз демократиялық деп санайтын жүйелер сайлаушыларға емес, жеке мүдделер мен корпорацияларға қызмет етеді ( Мемлекетті басып алу бөлімін қараңыз).
Шешім адамдардың шешім қабылдауға тікелей демократия немесе өтімді демократия арқылы тікелей қатысуы болар еді. Әрине, іс жүзінде әрбір мәселе бойынша қағаз жүзінде референдум ұйымдастыру мүмкін емес, өйткені мұндай дауыс беру өте көп ресурстарды қажет етеді. Бірақ қағаз жүзінде дауыс берудің анонимділігі мен қауіпсіздігін қамтамасыз ете отырып, мұны цифрлық жолмен, аз шығынмен шешу мүмкін емес пе? Мен бұл сұраққа екі жыл бұрын жауап іздей бастадым. Мен монета араластырғыштарды және нөлдік білімге төзімді технологияны осылай кездестірдім.
Монета араластырғыштарының мәні блокчейн транзакцияларын бақыланбайтын ету болып табылады. Мұндай араластырғыш үлкен бассейн сияқты жұмыс істейді. Пайдаланушылар монеталарын бір жағына салып, екінші жағына алады. Ең бастысы, біз кімнің екінші жағынан қай монетаны алып жатқанын білмейміз, бұл ретте әркім өзі салған соманы ғана ала алады. Бұл анонимді дауыс беру үшін қажет жүйе. Әркім өз дауысын бере алатын бюллетень алады. Біз кімнің қай дауыс бергенін білмейміз, бірақ әр адам бір ғана дауыс беретініне сенімді бола аламыз.
Осылайша, мен оның қалай жұмыс істейтінін түсіну үшін ең танымал монета араластырғыштарының бірі Tornado Cash-тың бастапқы кодын зерттедім. Бұл туралы мақала да жазылды. Функционалдылықты толық түсінгеннен кейін мен негізгі мүмкіндіктерді бөліп, zk-merkle-tree деп аталатын кітапхананы жасадым, оны кез келген адам жасырын дауыс беру үшін пайдалана алады. Сондай-ақ кез келген адамға өз жүйесін құруға мүмкіндік беретін тұжырымдамалық дауыс беру қосымшасы әзірленді. Жүйе блокчейнге негізделген, бұл оны қауіпсіз етеді, бірақ сонымен бірге оны пайдалануды қиындатады. Егер біз бұрыннан бар блокчейнге негізделетін болсақ, ақылды келісім-шартты қолдану және ұқсас мәселелер сияқты транзакциялық шығындар туындайды, ал жеке блокчейнді пайдалану одан да үлкен мәселе. Мен блокчейнсіз және бірнеше минут ішінде оңай орнатуға болатын шешімді қалаймын. Осылайша zkDemocracy дүниеге келді.
zkDemocracy — бірнеше минут ішінде орнатуға болатын дәстүрлі NodeJS және MySQL негізіндегі жүйе. Ол дербес режимде жұмыс істей алады, мұнда zkDemocracy толық сервер қабаты немесе үлкенірек жүйеге біріктірілген қызмет ретінде қызмет етеді.
Мұндай жүйеде туындайтын бірінші сұрақ: MySQL дерекқорында блокчейн деңгейіндегі қауіпсіздікті қалай қамтамасыз етуге болады?
Блокчейн өте қолайлы, өйткені ол өзгертулер мүмкін емес, алаяқтықтың көптеген түрлерін сүзуге көмектесетін тек қосымшаға арналған шешім. Шындығында, алдаудың жалғыз жолы - біреудің басқалардың атынан дауыс беруі немесе рұқсаты жоқ біреудің дауыс беруі. Сайлаушыларды дұрыс сәйкестендіру арқылы бұл мүмкіндіктердің алдын алуға болады. Егер бұл қамтамасыз етілсе, алаяқтық теориялық тұрғыдан мүмкін болмайды. Сондықтан, егер біз MySQL-тің үстіне осындай тек қосымшалар жүйесін құра алсақ, біз блокчейн ұсынатын қауіпсіздік деңгейін қамтамасыз ете аламыз.
zkDemocracy мәселесінің шешімі дерекқор кестелеріне енгізілген әрбір жолдың «тексеру нүктесі хэшімен» байланысты болуы болып табылады. Бұл өрістер деректерінен және алдыңғы жолдың бақылау нүктесінің хэшінен тұратын keccak256 хэші. Блокчейнге ұқсас, бақылау нүктесінің хэштері тізбектелген, сондықтан дерекқорда бірдеңе өзгертілсе, өзгертілгеннен кейінгі әрбір жолдың бақылау нүктесінің хэші де өзгереді.
Біреу сайлаушы ретінде тіркелген немесе дауыс берген кезде жүйе транзакцияның аяқталғанын растайтын электрондық цифрлық қолтаңбамен куәландырылған түбіртек береді. Бұл түбіртекте бақылау нүктесінің хэші де бар. Дауыс беруден кейін мүшелер тізімі де, дауыстар тізімі де толығымен ашық болғандықтан, кез келген адам қандай да бір өзгерістердің болған-болмағанын тексере алады, ал егер солай болса, оны дәлелдеу үшін сервер берген сандық қолтаңбасы бар түбіртекті пайдалана алады.
Тіркелген сайлаушылардың ағымдағы тізімі мен ең соңғы бақылау нүктесінің хэшін кез келген уақытта жүйеден алуға болады, бұл кез келген алаяқтықты бірден дәлелдеуге мүмкіндік береді. Бұған қоса, блокчейнге бақылау нүктесінің хэшін тұрақты аралықпен (мысалы, әрбір 10 минут сайын) жазу мүмкіндігі бар, әрі бұл хэш блокчейнге жазылғаннан кейін дерекқорды өзгертуге болмайтындығына көз жеткізеді. Бұл шешім блокчейн деңгейіндегі толық қауіпсіздікті қамтамасыз етеді, өйткені деректерді өзгерту әрекеті блокчейндегі хэшті де өзгертуді қажет етеді.
Жоғарыда аталған шешіммен жүйені басқару үшін таныс технологияларды (мысалы, MySQL кластерлері) пайдалану кезінде блокчейн қамтамасыз ететін қауіпсіздіктің бірдей деңгейіне қол жеткізуге болатыны анық.
Мен нөлдік білімнің дәлелдемелерін жасау және тексеру үшін Semaphore кітапханасын пайдаландым. Ол zk-merkle-tree сияқты жұмыс істейді, бірақ тексерілген және әзірлеушілер базасы үлкенірек.
zkДемократияның екі негізгі элементі бар: топтық және дауыс беру. Топ – белгілі бір сайлау округінің сайлаушылары, компания акционерлері және т.б. сияқты сайлаушылардың жиынтығы. Сол сияқты дауыс беру президенттік сайлау, референдум, корпоративтік шешім қабылдау және т.б. болуы мүмкін дауыс беру оқиғасын білдіреді. Бір дауыс беру шарасына бірнеше топ қатыса алады; мысалы, референдумда барлық сайлау округтері дауыс беруге қатысады және нәтижелер жинақталады. Сол сияқты, топ бірнеше дауыс беру іс-шараларына қатыса алады. Демек, сайлау округтері бойынша топтар құрылса, бұл топтармен бірнеше рет референдум өткізуге болады. Басқаша айтқанда, топтар мен дауыс берулер nm қатынасына ие.
Енді zkDemocracy жүйесіне негізделген референдум қалай жұмыс істейтінін қарастырайық.
Бірінші қадам - дауыс беруге құқығы бар адамдарды анықтау. Қағаз негізіндегі дауыс беру жүйесінде бұл әрбір сайлау округіне сол округ бойынша дауыс беруге құқығы бар сайлаушылардың тізімін беру арқылы жүзеге асырылады. Біреу дауыс беруге келгенде, оның аты-жөні тізімнен сызылып, ол тек бір рет дауыс бере алады.
Сандық немесе онлайн дауыс беруде бұл процесс әлдеқайда қарапайым. Егер мемлекет цифрлық сәйкестендірудің қандай да бір түрін қамтамасыз етсе, тексеру толығымен автоматтандырылуы мүмкін. Сайлаушы бірегей міндеттеме береді, ол дерекқорда атымен жазылады. Бұл нөлдік білімнің жартысы. Сайлаушылардың тізімі мен міндеттемелері ашық, бақылау пунктінің хэшімен қорғалған және электрондық цифрлық қолтаңбасы қойылған, куәландырылған тізімді кез келген уақытта сұрауға болады. Сондықтан, егер сәйкестендіру жүйесі қауіпсіз болса, бұл кезеңде алаяқтық теориялық тұрғыдан мүмкін емес болады.
Егер цифрлық сәйкестендіру құжаты ұсынылмаса, қолмен сәйкестендіру қажет. Мұны жеке немесе тіпті бейнеконференцбайланыс жүйесі арқылы жасауға болады (бірақ онлайн сәйкестендірудің озық терең жалған технологияға байланысты тәуекелдері бар). Сәйкестендіруді бір адам жүзеге асыра алады, бірақ кездейсоқ таңдалған бірнеше адам жасаса, ол қауіпсізрек болады. Сәйкестендірудің бейнежазбасы шектелген уақыт ішінде жасалса және сақталса, қосымша қауіпсіздік қамтамасыз етіледі. Осы кезеңде тәуелсіз ұйым алаяқтық мүмкіндігін одан әрі азайту үшін жазбаларға кездейсоқ тексеру жүргізе алады. Бұл сәйкестендіру жүйесі қазіргі қағаз негізіндегі дауыс беруде қолданылатындай қауіпсіз немесе одан да қауіпсіз.
Тіркеу сәтті аяқталғаннан кейін процесс өте қарапайым болады, өйткені сайлаушы қалағанша көп дауыс беруге қатыса алады. Бақылау пунктінің хэшіне және жалпыға қолжетімді сайлаушылар тізіміне байланысты дауыс беруге құқығы бар адамдар ғана дауыс бере алады. Әрбір дауыс беру оқиғасының барлық дерекқоры жалпыға қолжетімді және бақылау нүктесінің хэшімен қорғалған. Кез келген адам нөлдік білімнің дәлелдемелерін пайдалана отырып, берілген дауыс жарамды сайлаушыдан келетінін тексере алады және әрбір сайлаушы кез келген уақытта өз дауысының дерекқорда дұрыс жазылғанын тексере алады. Сайлаушылар жүйе ұсынған сандық қолтаңбасы бар түбіртек арқылы кез келген алаяқтықты оңай дәлелдей алады.
zkDemocracy жүйесі арқылы дерекқорлардың жалпыға қолжетімді және барлығына қолжетімді болуын және деректер қорының жүйелілігі дәлелденетінін, сонымен бірге сайлаушылардың анонимділігін сақтайтынын қамтамасыз етуге болатыны анық.
Жүйе GitHub сайтында келесі URL мекенжайында қолжетімді: https://github.com/TheBojda/zkdemocracy
Мен әзірлеушілерге арнайы тағы бір мақала жазуды жоспарлап отырмын. Әзірге әзірлеушінің егжей-тегжейлі құжаттамасы мен жүйені пайдаланудың үлгі кодын GitHub сайтынан табуға болады.
Менің бұл әзірлемедегі мақсатым – демократиялық жүйелерімізді жақсарту үшін технологиялық жағдайлардың бар екенін дәлелдеу. Бұл мүмкіндіктерді қалай пайдалана алатынымыз өзімізге байланысты...