Το turnstile
Με λίγα λόγια
- Το turnstile είναι ένας δημόσιος λογιστικός κανόνας που παρακολουθεί πόση αξία εισέρχεται και εξέρχεται από κάθε θωρακισμένο pool
- Επιτρέπει σε οποιονδήποτε να επαληθεύσει ότι ένα pool δεν καταβάλλει ποτέ περισσότερα από όσα εισήλθαν σε αυτό, παρότι οι συναλλαγές στο εσωτερικό του είναι ιδιωτικές
- Αυτό προστατεύει την προσφορά του ZEC από ένα κρυφό σφάλμα, επειδή πλαστά νομίσματα δεν μπορούν να εξέλθουν από ένα pool χωρίς να διαταράξουν την καταμέτρηση
- Οι πληρωμές μέσα σε ένα pool παραμένουν ιδιωτικές. Μια συναλλαγή που μετακινεί ZEC μεταξύ pools εμφανίζει το ποσό που μετακινεί
- Το turnstile είναι ο λόγος που η μετάβαση από Orchard σε Ironwood μπορεί να αποδείξει ότι η θωρακισμένη προσφορά είναι ορθή
Για ποιον είναι αυτό
- Για οποιονδήποτε θέλει να κατανοήσει πώς το Zcash διατηρεί αξιόπιστη την ιδιωτική προσφορά του
- Για χρήστες που παρακολουθούν τη μετάβαση από Orchard σε Ironwood και αναρωτιούνται πώς αποδεικνύει ότι η προσφορά είναι πραγματική
- Για νέους χρήστες που θέλουν να μάθουν πώς ένα ιδιωτικό σύστημα χρημάτων μπορεί να ελέγχεται
Η πρόκληση
Οι θωρακισμένες συναλλαγές του Zcash αποκρύπτουν ποσά, αποστολείς και παραλήπτες. Αυτή η ιδιωτικότητα είναι το ζητούμενο. Όμως εγείρει ένα δύσκολο ερώτημα: αν κανείς δεν μπορεί να δει στο εσωτερικό του θωρακισμένου pool, πώς γνωρίζει οποιοσδήποτε ότι το συνολικό ποσό του ZEC είναι σωστό; Πώς ελέγχεις χρήματα που δεν μπορείς να δεις;
Αν ένα σφάλμα επέτρεπε ποτέ σε κάποιον να παραχαράξει νομίσματα μέσα σε ένα θωρακισμένο pool, η παραχάραξη θα αποκρυπτόταν από την ίδια ιδιωτικότητα που προστατεύει τους έντιμους χρήστες. Χωρίς μια δικλίδα ασφαλείας, αυτή η αβεβαιότητα θα υπονόμευε την εμπιστοσύνη σε ολόκληρη την προσφορά. Το turnstile είναι η δικλίδα ασφαλείας που λύνει αυτό το πρόβλημα.
Τι είναι το turnstile
Σκέψου κάθε θωρακισμένο pool ως ένα δωμάτιο με μία μοναδική μετρημένη είσοδο. Κάθε φορά που αξία εισέρχεται στο pool από έξω ή εξέρχεται για να πάει κάπου αλλού, περνά από την είσοδο και καταγράφεται δημόσια. Οι συναλλαγές μέσα στο δωμάτιο παραμένουν ιδιωτικές, αλλά το τρέχον σύνολο στην είσοδο είναι ορατό σε όλους.
Ο κανόνας είναι απλός: ένα pool δεν μπορεί ποτέ να επιτρέψει να εξέλθει περισσότερη αξία από όση έχει εισέλθει. Οι κόμβοι απορρίπτουν οποιοδήποτε μπλοκ θα ωθούσε το υπόλοιπο ενός pool κάτω από το μηδέν. Το ποσό που θεωρείται ότι βρίσκεται μέσα σε ένα pool είναι γνωστό ανά πάσα στιγμή, επειδή είναι απλώς το σύνολο που εισήλθε μείον το σύνολο που εξήλθε. Αυτή η δημόσια καταμέτρηση είναι το turnstile.
Πώς λειτουργεί
Το Zcash έχει αρκετά θωρακισμένα pools στην ιστορία του, όπως τα Sprout, Sapling και Orchard. Η αξία μετακινείται μεταξύ της διαφανούς αλυσίδας και αυτών των pools, και μερικές φορές μεταξύ των ίδιων των pools. Το turnstile παρακολουθεί αυτές τις μετακινήσεις:
- Όταν το ZEC μετακινείται σε ένα θωρακισμένο pool, το ποσό προστίθεται στο δημόσιο υπόλοιπο αυτού του pool
- Όταν το ZEC εξέρχεται από ένα pool, το ποσό αφαιρείται
- Το δίκτυο απορρίπτει οποιοδήποτε μπλοκ θα έκανε το υπόλοιπο ενός pool αρνητικό, δηλαδή θα σήμαινε ότι έχει εξέλθει περισσότερη αξία από όση εισήλθε ποτέ
- Κάθε συναλλαγή εμφανίζει μόνο την καθαρή ροή της προς ή από ένα pool, το ισοζύγιο αξίας της. Για μια πληρωμή μέσα σε ένα pool, αυτό είναι απλώς τα τέλη
Το δίκτυο παρακολουθεί με αυτόν τον τρόπο ένα υπόλοιπο για κάθε pool αξίας, συμπεριλαμβανομένων των Sprout, Sapling, Orchard, του νέου pool Ironwood, καθώς και των διαφανών υπολοίπων και των υπολοίπων lockbox. Εξαιτίας αυτού, ακόμη και αν το ακριβές περιεχόμενο ενός pool είναι κρυφό, το μέγιστο που μπορεί ποτέ να εξέλθει περιορίζεται από ό,τι εισήλθε. Καμία κρυφή πληθωριστική αύξηση δεν μπορεί να διαφύγει στην κυκλοφορία.
Πώς ελέγχεται το ισοζύγιο αξίας
Η καταμέτρηση στην είσοδο είναι αξιόπιστη μόνο επειδή κάθε συναλλαγή υποχρεώνεται να αποδείξει ότι μετακίνησε ένα αληθινό ποσό, παρότι το ίδιο το ποσό παραμένει κρυφό. Κάθε θωρακισμένη συναλλαγή δημοσιεύει έναν ειλικρινή αριθμό: την καθαρή αξία που μετακινεί προς ή από το pool, η οποία ονομάζεται ισοζύγιο αξίας. Ένα θετικό ισοζύγιο αξίας σημαίνει ότι κεφάλαια εξήλθαν από το pool προς τη διαφανή πλευρά, ενώ ένα αρνητικό σημαίνει ότι κεφάλαια εισήλθαν. Οι ιδιωτικές λεπτομέρειες παραμένουν σφραγισμένες, αλλά αυτό το μοναδικό καθαρό μέγεθος είναι δημόσιο και αυτό αθροίζει το turnstile.
Το έξυπνο μέρος είναι ο τρόπος με τον οποίο μια συναλλαγή αποδεικνύει ότι αυτός ο δημόσιος αριθμός είναι αληθινός χωρίς να αποκαλύπτει τα ιδιωτικά ποσά που βρίσκονται πίσω του. Ο μηχανισμός διαφέρει ανά pool, και αυτή είναι η πραγματική λειτουργία του turnstile.
Στο αρχικό pool Sprout, κάθε συναλλαγή χρησιμοποιεί ένα JoinSplit. Ένα JoinSplit δαπανά δύο κρυφά notes και δημιουργεί δύο νέα, ενώ περιέχει δύο δημόσια πεδία: το vpub_old, την αξία που εισέρχεται στο θωρακισμένο pool από τη διαφανή πλευρά, και το vpub_new, την αξία που εξέρχεται από το pool πίσω προς τη διαφανή πλευρά. Κάθε JoinSplit πρέπει να ισοσκελίζεται από μόνο του και η απόδειξη μηδενικής γνώσης του εγγυάται ότι οι κρυφές εισροές και οι κρυφές εκροές αθροίζονται σωστά. Το υπόλοιπο του pool Sprout είναι απλώς το τρέχον σύνολο όλων των vpub_old μείον όλα τα vpub_new σε ολόκληρη την αλυσίδα. Γι’ αυτό το Sprout είναι χρήσιμο παράδειγμα αργότερα: επειδή το vpub_old είναι ο μόνος τρόπος με τον οποίο μπορεί να εισέλθει αξία στο pool, ένας μοναδικός κανόνας που το απενεργοποιεί μπορεί να σφραγίσει οριστικά το pool.
Στα Sapling, Orchard και Ironwood, το ισοζύγιο αποδεικνύεται με πιο έξυπνο τρόπο, χρησιμοποιώντας μια δεσμευτική υπογραφή. Αντί κάθε μεταφορά να ισοσκελίζεται μόνη της, ολόκληρη η συναλλαγή δημιουργεί commitment για κάθε κρυφό ποσό χρησιμοποιώντας ένα commitment αξίας. Ένα commitment αξίας είναι ένας σφραγισμένος φάκελος για έναν αριθμό, κατασκευασμένος με ένα ομομορφικό Pedersen commitment, το οποίο έχει μια ιδιαίτερη ιδιότητα: οι φάκελοι μπορούν να προστεθούν και να αφαιρεθούν χωρίς να ανοιχτούν. Το δίκτυο αθροίζει όλα τα commitments εισόδου, αφαιρεί όλα τα commitments εξόδου και συγκρίνει το αποτέλεσμα με το μοναδικό δηλωμένο καθαρό μέγεθος της συναλλαγής, το πεδίο valueBalance. Μόνο μια συναλλαγή της οποίας τα κρυφά ποσά αντιστοιχούν πραγματικά σε αυτό το δημόσιο valueBalance μπορεί να παράγει μια έγκυρη δεσμευτική υπογραφή πάνω στα συνδυασμένα commitments. Αν κάποιος προσπαθούσε να μετακινήσει περισσότερη αξία από όση δήλωσε, τα commitments δεν θα αθροίζονταν σωστά, η δεσμευτική υπογραφή δεν θα επαληθευόταν και η συναλλαγή θα απορριπτόταν. Το Ironwood χρησιμοποιεί το ίδιο πρωτόκολλο Orchard, οπότε λειτουργεί με τον ίδιο τρόπο.
Αυτό είναι επίσης που καθιστά ασφαλή τον έλεγχο μιας cross-chain μεταφοράς. Όταν κεφάλαια μετακινούνται από ένα θωρακισμένο pool σε άλλο, για παράδειγμα από το Orchard στο Ironwood, η συναλλαγή δεν μπορεί να αποκρύψει τα ποσά από τη λογιστική. Κάθε pool έχει το δικό του ισοζύγιο αξίας που πρέπει να ικανοποιείται από τις δικές του αποδείξεις: η πλευρά Orchard πρέπει να εμφανίζει μια αντίστοιχη εκροή μέσω της δεσμευτικής υπογραφής της και η πλευρά Ironwood πρέπει να εμφανίζει την αντίστοιχη εισροή μέσω της δικής της. Η αξία που εξέρχεται από το ένα pool και η αξία που εισέρχεται στο άλλο αποδεικνύονται καθεμία ανεξάρτητα, επομένως μια μετακίνηση μεταξύ pools είναι στην πραγματικότητα δύο διελεύσεις turnstile που συμβαίνουν σε μία συναλλαγή, μία προς τα έξω και μία προς τα μέσα, και αμφότερες καταγράφονται δημόσια παρότι τα υποκείμενα ποσά παραμένουν ιδιωτικά.
Επομένως, το turnstile δεν είναι εμπιστοσύνη. Κάθε συναλλαγή αποδεικνύει μαθηματικά τη δική της καθαρή επίδραση, το δίκτυο αθροίζει αυτές τις αποδεδειγμένες καθαρές επιδράσεις ανά pool και ένας κανόνας συναίνεσης (ZIP 209) απορρίπτει οποιοδήποτε μπλοκ θα οδηγούσε το υπόλοιπο ενός pool σε αρνητική τιμή. Απόδειξη στο επίπεδο της συναλλαγής, επιβολή στο επίπεδο της αλυσίδας.
Γιατί έχει σημασία
Το turnstile παρέχει στο Zcash τρία πράγματα ταυτόχρονα.
Πρώτον, περιορίζει τον κίνδυνο. Ένα κρυπτογραφικό σφάλμα σε ένα pool περιορίζεται σε αυτό το pool, επειδή το turnstile εμποδίζει την πλαστή αξία να περάσει στη γενικότερη προσφορά.
Δεύτερον, επιτρέπει στην κοινότητα να επαληθεύσει εκ των υστέρων την προσφορά. Αν ανακαλυφθεί αργότερα ένα σφάλμα, το αρχείο του turnstile δείχνει αν από ένα pool εξήλθε ποτέ περισσότερη αξία από όση εισήλθε. Ένα καθαρό αρχείο αποτελεί ισχυρή ένδειξη ότι δεν έγινε εκμετάλλευση παραχάραξης.
Τρίτον, διατηρεί ιδιωτικές τις πληρωμές μέσα σε ένα pool ενώ κάνει όλα αυτά. Κάθε συναλλαγή δημοσιεύει μόνο την καθαρή ροή της προς ή από ένα pool, η οποία για μια πληρωμή μέσα σε ένα pool είναι απλώς τα τέλη. Μια μεταφορά μεταξύ pools, όπως από το Orchard στο Ironwood, εμφανίζει το ποσό που διασχίζει το όριο. Η δυνατότητα ελέγχου και η ιδιωτικότητα συνυπάρχουν, κάτι ασυνήθιστο και ένα από τα διακριτικά πλεονεκτήματα του Zcash.
Το turnstile σε δράση
Το turnstile δεν είναι νέο και έχει χρησιμοποιηθεί σε καίριες στιγμές στην ιστορία του Zcash.
Όταν το Zcash μετακινήθηκε από το αρχικό pool Sprout προς το νεότερο pool Sapling, το turnstile προστάτευσε τη μετάβαση. Το pool Sprout περιορίστηκε αργότερα ώστε να μην μπορεί να δέχεται νέες εισροές, γεγονός που ενθάρρυνε τους χρήστες να μεταβούν ενώ το turnstile διατηρούσε τη λογιστική ακριβή. Χρόνια αργότερα, το γεγονός ότι καμία αξία δεν εξήλθε ποτέ ακατάλληλα από το Sprout αποτελεί ένδειξη ότι η πρώιμη κρυπτογραφία του δεν αξιοποιήθηκε ποτέ με επιτυχία.
Ο ίδιος σχεδιασμός προστατεύει τώρα τη μετακίνηση από το Orchard στο Ironwood. Το 2026 εντοπίστηκε και διορθώθηκε ένα σφάλμα ορθότητας στο σύστημα αποδείξεων Orchard. Δεν υπάρχουν ενδείξεις ότι αξιοποιήθηκε ποτέ, αλλά επειδή η θωρακισμένη δραστηριότητα είναι ιδιωτική, η βεβαιότητα ήταν αδύνατη. Η απάντηση είναι να σφραγιστεί το παλιό pool Orchard και όλοι να μεταφέρουν τα κεφάλαιά τους μέσω του turnstile στο Ironwood, ένα νέο pool που χρησιμοποιεί το διορθωμένο πρωτόκολλο. Η υποχρέωση των κεφαλαίων να περάσουν από το turnstile σημαίνει ότι τυχόν υποθετικά πλαστά νομίσματα που έχουν μείνει πίσω δεν μπορούν να ακολουθήσουν, και μόλις ολοκληρωθεί η μετάβαση, οποιοσδήποτε μπορεί να επιβεβαιώσει ότι η θωρακισμένη προσφορά είναι ορθή.
Μονόδρομη απόσυρση pool
Το turnstile καθιστά δυνατή την ασφαλή απόσυρση ενός παλιού pool, μόνο προς μία κατεύθυνση, χωρίς ποτέ να παραβιάζεται η εγγύηση της προσφοράς. Το τέχνασμα είναι να κλείσει η είσοδος ενώ η έξοδος παραμένει ανοιχτή.
Το Sprout είναι το σαφέστερο παράδειγμα. Για να αποσυρθεί, το ZIP 211 πρόσθεσε έναν μοναδικό κανόνα συναίνεσης: από το ύψος ενεργοποίησής του, το πεδίο vpub_old κάθε JoinSplit πρέπει να είναι μηδέν. Εφόσον το vpub_old είναι ο μόνος τρόπος με τον οποίο μπορεί να εισέλθει αξία στο Sprout, η επιβολή μηδενικής τιμής σημαίνει ότι καμία νέα αξία δεν μπορεί να εισέλθει ξανά, ενώ η αξία μπορεί ακόμη να εξέλθει προς τη διαφανή πλευρά ή να προχωρήσει στο Sapling. Το pool έγινε μονόδρομο. Μπορεί μόνο να αδειάζει, ποτέ να γεμίζει. Το turnstile συνεχίζει να μετρά όλη την ώρα, επομένως το υπόλοιπο μπορεί να μειώνεται καθώς εξέρχονται κεφάλαια, αλλά δεν μπορεί ποτέ να αυξάνεται και δεν μπορεί ποτέ να γίνει αρνητικό.
Η μετάβαση από Orchard σε Ironwood χρησιμοποιεί την ίδια ιδέα. Στην αναβάθμιση NU6.3, το pool Orchard κλείνει για νέες εισροές και τα πορτοφόλια κατευθύνονται να στείλουν κεφάλαια Orchard μέσω του turnstile στο νέο pool Ironwood. Το Orchard γίνεται ένα μονόδρομο pool που μπορεί μόνο να αδειάζει. Επειδή κάθε έξοδος είναι μια διέλευση turnstile που πρέπει να αποδειχθεί, τυχόν υποθετική πλαστή αξία που έχει μείνει πίσω στο Orchard δεν μπορεί να ακολουθήσει αθόρυβα τα έντιμα κεφάλαια προς τα έξω. Παραμένει παγιδευμένη σε ένα pool που μόνο αδειάζει και παρακολουθείται στην είσοδο. Με τον χρόνο αυτό οδηγεί το παλιό pool προς το άδειασμα και επιτρέπει σε οποιονδήποτε να επιβεβαιώσει ότι η αξία που εξήλθε δεν ήταν ποτέ περισσότερη από την αξία που εισήλθε έντιμα.
Αυτός είναι ο βαθύτερος λόγος για τον οποίο το turnstile έχει σημασία πέρα από την απλή λογιστική. Είναι ο μηχανισμός που επιτρέπει στο Zcash να αποσύρει ένα θωρακισμένο pool, είτε για να μειώσει την πολυπλοκότητα όπως με το Sprout είτε για να ανακάμψει από ένα εντοπισμένο σφάλμα όπως με το Orchard, διατηρώντας παράλληλα μια συνεχή, δημόσια και αποδείξιμη εγγύηση για την προσφορά.
Συνήθεις παρανοήσεις
- Το turnstile δεν αποκαλύπτει ποιος έστειλε τι σε ποιον. Εμφανίζει όμως το ποσό κάθε συναλλαγής που μετακινεί ZEC μεταξύ pools
- Δεν εντοπίζει έναν παραχαράκτη ονομαστικά. Περιορίζει το πόση αξία μπορεί να εξέλθει από ένα pool, και αυτό προστατεύει την προσφορά
- Δεν είναι μια νέα επινόηση για το Ironwood. Έχει προστατεύσει κάθε σημαντική μετάβαση θωρακισμένου pool στην ιστορία του Zcash
- Ένα δημόσιο σύνολο pool δεν αποδυναμώνει την ιδιωτικότητα των πληρωμών μέσα στο pool. Η μετακίνηση ZEC μεταξύ pools εμφανίζει το ποσό που μετακινείται, γι’ αυτό το ZIP 318 ζητά από τα πορτοφόλια να πραγματοποιούν τη μετάβαση σε τυπικά ποσά με την πάροδο του χρόνου
Πόροι
- ZIP 209: Απαγόρευση υπολοίπων pool αξίας αλυσίδας εκτός εύρους - ο κανόνας συναίνεσης πίσω από το turnstile
- ZIP 211: Απενεργοποίηση προσθήκης νέας αξίας στο pool αξίας αλυσίδας Sprout - πώς το pool Sprout έκλεισε για νέες καταθέσεις
- ZIP 258: NU6.3 - η αναβάθμιση που εισάγει το pool Ironwood και κατευθύνει την αξία μέσω του turnstile
- Επιβολή turnstile κατά της παραχάραξης - η αρχική εξήγηση από το Electric Coin Company
- Προδιαγραφή πρωτοκόλλου Zcash - δες τις ενότητες για το ισοζύγιο και τη δεσμευτική υπογραφή για όλες τις λεπτομέρειες
- Pools αξίας, το βιβλίο Zebra - πώς ένας κόμβος παρακολουθεί το ισοζύγιο αξίας κάθε pool
Σχετικές σελίδες
- Θωρακισμένα pools - πώς οι θωρακισμένες συναλλαγές Zcash διατηρούν ιδιωτικές τις λεπτομέρειες
- Halo - το σύστημα αποδείξεων πίσω από το pool Orchard
- Αναβαθμίσεις δικτύου - πώς το Zcash ενεργοποιεί αλλαγές όπως νέα θωρακισμένα pools