Τερματισμός της συζήτησης bitcoin vs blockchain

Κόμβος πηγής: 1849174

Υπάρχει κάποια αξία σε ένα blockchain χωρίς κρυπτονόμισμα;

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

Υπάρχει κάποια αξία σε ένα blockchain χωρίς κρυπτονόμισμα; Και μπορούν καθόλου αυτά τα «κοινόχρηστα λογιστικά βιβλία χωρίς διακριτικά» να ονομαστούν blockchain;

Έχω διαβάσει λοιπόν Το άρθρο του Bailey, παρακολούθησα Το βίντεο του Τιμ, Διαβάστε αυτή η ανάρτηση του Nasdaq, ακολούθησε του Ρίτσαρντ κάθε λέξη, και μάλιστα είχα το δικό μου καλοπροαίρετη συζήτηση (βλ. σχόλια) με τον Chris DeRose του ιδρύματος Counterparty. Τόσος ζεστός αέρας.

Ένα πράγμα που κάνει καλά ο Chris είναι να το συνοψίσει στο ερώτημα: είναι το blockchain μια οικονομική καινοτομία ή μια καινοτομία στην επιστήμη των υπολογιστών; Το συμπέρασμα είναι ότι αν τα blockchain είναι μια καθαρά οικονομική καινοτομία, δεν υπάρχει λόγος να υπάρχουν blockchain χωρίς κρυπτονομίσματα. Επιτρέψτε μου λοιπόν να πω τη θέση μου στην αρχή:

Το blockchain bitcoin ήταν και οικονομικό και μια καινοτομία στην επιστήμη των υπολογιστών.

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

Για την ακρίβεια, ισχυρίζομαι ότι τα blockchains χωρίς διακριτικό εξυπηρετούν έναν σκοπό, αλλά είναι ένα διαφορετικός σκοπός σε σύγκριση με το αρχικό blockchain bitcoin. Οι κρυπτοκεφαλές γελούν με μπλοκ αλυσίδες χωρίς διακριτικά, επειδή δεν μπορούν να προσφέρουν αντίσταση στη λογοκρισία και αποκεντρωμένη ασφάλεια μέσω της απόδειξης εργασίας. Οι επικεφαλής της Fintech γελούν με τις δημόσιες blockchain επειδή είναι αργές, ακριβές και ακατάλληλες για παραδοσιακά χρηματοοικονομικά. Λοιπόν, συνεχίστε να γελάτε όλοι, γιατί πιστεύω ότι έχετε και οι δύο δίκιο.

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

Δυστυχώς, για να ακολουθήσετε το επιχείρημα, θα πρέπει να έρθετε σε επαφή μαζί μου για το μοντέλο συναλλαγών bitcoin, τον έλεγχο ταυτόχρονης συχνότητας πολλαπλών εκδόσεων βάσης δεδομένων (MVCC) και το πρόβλημα της επίλυσης διενέξεων στην αναπαραγωγή πολλαπλών βασικών βάσεων δεδομένων. Θα κάνω ό,τι καλύτερο μπορώ για να παραμείνω στα αγγλικά, αλλά και πάλι, αυτό είναι τεχνικό θέμα και δεν υπάρχει λόγος να το αποφύγω.

Το μοντέλο συναλλαγών του Bitcoin

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

Το Bitcoin έχει ένα σωρό πρόσθετους κανόνες που επιβάλλονται από κάθε κόμβο στο δίκτυο:

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

Λόγω αυτού του τελευταίου κανόνα, το δίκτυο απαιτεί έναν μηχανισμό για την επίτευξη συναίνεσης σχετικά με το ποιες συναλλαγές είναι έγκυρες, και αυτό κάνει το blockchain. ΕΙΔΙΚΑ:

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

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

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

Ίσως θα θέλαμε να χρησιμοποιήσουμε μια δημοκρατική προσέγγιση, στην οποία οι κόμβοι του δικτύου ψηφίζουν για μπλοκ και η πλειοψηφία κερδίζει. Δυστυχώς, όπως μπορεί να αποδείξει κάθε δημοσκόπηση στο Διαδίκτυο, η αντιπροσωπευτική δημοκρατία δεν είναι δυνατή στο διαδίκτυο, λόγω του προβλήματος της πλαστοπροσωπίας (επίσης γνωστή ως Επίθεση Sybil). Ένα άτομο μπορεί να πάρει πάνω από ένα εκατομμύριο υπολογιστές και να αποφασίσει πώς θα ψηφίσει, αναλαμβάνοντας έτσι τον έλεγχο της συναίνεσης του δικτύου. Κανείς άλλος δεν θα ξέρει καν ότι αυτό συνέβη.

