Μετάβαση στο κύριο περιεχόμενο

Παρουσίαση του Vocdoni Ballot Protocol

Vocdoni Ballot Protocol Η βασική καινοτομία του πρωτοκόλλου του Vocdoni έγκειται στην υλοποίηση του πρώτου αποκεντρωμένου, ανθεκτικού στη λογοκρισία και…

F

Ferran

· 12 λεπτά ανάγνωσης

Παρουσίαση του Vocdoni Ballot Protocol

Το Vocdoni Ballot Protocol

Η βασική καινοτομία του πρωτοκόλλου του Vocdoni έγκειται στην υλοποίηση του πρώτου αποκεντρωμένου, ανθεκτικού στη λογοκρισία και ανώνυμου πρωτοκόλλου ηλεκτρονικής ψηφοφορίας. Πέρα όμως από αυτές τις τεχνικές φιλοδοξίες, το Πρωτόκολλο εξασφαλίζει συμβατότητα με ένα ευρύ φάσμα δημοκρατικών διαδικασιών. Το Vocdoni το επιτυγχάνει εν μέρει χάρη στην ευέλικτη προδιαγραφή μας για τα ψηφοδέλτια.

Το Vocdoni Ballot Protocol (πρωτόκολλο ψηφοδελτίων του Vocdoni) φιλοδοξεί να είναι μια απλή αλλά ισχυρή προδιαγραφή για την αναπαράσταση των ψηφοδελτίων και των αποτελεσμάτων μιας διαδικασίας ψηφοφορίας.

Πρώτα, μερικοί ορισμοί:

Μια διαδικασία ψηφοφορίας αποτελείται από ένα ή περισσότερα πεδία, καθένα από τα οποία αντιπροσωπεύει μία ερώτηση ή μία επιλογή μιας ερώτησης, ανάλογα με τον τύπο της διαδικασίας. Κατά την ψηφοφορία, οι ψηφοφόροι με δικαίωμα ψήφου επιλέγουν από ένα σύνολο προκαθορισμένων απαντήσεων για κάθε πεδίο. Ο επιτρεπόμενος αριθμός απαντήσεων, ο τύπος της απάντησης κ.λπ. εξαρτώνται επίσης από τον συγκεκριμένο τύπο διαδικασίας. Ο ψηφοφόρος εκφράζει τις επιλογές του καταθέτοντας ένα ψηφοδέλτιο.

Ένα ψηφοδέλτιο αναπαρίσταται ως πίνακας (array) — δηλαδή λίστα — φυσικών αριθμών. Κάθε θέση του πίνακα περιέχει μια απάντηση σε ένα από τα πεδία της διαδικασίας.

Τα αποτελέσματα συσσωρεύονται σε έναν δισδιάστατο πίνακα φυσικών αριθμών (μια μήτρα). Κάθε γραμμή αυτής της μήτρας αντιστοιχεί σε ένα πεδίο του ψηφοδελτίου και κάθε στήλη σε μία από τις δυνατές τιμές του πεδίου. Κάθε αριθμός στη μήτρα αποτελεσμάτων είναι απλώς το πλήθος των ψήφων για την τιμή που αντιστοιχεί στη συγκεκριμένη θέση.

Πριν μπούμε στις λεπτομέρειες της διαμόρφωσης μιας διαδικασίας, ας δούμε ένα γενικό παράδειγμα. Έστω ότι έχουμε μια διαδικασία με τρία πεδία, A, B και C, καθένα από τα οποία δέχεται ως δυνατές τιμές τις 0, 1 και 2. Δεν γνωρίζουμε τι αντιπροσωπεύουν αυτές οι τιμές ή τα πεδία, αλλά προς το παρόν αυτό δεν έχει σημασία.

