Ενότητα 8 από 10

Πώς λειτουργεί το Bitcoin

8.0 Εισαγωγή

Το Bitcoin δεν είναι «μη ρυθμιζόμενο»· ρυθμίζεται από αλγόριθμο αντί να ρυθμίζεται από κυβερνητικές γραφειοκρατίες. Αδιάφθορο.
Ανδρέας Μ. Αντωνόπουλος

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

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

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

Μηχανισμοί του Πρωτοκόλλου Bitcoin
  • Απόδειξη Εργασίας
  • Κρυπτογραφικές Χρονικές Σφραγίδες
  • Ρύθμιση Δυσκολίας
  • Αρχιτεκτονική Δικτύου Ομότιμων (Peer-to-Peer)
  • Συναρτήσεις Κατακερματισμού & Δέντρα Merkle
  • Κρυπτογραφία Δημόσιου Κλειδιού
  • Μείωση Επιβράβευσης Μπλοκ (Halving)

8.1 Ασφάλεια μέσω Κρυπτογραφίας

Αυτό που μας προσφέρει το Bitcoin είναι μια σκληρή υπόσχεση: το πρόγραμμα θα εκτελεστεί ακριβώς όπως έχει οριστεί.
Ανδρέας Μ. Αντωνόπουλος

Κρυπτογραφία Δημόσιου/Ιδιωτικού Κλειδιού

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

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

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

Το πρόβλημα με αυτό το σύστημα είναι ότι και οι δύο πρέπει ήδη να μοιράζονται το μυστικό κλειδί. Αν κάποιος άλλος αποκτήσει πρόσβαση σε αυτό το κλειδί, μπορεί να διαβάσει οποιοδήποτε μήνυμα υποκλαπεί.

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

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

  • Το δημόσιο κλειδί μπορεί να κοινοποιηθεί σε οποιονδήποτε.
  • Το ιδιωτικό κλειδί πρέπει πάντα να παραμένει μυστικό.

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

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

Οι συναλλαγές Bitcoin περιλαμβάνουν τη μεταφορά κυριότητας bitcoin από μία διεύθυνση σε μια άλλη.

Η κρυπτογράφηση χρησιμοποιείται για να διασφαλίσει ότι μόνο ο πραγματικός κάτοχος του bitcoin έχει την εξουσία να στείλει τα χρήματά του σε κάποιον άλλον. Εξασφαλίζει ότι η περιουσία τους προστατεύεται από κακόβουλους παράγοντες.

Ως επιπλέον μέτρο προστασίας, κάθε συναλλαγή Bitcoin αποκτά αυτόματα μια ΜΟΝΑΔΙΚΗ ψηφιακή υπογραφή. Αυτή η μοναδική ψηφιακή υπογραφή υποστηρίζεται από τεχνολογία που δεν μπορεί να παραβιαστεί και βοηθά το δίκτυο να επαληθεύσει ότι ο πραγματικός κάτοχος του bitcoin, και όχι κάποιος άλλος, τα έχει στείλει.

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

Πώς λειτουργεί μια συναλλαγή Bitcoin
  1. Δημιουργία της Συναλλαγής: Ένας χρήστης ξεκινά μια συναλλαγή Bitcoin καθορίζοντας λεπτομέρειες όπως η διεύθυνση του παραλήπτη και το ποσό bitcoin που θα σταλεί.
  2. Δημιουργία Ψηφιακής Υπογραφής: Ο αποστολέας δημιουργεί μια μοναδική ψηφιακή υπογραφή χρησιμοποιώντας το ιδιωτικό του κλειδί. Αυτή η υπογραφή είναι ένας μοναδικός κωδικός που επαληθεύει τη γνησιότητα της συναλλαγής.
  3. Μετάδοση της Συναλλαγής: Η υπογεγραμμένη συναλλαγή μεταδίδεται στο δίκτυο Bitcoin, δηλώνοντας την πρόθεση μεταφοράς κυριότητας bitcoin από τον αποστολέα στον παραλήπτη.
  4. Επαλήθευση στο Δίκτυο: Οι κόμβοι του δικτύου Bitcoin λαμβάνουν τη συναλλαγή και χρησιμοποιούν το δημόσιο κλειδί για να επαληθεύσουν τη γνησιότητα της υπογραφής της συναλλαγής. Ταυτόχρονα, χρησιμοποιούν το δημόσιο κλειδί για να επαληθεύσουν τη ψηφιακή υπογραφή.
  5. Επιβεβαίωση στο δίκτυο του Bitcoin: Αν η επαλήθευση είναι επιτυχής, η συναλλαγή θα προστεθεί στο καθολικό, το οποίο λειτουργεί ως ένα ασφαλές, διαφανές αρχείο όλων των συναλλαγών. Μόλις επιβεβαιωθεί, η κυριότητα του bitcoin μεταβιβάζεται επίσημα από τον αποστολέα στον παραλήπτη.

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