Για να λυθεί αυτό, το bitcoin δυσκολεύει εσκεμμένα την προσθήκη ενός μπλοκ στην αλυσίδα, μέσω μιας διαδικασίας που ονομάζεται «εξόρυξη». Για να δημιουργήσετε ένα μπλοκ, πρέπει να λύσετε ένα δύσκολο αλλά άσκοπο μαθηματικό πρόβλημα που απαιτεί πολλούς υπολογισμούς (και επομένως ηλεκτρισμό και χρήματα). Χρειάζεστε επίσης λίγη τύχη, αφού είστε σε ανταγωνισμό με πολλούς άλλους μπλοκ εξορύκτες σε όλο τον κόσμο. Δεν μπορείτε να προχωρήσετε για πολύ αγοράζοντας έναν πιο ισχυρό υπολογιστή εξόρυξης, επειδή το δίκτυο προσαρμόζει τακτικά τη δυσκολία του προβλήματος για να διατηρεί έναν σταθερό παγκόσμιο ρυθμό ενός μπλοκ ανά 10 λεπτά.

Εάν είναι τόσο δύσκολο και δαπανηρό να δημιουργηθεί ένα μπλοκ, γιατί να ασχοληθεί κανείς; Η απάντηση βρίσκεται στην ανταμοιβή μπλοκ. Ο επιτυχημένος εξορύκτης ενός μπλοκ ελέγχει τη συναλλαγή coinbase που του απονέμει 25 bitcoin (το άθροισμα αυτό μειώνεται στο μισό κάθε τέσσερα χρόνια). Μπορούν να πουλήσουν αυτά τα bitcoin στην ανοιχτή αγορά για 7,000 $ (με σημερινή τιμή), να εξοφλήσουν τον λογαριασμό του ηλεκτρικού ρεύματος και ελπίζουμε να κερδίσουν κάποιο κέρδος. Οι ανθρακωρύχοι εισπράττουν επίσης λίγο επιπλέον από τις χρεώσεις που συνδέονται με τις συναλλαγές, αν και προς το παρόν αυτές οι χρεώσεις παίζουν δευτερεύοντα ρόλο.

Έτσι, το bitcoin δημιουργεί συναίνεση μέσω της απόδειξης εργασίας και η ουσία του επιχειρήματος των κεφαλών του bitcoin είναι το εξής: Χωρίς κρυπτονόμισμα, δεν υπάρχει τρόπος να δοθεί κίνητρο για την αποκεντρωμένη εξόρυξη μπλοκ. Επομένως, δεν υπάρχει τρόπος να διασφαλίσετε ένα ανοιχτό blockchain από επιθέσεις πλαστοπροσωπίας. Επομένως, οποιοσδήποτε μπορεί να μονοπωλήσει τη συναίνεση του δικτύου και να καταστήσει το όλο θέμα άχρηστο. Δεν θα διαφωνήσω με τίποτα από αυτά.

Έλεγχος ταυτόχρονης πολλαπλής αντιστροφής

Εν τω μεταξύ θέλω να μιλήσω για κάτι που μπορεί να φαίνεται εντελώς άσχετο.

Μια βάση δεδομένων είναι μια αποθήκη δομημένων πληροφοριών, ομαδοποιημένων σε οντότητες που μοιάζουν με υπολογιστικά φύλλα που ονομάζονται πίνακες. Ένα απλό παράδειγμα ενός τέτοιου πίνακα είναι μια λίστα τραπεζικών λογαριασμών, στην οποία κάθε σειρά περιέχει έναν αριθμό λογαριασμού μαζί με το υπόλοιπο αυτού του λογαριασμού. Ας υποθέσουμε ότι ο λογαριασμός σας ξεκινά τη μέρα με υπόλοιπο 900 $. Σήμερα έχει προγραμματιστεί μια αυτόματη πληρωμή στεγαστικού δανείου 750 $ και πρέπει επίσης να κάνετε ανάληψη 400 $ από ένα ΑΤΜ. Δυστυχώς δεν έχετε διευκόλυνση υπερανάληψης, επομένως μία από αυτές τις λειτουργίες έχει ρυθμιστεί να αποτύχει.

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

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

