blockchain: το πρωτόκολλο των θεών

Αν έπρεπε να ονομάσουμε ένα κύριο και κρίσιμο χαρακτηριστικό των ανθρώπινων σχέσεων, αυτό σίγουρα θα ήταν η εμπιστοσύνη. Και σίγουρα δεν χρειάζεται κάποια εισαγωγή για την κυριότητα και την κρισιμότητα της. Όταν όμως η συζήτηση έρχεται στο πώς αυτή χτίζεται και συντηρείται ανάμεσα στους ανθρώπους, το τοπίο αρχίζει και θολώνει. Σε μια γειτονιά “παλαιού τύπου” κάποιος που κρατάει τον λόγο του σε βάθος χρόνου και οι εκτιμήσεις του επαληθεύονται, θεωρείται έμπιστος και αξιόλογος. Παρόλα αυτά, στην περίπτωση μιας κλοπής αυτοκινήτου, είναι η αστυνομία που θα επικυρώσει το συμβάν και θα προσφέρει στον κάτοχο του αυτοκινήτου την απόδειξη που χρειάζεται για να προχωρήσει η όποια διαδικασία. Εδώ η αστυνομία λειτουργεί ως ένας “έμπιστος τρίτος φορέας” (trusted third party).
Σαν “έμπιστος φορέας” υπήρξε ανέκαθεν και η τεχνολογία. Τα κάθε είδους συμβόλαια, είναι “έγγραφα εμπιστοσύνης” και λειτουργούν ως έγκυρες αποδείξεις. Κάθε φορά που ρίχνουμε ένα κέρμα σε έναν αυτόματο πωλητή τον εμπιστευόμαστε ότι θα κινήσει το σωστό ελατήριο, ώστε να πέσει το κατάλληλο προϊόν στην έξοδο παραλαβής. Στην ουσία εμπιστευόμαστε έμμεσα τον τεχνικό που το έφτιαξε/προγραμμάτισε, όμως αυτή η εμπιστοσύνη μεσολαβείται από την μηχανή. Ή όταν χρησιμοποιούμε κάποιο ταξί για μια μετακίνηση, ακόμα και αν υπάρχει μια υπόνοια έλλειψης εμπιστοσύνης στο πρόσωπο που οδηγεί, στο τέλος της κούρσας θα συμφωνήσουμε με το ταξίμετρο.
Θα λέγαμε ότι οι άνθρωποι χρησιμοποιούν κάποιο “πρωτόκολλο επικοινωνίας” για τις μεταξύ τους και όχι μόνο, συν-εννοήσεις· και ότι αυτές οι διαδικασίες, όλο και περισσότερο γίνονται αντικείμενο της μαθηματικής λογικής. Ενώ λοιπόν η “μηχανή” είναι ο ειδικός των μαθηματικών υπολογισμών, δεν λύνει μόνο προβλήματα υπολογισμών. Αλλά προσφέρεται και ως λύση σε θέματα σχέσεων, παρότι είναι τεχνικής φύσης. Ή μάλλον, πιστή στην ιδεολογία των καιρών, επειδή είναι τέτοια. Αντικειμενική.
Διαβάζουμε την εισαγωγή ενός κειμένου που παρουσιάζει ένα πρωτόκολλο με το οποίο οι “χρήστες” δεν έχουν την ανάγκη να βασίζονται στην μεταξύ τους εμπιστοσύνη: 1

“Φανταστείτε το ιδανικό πρωτόκολλο. Θα συμπεριελάμβανε τον πιο αξιόπιστο ενδιάμεσο – μια λύση που ταιριάζει σε όλους. Όλα τα μέρη θα έστελναν τα στοιχεία τους στον Θεό. Ο Θεός θα προσδιόριζε με αξιοπιστία και θα επέστρεφε τα αποτελέσματα. Με τον Θεό ως απόλυτα εχέμυθο στις εξομολογήσεις μας, κανένα μέρος δεν μπορεί να ξέρει τίποτα περισσότερο για τα στοιχεία των άλλων μερών, από ό,τι μπορεί να μάθει από τα δικά του στοιχεία και τα τελικά αποτελέσματα.
Δυστυχώς όμως, στον εφήμερο κόσμο μας ασχολούμαστε με ανθρώπους και όχι με θεότητες. Ωστόσο, πολύ συχνά είμαστε αναγκασμένοι να αντιμετωπίζουμε τους ανθρώπους με έναν σχεδόν θεολογικό τρόπο, επειδή η υποδομή (με την οποία επικοινωνούμε) στερείται της απαιτούμενης ασφάλειας που θα μας προστάτευε. […]”

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

Το internet είναι γνωστό σαν μέσο για την ανταλλαγή πληροφορίας. Με το blockchain η ανταλλαγή αξίας γίνεται πλέον οργανική λειτουργία του νέου internet (web3), που ονομάζεται και internet of value.
Μια βάση δεδομένων του περασμένου αιώνα.
 ένα διαμοιρασμένο μητρώο (distributed ledger)

