H προσέγγιση στη λύση του προβλήματος μέσω του bitcoin
Το κατάστιχο του Bitcoin: To Blockchain (η αλυσίδα των μπλοκ)
Κατ' αρχήν:
- Ο χρήστης του Bitcoin κατεβάζει και εγκαθιστά ένα λογισμικό - το Bitcoin Client
- Το λογισμικό αυτό με τη σειρά του κατεβάζει εσωτερικά όλη την αλυσίδα των επικυρωμένων μπλοκ (blockchain) που περιέχει καταγραμμένες όλες τις συναλλαγές στην ιστορία του Bitcoin και πλέον το κομπιούτερ στο εποίο έχουν εγκατασταθεί αυτά, γίνεται κόμβος του δικτύου του Bitcoin
- Κάθε Bitcoin client αποθηκεύει την πλήρη ιστορία όλων των συναλλαγών bitcoin όλων των εποχών. Δέν υπάρχει κάποιο κεντρικό αρχείο στο οποίο να καταγράφονται αυτά τα δεδομένα. Αυτά βρίσκονται διανεμημένα σε κάθε ένα από τα εγκατεστημένα Bitcoin Client
Μόλις βρεθεί το blockchain σε ένα κομπιούτερ, προκύπτει το ζήτημα του συγχρονισμού του:
- Πως τα αντίγραφα του blockchain που βρίσκονται σε κάθε άλλο κόμβο είναι συγχρονισμένα με όλους τους υπόλοιπους κόμβους;
- Με άλλα λόγια πώς αποκτάται συναίνεση για τα δεδομένα που περιέχουν τα αντίγραφα του blockchain χωρίς την ύπαρξη μιας κεντρικής λειτουργίας που να καθορίζει ακριβώς ποιά πρέπει να είναι τα δεδομένα αυτά;
- Ή με άλλα πάλι λόγια, ένας κόμβος που λαμβάνει αντικρουόμενες πληροφορίες για τα δεδομένα μιας συναλλαγής, ποιά από αυτά πρέπει να δεχτεί σαν έγκυρα και ποιά να αγνοήσει; Ποιά είναι αξιόπιστα και ποιά αναξιόπιστα;
Η διατήρηση ενός αντίγραφου του blockchain σε συγχρονισμό με κάθε άλλο αντίγραφο δεν είναι παρά μια εκδήλωση του προβλήματος των βυζαντινών στρατηγών.
O μηχανισμός συγχρονισμού του blockchain
Όταν εκτελείται μια συναλλαγή bitcoin, δηλαδή όταν αποστέλλεται ένα ποσόν bitcoin από μία διεύθυνση σε μιά άλλη, η συναλλαγή αυτή μεταδίδεται σε όλους τους κόμβους του συστήματος. Σε χρονικό διάστημα που κυμαίνεται από λίγα δευτερόλεπτα μέχρι μερικά λεπτά της ώρας οι περισσότεροι κόμβοι παγκοσμίως λαμβάνουν τα δεδομένα αυτής της συναλλαγής.
Μέχρι αυτό το σημείο, η προαναφερθείσα συναλλαγή είναι "ανεπιβεβαίωτη" γιατί εμπίπτει στο πρόβλημα των βυζαντινών στρατηγών. Γιά παράδειγμα τι θα συνέβαινε εάν ένας "πονηρός" κόμβος έστελνε δύο συναλλαγές αποστέλλοντας το ίδιο bitcoin σε δύο διαφορετικές διευθύνσεις; Ποιά συναλλαγή θα έπρεπε να δεχτούν οι υπόλοιποι κόμβοι σαν αξιόπιστη;
Ο μηχανισμός που χρησιμοποιεί το Bitcoin για να επιβεβαιώσει τις συναλλαγές λύνοντας το βυζαντινό πρόβλημα συνίσταται στην διαδικασία που ονομάζεται "εξόρυξη" (mining)
Συγχρονίζοντας το blockchain: Εξόρυξη
Επειδή ο όρος εξόρυξη δημιουργείο κάποιους λανθασμένους συνειρμούς πρέπει να φανταστείτε τους εξορύκτες σαν λογιστές που κρατάνε κατάστιχα και όχι σαν μεταλλωρύχους.
Αυτά για να φέρουμε τα πράγματα στη θέση τους και να γίνονται τα πράγματα πλήρως κατανοητά...
Η διαδικασία της εξόρυξη έχει τρία στάδια
Πρώτο στάδιο: Οι εξορύκτες (miners) δημιουργούν ένα αρχείο που περιέχει (α) το hash (κατακερματισμός) από το τελευταίο block του υπάρχοντος blockchain, (β) ένα block των νέων συναλλαγών που έχουν πραγματοποιηθεί και μεταδοθεί στο δίκτυο του bitcoin και (γ) ένας τυχαίος αριθμός που επινοείται τυχαία από τον εξορύκτη ο οποίος καλείται "νούντσιος" (nonce). O συνδυασμός των (α) + (β) + (γ) είναι τα δεδομένα που θα εισαχθούν στο δεύτερο στάδιο.
Δεύτερο στάδιο: Οι εξορύκτες εφαρμόζουν μία κρυπτογραφική λειτουργία στα δεδομένα. Οι λεπτομέρειες αυτής της λειτουργίας εξηγούνται εδώ [...] Η πιό σημαντική της λειτουργία είναι ότι δημιουργείται μία μοναδική συμβολοσειρά και οποία (η λειτουργία) δεν μπορεί να αντιστραφεί (δηλαδή το να γνωρίζουμε το αποτέλεσμα της λειτουργίας δεν μας επιτρέπει να ανατρέξουμε στα αρχικά δεδομένα). Αυτή η νέα σειρά δεδομένων ονομάζεται "data hash" (κατακερματισμένα δεδομένα)
Τρίτο στάδιο: Το hash εξετάζεται εάν ταιριάζει με ένα επιθυμητό σχήμα (μοτίβο - pattern). Σε αυτήν την περίπτωση εξετάζεται ο αριθμός των μηδενικών που βρίσκονται στην αρχή του - ένα αποτέλεσμα που είναι ουσιαστικά τυχαίο. Εάν το hash ταιριάζει στο επιθυμητό σχήμα, ο εξορύκτης έχει ένα έγκυρο block και ως εκ τούτου ανταμείβεται με ένα οικονομικό έπαθλο. Εάν το hash δεν ταιριάζει στο μοτίβο, ο εξορύκτης επιστρέφει στο πρώτο στάδιο, επινοεί έναν νέο νούντσιο και επαναλαμβάνει την διαδικασία.
Εξόρυξη: Λήψη ανταμοιβής
Μόλις ο εξορύκτης δημιουργήσει ένα έγκυρο block, το μεταδίδει στο δίκτυο ως block που περιέχει επιβεβαιωμένες συναλλαγές.
Οι κόμβοι βεβαιώνουν ότι το hash ταιριάζει με το επιθυμητό σχήμα και αποδέχονται το νέο block.
Μετά από αυτό, όλοι οι εξορύκτες ξεκινούν να εργάζονται για την δημιουργία του επόμενου block, ενσωματώνοντας το νέo μεγαλύτερο πλέον blockchain - εκκινούν δηλαδή πάλι από το πρώτο στάδιο.
Ο εξορύκτης σαν ανταμοιβή λαμβάνει:
- τα νέα bitcoin (σε αυτό το χρονικό σημείο 12,5 bitcoin) τα οποία αυξάνουν τον συνολικό αριθμό των υπαρχόντων bitcoin
- τις χρεώσεις που εφαρμόστηκαν σε όλες τις συναλλαγές που συμπεριλήφθηκαν στο block
Η ανταμοιβή για κάθε block ξεκίνησε από τα 50 bitcoin και μειώνεται κατά το ήμισυ κάθε 210000 block - περίπου κάθε 4 χρόνια.
Η επόμενη μείωση της ανταμοιβής για κάθε καινούργιο block θα συμβεί το 2020. Η ανταμοιβή για κάθε καινούργιο block θα σταματήσει όταν το δίκτυο θα φτάσει στα 6.939.000 block. Aυτό θα συμβεί περίπου κατά τη διάρκεια του έτους 2140. Ο συνολικός αριθμός των bitcoin που θα έχουν εκδοθεί θα είναι περίπου 21 εκατομμύρια.
Αυτορύθμιση της δυσκολίας εξόρυξης
Μετά την ανάγνωση όσων προηγήθηκαν κάποιος μπορεί να ρωτήσει: Γιατί κάποιος δεν φτιάχνει ένα υπερκομπιούτερ ώστε να εξορύξει όλα τα bitcoin;
Η δυσκολία δημιουργίας νέων block -στην ουσία ο αριθμός των μηδενικών στην αρχή της συμβολοσειράς που απαρτίζει τα κατακερματισμένα δεδομένα (hash)- αυτορυθμίζεται ανάλογα με την υπολογιστική ισχύ που υπάρχει στο δίκτυο
- Η δυσκολία επινόησης του τυχαίου αριθμού (νούντσιου) ο οποίος με τη σειρά του επιδρά στην δημιουργία του απαιτούμενου αριθμού των αρχικών μηδενικών, ρυθμίζεται κάθε 2016 block (περίπου κάθε δύο εβδομάδες) ώστε το δίκτυο να παράγει επιτυχώς ένα block κάθε 10 λεπτά ή περισσότερο
- Εάν ένα block χρειαστεί λιγότερο χρόνο (από τύχη) ή περισσότερο χρόνο για να παραχθεί, τότε η δυσκολία γίνεται μεγαλύτερη ή μικρότερη αντίστοιχα, ώστε ο ρυθμός δημιουργίας των block να επανέλθει στα 10 λεπτά
Αυτό σημαίνει ότι είτε το δίκτυο απαρτίζεται από μερικά παλιά κομπιούτερ είτε από μερικές χιλιάδες ή εκατομμύρια υπερκομπιούτερ, θα χρειάζονται 10 λεπτά για να δημιουργηθεί κάθε νέο block, και η προσδοκία ανταμοιβής καθενός που συμμετέχει στο δίκτυο, είναι το ποσοστό της δικής του συμμετοχής στη συνολική υπολογιστική ισχύ του δικτύου. Επίσης εφόσον οποιοσδήποτε μπορεί εύκολα να στήσει έναν κόμβο εξόρυξης και εφόσον αυτό μπορεί να αποφέρει κάποιο οικονομικό κέρδος, όλο και περισσότεροι εξορύκτες θα μπαίνουν στο δίκτυο - και αντίστροφα, εάν δεν είναι κερδοφόρα ασχολία, θα μειώνονται όσοι ασχολούνται με την εξόρυξη.
Ας επιστρέψουμε όμως στο πρόβλημα των βυζαντινών στρατηγών...