Τι θα συμβεί όμως εάν οι δύο διαδικασίες ξεκινήσουν ταυτόχρονα; Σε αυτήν την περίπτωση, ο καθένας θα διαβάσει το υπόλοιπο του λογαριασμού σας και θα κρίνει επαρκές να προχωρήσει. Όταν ολοκληρωθεί η πληρωμή του στεγαστικού δανείου, το νέο υπόλοιπό σας θα υπολογιστεί ως $150 και θα εγγραφεί στη βάση δεδομένων. Όταν ολοκληρωθεί η ανάληψη από το ATM, το νέο υπόλοιπο των 500 $ θα εγγραφεί με παρόμοιο τρόπο. Μία από αυτές τις λειτουργίες εγγραφής θα αντικαταστήσει την άλλη και, ανάλογα με την τύχη σας, θα λάβετε ένα μπόνους 750$ ή 400$ από την τράπεζά σας. Χωρίς αμφιβολία θα μάθετε σύντομα να χρονομετράτε τις επισκέψεις σας στο ΑΤΜ για την ημέρα υποθήκης.

Φυσικά, αυτό δεν συμβαίνει στην πραγματικότητα, λόγω μιας τεχνολογίας βάσης δεδομένων που ονομάζεται έλεγχος ταυτόχρονης λειτουργίας. Ο έλεγχος ταυτόχρονης χρήσης διατηρεί τα δεδομένα μας (ειδικά τα οικονομικά) λογικά και ασφαλή και διατίθεται σε πολλές μορφές. Ωστόσο, όλοι μοιράζονται την αρχή ότι οι λειτουργίες της βάσης δεδομένων ομαδοποιούνται σε «συναλλαγές», οι οποίες αντιμετωπίζονται ατομικά, πράγμα που σημαίνει ότι επιτυγχάνουν ή αποτυγχάνουν ως σύνολο. Το Concurrency διατηρεί τη συνέπεια κλειδώνοντας ή παγώνοντας τμήματα μιας βάσης δεδομένων ενώ χρησιμοποιούνται από μια συναλλαγή, για να αποτρέψει άλλες συναλλαγές από το να λειτουργούν στις ίδιες πληροφορίες με αντικρουόμενο τρόπο.

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

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

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

Για τους σκοπούς μας εδώ, το MVCC αποτρέπει τις συγκρούσεις μεταξύ των λειτουργιών εγγραφής. ΕΙΔΙΚΑ:

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

Να χτυπήσω κανένα κουδούνι; Υπάρχει ένα ακόμη κομμάτι του παρασκηνίου που πρέπει να συζητήσουμε.

Αντιγραφή πολλαπλών βασικών βάσεων δεδομένων

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

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

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

Η πιο συνηθισμένη απάντηση είναι η χρήση της αναπαραγωγής master-slave, στην οποία μια ενιαία βάση δεδομένων (το «κύριο») θεωρείται έγκυρη. Οποιεσδήποτε αλλαγές στα δεδομένα εκτελούνται αποκλειστικά στον κύριο και στη συνέχεια μεταφέρονται σε όλες τις άλλες βάσεις δεδομένων "slave" μέσω ενός αρχείου καταγραφής συναλλαγών. Αυτό διατηρεί όλα τα αντίγραφα της βάσης δεδομένων (περισσότερο ή λιγότερο) άμεσα συγχρονισμένα.

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

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

Αυτό ακούγεται απλό στη θεωρία, αλλά η αναπαραγωγή πολλαπλών κυρίων εισάγει ένα νέο πρόβλημα επειδή μπορεί να προκύψουν συγκρούσεις. Τι γίνεται αν δύο αντίγραφα μιας βάσης δεδομένων ενημερώνουν την ίδια σειρά ταυτόχρονα και στη συνέχεια επιχειρήσουν να ανταλλάξουν αυτές τις ενημερώσεις μεταξύ τους; Και οι δύο βάσεις δεδομένων θα παρατηρήσουν ότι έχει λάβει χώρα μια διένεξη ενημέρωση και πρέπει να εφαρμόσουν κάποια συμφωνημένη στρατηγική για την επίλυση αυτών των διενέξεων. Και εδώ γίνονται τα πράγματα αρκετά σύνθετο – δείτε τα έγγραφα για MySQL, Ο SQL Server or μαντείο για μερικά παραδείγματα στρατηγικών επίλυσης συγκρούσεων. (Αγνοώ τη σύγχρονη ή τη λεγόμενη «ανυπόμονη» αναπαραγωγή πολλαπλών κυρίων, στην οποία όλα τα αντίγραφα πρέπει να δεσμευτούν σε μια λειτουργία εγγραφής προτού πραγματοποιηθεί, γιατί αυτό γυρίζει κάθε αντίγραφο της βάσης δεδομένων σε ένα σημείο συμφόρησης.)