Το blockchain είναι στην ουσία ένα νέου τύπου λογιστικό βιβλίο (ledger). Τα λογιστικά βιβλία χρησιμοποιούνται για την καταγραφή των διάφορων κινήσεων και συναλλαγών που πραγματοποιούνται καθώς και για την αποθήκευση του ιστορικού αυτών των κινήσεων. Στο παρελθόν ήταν τα λογιστικά βιβλία (από χαρτί) και με την εμφάνιση των υπολογιστών αυτή η διαδικασία ψηφιοποιήθηκε. Ενώ όμως το μελάνι στο χαρτί αντικαταστάθηκε από τα bits στους σκληρούς δίσκους, το βασικό μοντέλο λειτουργίας έμεινε το ίδιο: μια βάση δεδομένων που δημιουργείται, ανανεώνεται, επιβεβαιώνεται, ασφαλίζεται και συντηρείται με τον ίδιο συγκεκριμένο τρόπο.
Παραδείγματος χάριν, μια τράπεζα έχει τα δικά της μητρώα με τις πληροφορίες που χρειάζεται: τα στοιχεία των πελατών, τις συναλλαγές και διάφορες άλλες κινήσεις που συμβαίνουν, τις καταστάσεις των λογαριασμών κοκ. Αντίστοιχα ένα νοσοκομείο διατηρεί μια βάση δεδομένων με τους ασθενείς και το ιστορικό τους ή τους γιατρούς και τις πληροφορίες που τους αφορούν. Σε ένα σούπερ-μαρκετ οι λογιστές καταγράφουν τις διάφορες πληροφορίες για τις αγορές και τις πωλήσεις που γίνονται, καθώς και για τις μισθοδοσίες και τους φόρους.
Στην περίπτωση που κάποιος θέλει να δει το υπόλοιπο του λογαριασμού του πρέπει να κάνει ένα αίτημα στην τράπεζα (πχ εισαγωγή κάρτας και κωδικού PIN στο ATM), το οποίο θα ελεγχεί για την εγκυρότητά του (ταυτοποίηση κάρτας και κωδικού) και αν όλα πάνε καλά θα εγκριθεί (θα εμφανιστεί το ποσό στην οθόνη).
Για να αγοραστεί ένα σπίτι, ο αγοραστής θα χρειαστεί να παρουσιάσει αποδεικτικά στοιχεία για την οικονομική του κατάσταση, ενώ ο ιδιοκτήτης θα πρέπει να αποδείξει ότι του ανήκει το κτήριο. Ο μεν λοιπόν θα ζητήσει τα σχετικά στοιχεία από την βάση δεδομένων της τράπεζας ή της εφορίας και ο δε θα πάρει το τίτλο ιδιοκτησίας από τον συμβολαιογράφο.
Παραδείγματα σαν κι αυτά, δείχνουν τον τρόπο λειτουργίας των εν λόγω βάσεων δεδομένων καθώς και τις σχέσεις γύρω από αυτές. Θα λέγαμε ότι αυτά τα μητρώα είναι κεντροποιημένα, με την έννοια ότι είναι ιδιοκτησία των συγκεκριμένων φορέων/οργανισμών και η πρόσβαση σε αυτά γίνεται μόνο μέσω αυτών.
Το γεγονός ότι δεν μπορεί ο καθένας να έχει πρόσβαση στο τραπεζικό ή ιατρικό ιστορικό του οποιουδήποτε, δεν είναι στοιχείο της “κεντροποίησης” αλλά της ασφάλειας. Όπως επίσης και το γεγονός ότι οι πληροφορίες είναι έγκυρες, είναι στοιχείο της αξιοπιστίας του εκάστοτε οργανισμού. Οι διάφοροι φορείς/οργανισμοί/επιχειρήσεις εγγυώνται για την ασφάλεια και γνησιότητα των δεδομένων και έτσι οι πελάτες/πολίτες τους εμπιστεύονται για τις όποιες διαδικασίες.
Στην περίπτωση του blockchain αυτό το βιβλίο/μητρώο δεν είναι αποθηκευμένο κάπου κεντρικά. Υπάρχει, ανανεώνεται και συντηρείται σε κάθε κόμβο ενός δια-μοιρασμένου (distributed) δικτύου. Κάθε κόμβος έχει ένα αντίγραφο ολόκληρου αυτού του μητρώου: τις καταστάσεις των κόμβων, το ιστορικό των μεταξύ τους συναλλαγών κλπ. Η ασφάλεια είναι θέμα της κρυπτογραφίας και η γνησιότητα των πληροφοριών διασφαλίζεται μέσω διάφορων τεχνικών και αλγόριθμων.
Θεωρώντας ότι γνωρίζουμε λοιπόν τον κλασικό τρόπο λειτουργίας των κεντροποιημένων βάσεων δεδομένων, για να κατανοήσουμε το “διαμοιρασμένο μητρώο” θα πρέπει να δούμε τα μέρη που το συνθέτουν και το πώς απαντάνε διαφορετικά στις βασικές διαδικασίες. Τι είναι και πώς υλοποιείται ένα διαμοιρασμένο δίκτυο; Πώς γίνονται οι συναλλαγές και με ποιόν τρόπο υπάρχει ομοφωνία στην εγκυρότητα αυτών; Πώς επιτυγχάνεται η ασφάλεια και η ιδιωτικότητα στις συναλλαγές; Η πρώτη και βασικότερη μέχρι σήμερα εφαρμογή του blockchain, το bitcoin, θα μας βοηθήσει να εξηγήσουμε κάποια βασικά.

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

