Demokrazia errepresentatiboan oinarritzen diren gure egungo sistemek arazo asko dituzte. Izan ere, disfuntzionalak dira demokraziaren oinarrizko helburua betetzen ez duten zentzuan, hau da, gehiengoaren borondatea gailentzea.
Ondorengo diagrama guztiontzat ezaguna da:
Hauteskunde barrutiak estrategikoki hautatuz gero, gerta daiteke alderdi batek irabaztea, nahiz eta hautesleen gutxiengo batek onartzen duen. Baina hau arazo askotariko bat besterik ez da. Politikan parte hartzeak diru asko eskatzen du, eta horrek finantza-eraginaren aurrean ahul bihurtzen du sistema politikoa. Demokratikoak direla uste dugun sistemak interes pribatuei eta korporazioei zerbitzatzen diete, ez hautesleei (ikusi Estatuaren harrapaketa ).
Irtenbidea litzateke jendeak erabakiak hartzen askoz modu zuzenago batean parte hartzea, zuzeneko demokrazia edo demokrazia likidoaren bidez. Jakina, errealitatean, ez da bideragarria gai bakoitzari buruzko paperean oinarritutako erreferendumak antolatzea, bozketa horrek baliabide asko behar dituelako. Baina ez al da hori modu digitalean konpontzea, kostu txikian, paperezko botoen anonimotasuna eta segurtasuna bermatuz? Duela bi urte hasi nintzen galdera honi erantzuna bilatzen. Honela topatu nuen txanpon-nahasgailuak eta zero ezagutza-froga teknologia.
Txanpon nahastaileen funtsa blokeoen transakzioak atzemanezin bihurtzea da. Horrelako nahasgailu batek igerileku handi baten antzera funtzionatzen du. Erabiltzaileek euren txanponak alde batean sartu eta bestetik erretiratzen dituzte. Gakoa da ez dakigula nork erretiratzen duen zein txanpon beste aldean, denek gordailatutako kopuru bera bakarrik atera dezaketela bermatuz. Hau da, hain zuzen, bozketa anonimorako behar den sistema mota. Bakoitzak boto bat jasoko du eta bertan botoa eman ahal izango du. Ez dakigu nork eman duen botoa, baina ziur gaude pertsona bakoitzak boto bakarra ematen duela.
Beraz, Tornado Cash txanpon nahastaile ezagunenetako baten iturburu-kodea sakondu nuen nola funtzionatzen duen ulertzeko. Artikulu bat idatzi zen honi buruz ere. Behin funtzionaltasuna guztiz ulertu nuenean, oinarrizko ezaugarriak bereizi eta zk-merkle-tree izeneko liburutegia sortu nuen, edonork erabil dezakeen bozketa anonimoa egiteko. Boto-kontzeptuaren froga aplikazio bat ere garatu zen, edonork bere sistema eraikitzeko aukera ematen diona. Sistema blockchain-ean oinarrituta dago, eta horrek segurua egiten du, baina, aldi berean, oso zaila da erabiltzea ere. Lehendik dagoen bloke-kate batean eraikitzen badugu, transakzio-kostuak, hala nola, kontratu adimendunen hedapena eta antzeko arazoak sortzen dira, gure bloke-katea ustiatzea are erronka handiagoa den bitartean. Blockchain-ik gabeko eta minutu gutxitan konfiguratzeko erraza den irtenbide bat nahi nuen. Horrela sortu zen zkDemokrazia .
zkDemocracy NodeJS eta MySQL-n oinarritutako sistema tradizionala da, minutu gutxitan konfigura daitekeena. Modu autonomoan funtziona dezake, non zkDemocracy backend geruza osoa edo sistema handiago batean integratutako zerbitzu gisa balio du.
Sistema honekin sortzen den lehen galdera hau da: nola berma daiteke bloke-mailako segurtasuna MySQL datu-base baten gainean?
Bloke-katea aproposa da, aldaketak ezin diren eranskin-soluzio bakarra delako, eta horrek iragazki mota gehienak iragazten laguntzen du. Egia esan, iruzurra egiteko modu bakarra norbaitek besteen izenean bozkatzea da, edo horretarako baimenik ez duen norbaitek botoa ematea. Aukera hauek hautesleen identifikazio egokiarekin ekidin daitezke. Hori ziurtatzen bada, iruzurra teorikoki ezinezkoa bihurtzen da. Hori dela eta, MySQL-ren gainean eranskin-soilik sistema hori ezarri ahal badugu, blockchain-ek eskaintzen duen segurtasun maila bera eman dezakegu.
zkDemocracy-k arazoaren irtenbidea da datu-baseko tauletan txertatutako errenkada bakoitza "checkpoint hash" batekin lotuta dagoela. Hau keccak256 hash bat da, eremuetako datuek eta aurreko errenkadako kontrol puntuko hashek osatzen dute. Blockchain baten antzera, checkpoint hash-ak kateatuta daude, beraz, datu-basean zerbait aldatzen bada, aldatutako errenkada bakoitzeko checkpoint hash-a ere aldatuko da.
Norbait hautesle gisa erregistratzen denean edo botoa ematen duenean, sistemak digitalki sinatuta dagoen ordainagiria ematen du, transakzioa burutu dela baieztatzen duena. Ordainagiri honek checkpoint hash-a ere badu. Bazkide-zerrenda zein boto-zerrenda bozketa egin ondoren guztiz publikoak direnez, edonork egiaztatu dezake aldaketarik gertatu den ala ez, eta, hala bada, zerbitzariak sinatutako ordainagiria digitalki erabil dezake hori frogatzeko.
Erregistratutako hautesleen uneko zerrenda eta kontrol-puntu berriena edozein unetan berreskura daitezke sistematik, edozein iruzurra berehala frogagarri bihurtuz. Gainera, kontrol-puntuaren hash-a bloke-katean idazteko aukera dago aldian-aldian (adibidez, 10 minuturo), datu-basea ezin dela aldatu hash-a bloke-katean idatzi ondoren. Soluzio honek bloke-mailako segurtasun osoa eskaintzen du, datuak manipulatzeko edozein saiakerak blokeo-katearen hash-a ere aldatu beharko lukeelako.
Argi dago goiko konponbidearekin, sistema funtzionatzeko teknologia ezagunak (MySQL klusterrak adibidez) erabiltzen diren bitartean blokeoak ematen duen segurtasun maila bera lor daitekeela.
Semaphore liburutegia erabili nuen zero-ezagutza frogak sortzeko eta egiaztatzeko. Zk-merkle-tree-ren antzera funtzionatzen du, baina ikuskatu egin da eta garatzaileen oinarri handiagoa du.
zkDemokraziak oinarrizko bi elementu ditu: taldea eta botoa. Talde bat hautesleen multzoa da, hala nola hauteskunde barruti zehatz bateko hautesleak, enpresako akziodunak, etab. Era berean, bozketak bozketa ekitaldi bat adierazten du, hau da, presidentetzarako hauteskundeak, erreferenduma, korporazioen erabakiak hartzea eta abar. Hainbat taldek parte har dezakete bozketa ekitaldi bakarrean; adibidez, erreferendum batean hauteskunde barruti guztiek parte hartzen dute bozketan, eta emaitzak batu egiten dira. Era berean, talde batek hainbat bozketa ekitalditan parte har dezake. Beraz, hauteskunde barrutietarako taldeak ezartzen badira, erreferendum anitzak egin daitezke talde horiekin. Beste era batera esanda, taldeek eta botoek nm erlazioa dute.
Ikus dezagun orain erreferendum batek nola funtzionatuko lukeen zkDemokrazia sisteman eraikita.
Lehen urratsa botoa emateko eskubidea duten pertsonak identifikatzea da. Paperezko boto-sisteman, hauteskunde-barruti bakoitzari barruti horretako hautesleen zerrenda emanez egiten da. Norbait bozkatzera agertzen denean, bere izena zerrendatik ezabatzen da, behin bakarrik bozkatu ahal izango duela ziurtatuz.
Bozketa digitalean edo sarean, prozesu hau askoz errazagoa da. Estatuak identifikazio digital moduren bat ematen badu, egiaztapena guztiz automatizatu daiteke. Hautesleak konpromiso bakarra aurkezten du, datu-basean bere izenarekin erregistratuta dagoena. Hau zero ezagutza frogaren erdia da. Hautesleen eta konpromisoen zerrenda publikoa da, kontrol-puntu hash batek babestuta, eta edozein unetan eska daiteke digitalki sinatuta dagoen zerrenda ziurtatua. Beraz, identifikazio-sistema segurua bada, fase honetan iruzurra teorikoki ezinezkoa bihurtzen da.
Identifikazio digitaleko dokumenturik ematen ez bada, eskuzko identifikazioa beharrezkoa da. Hau pertsonalki edo bideokonferentzia sistema baten bidez egin daiteke (nahiz eta lineako identifikazioak bere arriskuak dituen teknologia faltsu sakon aurreratuaren ondorioz). Identifikazioa pertsona batek egin dezake, baina seguruagoa da ausaz hautatutako pertsona anitzek egiten badute. Segurtasun gehigarria ematen da identifikazioaren bideo-grabaketa egiten bada eta denbora mugatu batean gordetzen bada. Tarte horretan, erakunde independente batek ausaz egiaztapenak egin ditzake grabazioetan, iruzurra egiteko aukera gehiago murrizteko. Identifikazio-sistema hau paperezko bozketan erabiltzen dena bezain segurua da, edo are seguruagoa.
Izen-ematea behar bezala amaitutakoan, prozesua oso erraza da, hautesleak nahi adina botoetan parte har dezake eta. Kontrol-puntuaren hash-a eta publikoki irisgarria den hautesle-zerrenda dela eta, eskubidea duten pertsonek soilik bozkatu dezaketela ziurtatzen da. Boto-ekitaldi bakoitzaren datu-base osoa publikoa da eta kontrol-hash batek babestuta dago. Edonork egiazta dezake, zero ezagutza frogak erabiliz, boto jakin bat baliozko hautesle batengandik datorren ala ez, eta hautesle bakoitzak bere botoa datu-basean behar bezala erregistratuta dagoen egiaztatu dezake edozein unetan. Hautesleek erraz froga dezakete edozein iruzurra sistemak eskaintzen duen ordainagiria digitalki sinatuta.
Argi dago zkDemokrazia sistemarekin datu-baseak publikoak eta guztientzako eskuragarriak direla eta datu-basearen koherentzia frogagarria dela ziurtatzea, eta, aldi berean, hautesleen anonimotasuna mantenduz.
Sistema GitHub-en dago eskuragarri URL honetan: https://github.com/TheBojda/zkdemocracy
Garatzaileentzako bereziki beste artikulu bat idazteko asmoa dut. Bitartean, garatzaileen dokumentazio zehatza eta sistema erabiltzeko lagin-kodeak aurki daitezke GitHub-en.
Garapen honekin nire helburua gure sistema demokratikoak hobetzeko baldintza teknologikoak daudela frogatzea da. Gure esku dago aukera hauek nola baliatzeko gai garen...