Στο παράδειγμα αυτό έχουν κατατεθεί δύο ψήφοι. Ο πρώτος ψηφοφόρος επέλεξε την τιμή 2 για το πεδίο A, 0 για το πεδίο B και 1 για το πεδίο C. Το δεύτερο ψηφοδέλτιο έχει τις τιμές 0, 0 και 2. Στο παραπάνω διάγραμμα βλέπετε πώς τα ψηφοδέλτια συνδέονται με τη μήτρα αποτελεσμάτων. Ο δείκτης (index) μιας τιμής του ψηφοδελτίου καθορίζει σε ποιο πεδίο ανήκει η τιμή — π.χ. η πρώτη θέση του ψηφοδελτίου 1 έχει την τιμή 2, άρα το ψηφοδέλτιο 1 αποδίδει την τιμή 2 στο πεδίο A. Μέσα σε κάθε πεδίο της μήτρας αποτελεσμάτων, η τιμή της ψήφου αναπαρίσταται από τον δείκτη της. Τοποθετούμε ένα 1 στη θέση 2 του πεδίου A για να δηλώσουμε τη μία ψήφο υπέρ της τιμής 2.

Αυτό ίσως να μην είναι διαισθητικό με την πρώτη ματιά. Δοκιμάστε να παρακολουθήσετε μερικές ακόμη τιμές από κάποιο ψηφοδέλτιο ως τη μήτρα αποτελεσμάτων, ώστε να βεβαιωθείτε ότι έχετε κατανοήσει καλά πώς αναπαρίστανται εδώ τα αποτελέσματα.


Το ίδιο το πρωτόκολλο

Το πρωτόκολλο ψηφοδελτίων αποτελείται από ένα σύνολο αριθμητικών και δυαδικών (αληθές/ψευδές) μεταβλητών που περιορίζουν τη μορφή ενός έγκυρου ψηφοδελτίου.

Πώς θα μπορούσε να αναπαρασταθεί με αυτό το πρωτόκολλο το παράδειγμα που παρουσιάσαμε παραπάνω;

Καταρχάς, γνωρίζουμε ότι έχουμε τρία πεδία, άρα

  • maxCount = 3

Οι έγκυρες τιμές μας είναι οι 0, 1 και 2, οπότε μπορούμε να ορίσουμε

  • minValue = 0
  • maxValue = 2

Το δεύτερο ψηφοδέλτιο περιέχει την τιμή 0 σε περισσότερα από ένα πεδία. Για να είναι λοιπόν έγκυρο αυτό το ψηφοδέλτιο, πρέπει να ορίσουμε

  • uniqueValues = 0 (εδώ το 0 σημαίνει «ψευδές» και το 1 «αληθές»)

Για τις επόμενες τρεις μεταβλητές δεν υπάρχει μία προφανής επιλογή τιμών, οπότε ας προσθέσουμε λίγο περισσότερο πλαίσιο στο παράδειγμά μας. Ας πούμε ότι η διαδικασία αποτελείται από μία μόνο ερώτηση, που ζητά από τους ψηφοφόρους να κατανείμουν χρυσά νομίσματα σε διάφορους οργανισμούς. Κάθε πεδίο αντιπροσωπεύει έναν οργανισμό, και η τιμή που αποδίδεται στο πεδίο είναι ο αριθμός των χρυσών νομισμάτων που θέλει να διαθέσει ο ψηφοφόρος στον οργανισμό αυτόν.

Με βάση τις μεταβλητές minValue και maxValue που έχουμε ήδη ορίσει, γνωρίζουμε ότι κάθε χρήστης μπορεί να διαθέσει από 0 έως 2 νομίσματα σε κάθε οργανισμό. Ένας εύλογος πρόσθετος κανόνας όμως θα ήταν οι ψηφοφόροι να μπορούν να διαθέσουν συνολικά μόνο 3 νομίσματα. Και ας υποθέσουμε επίσης ότι οι ψηφοφόροι οφείλουν να διαθέσουν τουλάχιστον 1 νόμισμα.

Αυτό δίνει νόημα στο παραπάνω διάγραμμα της διαδικασίας: το πρώτο ψηφοδέλτιο διαθέτει συνολικά 3 νομίσματα (ίσως ο ψηφοφόρος υποστηρίζει τους οργανισμούς A και C, αλλά συμπαθεί λίγο περισσότερο τον A). Το δεύτερο ψηφοδέλτιο διαθέτει μόνο 2 από τα 3 δυνατά νομίσματα (ο ψηφοφόρος υποστηρίζει μόνο τον οργανισμό C και προτιμά να «χαραμίσει» το τρίτο του νόμισμα παρά να το δώσει στον A ή στον B). Μπορούμε λοιπόν με ασφάλεια να ορίσουμε

  • minTotalCost = 1
  • maxTotalCost = 3

