Συναίνεση και απόδειξη κλειδώματος (Proof-of-Stake) στο πρωτόκολλο Celo

Στόχος του Celo είναι να δώσει τη δυνατότητα σε οποιονδήποτε διαθέτει smartphone οπουδήποτε στον κόσμο να έχει πρόσβαση σε χρηματοπιστωτικές υπηρεσίες, να στέλνει χρήματα σε τηλεφωνικούς αριθμούς και να πληρώνει εμπόρους - όλα αυτά σε μια αποκεντρωμένη πλατφόρμα που αναπτύσσεται και λειτουργεί από την κοινότητα. Η επιφάνεια του έργου είναι τεράστια και για να παραδώσουμε καλύτερα προϊόντα νωρίτερα επιλέξαμε να βασιστούμε σε μερικές από τις καλύτερες εργασίες της κοινότητας κρυπτονομισμάτων.
Η εφαρμογή αναφοράς blockchain του Celo βασίζεται στο go-ethereum, την υλοποίηση Go του πρωτοκόλλου Ethereum. Είμαστε υπόχρεοι στην κοινότητα του Geth για την παροχή αυτών των ώμων στους οποίους μπορούμε να στηριχτούμε και, αναγνωρίζοντας ότι το Ethereum είναι ένα ανεξάρτητο έργο με τη δική του πορεία, ελπίζουμε να συνεισφέρουμε και εμείς όπου μπορούμε.
Το πρωτόκολλο Celo ενσωματώνει μια σειρά από ουσιαστικές αλλαγές στην εξυπηρέτηση των τελικών χρηστών του. Σε αυτή τη δημοσίευση, εστιάζουμε στο πρωτόκολλο συναίνεσης, τον βασικό μηχανισμό που εφαρμόζει τις νέες συναλλαγές και προωθεί τη συμφωνημένη κατάσταση του δικτύου, καθώς και στην υλοποίηση του Proof of Stake από το Celo - τον τρόπο με τον οποίο καθορίζει ποιοι κόμβοι συμμετέχουν στη συναίνεση.
Byzantine Fault Tolerant
Όπως πολλά πρόσφατα έργα κρυπτονομισμάτων, το Celo υιοθετεί έναν αλγόριθμο συναίνεσης Byzantine Fault Tolerant (BFT). Ένα σαφώς καθορισμένο σύνολο κόμβων επικυρωτών μεταδίδει υπογεγραμμένα μηνύματα μεταξύ τους σε μια ακολουθία βημάτων για την επίτευξη συμφωνίας ακόμη και όταν έως και το ένα τρίτο του συνόλου των κόμβων είναι εκτός λειτουργίας, ελαττωματικοί ή κακόβουλοι. Όταν μια απαρτία επικυρωτών έχει καταλήξει σε συμφωνία, η απόφαση αυτή είναι οριστική.
Οι περισσότερες υλοποιήσεις BFT βασίζονται στην εργασία των Miguel Castro και Barbara Liskov για την πρακτική ανοχή σε σφάλματα Byzantine. Η κατανόηση και η υλοποίηση αλγορίθμων συναίνεσης είναι ως γνωστόν δύσκολη: αυτή είναι μια καλή επεξήγηση για το PBFT. Η υλοποίηση του Celo βασίζεται σε μια υλοποίηση που ονομάζεται Istanbul ή IBFT. Αυτό δεν πρέπει να συγχέεται με το επερχόμενο hard fork του Ethereum που επίσης έχει την κωδική ονομασία Istanbul. Το IBFT αναπτύχθηκε από την AMIS και προτάθηκε ως επέκταση του Geth, αλλά δεν συγχωνεύτηκε ποτέ. Παραλλαγές του IBFT υπάρχουν τόσο στους πελάτες Quorum όσο και στους πελάτες Pantheon. Τροποποιούμε το Istanbul για να το φέρουμε σε επαφή με τις τελευταίες εκδόσεις του Geth, να διορθώσουμε προβλήματα ορθότητας και ζωντάνιας και να βελτιώσουμε την επεκτασιμότητα και την ασφάλειά του. Θα εμβαθύνουμε στις λεπτομέρειες σε επόμενη δημοσίευση.
Προχωρώντας πέρα από την απόδειξη εργασίας
Δεδομένου ότι το πρωτόκολλο Celo αξιοποιεί το Ethereum ως βάση για το blockchain, αξίζει να εξηγήσουμε γιατί πήραμε το χρόνο να απομακρυνθούμε από το σύστημα Proof of Work που έχει ήδη αναπτυχθεί με το Ethereum. (Αξίζει επίσης να σημειωθεί ότι το Ethereum 2.0 θα κάνει τελικά μια παρόμοια κίνηση!)
Σε ένα σύστημα Proof of Work, οι κόμβοι ανταγωνίζονται για την επίλυση ενός υπολογιστικού γρίφου που καταναλώνει τη συντριπτική πλειονότητα της υπολογιστικής ισχύος των κόμβων αυτών - και συνεπάγεται επίσης υψηλή χρήση ηλεκτρικής ενέργειας. Η αλυσίδα των μπλοκ που γίνεται αποδεκτή ως τρέχουσα κατάσταση του δικτύου είναι (λίγο πολύ) εκείνη που έχει το μεγαλύτερο μήκος και η επανεγγραφή της θα κόστιζε την περισσότερη ενέργεια.
Εδώ, η ασφάλεια έρχεται σε αριθμούς. Η ασφάλεια του δικτύου βασίζεται στο ότι κανένας οργανισμός δεν θα αποκτήσει την πλειοψηφία της συνολικής "κατακερματιστικής ισχύος" και έτσι θα μπορεί να πραγματοποιήσει επίθεση σε ποσοστό 51%. Αυτό σημαίνει ότι οι χρήστες ενός δικτύου Proof of Work στην πραγματικότητα πληρώνουν για εξορυκτές, η παρουσία των οποίων σπάνια οδηγεί σε επεξεργασία συναλλαγών, αλλά αντίθετα αποτρέπει την κατάληψη του δικτύου. Όσο υψηλότερη είναι η ασφάλεια, τόσο υψηλότερο είναι το κόστος και οι περιβαλλοντικές επιπτώσεις.
Στη συναίνεση BFT, οι επικυρωτές κάνουν μόνο το χρήσιμο έργο της δημιουργίας μπλοκ εκτελώντας συναλλαγές και επαληθεύοντας τα μπλοκ που προτείνονται μεταξύ τους. Αυτό επιτρέπει στο δίκτυο να παρέχει υψηλότερη απόδοση συναλλαγών. Το δίκτυο διασφαλίζεται με την πιστή εκτέλεση του αλγορίθμου BFT από τα δύο τρίτα των επικυρωτών: όταν επιτευχθεί απαρτία, το συγκεκριμένο μπλοκ είναι οριστικό.
Η μεγαλύτερη χωρητικότητα των δικτύων Proof of Stake και η ανάγκη χρηματοδότησης μιας πολύ μικρότερης δεξαμενής υλικού σημαίνει ότι το λειτουργικό κόστος, συνολικά και ανά συναλλαγή, είναι πολύ χαμηλότερο. Είναι σημαντικό ότι το δίκτυο μπορεί να χρησιμοποιεί ένα κλάσμα της ενέργειας των Proof of Work.
Ένα άλλο πλεονέκτημα για τα νέα δίκτυα είναι η μεγαλύτερη ασφάλεια, νωρίτερα. Οι επιτιθέμενοι μπορούν και νοικιάζουν υπολογιστικούς πόρους για να στοχεύσουν τα δίκτυα Proof of Work και έτσι μόνο τα δίκτυα που είναι πιο καθιερωμένα μπορούν να αντισταθούν αποτελεσματικά στις επιθέσεις του 51%. Είναι δύσκολη και χρονοβόρα διαδικασία για ένα νέο δίκτυο να φτάσει σε αυτό το σημείο.
Το Proof of Stake προσφέρει επίσης άμεση οριστικοποίηση: σχεδόν όλες οι συναλλαγές ολοκληρώνονται και είναι μη αναστρέψιμες μέσα σε λίγα δευτερόλεπτα, προσφέροντας καλύτερη εμπειρία στον χρήστη. Τα συστήματα Proof of Work έχουν πιθανολογική οριστικότητα: δεδομένου ότι πολλοί κόμβοι ανταγωνίζονται ταυτόχρονα για την εξόρυξη μπλοκ, μια συναλλαγή μπορεί να ανατραπεί εάν το μπλοκ στο οποίο περιλαμβάνεται δεν καταλήξει στη συνέχεια ως μέρος της μακρύτερης αλυσίδας και αντ' αυτού εφαρμοστεί μια αντικρουόμενη συναλλαγή: η πιθανότητα να συμβεί αυτό μειώνεται με το χρόνο.