Επεξήγηση Hashing

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

Μια συνάρτηση είναι σαν μια μηχανή που παίρνει κάποιες πληροφορίες και τις μετατρέπει σε κάτι καινούργιο. Οι πληροφορίες που δίνεις στη συνάρτηση είναι το εισόδου. Οι νέες πληροφορίες που δημιουργεί η συνάρτηση είναι το αποτέλεσμα. Οι συναρτήσεις βοηθούν τους υπολογιστές να εκτελούν εργασίες και να λύνουν προβλήματα.

Τι είναι συνάρτηση;

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

Στο Bitcoin, οι συναρτήσεις χρησιμοποιούνται για την επεξεργασία και επαλήθευση συναλλαγών. Όταν κάποιος στέλνει bitcoin, οι κρυπτογραφικές συναρτήσεις βοηθούν να ελεγχθεί ότι η συναλλαγή είναι έγκυρη, να επιβεβαιωθεί ότι ο αποστολέας έχει αρκετά χρήματα και να ενημερωθούν τα υπόλοιπα στο καθολικό του Bitcoin. Μόλις επαληθευτεί και προστεθεί σε ένα μπλοκ, η συναλλαγή γίνεται μέρος του μόνιμου αρχείου στο blockchain.

Τι είναι μια μονόδρομη συνάρτηση;

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

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

Τι είναι μια συνάρτηση κατακερματισμού (hash function);

Μια συνάρτηση κατακερματισμού είναι σαν μια μηχανή μυστικού κώδικα. Παίρνει ένα μήνυμα και το μετατρέπει σε έναν κώδικα.

Πώς λειτουργεί το Hashing στις συναλλαγές Bitcoin

Στο Bitcoin, κάθε συναλλαγή μετατρέπεται σε hash πριν προστεθεί στο blockchain. Ένα hash είναι ένα μοναδικό ψηφιακό αποτύπωμα της συναλλαγής. Αν κάποιος προσπαθήσει να αλλάξει ακόμα και ένα μικρό μέρος της συναλλαγής, το hash θα αλλάξει εντελώς. Αυτό κάνει εύκολο για το δίκτυο να εντοπίσει παραποίηση.

Ο ρόλος του Hashing στην ασφάλεια του Bitcoin

Το Hashing βοηθά στην προστασία του δικτύου Bitcoin κάνοντας τις συναλλαγές εύκολες στην επαλήθευση και αδύνατο να τροποποιηθούν αθόρυβα. Επειδή κάθε συναλλαγή έχει το δικό της μοναδικό hash, το δίκτυο μπορεί γρήγορα να εντοπίσει αν κάτι έχει αλλοιωθεί.

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

Το Hashing είναι σαν να δημιουργείς ένα αποτύπωμα για ψηφιακά δεδομένα. Είναι η διαδικασία κατά την οποία ένα ψηφιακό μήνυμα μετατρέπεται σε έναν κώδικα σταθερού μήκους, που λειτουργεί ως μοναδικός αναγνωριστικός. Όπως ένα αποτύπωμα μπορεί να ταυτοποιήσει ένα άτομο, έτσι και ένα hash μπορεί να ταυτοποιήσει ένα ψηφιακό μήνυμα.