Εδώ λοιπόν οδηγεί όλο αυτό το υπόβαθρο:

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

Λοιπόν, ναι, φαντάζομαι ότι θα ήταν πράγματι πολύ ωραίο. Και πιστεύω ότι αυτό ακριβώς κάνουν τα blockchain.

Blockchains ως κατανεμημένα MVCC

Ας αντιγράψουμε μερικές προτάσεις που έγραψα με έντονους χαρακτήρες παραπάνω:

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

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

Αυτές οι προτάσεις είναι πανομοιότυπες εκτός από τους έντονους όρους. Να τι θα ισχυριστώ λοιπόν:

Ένα blockchain παρέχει κατανεμημένο MVCC (με μερικά επιπλέον κουδούνια και σφυρίχτρες).

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

Μια συναλλαγή bitcoin ξοδεύει μία ή περισσότερες από αυτές τις εκροές και δημιουργεί μία ή περισσότερες νέες εκροές ως αποτέλεσμα. Αυτό είναι ακριβώς όπως μια συναλλαγή βάσης δεδομένων που διαγράφει μία ή περισσότερες εκδόσεις σειρών και ως αποτέλεσμα δημιουργεί μία ή περισσότερες νέες σειρές (θυμηθείτε ότι στο MVCC δεν υπάρχει τέτοιο πράγμα όπως η τροποποίηση μιας σειράς στη θέση του). Το blockchain bitcoin διασφαλίζει ότι μια μεμονωμένη έξοδος δεν μπορεί να δαπανηθεί από περισσότερες από μία συναλλαγές. Αυτό ισοδυναμεί με τη διασφάλιση ότι μια έκδοση μεμονωμένης σειράς δεν μπορεί να διαγραφεί από περισσότερες από μία συναλλαγές βάσης δεδομένων.

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

  • Μπορούμε να δεχτούμε μια μικρή καθυστέρηση μεταξύ του πότε πιθανώς γίνεται αποδεκτή μια συναλλαγή και του πότε θα γίνει οπωσδήποτε αποδεκτή. (Αυτή η καθυστέρηση μπορεί να είναι θέμα δευτερολέπτων και όχι 10 λεπτών όπως στο bitcoin.)
  • Οι αντικρουόμενες συναλλαγές δεν πρέπει ποτέ να συμβαίνουν εάν όλοι είναι ειλικρινείς και τα συστήματά τους λειτουργούν σωστά.
  • Κάθε συναλλαγή τροποποιεί λίγες μόνο σειρές ταυτόχρονα (διαφορετικά οι συναλλαγές μας με blockchain θα έχουν έναν δυσκίνητο αριθμό εισροών).
  • Το μέγεθος κάθε σειράς βάσης δεδομένων είναι αρκετά μικρό (και πάλι, για να αποτρέψουμε την αύξηση του μεγέθους των συναλλαγών μας σε blockchain).

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

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

Blockchains πέρα ​​από το MVCC

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

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

Δεύτερον, θυμηθείτε ότι κάθε έξοδος συναλλαγής bitcoin κωδικοποιεί τις συνθήκες υπό τις οποίες μπορεί να δαπανηθεί. Για τακτικές εξόδους bitcoin, αυτή η συνθήκη βασίζεται στην κρυπτογραφία δημόσιου κλειδιού. Μια δημόσια διεύθυνση είναι ενσωματωμένη μέσα στο "σενάριο" εξόδου, έτσι ώστε να μπορεί να δαπανηθεί μόνο χρησιμοποιώντας το ιδιωτικό κλειδί που αντιστοιχεί σε αυτήν τη δημόσια διεύθυνση. Αν θεωρήσουμε ότι αυτό το αποτέλεσμα είναι μια γραμμή βάσης δεδομένων, αυτό που έχουμε είναι μια βάση δεδομένων με δικαιώματα ανά σειρά που βασίζονται στην κρυπτογραφία δημόσιου κλειδιού. Επιπλέον, κάθε συναλλαγή παρουσιάζει μια δημόσια ελεγχόμενη απόδειξη ότι οι δημιουργοί της είχαν το δικαίωμα να διαγράψουν/τροποποιήσουν τις προηγούμενες σειρές της. Αυτό (πιστεύω) είναι μια γνήσια καινοτομία στην τεχνολογία των βάσεων δεδομένων.

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

Πού είναι λοιπόν το κουπόνι;