Επειδή το blockchain έγινε ευρύτερα γνωστό μέσω του bitcoin, υπάρχει η λανθασμένη εντύπωση ότι αυτά τα δύο ταυτίζονται. Στην πραγματικότητα το blockchain είναι για το bitcoin ότι είναι ο κινητήρας εσωτερικής καύσης για τα αυτοκίνητα· μια τεχνολογία που μπορεί να έχει διαφορετικές εφαρμογές. Τι είναι λοιπόν τα κρυπτονομίσματα;
Με τον όρο κρυπτονόμισμα (cryptocurrency) εννοούμε ένα εικονικό/ψηφιακό νόμισμα, που χρησιμοποιείται σαν μέσο συναλλαγής μέσω ενός δια-δικτύου υπολογιστών (οπού πλέον υπολογιστής μπορεί να είναι και το “έξυπνο” ψυγείο) και χρησιμοποιεί την τεχνολογία blockchain για να διασφαλίσει την εγκυρότητα των συναλλαγών. Αυτή τη στιγμή υπάρχουν πάνω από 2000 διαφορετικά κρυπτονομίσματα. 2 Αυτό συμβαίνει γιατί δεν κοστίζει τίποτα να δημιουργήσει κάποιος ένα κρυπτονόμισμα. Η αξία 3 του όμως δημιουργείται από την κυκλοφορία του, δηλαδή από το πόσοι τo χρησιμοποιούν.
Τα κρυπτονομίσματα αποθηκεύονται σε ψηφιακά πορτοφόλια. Εκεί “μέσα” υπάρχουν τα ψηφιακά χρήματα σε μορφή μοναδικών κλειδιών/κωδικών. Το κάθε πορτοφόλι έχει την δική του μοναδική διεύθυνση και οι συναλλαγές γίνονται όπως η αποστολή email, δηλαδή στέλνει ο χρήστης Α απο την διεύθυνση του πορτοφολιού του, ένα Χ ποσό στην διεύθυνση του πορτοφολιού του Β χρήστη. Στην μεταφορά αυτή δεν μεσολάβεί κάποιος κεντρικός “έμπιστος φορέας” που να την εγκρίνει ή να την απορρίπτει – μεσολαβεί ό,τι μεσολαβεί και σε μια αποστολή email (οι δύο υπολογιστές, το διαδίκτυο και οι μεταξύ τους κόμβοι) σύν την διαδικασία της τεχνολογίας blockchain που αναλαμβάνει τον ρόλο της ασφάλειας και της έγκρισης.
Από τοπολογική άποψη, το δίκτυο του bitcoin στηρίζεται στην φυσική υποδομή αυτού που ξέρουμε ως internet, όμως σε λογικό επίπεδο δημιουργεί ένα διαμοιρασμένο δίκτυο (distributed network) ανάμεσα στους υπολογιστές των χρηστών του. Ας θεωρήσουμε ότι σε ένα τέτοιο δίκτυο η επικοινωνία της πληροφορίας πραγματοποιείται ακολουθώντας έναν διά-δρομο ανάμεσα στους κόμβους και όχι αναζητώντας κάποιον κεντρικό που θα υποδείξει τις σχετικές πληροφορίες. Παραδείγματος χάριν για να στείλει ο χρήστης Α ένα μήνυμα στον χρήστη Β, η αναζήτηση της διεύθυνσής του θα γίνει “ρωτώντας” τους γειτονικούς κόμβους και προχωρώντας έτσι μέσα στο δίκτυο μέχρι να τον βρεί. Στην περίπτωση του κεντροποιημένου δικτύου απλά θα “ρώταγε” κατευθείαν τον κεντρικό κόμβο που έχει όλες τις διευθύνσεις. 4
Οι υπολογιστές που συμμετέχουν στο δίκτυο αυτό, λέγονται “κόμβοι” (nodes) και εκτός από το ψηφιακό πορτοφόλι τους (προκειμένου για κρυπτο-νομίσματα), έχουν αποθηκευμένο ολόκληρο το μητρώο με την ιστορία των συναλλαγών που έχουν πραγματοποιηθεί και εγκριθεί στο δίκτυο. Έτσι συμμετέχουν στην διαδικασία επιβεβαίωσης των επόμενων συναλλαγών. Όσο περισσότεροι κόμβοι συμμετέχουν τόσο αυξάνεται η ασφάλεια του δικτύου και η δυνατότητα να επιβεβαιώνεται η γνησιότητα των δεδομένων και των συναλλαγών.
Υπάρχει και η δυνατότητα κάποιος να είναι απλός χρήστης και όχι κόμβος· να έχει δηλαδή στον υπολογιστή του μόνο το ψηφιακό του πορτοφόλι. Έτσι μπορεί να κάνει συναλλαγές, αλλά δεν συμβάλει στην γενικότερη λειτουργία του blockchain. Απλά θεωρεί ότι το δίκτυο έχει όσους κόμβους χρειάζεται για να είναι ασφαλές και το χρησιμοποιεί. Αυτό συμβαίνει συχνά γιατί οι κόμβοι πρέπει να είναι μονίμως συνδεδεμένοι στο δίκτυο· κάτι που δεν έχει κάποιο αντάλλαγμα πέρα από την ηθική ικανοποίηση ότι έτσι γίνεται το δίκτυο ασφαλέστερο. Και πολλοί χρήστες δεν θέλουν να αφιερώσουν ένα μηχάνημα αποκλειστικά για αυτό τον σκοπό.
Τέλος υπάρχουν και οι εξορύκτες (miners), οι οποίοι παίζουν έναν σημαντικό ρόλο στην διαδικασία της επιβεβαίωσης των συναλλαγών.