Το αποτέλεσμα, ή hash, έχει πάντα το ίδιο μήκος, ανεξάρτητα από το πόσο μεγάλες ήταν οι αρχικές πληροφορίες. Το Bitcoin χρησιμοποιεί μερικούς συγκεκριμένους τύπους συνάρτησης κατακερματισμού που ονομάζονται SHA-256 και RIPEMD160.

Μερικά παραδείγματα ακολουθούν:

  • Το SHA256 hash της συμβολοσειράς γειά σου κόσμε
    • b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
  • SHA256 hash της συμβολοσειράς γειά σου κόσμε.
    • 7ddb227315f423250fc67f3be69c544628dffe41752af91c50ae0a9c49faeb87
    • Παρατήρησε ότι μια μικρή αλλαγή στην είσοδο αλλάζει εντελώς την έξοδο σε σύγκριση με την πρώτη
  • SHA256 hash του αρχείου iso που μπορείς να κατεβάσεις Ubuntu 18.10
    • 7b9f670c749f797a0f7481d619ce8807edac052c97e1a0df3b130c95efae4765
    • Αυτή η είσοδος είναι ένα τεράστιο αρχείο, αλλά η έξοδος παραμένει το ίδιο σταθερό μήκος

Μπορείς επίσης να σκεφτείς το hashing σαν μια παρτιτούρα που αποτυπώνει την ουσία ενός μουσικού κομματιού. Όπως μια παρτιτούρα είναι μια μοναδική αναπαράσταση μιας μελωδίας, έτσι και μια τιμή hash είναι μια μοναδική αναπαράσταση δεδομένων.

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

Όπως μια μικρή απόκλιση σε μια μουσική εκτέλεση μπορεί να την κάνει να ακούγεται διαφορετική, έτσι και η παραμικρή αλλαγή στα αρχικά δεδομένα θα οδηγήσει σε διαφορετική τιμή hash. Αυτό κάνει το hashing ένα ισχυρό εργαλείο για τη διασφάλιση της ακεραιότητας και της αυθεντικότητας μιας συναλλαγής Bitcoin.

Η διαδικασία κωδικοποίησης του δημόσιου κλειδιού μέσω hashing χρησιμοποιείται για τη βελτίωση της ασφάλειας των πληροφοριών μετατρέποντάς τις σε μια σταθερού μήκους, μη αναγνώσιμη μορφή. Το Bitcoin χρησιμοποιεί τους αλγορίθμους SHA-256 και RIPEMD160 για να παράγει δημόσιες διευθύνσεις. Το αποτέλεσμα λειτουργεί ως μοναδικός αναγνωριστικός αριθμός για το δημόσιο κλειδί και βοηθά στη διασφάλιση της ακεραιότητας και της ασφάλειας των συναλλαγών που αποθηκεύονται στο καθολικό. Κρυπτογραφώντας τις πληροφορίες με αυτόν τον τρόπο, γίνεται πιο δύσκολο για μη εξουσιοδοτημένα άτομα να έχουν πρόσβαση και να τροποποιήσουν τα δεδομένα.

Ιδιότητες μιας συνάρτησης κατακερματισμού
  • Ντετερμινιστική: Τα ίδια συστατικά πάντα παράγουν το ίδιο smoothie. Με τον ίδιο τρόπο, τα ίδια δεδομένα θα παράγουν πάντα το ίδιο hash.
  • Αντίσταση στην προεικόνα: Αν έχεις μόνο το smoothie, δεν μπορείς να βρεις ακριβώς τα φρούτα που χρησιμοποιήθηκαν. Παρομοίως, αν έχεις μόνο ένα hash, δεν μπορείς να προσδιορίσεις τα αρχικά δεδομένα.
  • Φαινόμενο χιονοστιβάδας: Αλλάζοντας ακόμη και ένα μικρό μέρος των συστατικών δημιουργείται ένα εντελώς διαφορετικό smoothie. Στο hashing, μια πολύ μικρή αλλαγή στα δεδομένα παράγει ένα εντελώς διαφορετικό hash.
  • Αντίσταση σε συγκρούσεις: Είναι εξαιρετικά δύσκολο να βρεις δύο διαφορετικά σύνολα συστατικών που να παράγουν ακριβώς το ίδιο smoothie. Με τον ίδιο τρόπο, είναι εξαιρετικά απίθανο δύο διαφορετικά δεδομένα να παράγουν το ίδιο hash.
  • Γρήγορη επαλήθευση: Η παρασκευή του smoothie είναι γρήγορη και είναι εύκολο να ελέγξεις ότι το αποτέλεσμα είναι smoothie. Οι συναρτήσεις hash υπολογίζονται γρήγορα και είναι εύκολο για οποιονδήποτε να τις επαληθεύσει.