Απόδειξη κλειδώματος: επιλογή των επικυρωτών
Ενώ τα οφέλη της υιοθέτησης της συναίνεσης BFT φαίνονται εξαιρετικά επιτακτικά, από μόνη της δεν αντικαθιστά ένα σύστημα απόδειξης εργασίας. Τα πρωτόκολλα BFT βασίζονται σε έναν εξωτερικό μηχανισμό για τον προσδιορισμό των επικυρωτών που συμμετέχουν στη συμφωνία. Οι αλγόριθμοι δεν μπορούν επίσης να κλιμακωθούν πέραν της τάξης των εκατοντάδων επικυρωτών και μπορούν να αντισταθούν στην κακόβουλη ή ελαττωματική συμπεριφορά το πολύ του ενός τρίτου των επικυρωτών. Για τους λόγους αυτούς, σε ένα ανοικτό σύστημα όπου οι συμμετέχοντες είναι πολύ περισσότεροι από τους πιθανούς επικυρωτές, πρέπει να γίνει κάποια επιλογή πολιτικής για τον καθορισμό του τρόπου κατανομής αυτών των προνομιακών ρόλων. Περαιτέρω, η αποδοχή κάθε επικυρωτή ενέχει έναν σχετικό κίνδυνο: κάθε νέος επικυρωτής πρέπει να υπόκειται σε έναν συνδυασμό ισχυρών οικονομικών κινήτρων ή/και εμπιστοσύνης για να διασφαλιστεί η ασφάλεια του δικτύου.
Τα συστήματα "απόδειξης κλειδώματος" αποτελούν μια προσπάθεια ευθυγράμμισης των κινήτρων των επικυρωτών με εκείνα του δικτύου. Επικαλύπτουν τους αλγορίθμους συναίνεσης (συνήθως BFT) με μηχανισμούς που κρατούν τα κεφάλαια των δυνητικών επικυρωτών σε καταπίστευμα ως "μερίδιο", αποδέχονται ορισμένους από αυτούς ως επικυρωτές και τους ανταμείβουν, ενώ παράλληλα δίνουν κίνητρα σε άλλους κόμβους να εντοπίζουν και να αποδεικνύουν κακή συμπεριφορά, για την οποία οι επικυρωτές θα "κόβουν" τμήματα αυτών των μεριδίων. Η εξισορρόπηση αυτών των πτυχών αποτελεί πρόκληση. Το Cosmos και το Tezos είναι παραδείγματα επιτυχημένων δημόσιων δικτύων που χρησιμοποιούν Απόδειξη Κλειδώματος (Proof of Stake).
Αυτό έρχεται σε αντίθεση με τη "χωρίς άδεια" φύση των συστημάτων απόδειξης εργασίας, τα οποία επιτρέπουν σε κάθε κόμβο να επιχειρήσει να εξορύξει ένα μπλοκ χωρίς συντονισμό και τον ανταμείβουν για την επιτυχή πραγματοποίησή του. Τέτοια συστήματα απαιτούν από έναν εξορυκτή να επιβαρυνθεί με ένα κόστος ενέργειας εκ των προτέρων, πράγμα που σημαίνει ότι στο σημείο εξόρυξης ενός μπλοκ, έχει ισχυρό κίνητρο να υποβάλει σωστά το μπλοκ στο δίκτυο. Επιπλέον, ο αριθμός των εξορυκτών μπορεί να αλλάξει με την πάροδο του χρόνου και έχει μικρή επίδραση στο πρωτόκολλο. Το υποκείμενο νόμισμα αναδιανέμεται στους νέους εξορυκτες μέσω ανταμοιβών μπλοκ καθώς συμμετέχουν.
Αυτό οδηγεί στην κύρια κριτική των συστημάτων Proof of Stake: ότι τα κλειδώματα αποτελούν εμπόδιο εισόδου για τους περισσότερους συμμετέχοντες, και αυτό σημαίνει ότι συγκεντρώνουν τη δύναμη και τις ανταμοιβές σε πολύ λίγα χέρια, και ότι στερούνται μιας "ράμπας εισόδου χωρίς άδεια" στο πρωτόκολλο, στερώντας από τους νέους συμμετέχοντες την ευκαιρία να κερδίσουν νόμισμα και να φτάσουν στο σημείο όπου θα μπορούσαν να συμμετάσχουν ως επικυρωτές.
Η ράμπα εισόδου χωρίς άδεια του Celo: εξυπηρέτηση των τελικών χρηστών
Φυσικά, η εφαρμογή των συναλλαγών και η επικύρωση των ενημερώσεων κατάστασης είναι μόνο ένα μικρό μέρος των εργασιών που πρέπει να κάνει μια πλατφόρμα ψηφιακών πληρωμών. Η εστίαση του Celo στην παροχή της καλύτερης εμπειρίας χρήστη για πληρωμές μέσω κινητού σημαίνει ότι οι σχεδιαστικές παραδοχές του Celo διαφέρουν από άλλα δίκτυα, μερικές φορές σημαντικά.
Αναμένουμε ότι η πλειοψηφία των τελικών χρηστών του Celo θα διαχειρίζεται τους λογαριασμούς της και θα στέλνει πληρωμές χρησιμοποιώντας μια εφαρμογή Wallet στο κινητό της τηλέφωνο. Η εφαρμογή ανοικτού κώδικα του Celo ενσωματώνει έναν "ελαφρύ πελάτη" που συνδέεται στο δίκτυο και είναι βελτιστοποιημένη για συσκευές χαμηλής ισχύος και συνδέσεις χαμηλού εύρους ζώνης. Αυτοί οι ελαφριοί πελάτες χρειάζονται κόμβους που θα απαντούν στα αιτήματά τους για δεδομένα λογαριασμών και συναλλαγών και θα προωθούν νέες συναλλαγές για λογαριασμό τους. Είναι πιθανό ότι η συντριπτική πλειονότητα των μηχανημάτων στο δίκτυο Celo θα πρέπει να εκπληρώνει αυτόν τον ρόλο.