Φυσικά, τίποτα από αυτά δεν είναι τυχαίο, γιατί το ίδιο το bitcoin είναι μια όμορφη οικονομική εφαρμογή peer-to-peer. Ωστόσο, κανένα από τα παραπάνω χαρακτηριστικά ενός blockchain δεν εξαρτάται καθόλου από το διακριτικό. Εάν τροποποιήσουμε το σχήμα "βάσης δεδομένων" μας έτσι ώστε κάθε σειρά να μπορεί να αντιπροσωπεύει πολλαπλά στοιχεία, αντί για το εγγενές νόμισμα του blockchain, τότε μπορούμε να απαλλαγούμε εντελώς από αυτό το νόμισμα. Αυτό μας αφήνει ένα blockchain ως τρόπο επίτευξης συναίνεσης και ασφάλειας σε μια peer-to-peer οικονομική εφαρμογή για οποιαδήποτε κατηγορία περιουσιακών στοιχείων.

Μόνο μια μικρή ερώτηση όμως: Ποιος κάνει την εξόρυξη για να δημιουργήσει αυτή τη συναίνεση; Στο bitcoin, οι ανώνυμοι εξορύκτες πρέπει να εκτελούν ακριβούς άχρηστους υπολογισμούς και κίνητρα να το κάνουν από τις ανταμοιβές μπλοκ (και τις χρεώσεις συναλλαγών) που εκφράζονται στο εγγενές νόμισμα ή διακριτικό του blockchain. Έχουμε άλλες επιλογές;

Αποδεικνύεται ότι το κάνουμε. Μπορούμε να έχουμε μια κλειστή λίστα με επιτρεπόμενους εξορύκτες, οι οποίοι αυτοπροσδιορίζονται υπογράφοντας τα μπλοκ που δημιουργούν. Κανόνες σχετικά με την κατανεμημένη συναίνεση (ή την «διαφορετικότητα εξόρυξης» όπως την αποκαλούμε Πολυαλυσίδα) παρέχει έναν διαφορετικό τρόπο αποτροπής του ελέγχου της μειοψηφίας του blockchain, αρκεί να αποδεχτείτε ότι οι εξορύκτες είναι προεγκεκριμένοι. Φυσικά για το bitcoin αυτό δεν είναι αποδεκτό, επειδή μέρος του ζητήματος είναι να επιτρέπεται η ανώνυμη εξόρυξη, επομένως δεν υπάρχει τρόπος να λογοκρίνουμε τις συναλλαγές κεντρικά. Αλλά αν, ας πούμε, είχαμε ένα εξαιρετικά ρυθμισμένο χρηματοπιστωτικό σύστημα, στο οποίο το μοντέλο του bitcoin δεν μπορούσε να εφαρμοστεί, ίσως θα μπορούσαμε να δεχθούμε μια προεγκεκριμένη λίστα εξόρυξης; Εάν είχαμε αρκετά από αυτά, και τα διανέμαμε αρκετά καλά μεταξύ των ιδρυμάτων, και είχαμε νομικές συμβάσεις με όλα αυτά, είναι πραγματικά πιθανό να συμμορευτούν και να υπονομεύσουν το δίκτυο από το οποίο εξαρτώνται, όταν κάτι τέτοιο θα τους οδηγήσουν στη φυλακή;

Επίλογος

Ελπίζω να έχω αποδείξει ότι τα blockchain χωρίς διακριτικά έχουν κάποιες χρήσιμες εφαρμογές, ακόμα κι αν αυτές είναι πολύ διαφορετικές από το blockchain bitcoin. Ωστόσο, ένα ερώτημα παραμένει:

Αυτά τα συστήματα κοινής λογιστικής με άδεια, χωρίς διακριτικά, αξίζουν πραγματικά το όνομα «blockchain»;

Η σύντομη απάντηση είναι: ποιος νοιάζεται; Σπάνια αξίζει να μαλώνουμε για το νόημα των λέξεων, γιατί υπάρχει καμία σωστή απάντηση.

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

Είναι αυτά τα κοινόχρηστα λογιστικά βιβλία αρκετά παρόμοια με το bitcoin ώστε να αξίζουν το όνομα «blockchain»;

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

Ευχαριστούμε που το διαβάσατε.

Μπορείς να ακολουθήστε με στο Twitter εδώ. Δείτε επίσης: Παράδοση έναντι πληρωμής σε blockchain.

Εδώ είναι μερικά άλλα κομμάτια που αξίζει να διαβάσετε για αυτό το θέμα Πιότρ Πιασέτσκι και Έσκαψε τον Κάμπελ.

Σφραγίδα ώρας:

Περισσότερα από Πολλαπλές αλυσίδες