Τα ψηφιακά πορτοφόλια μπορεί να είναι εφαρμογές στον υπολογιστή ή το κινητό, λογαριασμοί σε ειδικά websites ή ακόμα και συσκευές. Εδώ τρία από τα δημοφιλέστερα hardware πορτοφόλια.
ψηφιακοί εξορύκτες

Τα συγκεκριμένα μηχανήματα πρέπει να έχουν αρκετή επεξεργαστική ισχύ, επειδή χρειάζεται να κάνουν κάποιους δύσκολους υπολογισμούς. Κάθε φορά που βρίσκουν μια απάντηση σε έναν τέτοιο υπολογισμό κερδίζουν μια ποσότητα bitcoin. Άρα εδώ υπάρχει και ένα υλικό κίνητρο για να είναι κάποιος “εξορύκτης”· πέρα από το ηθικό ότι έτσι γίνεται το δίκτυο ασφαλέστερο.
Ο αλγόριθμος του bitcoin έχει σχεδιαστεί έτσι ώστε να αυξάνεται η δυσκολία των υπολογισμών όταν “βλέπει” ότι αυτοί γίνονται πιο γρήγορα από ότι πρέπει. Ενώ λοιπόν αρχικά η ιδέα ήταν να μπορεί ο καθένας να έχει το ρόλο του εξορύκτη με τον απλό υπολογιστή του, ο ανταγωνισμός ανάμεσα στους χρήστες έχει εκτοξεύσει την δυσκολία των υπολογισμών.
Το κυνήγι του πιο γρήγορου υπολογισμού όλο και αύξανε την ανάγκη για “δυνατά” μηχανήματα και μεγαλύτερη ενέργεια. Μετά τον υπολογιστή και τις σύνθετες κατασκευές που χρησιμοποιούν τους επεξεργαστές από πολλές κάρτες γραφικών, φτιάχτηκαν ειδικά μηχανήματα για εξόρυξη, τα οποία πλέον λειτουργούν σε τεράστιες “φάρμες” όπου υπάρχουν κατάλληλες θερμοκρασίες και φτηνό ρεύμα.
Οι απλοί χρήστες πλέον δεν μπορούν να κερδίσουν bitcoins από την εξόρυξη, εκτός και αν διατίθενται να αγοράσουν όσα ASIC μπορούν (συν τα έξοδα του ρεύματος), για να συμμετέχουν σε διαδικτυακές συνεργατικές εξορύξεις που οργανώνονται απο διάφορους φορείς (mining pools). Και πάλι όμως το κέρδος θα είναι απειροελάχιστο. Υπάρχει βέβαια και η δυνατότητα να επενδύσουν στην εξόρυξη ενός λιγότερο γνωστού κρυπτονομίσματος, οπού οι σχετικοί υπολογισμοί είναι ακόμα εύκολοι, με την ελπίδα ότι στο μέλλον αυτό το κρυπτονόμισμα θα επεκταθεί σε χρήση, άρα και σε αξία.