Στο Ethereum αυτή τη στιγμή, υπάρχουν λίγα κίνητρα για να τρέξει ένας πλήρης κόμβος που δεν κάνει εξόρυξη. Λίγοι κόμβοι εξυπηρετούν ελαφρούς πελάτες και αυτό έχει ως αποτέλεσμα μια κακή εμπειρία για τα κινητά πορτοφόλια.
Έτσι, το Celo σχεδίασε ένα πρωτόκολλο για να δώσει κίνητρα στους χρήστες να λειτουργούν κανονικούς κόμβους. Με το Celo, οι ελαφριοί πελάτες πληρώνουν ένα τέλος ανά συναλλαγή στους πλήρεις κόμβους. Οι πελάτες περιλαμβάνουν σε κάθε συναλλαγή τη διεύθυνση ενός κόμβου ο οποίος, όταν η συναλλαγή επεξεργάζεται, λαμβάνει αυτή την αμοιβή. Οι πλήρεις κόμβοι διαφημίζουν μια ελάχιστη αμοιβή και μπορούν να επιλέξουν να αρνηθούν να επεξεργαστούν συναλλαγές για τις οποίες δεν θα λάβουν την αμοιβή ή θεωρούν την αμοιβή ανεπαρκή.
Ενώ ένας πλήρης κόμβος παρέχει άλλες υπηρεσίες για τις οποίες δεν λαμβάνει συγκεκριμένη αμοιβή, αναμένουμε ότι η αποτυχία εξυπηρέτησης αυτών των αιτημάτων θα προκαλέσει τους πελάτες να αναζητήσουν άλλους πλήρεις κόμβους που το κάνουν, οι οποίοι θα λάβουν αμοιβή όταν θα πραγματοποιήσουν την επόμενη συναλλαγή. Το μοντέλο είναι ανάλογο με μια καφετέρια: ενώ μπορείτε να κάνετε freeload το ενοίκιο, τη θέρμανση, το wifi κ.λπ., πιθανότατα θα πρέπει να αγοράζετε έναν καφέ σε τακτά χρονικά διαστήματα. Αν αρνηθείτε, μπορεί να μην είστε τόσο ευπρόσδεκτοι την επόμενη φορά.
Προβλέπουμε την ανάδυση μιας αγοράς όπου οι ελαφριοί πελάτες θα επιλέγουν (αυτόματα στις περισσότερες περιπτώσεις) ομότιμους κόμβους πλήρους πρόσβασης με βάση το κόστος, την καθυστέρηση, την αξιοπιστία και άλλους παράγοντες. Η αφθονία πλήρων κόμβων που βρίσκονται γεωγραφικά κοντά στις κοινότητές τους θα βελτιώσει τις επιδόσεις και την αξιοπιστία των εφαρμογών. Δεδομένου ότι οι ελαφριοί πελάτες δεν χρειάζεται να εμπιστεύονται τους πλήρεις κόμβους, καθώς μπορούν να επαληθεύσουν το έργο τους, παρέχει επίσης την "ράμπα εισόδου χωρίς άδεια" που λείπει από άλλα δίκτυα απόδειξης κλειδώματος.