και τα δύο ψηφοδέλτια θα είναι έγκυρα.

Η τελευταία μεταβλητή που πρέπει να ορίσουμε είναι η costExponent, η οποία σχετίζεται με την τετραγωνική ψηφοφορία. Δεν θα εμβαθύνουμε προς το παρόν σε αυτόν τον τύπο ψηφοφορίας, οπότε ας κρατήσουμε απλώς την προεπιλογή

  • costExponent = 1

Αφιερώστε ξανά λίγο χρόνο σε καθεμία από αυτές τις μεταβλητές και δείτε αν μπορείτε να καταλάβετε πώς η αλλαγή οποιασδήποτε από αυτές θα επηρέαζε την παραδειγματική μας διαδικασία ψηφοφορίας.

Ερμηνεία των αποτελεσμάτων

Οι παραπάνω μεταβλητές συνιστούν το σύνολο του Vocdoni Ballot Protocol, το οποίο καλύπτει την επικύρωση των ψηφοδελτίων και την καταμέτρηση των αποτελεσμάτων όπως τις χειρίζεται η βασική υποδομή. Προφανώς όμως λείπουν ακόμη πολλές πληροφορίες όσον αφορά την ανθρώπινη εμπειρία. Όσοι ενσωματώνουν το πρωτόκολλο πρέπει να αποφασίσουν πώς θα κοινοποιούν το πραγματικό περιεχόμενο μιας διαδικασίας στους ψηφοφόρους, καθώς και πώς θα ερμηνεύουν και θα παρουσιάζουν τη μήτρα αποτελεσμάτων. Η ερμηνεία των αποτελεσμάτων βρίσκεται εκτός του πεδίου εφαρμογής του πρωτοκόλλου ψηφοδελτίων, είναι όμως χρήσιμη για να κατανοήσετε πώς μπορεί να χρησιμοποιηθεί το Πρωτόκολλο.

Στην τρέχουσα εκδοχή του, το Vocdoni ορίζει δύο μορφές ερμηνείας αποτελεσμάτων: Στάθμιση βάσει δείκτη (Index-weighted) και Διακριτές τιμές (Discrete values).

Στάθμιση βάσει δείκτη

Για την παραδειγματική μας διαδικασία θα χρησιμοποιούσαμε τον τύπο ερμηνείας αποτελεσμάτων με στάθμιση βάσει δείκτη. Το σχήμα αυτό ταιριάζει σε διαδικασίες μίας ερώτησης, όπως η ψηφοφορία κατάταξης, η πολλαπλή επιλογή ή ο συμμετοχικός προϋπολογισμός. Κάθε δείκτης σε ένα πεδίο της μήτρας αποτελεσμάτων αντιπροσωπεύει μια σταθμισμένη τιμή, όπου στην περίπτωσή μας το βάρος είναι ο αριθμός των νομισμάτων που διατέθηκαν σε έναν οργανισμό. Το άθροισμα των ψήφων, πολλαπλασιασμένων επί τις σταθμισμένες βάσει δείκτη τιμές τους, δίνει τη συνολική τιμή του πεδίου.

Αυτή η ερμηνεία συγκεντρώνει τα αποτελέσματα της παραδειγματικής μας διαδικασίας: ο οργανισμός A λαμβάνει 2 νομίσματα, ο οργανισμός C λαμβάνει 3.

Διακριτές τιμές

Η ερμηνεία διακριτών τιμών χρησιμοποιείται σε διαδικασίες όπου κάθε πεδίο αποτελεί ξεχωριστή ερώτηση. Εδώ κάθε τιμή αντιπροσωπεύει μία διακριτή επιλογή (π.χ. «Υποψήφιος 2») και όχι έναν πολλαπλασιαστή (π.χ. «2 πόντοι σε αυτήν την επιλογή»). Έτσι, η μέθοδος αυτή ερμηνεύει τα αποτελέσματα αναφέροντας απλώς ποια τιμή, αν υπάρχει, συγκέντρωσε τις περισσότερες ψήφους σε κάθε πεδίο.