Οικιακές κατασκευές για εξόρυξη. Η αρχιτεκτονική των επεξεργαστών στις κάρτες γραφικών έχει σημαντικά πλεονεκτήματα για εργασίες που απαιτούν παράλληλη επεξεργασία μεγάλου όγκου δεδομένων και γι’ αυτό προτιμούνται.
Ένα “ολοκληρωμένο κύκλωμα ειδικών εφαρμογών” – ASIC – φτιαγμένο αποκλειστικά για εξόρυξη.
Φάρμα εξόρυξης με ASIC, κάπου στην Κίνα, η οποία πλέον είναι ο μεγαλύτερος παίχτης στην εξόρυξη bitcoin, κυρίως λόγω του φτηνού ρεύματος.
ο αλγόριθμος της επικύρωσης

Ποιά είναι λοιπόν αυτή η διαδικασία επιβεβαίωσης και πώς η τεχνολογία blockchain, διεκδικώντας την εμπιστοσύνη των χρηστών, εξασφαλίζει την γνησιότητα των πληροφοριών; Πώς επιτυγχάνεται η ομοφωνία για το ποιός έχει πόσα και ποιές συναλλαγές είναι  έγκυρες, σε ένα διαμοιρασμένο δίκτυο όπου δεν κρατάει κάποιος συγκεκριμένος το τεφτέρι, αλλά έχουν όλοι από ένα, το οποίο πρέπει να συγχρονίσουν με τα υπόλοιπα;
Υπάρχουν αρκετοί “αλγόριθμοι συναίνεσης” (consensus algorithms) και ο παρακάτω είναι αυτός που χρησιμοποιεί το bitcoin. Ονομάζεται “Proof of Work” και μέχρι τώρα είναι ο πιο διαδεδομένος, αφού θεωρείται από τους πιο ασφαλείς· ενώ ένα βασικό του μειονέκτημα είναι ότι απαιτεί μεγάλη κατανάλωση ενέργειας. 5
Ας υποθέσουμε ότι ο χρήστης Α (Alice) θέλει να στείλει ένα ποσό στον χρήστη Β (Bob). Μέσω της εφαρμογής του πορτοφολιού θα κάνει ένα αίτημα συναλλαγής ότι στέλνει το Χ ποσό στο πορτοφόλι του Β. Αυτό το αίτημα μπαίνει στο δίκτυο, μέσα σε μια “αποθήκη” ανεπιβεβαίωτων συναλλαγών.
Ανά τακτά χρονικά διαστήματα οι εξορύκτες / miners επιλέγουν μερικές ανεπιβεβαίωτες συναλλαγές από την αποθήκη και δημιουργούν ένα καινούριο block. 6 Σε αυτή την επιλογή γίνεται μια πρώτη σύγκριση των συναλλαγών που επιλέγουν με το ιστορικό που έχουν αποθηκευμένο, έτσι ώστε να μην βάλουν στο block κινήσεις που είναι άκυρες. Δηλαδή αν δούν στο blockchain ιστορικό τους ότι ο λογαριασμός της A δεν έχει αρκετά bitcoins για να στείλει στον B, θα απορρίψουν την συναλλαγή.
Όσοι εξορύκτες έχουν ολοκληρώσει την δημιουργία του block τους, ξεκινάνε την διαδικασία ενός δύσκολου υπολογισμού που απαιτεί μεγάλη υπολογιστική ισχύ, η οποία ονομάζεται “απόδειξη εργασίας”. Όποιος βρεί απάντηση στο πρόβλημά του, 7 την στέλνει μαζί με το block του, σε όλους τους κόμβους.
Εκείνοι βλέπουν αν όντως η απάντηση στο πρόβλημα είναι σωστή και τέλος επιβεβαιώνουν, με βάση το δικό τους αποθηκευμένο ιστορικό, τις συναλλαγές που είναι στο block. Άν όλα πάνε καλά και η πλειοψηφία συμφωνεί, ένα καινούριο block μπορεί να προστεθεί στην αλυσίδα.

Τα block 51, 52, 53 είναι κομμάτια της αλυσίδας, και περιέχουν επιβεβαιωμένες συναλλαγές. Είναι πια αναπόσπαστο κομμάτι του blockchain ιστορικού. Απο κάτω είναι η αποθήκη με τις ανεπιβεβαίωτες συναλλαγές.
Η μεταφορά της Α στον Β εγκρίθηκε, και μαζί με άλλες εγκεκριμένες συναλλαγές δημιούργησαν το block 54, που είναι πλέον κομμάτι του blockchain ιστορικού.
η απόδειξη της εργασίας (proof of work)