Παρεμπιπτόντως, αποδεικνύεται επίσης ότι η χρήση της συναίνεσης BFT επιτρέπει στους πελάτες του Celo να συγχρονίζονται δραματικά ταχύτερα από το Ethereum, κάτι που είναι πολύ σημαντικό για συσκευές με κακές συνδέσεις. Μπορείτε να διαβάσετε περισσότερα σχετικά με τη λειτουργία υπερελαφρού συγχρονισμού του Celo εδώ, και θα το αναλύσουμε σε μια μελλοντική δημοσίευση.
Συμπέρασμα
Το Celo βασίζεται στο πρωτόκολλο Ethereum με στόχο τη δημιουργία μιας πλατφόρμας που θα δίνει τη δυνατότητα σε οποιονδήποτε διαθέτει smartphone οπουδήποτε στον κόσμο να έχει πρόσβαση σε χρηματοπιστωτικές υπηρεσίες. Αντικαθιστά τη χρήση της Απόδειξης Εργασίας (Proof of Work) του Ethereum για την ασφαλή προσθήκη συναλλαγών στο λογιστικό βιβλίο με έναν αλγόριθμο συναίνεσης Byzantine Fault Tolerant. Και δημιουργεί μια νέα πρόσβαση χωρίς άδεια, δημιουργώντας κίνητρα για τους πλήρεις κόμβους να εξυπηρετούν κινητές συσκευές.
Στην επόμενη ανάρτησή μου, θα ασχοληθούμε με τις λεπτομέρειες του σχεδιασμού Proof of Stake του Celo.
Συμμετέχετε!
Αν ενδιαφέρεστε να μάθετε περισσότερα σχετικά με τη λειτουργία ενός κόμβου στο δίκτυο Celo, είτε ενός επικυρωτή είτε ενός πλήρους κόμβου, ή αν μπορείτε να φανταστείτε τον εαυτό σας να διευθύνει μια ομάδα validator, θα πρέπει οπωσδήποτε να συμμετάσχετε στο The Great Celo Stake Off.
Θα θέλαμε επίσης να ακούσουμε τις σκέψεις σας σχετικά με αυτό που χτίζουμε. Ο χώρος σχεδιασμού γύρω από τους μηχανισμούς για τα κίνητρα επικύρωσης έχει πολλά περίπλοκα συμβιβαστικά και ανυπομονούμε να συνεργαστούμε με την κοινότητα για να το επαναλάβουμε.
Μπορείτε να διαβάσετε περισσότερα για το πρωτόκολλο Celo στην Τεκμηρίωση για προγραμματιστές Celo και να δοκιμάσετε το Celo στο Alfajores Testnet. Μπορείτε να κάνετε ερωτήσεις και να βρείτε απαντήσεις στο Φόρουμ Celo ή να συνομιλήσετε με τους προγραμματιστές του Celo στο Discord.
Πρωτότυπο Άρθρο (Αγγλική): Consensus and Proof of Stake in the Celo protocol
Συντάκτης Πρωτότυπου Άρθρου: Celo Foundation
Ημερομηνία Συγγραφής Πρωτότυπου Άρθρου: 08 Νοεμβρίου 2019