Το 0 προορίζεται για την ισοπαλία μεταξύ επιλογών.

Οι δύο αυτές μορφές δεν φιλοδοξούν να είναι εξαντλητικές. Όπως αναφέρθηκε παραπάνω, το ίδιο το πρωτόκολλο ψηφοδελτίων είναι αγνωστικό ως προς τον τρόπο συγκέντρωσης των αποτελεσμάτων, και όποιος χτίζει το δικό του επίπεδο εφαρμογής πάνω στο πρωτόκολλο μπορεί να ορίσει τη δική του ερμηνεία αποτελεσμάτων.


Παραδείγματα

Ας δούμε μερικά παραδείγματα από τον πραγματικό κόσμο, για να πάρετε μια ιδέα του πόσο ευέλικτο είναι το πρωτόκολλο ψηφοδελτίων.

Ψηφοφορία κατάταξης

Διευθύνω μια εταιρεία ζαχαρωτών. Ετοιμαζόμαστε να κυκλοφορήσουμε μια νέα γεύση γλειφιτζουριού και θέλουμε να κάνουμε μια έρευνα αγοράς για να δούμε ποια γεύση θα αρέσει περισσότερο στους πελάτες. Στείλαμε σε μερικούς από τους πιο πιστούς μας πελάτες ένα κουτί με γλειφιτζούρια σε γεύσεις σπαράγγι, φασόλια, καρότο και άνηθο (δεν είμαστε και ιδιαίτερα επιτυχημένη εταιρεία ζαχαρωτών ☹). Τους ζητάμε να δηλώσουν τις προτιμήσεις τους κατατάσσοντας τα γλειφιτζούρια σε μια διαδικασία ψηφοφορίας του Vocdoni…

Η περίπτωση αυτή είναι ιδανική για μια διαδικασία ψηφοφορίας κατάταξης. Δείτε πώς θα δημιουργήσουμε τη διαδικασία για τους δοκιμαστές μας:

Έχουμε τέσσερις διαφορετικές γεύσεις ζαχαρωτών που θέλουμε να καταταγούν. Οι χρήστες πρέπει να αποδώσουν μια τιμή σε κάθε ζαχαρωτό, οπότε χρειαζόμαστε ξεχωριστό πεδίο για κάθε τύπο ζαχαρωτού.

  • maxCount = 4

Θα ζητήσουμε από τους χρήστες να κατατάξουν τα ζαχαρωτά από το καλύτερο προς το χειρότερο, με το 3 να αντιστοιχεί στο καλύτερο και το 0 στο χειρότερο.

  • minValue = 0
  • maxValue = 3

Δεν μας βοηθά να θεωρούν οι δοκιμαστές ότι κάποια ζαχαρωτά είναι εξίσου καλά — θέλουμε σαφή κατάταξη από το καλύτερο ως το χειρότερο.

  • uniqueValues = 1

Επειδή οι χρήστες περιορίζονται από την υποχρέωση να αποδώσουν τέσσερις μοναδικές τιμές, γνωρίζουμε ότι το συνολικό κόστος θα είναι υποχρεωτικά 0+1+2+3=6.

  • minTotalCost = 6
  • maxTotalCost = 6

Και εδώ δεν χρειαζόμαστε το costExponent.

  • costExponent = 1

Ας δούμε το πρώτο μας ψηφοδέλτιο. Ο συγκεκριμένος δοκιμαστής λατρεύει τα καρότα, οπότε κατατάσσει το καρότο ως πρώτη επιλογή. Ακολουθούν το σπαράγγι και ο άνηθος, με τα φασόλια στην τελευταία θέση. Δείτε πώς καταγράφεται αυτό το ψηφοδέλτιο στη μήτρα αποτελεσμάτων:

Τα ψηφοδέλτια συνεχίζουν να καταφθάνουν, και συγκεντρώνουμε συνολικά 30 απαντήσεις! Με τη μήτρα αποτελεσμάτων πλήρη, συγκεντρώνουμε στη συνέχεια τα αποτελέσματά μας σύμφωνα με τη μέθοδο στάθμισης βάσει δείκτη…

