Τι είναι η διπλή δαπάνη;
Η διπλή δαπάνη είναι ένα δυνητικό πρόβλημα σε ένα ψηφιακό σύστημα μετρητών, όπου τα ίδια κεφάλαια αποστέλλονται ταυτόχρονα σε δύο παραλήπτες. Χωρίς επαρκή αντίμετρα, ένα πρωτόκολλο που δεν επιλύει το πρόβλημα υπονομεύεται θεμελιωδώς – οι χρήστες δεν έχουν τρόπο να επαληθεύσουν ότι τα κεφάλαια που έχουν λάβει δεν έχουν ήδη δαπανηθεί αλλού.
Όσον αφορά τα ψηφιακά μετρητά, η διασφάλιση ότι οι συγκεκριμένες μονάδες δεν μπορούν να αντιγραφούν είναι υψίστης σημασίας. Ολόκληρο το σύστημα θα υπονομευόταν αν η Αλίκη μπορούσε να λάβει 10 μονάδες, να τις αντιγράψει και να τις επικολλήσει 10 φορές και να καταλήξει να έχει 100 μονάδες. Ομοίως, ένα τέτοιο σύστημα δεν μπορεί να λειτουργήσει εάν μπορεί να στείλει τις ίδιες 10 μονάδες ταυτόχρονα και στον Γιώργο και στην Άννα. Επομένως, για να λειτουργεί το ψηφιακό χρήμα, πρέπει να υπάρχουν μηχανισμοί για να αποτρέψουν αυτήν τη συμπεριφορά.
Πώς μπορεί να αποτραπεί η διπλή δαπάνη;
Η κεντρική προσέγγιση
Η κεντρική προσέγγιση μπορεί να εφαρμοστεί πολύ πιο εύκολα από τις αποκεντρωμένες εναλλακτικές λύσεις. Αυτή η διαδικασία συνήθως περιλαμβάνει έναν επόπτη που διαχειρίζεται το σύστημα και ελέγχει την έκδοση και τη διανομή των μονάδων. Ένα καλό παράδειγμα μιας κεντρικής λύσης του προβλήματος διπλής δαπάνης είναι το eCash του David Chaum.
Για να εκδώσει στους χρήστες ένα ψηφιακό περιουσιακό στοιχείο που μιμείται τα μετρητά (έχει τη δυνατότητα ανώνυμων και ομότιμων ανταλλαγών), μια τράπεζα μπορεί να χρησιμοποιήσει τυφλές υπογραφές – όπως αναλύει λεπτομερώς ο κρυπτογράφος David Chaum στη μελέτη του από το 1982 με τίτλο Blind Signatures for Untraceable Payments.
Σε ένα τέτοιο πλαίσιο, αν ένας χρήστης (ας τον πούμε Γιάννη) θέλει να λάβει 100 δολάρια σε ψηφιακά μετρητά, πρέπει πρώτα να ενημερώσει την τράπεζα. Εφόσον έχει υπόλοιπο στον λογαριασμό του, θα δημιουργήσει έναν τυχαίο αριθμό (ή πολλούς, για μικρότερες ονομαστικές αξίες). Ας υποθέσουμε ότι δημιουργεί πέντε αριθμούς, στον καθένα από τους οποίους πρέπει να αποδοθεί αξία 20 δολαρίων. Για να εμποδίσει την τράπεζα να εντοπίσει συγκεκριμένες μονάδες, ο Γιάννης κρύβει τους τυχαίους αριθμούς προσθέτοντας έναν παράγοντα τυφλής υπογραφής σε κάθε αριθμό.
Στη συνέχεια, παραδίδει τα δεδομένα στην τράπεζα, η οποία χρεώνει τον λογαριασμό του με 100 δολάρια και υπογράφει μηνύματα που πιστοποιούν ότι κάθε ένας από τους πέντε αριθμούς μπορεί να εξαργυρωθεί με 20 δολάρια. Ο Γιάννης μπορεί πλέον να ξοδέψει τα κεφάλαια που εκδίδονται από την τράπεζα. Πηγαίνει στο εστιατόριο της Μαρίας και αγοράζει ένα γεύμα που κοστίζει 40 δολάρια.
Ο Γιάννης μπορεί να αφαιρέσει τον παράγοντα τυφλής υπογραφής για να αποκαλύψει τον τυχαίο αριθμό που σχετίζεται με κάθε ψηφιακό "χαρτονόμισμα" και χρησιμεύει ως μοναδικό αναγνωριστικό για κάθε μονάδα (όπως ένας σειριακός αριθμός). Αποκαλύπτει δύο αριθμούς στη Μαρία, η οποία πρέπει τώρα να τους εξαργυρώσει αμέσως στην τράπεζα για να εμποδίσει τον Γιάννη να τους ξοδέψει σε άλλον έμπορο. Η τράπεζα θα ελέγξει ότι οι υπογραφές είναι έγκυρες και, αν όλα φαίνονται σωστά, θα πιστώσει στον λογαριασμό της Μαρίας 40 δολάρια.
Τα χαρτονομίσματα που χρησιμοποιήθηκαν έχουν πλέον ουσιαστικά αναλωθεί και πρέπει να εκδοθούν περισσότερα αν η Μαρία θέλει να ξοδέψει το νέο της υπόλοιπο με τον ίδιο τρόπο.
Η διαμόρφωση eCash του Chaumian μπορεί να είναι πολύτιμη για ιδιωτικές μεταφορές. Αλλά δεν είναι ανθεκτική επειδή η τράπεζα είναι ένα κεντρικό σημείο αποτυχίας. Ένα χαρτονόμισμα που εκδίδεται δεν αξίζει τίποτα από μόνο του, καθώς η αξία του προέρχεται αποκλειστικά από την προθυμία της τράπεζας να το ανταλλάξει με δολάρια. Οι πελάτες εξαρτώνται από την τράπεζα και πρέπει να βασίζονται στην καλή της θέληση για να χρησιμοποιήσουν τα χρήματα. Αυτό είναι το πρόβλημα που θέλουν να λύσουν τα κρυπτονομίσματα.
Η αποκεντρωμένη προσέγγιση
Η διασφάλιση ότι τα κεφάλαια δεν μπορούν να δαπανηθούν δύο φορές σε ένα οικοσύστημα χωρίς επόπτη είναι πιο δύσκολη υπόθεση. Οι εξίσου ισχυροί συμμετέχοντες πρέπει να συντονίζονται γύρω από ένα σύνολο κανόνων που αποτρέπουν την απάτη και δίνουν κίνητρα σε όλους τους χρήστες να ενεργούν με ειλικρίνεια.
Η σημαντικότερη καινοτομία που παρουσιάστηκε στο whitepaper του Bitcoin ήταν μια λύση στο πρόβλημα της διπλής δαπάνης. Παρόλο που δεν αναφέρεται με αυτόν τον τρόπο, ο Satoshi πρότεινε τη δομή δεδομένων που είναι πλέον γνωστή ως blockchain.
Ένα blockchain είναι στην πραγματικότητα απλώς μια βάση δεδομένων με ορισμένες μοναδικές ιδιότητες. Οι συμμετέχοντες του δικτύου (που αναφέρονται ως κόμβοι) εκτελούν εξειδικευμένο λογισμικό που τους δίνει τη δυνατότητα να συγχρονίζουν το αντίγραφο της βάσης δεδομένων τους με τους ομότιμους τους. Ως αποτέλεσμα, το σύνολο του δικτύου μπορεί να ελέγξει το ιστορικό των συναλλαγών που ξεκίνησαν από το block γένεσης. Έχοντας τη δυνατότητα δημόσιας προβολής του blockchain, είναι εύκολο να εντοπιστούν και να αποτραπούν δόλιες δραστηριότητες, όπως συναλλαγές που προσπαθούν να διπλασιάσουν τις δαπάνες.
Όταν ένας χρήστης αποστέλλει μια συναλλαγή, δεν προστίθεται αμέσως στο blockchain – πρέπει πρώτα να συμπεριληφθεί σε ένα block μέσω εξόρυξης. Επομένως, ο παραλήπτης θα πρέπει να θεωρεί τη συναλλαγή έγκυρη μόνο μετά την προσθήκη του block στην αλυσίδα. Διαφορετικά, κινδυνεύουν να χάσουν τα κεφάλαια, καθώς ο αποστολέας θα μπορούσε να ξοδέψει τα ίδια νομίσματα αλλού.
Μόλις επιβεβαιωθεί η συναλλαγή, τα νομίσματα δεν μπορούν να δαπανηθούν δύο φορές, καθώς η ιδιοκτησία εκχωρείται σε έναν νέο χρήστη – και όλο το δίκτυο μπορεί να το επαληθεύσει. Για αυτόν τον λόγο πολλοί συνιστούν να περιμένετε να γίνουν πολλαπλές επιβεβαιώσεις προτού αποδεχτείτε μια πληρωμή ως έγκυρη. Κάθε επόμενο block αυξάνει δραματικά την προσπάθεια που απαιτείται για την τροποποίηση ή την επανεγγραφή της αλυσίδας (η οποία μπορεί να συμβεί κατά τη διάρκεια μιας επίθεσης 51%).
Ας ξαναδούμε το σενάριο του εστιατορίου. Ο Γιάννης επιστρέφει στο εστιατόριο και αυτήν τη φορά παρατηρεί ένα αυτοκόλλητο στο παράθυρο με την ένδειξη "Δεχόμαστε Bitcoin". Του άρεσε πολύ το γεύμα που είχε την προηγούμενη φορά και το παραγγέλνει ξανά. Του κοστίζει 0,005 BTC.
Η Μαρία του δίνει μια δημόσια διεύθυνση στην οποία πρέπει να στείλει τα κεφάλαια. Ο Γιάννης αποστέλλει τη συναλλαγή η οποία είναι ουσιαστικά ένα υπογεγραμμένο μήνυμα που δηλώνει ότι τα 0,005 BTC που είχε ο Γιάννης είναι τώρα στην κατοχή της Μαρίας. Χωρίς να μπούμε σε πολλές λεπτομέρειες, οποιοσδήποτε έχει στην κατοχή του την υπογεγραμμένη συναλλαγή του Γιάννη, μπορεί να επαληθεύσει ότι όντως είχε στην κατοχή του τα νομίσματα και επομένως είχε το δικαίωμα να τα στείλει.
Ωστόσο, όπως αναφέρθηκε, η συναλλαγή είναι έγκυρη μόνο εάν συμπεριλαμβάνεται σε ένα block που επιβεβαιώνεται. Η αποδοχή μη επιβεβαιωμένων συναλλαγών είναι σαν την αποδοχή των 40 δολαρίων σε eCash από το προηγούμενο παράδειγμα, χωρίς την άμεση εξαργύρωσή τους στην τράπεζα – επιτρέπει στον αποστολέα να τα ξοδέψει αλλού. Επομένως, προτείνεται στη Μαρία να περιμένει τουλάχιστον 6 επιβεβαιώσεις block (περίπου μία ώρα) προτού αποδεχτεί την πληρωμή του Γιάννη.
Διπλή δαπάνη σε Bitcoin
Το Bitcoin έχει σχεδιαστεί προσεχτικά ώστε να αποτρέπει τις επιθέσεις διπλής δαπάνης, τουλάχιστον όταν το πρωτόκολλο χρησιμοποιείται όπως πρέπει. Δηλαδή, αν τα άτομα περιμένουν να επιβεβαιωθούν οι συναλλαγές σε ένα block, δεν υπάρχει εύκολος τρόπος για τον αποστολέα να τις αναιρέσει. Για να το κάνουν αυτό, θα πρέπει να "αντιστρέψουν" το blockchain, κάτι που απαιτεί μια μη ρεαλιστική ποσότητα ισχύος hashing.
Ωστόσο, υπάρχουν πολλές επιθέσεις διπλής δαπάνης που στοχεύουν σε μέρη που αποδέχονται μη επιβεβαιωμένες συναλλαγές. Για παράδειγμα, για αγορές χαμηλής αξίας ένας έμπορος μπορεί να μην θέλει να περιμένει να συμπεριληφθούν οι συναλλαγές σε ένα block. Ένα πολυάσχολο εστιατόριο φάστφουντ πιθανόν να μην έχει την πολυτέλεια να περιμένει καθώς το δίκτυο επεξεργάζεται κάθε αγορά. Επομένως, εάν μια επιχείρηση επιτρέπει τις "άμεσες" πληρωμές, ανοίγει τις διπλές δαπάνες. Κάποιος μπορεί να παραγγείλει ένα μπέργκερ, να το πληρώσει και αμέσως μετά να στείλει τα ίδια κεφάλαια στη δική του διεύθυνση. Με υψηλότερη προμήθεια, αυτή η νέα συναλλαγή είναι πιθανό να επιβεβαιωθεί πρώτη και, ως εκ τούτου, θα ακυρώσει την προηγούμενη.
Υπάρχουν τρεις δημοφιλείς μέθοδοι διπλής δαπάνης:
Οι επιθέσεις 51%: όταν μια οντότητα ή οργανισμός καταφέρνει να ελέγχει περισσότερο από το 50% του ποσοστού hash, γεγονός που τους επιτρέπει να αποκλείουν ή να τροποποιούν τη σειρά των συναλλαγών. Μια τέτοια επίθεση είναι εξαιρετικά απίθανο να συμβεί στο Bitcoin, αλλά έχει συμβεί σε άλλα δίκτυα.
Επιθέσεις διπλασιασμού: δύο αντικρουόμενες συναλλαγές αποστέλλονται η μία μετά την άλλη, χρησιμοποιώντας τα ίδια κεφάλαια – αλλά μόνο μία συναλλαγή επιβεβαιώνεται. Στόχος του επιτιθέμενου είναι να ακυρώσει την πληρωμή επικυρώνοντας μόνο τη συναλλαγή που τον ωφελεί (π.χ. στέλνοντας τα ίδια κεφάλαια σε μια διεύθυνση που ελέγχει). Οι επιθέσεις διπλασιασμού απαιτούν από τον παραλήπτη να αποδεχτεί μια μη επιβεβαιωμένη συναλλαγή ως πληρωμή.
Επιθέσεις Finney: ένας επιτιθέμενος κάνει εξόρυξη μιας συναλλαγής σε ένα block πριν την αποστείλει αμέσως στο δίκτυο. Αντ' αυτού, ξοδεύει τα ίδια νομίσματα σε μια άλλη συναλλαγή και μόνο τότε αποστέλλει το block στο οποίο είχε ήδη κάνει εξόρυξη και μπορεί να ακυρώσει την πληρωμή. Οι επιθέσεις Finney απαιτούν μια συγκεκριμένη ακολουθία γεγονότων για να συμβούν και εξαρτώνται επίσης από την αποδοχή μη επιβεβαιωμένων συναλλαγών από τον παραλήπτη.
Όπως καταλαβαίνουμε, ένας έμπορος που περιμένει τις επιβεβαιώσεις των block θα μειώσει σημαντικά τους κινδύνους να πέσει θύμα διπλής δαπάνης.
Συμπεράσματα
Η διπλή δαπάνη δίνει σε έναν χρήστη τη δυνατότητα να εκμεταλλευτεί ένα σύστημα ηλεκτρονικών μετρητών για οικονομικό κέρδος, χρησιμοποιώντας τα ίδια κεφάλαια περισσότερες από μία φορές. Κατά κανόνα, η έλλειψη κατάλληλων λύσεων για το πρόβλημα εμπόδιζε την πρόοδο σε αυτόν τον τομέα.
Όμως, ευτυχώς η χρήση τυφλών υπογραφών πρότεινε μια ενδιαφέρουσα λύση για τα κεντρικά χρηματοοικονομικά συστήματα. Αργότερα, η δημιουργία μηχανισμών Proof of Work και η τεχνολογία blockchain έδωσαν πνοή στο Bitcoin και το κατέστησαν μια ισχυρή μορφή αποκεντρωμένου χρήματος – το οποίο μετέπειτα έδωσε έμπνευση άλλων έργων κρυπτονομισμάτων.