Το κεντρικό βήμα του αλγόριθμου λοιπόν, εκτός  από την σύγκριση των μητρώων που κρατάει ο κάθε κόμβος, είναι αυτός ο υπολογισμός που κάνουν οι “εξορύκτες”· ο οποίος χρησιμοποιεί “συναρτήσεις κατακερματισμού” (hash functions).
Οι συναρτήσεις hash δέχονται μια είσοδο δεδομένων τυχαίου μεγέθους (οτιδήποτε μπορεί να μετατραπεί σε bit: αριθμούς, γράμματα, εικόνες, ήχους κλπ) και παράγουν σαν έξοδο έναν ακέραιο αριθμό σταθερού μεγέθους (hash value ή key ή sum). Αυτός ο αριθμός αντιστοιχεί αποκλειστικά στην είσοδο που τον παρήγαγε. 8
Το πρόβλημα που επεξεργάζεται ο εξορύκτης είναι να βρεί μια τιμή hash (hash value), του block που θέλει να βάλει στην αλυσίδα· η οποία πρέπει να ξεκινάει με έναν συγκεκριμένο αριθμό μηδενικών. Ο αριθμός των μηδενικών εξαρτάται από τον βαθμό δυσκολίας που έχει ορίσει ο αλγόριθμος του bitcoin, όπως αναφέραμε παραπάνω.
Ας υποθέσουμε ότι ένας εξορύκτης θέλει να υπολογίσει την τιμή hash του block που έχει δημιουργήσει και ο βαθμός δυσκολίας εκείνη την στιγμή είναι τέσσερα μηδενικά. Το block περιέχει τα εξής:
1. Την τιμή hash του τελευταίου block (PREV).
2. Τις συναλλαγές που είναι προς επιβεβαίωση (TRANSACTIONS).
3. Έναν βοηθητικό αριθμό που τον ονομάζουμε NONCE.
Όλα αυτά εισάγονται σε μια συνάρτηση hash και παράγουν έναν μοναδικό αριθμό ως αποτέλεσμα. Αν ο αριθμός αυτός δεν ξεκινάει απο τέσσερα μηδενικά, ο εξορύκτης αυξάνει τον nonce κατά ένα και ξαναεισάγει τα δεδομένα στην συνάρτηση hash. Αυτό συνεχίζεται μέχρι να βρεθεί ποιός αριθμός nonce, σε συνδυασμό με τα συγκεκριμένα δεδομένα του block, παράγει hash value που ξεκινάει με τέσσερα μηδενικά.

Η είσοδος αλλάζει μέγεθος, αλλά στην έξοδο το μέγεθο του αριθμού είναι σταθερό. Ακόμα και αν βάζαμε στην συνάρτηση oλόκληρα κείμενα από δεκάδες βιβλία, το αποτέλεσμα θα ήταν ένας τέτοιος αριθμός. Και θα ήταν μοναδικός για τα συγκεκριμένα κείμενα, αφού αν αλλάζαμε έστω και ένα γράμμα ο αριθμός θα άλλαζε. (Οι αριθμοί στην εικόνα έχουν και γράμματα γιατί είναι στο δεκαεξαδικό σύστημα).
Το πρώτο block έχει τιμή PREV μηδέν, γιατί δεν υπάρχει προηγούμενο block. Βλέπουμε, από την τιμή NONCE, ότι για να βρεθεί η τιμή hash που ξεκινάει με τέσσερα μηδενικά χρειάστηκε να υπολογιστεί η συνάρτηση hash 22683 φορές. (δεν μας ενοχλεί που το συγκεκριμένο τυχαίνει να έχει πέντε μηδενικά.) Στο δεύτερο μπλόκ η τιμή PREV είναι η hash value του πρώτου block· και έτσι δημιουργείται η “αλυσίδα” του blockchain.

Αυτή η διαδικασία είναι χρονοβόρα, αλλά είναι πολύ εύκολο για τους υπόλοιπους κόμβους να επιβεβαιώσουν την απάντηση. Όταν ο εξορύκτης τους στέλνει το block, το οποίο περιέχει τον σωστό αριθμό nonce, οι υπόλοιποι κόμβοι πρέπει απλά να το περάσουν μία φορά από την συνάρτηση hash για δούνε ότι όντως το αποτέλεσμα ξεκινάει με τέσσερα μηδενικά.
Ο λόγος που γίνεται αυτός ο δύσκολος υπολογισμός είναι απλά και μόνο για να αποδείξει ο εξορύκτης ότι εργάστηκε. Δεν συμβάλλει δηλαδή με κάποιον τρόπο, στο να υπολογιστεί μια τιμή που έχει κάποια χρησιμότητα στην όλη διαδικασία. Είναι απλά η απόδειξη ότι ξοδεύτηκε η απαραίτητη ενέργεια και χρόνος.
Με αυτόν το τρόπο είναι δύσκολο να προτείνει ο οποιοσδήποτε συναλλαγές προς επιβεβαίωση. Ο κάθε κόμβος έχει συμφωνήσει στην συνθήκη ότι θα δέχεται blocks με συναλλαγές προς επιβεβαίωση μόνο από κάποιον που έχει ξοδέψει την απαιτούμενη ενέργεια.
Άν ο οποιοσδήποτε θελήσει να αλλοιώσει τα στοιχεία ενός block, θα πρέπει να καταφέρει να ξανα-υπολογίσει τo hash value του συγκεκριμένου block (αφου τα στοιχεία των συναλλαγών θα έχουν αλλάξει, δεν θα ταιριάζει πλέον το ήδη υπάρχον hash value) – και όλων των επόμενων μέχρι το τέλος της αλυσίδας (αφού κάθε block συνδέεται με το επόμενο μέσω του hash value). Η αλλοίωση θα μπορούσε να συμβεί θεωρητικά μόνο αν οι “κακόβουλοι” χρήστες αποκτήσουν το 51% (ή περισσότερο) της επεξεργαστικής ισχύος του δικτύου, για όσο χρόνο χρειάζονται οι υπολογισμοί. 9