Δραστηριότητα: Δημιούργησε SHA 256 Hash

Είσαι περίεργος για το πώς λειτουργεί το hashing; Σκάναρε τον QR κωδικό για να δημιουργήσεις άμεσα ένα SHA256 hash από οποιαδήποτε λέξη, πρόταση ή είσοδο επιλέξεις. Οι συναρτήσεις hash είναι σαν ψηφιακά δακτυλικά αποτυπώματα: είναι μονόδρομες, που σημαίνει ότι μόλις κάτι γίνει hash, δεν μπορεί να αντιστραφεί. Δοκίμασέ το και δες το μόνος σου!

8.2 Το μοντέλο UTXO

Τι είναι τα UTXOs;

Μην αφήσετε το παράξενο όνομα να σας τρομάξει. Μπορείτε να σκεφτείτε τα UTXOs ως κομμάτια bitcoin, παρόμοια με τα χαρτονομίσματα και τα κέρματα στο πορτοφόλι σας. Για παράδειγμα, αν πληρώσετε για ένα προϊόν αξίας 6 € με χαρτονόμισμα των 10 €, θα λάβετε 4 € ρέστα. Το Bitcoin λειτουργεί με παρόμοιο τρόπο.

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

Αν το κομμάτι που ξοδεύετε είναι μεγαλύτερο από το ποσό που στέλνετε, η υπόλοιπη αξία επιστρέφει σε εσάς ως ρέστα με τη μορφή ενός νέου UTXO. Ταυτόχρονα, ο παραλήπτης λαμβάνει ένα νέο UTXO που αντιπροσωπεύει τα bitcoin που του στείλατε.

Το υπόλοιπο του πορτοφολιού σας είναι απλώς το συνολικό ποσό όλων των UTXOs που ελέγχετε.

Δεν θα πρέπει να κάνετε γνωστά τα UTXOs σας σε άλλους, γιατί αν κάποιος τα γνωρίζει, μπορεί να παρακολουθεί τις συναλλαγές σας και τελικά να μάθει πόσα χρήματα έχετε.

Παράδειγμα
  1. Η Ελένη θέλει να στείλει στον Νίκο 5 BTC.
  2. Το πορτοφόλι της χρησιμοποιεί δύο από τα UTXOs της που μαζί αξίζουν 6 BTC.
  3. Η συναλλαγή στέλνει 5 BTC στον Νίκο, δημιουργώντας ένα νέο UTXO στο πορτοφόλι του Νίκου.
  4. Τα υπόλοιπα 0,99 BTC επιστρέφουν στην Ελένη ως ρέστα, αφού πληρωθεί μια προμήθεια συναλλαγής 0,01 BTC.
  5. Μόλις επιβεβαιωθεί η συναλλαγή, προστίθεται στο καθολικό του Bitcoin και τα UTXOs που χρησιμοποίησε η Ελένη σημειώνονται ως ξοδεμένα, ώστε να μην μπορούν να χρησιμοποιηθούν ξανά.
Πηγές
How Bitcoin Works Under the Hood
Παρακολουθήστε το «How Bitcoin Works under the Hood»

↑ Επιστροφή στον πίνακα περιεχομένων