Νικητής είναι ο άνηθος! 🎉 Χάρη σε αυτήν την εκτενή έρευνα αγοράς, σύντομα θα βρίσκετε γλειφιτζούρια με γεύση άνηθου στο σούπερ μάρκετ της γειτονιάς σας.

Τετραγωνική ψηφοφορία

Ο αυτοδιαχειριζόμενος συνεταιρισμός μας κατασκευής υποδημάτων πραγματοποιεί αυτήν την εβδομάδα την ετήσια συνέλευσή του, κατά την οποία θα εκλέξουμε νέο υπεύθυνο μάρκετινγκ. Η αναμέτρηση είναι πολύ τεταμένη, και έχει κατατεθεί πρόταση να χρησιμοποιηθεί τετραγωνική ψηφοφορία, ώστε οι όροι να είναι πιο ισότιμοι.

Η τετραγωνική ψηφοφορία είναι μια μέθοδος που επιτρέπει στους ψηφοφόρους να διαθέσουν πολλαπλές ψήφους σε έναν υποψήφιο, με αυξανόμενο κόστος. Στην περίπτωσή μας υπάρχουν τέσσερις υποψήφιοι, και κάθε μέλος διαθέτει έως 9 «πόντους» για την ψηφοφορία. Το ιδιαίτερο είναι ότι το κόστος της απόδοσης μιας τιμής v σε ένα πεδίο ισούται με το v υψωμένο στη δύναμη costExponent. Έτσι, με costExponent ίσο με 2, αν δώσω 1 ψήφο στον Υποψήφιο A, αυτό μου κοστίζει έναν πόντο, αν όμως δώσω 2 ψήφους, μου κοστίζει 4 πόντους, ενώ 3 ψήφοι σε έναν υποψήφιο μου κοστίζουν και τους 9 πόντους. Ας το δούμε πιο αναλυτικά.

Έχουμε τέσσερις διαφορετικούς υποψηφίους, και οι χρήστες μπορούν να ψηφίσουν περισσότερους από έναν. Άρα καθένας πρέπει να έχει το δικό του πεδίο.

  • maxCount = 4

Ας βάλουμε ένα λογικό όριο στην τιμή που μπορεί να αποδώσει ένας ψηφοφόρος σε έναν υποψήφιο.

  • minValue = 0
  • maxValue = 3

Δεν πειράζει να επαναλαμβάνουν τα μέλη τις ίδιες τιμές.

  • uniqueValues = 0

Όπως είπαμε παραπάνω, τα μέλη μπορούν να ξοδέψουν έως 9 πόντους.

  • minTotalCost = 0
  • maxTotalCost = 9

Επιτέλους, ήρθε η στιγμή αυτής της μεταβλητής να λάμψει. Ας την ορίσουμε σε 2, ώστε το κόστος κάθε τιμής να είναι το τετράγωνο της τιμής αυτής.

  • costExponent = 2

Ας φανταστούμε μερικές διαμορφώσεις ψηφοδελτίων, για να πάρετε μια ιδέα του πώς λειτουργεί η τετραγωνική ψηφοφορία.

Ψηφοδέλτιο 1

Ο πρώτος μας ψηφοφόρος θα ήταν ικανοποιημένος με οποιονδήποτε υποψήφιο, αλλά προτιμά ελαφρώς τον Υποψήφιο B. Θέλει επίσης να αξιοποιήσει όσο το δυνατόν μεγαλύτερο μέρος της ισχύος της ψήφου του.

Καθεμία από τις τιμές 1 που καταθέτει αυτός ο ψηφοφόρος προσθέτει μόνο 1 στο συνολικό του κόστος. Μια τιμή 2 όμως προσθέτει 2^2, δηλαδή 4, στο συνολικό του κόστος. Κατανέμοντας ψήφους σε όλους τους υποψηφίους, ο ψηφοφόρος αυτός καταφέρνει να διαθέσει συνολική τιμή 5, φτάνοντας σε κόστος μόλις 7. Δεν μπορεί να φτάσει το μέγιστο συνολικό κόστος των 9, γιατί αν ανέβαζε οποιαδήποτε από τις τιμές 1 σε 2, το κόστος θα ξεπερνούσε το 9.