Όσο πιο παλιό είναι ένα block στην αλυσίδα, τόσο πιο ασφαλές είναι. Για να αλλάξει τα στοιχεία του block 74, ο “κακόβουλος” θα πρέπει να βρει την hash value για τα επόμενα 18 block, πρίν οι “καλοί” υπολογίσουν την hash value για το block 91.
προσωρινός επίλογος

Επανερχόμενοι στο παράδειγμα των χρηματικών συναλλαγών, ο λόγος που εμπιστευόμαστε και χρησιμο οιούμε τα χαρτονομίσματα είναι επειδή υπάρχει ένας θεσμός (το κράτος, η κεντρική τράπεζα)  που εγγυάται την γνησιότητα της αξίας τους. Και υπάρχει μια “ομοφωνία” των πολιτών για την αποδοχή αυτών των εγγράφων ως αξιόπιστα μέσα συναλλαγής.
Με το blockchain ο φορέας που εγγυάται την γνησιότητα της αξίας, είναι η τεχνολογία. Και υπάρχει η ομοφωνία από τους συμμετέχοντες ότι στις συγκεκριμένες συναλλαγές ο εκάστοτε αλγόριθμος είναι αυτός που εξασφαλίζει την εγκυρότητά τους. Και αφού ο αλγόριθμος δεν είναι μια παρέα αργόσχολων υπαλλήλων και δεν μπορεί να δωροδοκηθεί ή να πέσει “θύμα” της διαφθοράς, είναι σίγουρα πιο έμπιστος για αυτές τις δουλειές.
Σε μια πρώτη ανάγνωση τα παραπάνω μπορεί να φαίνονται περίπλοκα – και κατά κάποιο τρόπο είναι. Ίσως όμως βοηθάει να επισημάνουμε ότι ουσιαστικά το μοναδικό νέο στοιχείο σε όλα αυτά είναι η διαδικασία με την οποία ένας εξορύκτης “παράγει” εμπιστοσύνη. Η διαδικασία του υπολογισμού της τιμής μέσω της συνάρτησης hash (απόδειξη της εργασίας).
Νέο, όχι από τεχνολογική άποψη, γιατί συναρτήσεις hash υπήρχαν και προηγουμένως. Όπως και τα “διαμοιρασμένα δίκτυα”, η κρυπτογράφηση, ακόμα και οι “αλγόριθμοι ομοφωνίας”. Στην ουσία καμία τεχνολογία δεν είναι καινούρια, όλες προϋπήρχαν. Απλά ο συνδυασμός τους, με την ενσωμάτωση του στοιχείου της “απόδειξης της εργασίας” είναι που κάνει το blockchain “καινούργιο”. Και θα λέγαμε ότι εδώ βρίσκεται το κεντρικό “σημείο κλειδί”.
Ο λόγος για τον οποίο αποκτά αξιοπιστία ο κάθε “εξορύκτης” – και κατά συνέπεια όλο το εγχείρημα του blockchain – είναι το γεγονός ότι σπατάλησε αρκετό χρόνο και ενέργεια. Ότι “εργάστηκε”. Με μια έννοια δηλαδή, παρήγαγε αξία. Την αξία, θα λέγαμε, που έχει η εμπιστοσύνη. Μπορούν όμως οι μηχανές να παράξουν αξία;
Η συζήτηση για τις λύσεις που προσφέρει το blockchain και την ιδεολογία που ενσωματώνει είναι πολύ μεγάλη και σίγουρα ένα κείμενο σαν κι αυτό μόλις που ακουμπάει την επιφάνεια. Εδώ προσπαθήσαμε να κάνουμε μια πρώτη προσέγγιση στο blockchain ως τεχνολογία, μέσω του παραδείγματος του bitcoin. Το πραγματικό ενδιαφέρον όμως είναι στις δυνατότητες εφαρμογής του σε άλλα πεδία που ανταλλάσονται αξίες και υπάρχει ανάγκη για μια ασφαλή και έγκυρη βάση δεδομένων. Μερικά από τα πολλά παραδείγματα είναι τα ταξιδιωτικά έγγραφα και οι υπηρεσίες, οι εκλογικές διαδικασίες και τα ιατρικά μητρώα.
Στη διαδικασία ανταλλαγής χρήματος, ο ρόλος της εμπιστοσύνης και του εγκεκριμένου ενδιάμεσου είναι κάπως ευδιάκριτος· και αφού η έννοια της αξίας έχει άμεση σχέση με το χρήμα, δεν εκπλήσει το γεγονός ότι η πρώτη εφαρμογή του blockchain ήταν τα ψηφιακά χρήματα. Όταν όμως η έννοια της αξίας διευρυνθεί, για να συμπεριλάβει σχέσεις που δεν μπορούμε να φανταστούμε αυτή τη στιγμή, αυτός ο ρόλος θολώνει όλο και περισσότερο. Όχι τόσο στη μορφή και την παρουσία του, όσο στην διαδικασία που ακολουθεί. Η απόδειξη ότι δεν μπορείς να αγοράσεις κάτι επειδή ο λογαριασμός σου είναι άδειος, είναι μια μαθηματική διαδικασία που εύκολα υλοποιείται από έναν αλγόριθμο. Η διαδικασία που αποδεικνύει, όμως, ότι είσαι παράνομος για κάτι, υπερβαίνει τα μαθηματικά.
Και γενικότερα όμως, η ιδέα να αντικατασταθεί η “μηχανή” της γραφειοκρατίας, κυριολεκτικά από μια μηχανή, αν και παλιά, εξελλίσεται παρουσιάζοντάς μας καινούρια παράδειγματα που θα πρέπει να μας απασχολήσουν. Θα επανέλθουμε.

Wintermute
cyborg #14 – 2/2019

  1. Δημοσιευμένο το 1997, από τον επιστήμονα υπολογιστών και κρυπτογράφο Nick Szabo, αποτελεί πρόγονο του blockchain. https://nakamotoinstitute.org/the-god-protocols/ ↩︎
  2. Ένα σχετικό site με τα διάφορα κρυπτονομίσματα και τις τιμές τους είναι το https://coinmarketcap.com/ ↩︎
  3. Η έννοια της αξίας είναι κεντρική στο blockchain, με την έννοια ότι το blockchain είναι “μέθοδος ανταλλαγής αξιών”. Είτε στα κρυπτονομίσματα, είτε σε άλλες εφαρμογές. Περισσότερα επ’ αυτού μελλοντικά. ↩︎
  4. Τα παραδείγματα είναι πολύ απλοποιημένα – πχ το κατά πόσο ένα δίκτυο μπορεί να είναι διαμοιρασμένο μέχρι το τελευταίο bit είναι ένα θέμα που απασχολεί. Επίσης και στην περίπτωση των κεντροποιημένων δικτύων χρησιμοποιείται μια είδους αποκεντροποιημένη επικοινωνία, ειδικά όσον αφορά την διευθυνσιοδότηση. Όμως έτσι μπαίνουμε στα νερά της θεωρίας δικτύων, που ενώ είναι κεντρικό σημείο για το θέμα μας, υπερβαίνει το παρόν κείμενο. ↩︎
  5. Σύγκριση των διάφορων “αλγόριθμων συναίνεσης”: https://www.blockchain-comparison.com/basics/consensus/ ↩︎
  6. Η έννοια “block” είναι κατά κάποιο τρόπο αυθαίρετη. Ουσιαστικά προσπαθεί να δώσει σχήμα σε μια συγκεκριμένη ποσότητα δεδομένων και να τα παρουσιάσει ως “ένα κουτί με πράγματα”, ενώ απλά μιλάμε για megabytes. Στην συγκεκριμένη περίπτωση του bitcoin, το “block” είναι δεδομένα μεγέθους 1 megabyte. ↩︎
  7. Το “πρόβλημα” του κάθε εξορύκτη έχει διαφορετικές παραμέτρους, γιατί αποτελείται από το σύνολο των ανεπιβεβαίωτων συναλλαγών που επέλεξε να βάλει στο block του. Σπάνια συμβαίνει δύο εξορύκτες να έχουν κάνεις τις ίδιες ακριβώς επιλογές. ↩︎
  8. Μπορείτε να πειραματιστείτε με συναρτήσεις hash εδω: http://onlinemd5.com/ ↩︎
  9. Περισσότερες λεπτομέρειες για το bitcoin μπορείτε να βρείτε στο κείμενο που το παρουσιάζει ο άγνωστος (άτομο ή ομάδα) δημιουργός του: https://bitcoin.org/bitcoin.pdf ↩︎