Ψηφοδέλτιο 2

Ο δεύτερος ψηφοφόρος έχει πολύ ισχυρή άποψη. Υποστηρίζει μόνο τον Υποψήφιο C. Έχει επομένως νόημα να αποδώσει τη μέγιστη τιμή στον Υποψήφιο 3. Παρότι χρησιμοποίησε συνολική τιμή μόλις 3, το συνολικό του κόστος βρίσκεται στο μέγιστο: 3^2 = 9.

Φανταστείτε πώς, σε μια μεγαλύτερη διαδικασία με περισσότερους υποψηφίους και ψηφοφόρους, η τετραγωνική ψηφοφορία θα μπορούσε να αποτυπώσει με μεγάλη ακρίβεια όχι μόνο την προτίμηση, αλλά και την έντασή της. Προς το παρόν, αφήνουμε την ερμηνεία αυτών των αποτελεσμάτων ως άσκηση για τον αναγνώστη.


Ανοικτό και ευέλικτο πρωτόκολλο

Ελπίζουμε να αποκτήσατε μια καλή εικόνα ορισμένων πιθανών περιπτώσεων χρήσης του Vocdoni Ballot Protocol. Το σημαντικότερο χαρακτηριστικό του Πρωτοκόλλου, ωστόσο, είναι η ευελιξία του. Πέρα από τις διαμορφώσεις που παρουσιάσαμε παραπάνω, υπάρχουν αμέτρητες άλλες παραλλαγές και μηχανισμοί ερμηνείας. Αυτές οι 8 μεταβλητές καλύπτουν ένα ευρύ φάσμα σεναρίων που αντιπροσωπεύουν σχεδόν όλους τους τύπους ψηφοφορίας που γνωρίζουμε, καθώς και άλλους που δεν έχουν καν επινοηθεί ακόμη. Και πρόκειται μόλις για μια πρώιμη εκδοχή: το Πρωτόκολλο θα μπορούσε να επεκταθεί, αν χρειαστεί, για να προσφέρει ακόμη περισσότερες δυνατότητες.

Η τεχνική ευελιξία και ο ανοικτός χαρακτήρας αυτού του Πρωτοκόλλου αντανακλώνται στις πραγματικές χρήσεις του. Η ευκολία με την οποία ένας οργανισμός μπορεί να οργανώσει μια διαδικασία οποιουδήποτε τύπου μειώνει δραστικά το εμπόδιο για κάθε είδους λήψη αποφάσεων, είτε πρόκειται για παραδοσιακή ψηφοφορία είτε για κάτι πιο άμεσο, ρευστό και πειραματικό. Τα μέλη της κοινωνίας των πολιτών διαθέτουν πλέον τα εργαλεία για να ενδυναμωθούν και να υλοποιήσουν δημοκρατικές διαδικασίες που τα αντιπροσωπεύουν καλύτερα, όποια μορφή κι αν έχουν αυτές.


Σημείωση: παραδείγματα κώδικα

Για όσους από εσάς έχετε τεχνικό υπόβαθρο και φτάσατε ως εδώ, το Πρωτόκολλο ίσως να μη σημαίνει πολλά χωρίς μερικά πρακτικά παραδείγματα κώδικα. Δείτε πώς θα μπορούσατε να χρησιμοποιήσετε το dvote-js, την υλοποίηση του Πρωτοκόλλου σε typescript/javascript, για να δημιουργήσετε μια διαδικασία.

Αρχικά, ας κάνουμε τις απαραίτητες ρυθμίσεις. Εισάγουμε τα απαραίτητα πακέτα, συνδεόμαστε στις πύλες (gateways) του Vocdoni και δημιουργούμε έναν κατάλογο ψηφοφόρων με εικονικούς ψηφοφόρους. Θα ανακτήσουμε επίσης το τρέχον ύψος μπλοκ, ώστε να ορίσουμε σωστά τον χρόνο έναρξης της διαδικασίας.

Δείτε την τεκμηρίωση για αναλυτικότερους οδηγούς σχετικά με τις αρχικές ρυθμίσεις, τη σύνδεση σε πύλες, τη δημιουργία καταλόγου ψηφοφόρων κ.λπ.

Τώρα μπορούμε να δημιουργήσουμε τα μεταδεδομένα της διαδικασίας μας. Ας φτιάξουμε μια διαδικασία για το παράδειγμα με τις γεύσεις ζαχαρωτών που συζητήσαμε παραπάνω. Τα μεταδεδομένα είναι πληροφορίες που βοηθούν τα προγράμματα-πελάτες να εμφανίσουν σωστά τη διαδικασία ψηφοφορίας και περιέχουν τις αναγνώσιμες από τον άνθρωπο πληροφορίες, χωρίς να διαμορφώνουν τη διαδικασία σε επίπεδο πρωτοκόλλου. Εδώ ορίζουμε μία ερώτηση ανά γεύση ζαχαρωτού, συμπεριλαμβάνοντας τις προκαθορισμένες τιμές επιλογής από 0 έως 3. Δηλώνουμε επίσης τους τύπους συγκέντρωσης και εμφάνισης, που υποδεικνύουν στα προγράμματα-πελάτες πώς να ερμηνεύσουν τα αποτελέσματα και πώς να παρουσιάσουν τη διαδικασία στους χρήστες.

Τέλος, μπορούμε να δημιουργήσουμε την ίδια τη διαδικασία. Οι μεταβλητές του πρωτοκόλλου ψηφοδελτίων ορίζονται απλώς σύμφωνα με όσα καθορίσαμε παραπάνω για την παραδειγματική μας διαδικασία, με τη μεταβλητή uniqueValues να ορίζεται ως envelopeType. Πέρα από αυτές τις μεταβλητές, το processParams περιγράφει πού αποθηκεύονται ο κατάλογος ψηφοφόρων και τα μεταδεδομένα της διαδικασίας, αν η διαδικασία είναι κρυπτογραφημένη και/ή ανώνυμη, ποια υποδομή θα χρησιμοποιήσει, πότε ξεκινά και πότε ολοκληρώνεται, καθώς και άλλες βοηθητικές πληροφορίες.

Μετά τη δημοσίευση της διαδικασίας μπορούμε να τη διαβάσουμε ξανά, να επαληθεύσουμε ότι οι παράμετροι έχουν οριστεί σωστά, να δώσουμε οδηγίες στα προγράμματα-πελάτες web ή εφαρμογών να εμφανίσουν αυτόν τον τύπο διαδικασίας — και η ψηφοφορία μπορεί να ξεκινήσει!

Σχετικές αναρτήσεις

Παρουσίαση του NI-DKG: ένα μη διαδραστικό πρωτόκολλο κατανεμημένης δημιουργίας κλειδιών βασισμένο σε zkSNARK
Τεχνολογία

Παρουσίαση του NI-DKG: ένα μη διαδραστικό πρωτόκολλο κατανεμημένης δημιουργίας κλειδιών βασισμένο σε zkSNARK

Η Vocdoni ανέπτυξε ένα νέο πρωτόκολλο DKG που είναι μη διαδραστικό εκ σχεδιασμού, λειτουργικά ασύγχρονο στην πράξη και δομημένο από καθιερωμένα κρυπτογραφικά στοιχεία.

JP

Jordi Pinyana

6 λεπτά ανάγνωσης

DAVINCI: το πρωτόκολλο ψηφοφορίας που πληροί τα κριτήρια για καθολική υιοθέτηση
DAVINCI

DAVINCI: το πρωτόκολλο ψηφοφορίας που πληροί τα κριτήρια για καθολική υιοθέτηση

Ολοκληρώσαμε με επιτυχία γύρο pre-seed χρηματοδότησης 1 εκατομμυρίου δολαρίων από angel investors για την ανάπτυξη του DAVINCI. Το DAVINCI ξεπερνά τους περιορισμούς των υφιστάμενων συστημάτων ψηφοφορίας, προσφέροντας για την ψηφιακή διακυβέρνηση μια λύση ανθεκτική στη λογοκρισία, χωρίς τέλη, με προστασία από την εξαγορά ψήφων, κλιμακούμενη και ανώνυμη.

PE

Pau Escrich

6 λεπτά ανάγνωσης