Κανάλια κατάστασης
Τα κανάλια κατάστασης επιτρέπουν στους συμμετέχοντες να πραγματοποιούν συναλλαγές με ασφάλεια εκτός αλυσίδας διατηρώντας παράλληλα την αλληλεπίδραση με το Ethereum Mainnet στο ελάχιστο. Οι χρήστες του καναλιού μπορούν να πραγματοποιήσουν έναν αυθαίρετο αριθμό συναλλαγών εκτός αλυσίδας, ενώ υποβάλλουν μόνο δύο συναλλαγές εντός της αλυσίδας για να ανοίξουν και να κλείσουν το κανάλι. Αυτό επιτρέπει εξαιρετικά υψηλή απόδοση συναλλαγών και έχει ως αποτέλεσμα χαμηλότερο κόστος για τους χρήστες.
Προαπαιτούμενα
Θα έπρεπε να έχετε διαβάσει και κατανοήσει τις σελίδες μας για την κλιμάκωση Ethereum και το επίπεδο 2.
Τι είναι τα κανάλια;
Τα δημόσια blockchain, όπως το Ethereum, αντιμετωπίζουν προκλήσεις επεκτασιμότητας λόγω της κατανεμημένης αρχιτεκτονικής τους: οι συναλλαγές στην αλυσίδα πρέπει να εκτελούνται από όλους τους κόμβους. Οι κόμβοι πρέπει να είναι σε θέση να χειριστούν τον όγκο των συναλλαγών σε ένα μπλοκ χρησιμοποιώντας μέτριο υλικό, επιβάλλοντας ένα όριο στην απόδοση συναλλαγών για να διατηρηθεί το δίκτυο αποκεντρωμένο. Τα κανάλια blockchain λύνουν αυτό το πρόβλημα επιτρέποντας στους χρήστες να αλληλεπιδρούν εκτός αλυσίδας ενώ εξακολουθούν να βασίζονται στην ασφάλεια της κύριας αλυσίδας για τον τελικό διακανονισμό.
Τα κανάλια είναι απλά πρωτόκολλα peer-to-peer που επιτρέπουν σε δύο μέρη να κάνουν πολλές συναλλαγές μεταξύ τους και στη συνέχεια να δημοσιεύουν μόνο τα τελικά αποτελέσματα στην αλυσίδα μπλοκ. Το κανάλι χρησιμοποιεί κρυπτογραφία για να αποδείξει ότι τα συνοπτικά δεδομένα που παράγουν είναι πραγματικά το αποτέλεσμα ενός έγκυρου συνόλου ενδιάμεσων συναλλαγών. Ένα έξυπνο συμβόλαιο "multisig" εξασφαλίζει ότι οι συναλλαγές υπογράφονται από τα σωστά μέρη.
Με τα κανάλια, οι αλλαγές κατάστασης εκτελούνται και επικυρώνονται από τα ενδιαφερόμενα μέρη, ελαχιστοποιώντας τον υπολογισμό στο επίπεδο εκτέλεσης του Ethereum. Αυτό μειώνει τη συμφόρηση στο Ethereum και επίσης αυξάνει τις ταχύτητες επεξεργασίας συναλλαγών για τους χρήστες.
Κάθε κανάλι διαχειρίζεται από ένα έξυπνο συμβόλαιο multisig που εκτελείται στο Ethereum. Για να ανοίξει ένα κανάλι, οι συμμετέχοντες αναπτύσσουν το συμβόλαιο καναλιού στην αλυσίδα και καταθέτουν κεφάλαια σε αυτό. Και οι δύο πλευρές υπογράφουν συλλογικά μια ενημέρωση κατάστασης για να αρχικοποιήσουν την κατάσταση του καναλιού, μετά την οποία μπορούν να πραγματοποιήσουν συναλλαγές γρήγορα και ελεύθερα offchain.
Για να κλείσει το κανάλι, οι συμμετέχοντες υποβάλλουν την τελευταία συμφωνημένη κατάσταση του καναλιού στην αλυσίδα. Στη συνέχεια, το έξυπνο συμβόλαιο διανέμει τα κλειδωμένα κεφάλαια σύμφωνα με την υπόλοιπο κάθε συμμετέχοντα στην τελική κατάσταση του καναλιού.
Τα κανάλια peer-to-peer είναι ιδιαίτερα χρήσιμα για περιπτώσεις όπου ορισμένοι προκαθορισμένοι συμμετέχοντες επιθυμούν να πραγματοποιήσουν συναλλαγές με υψηλή συχνότητα χωρίς να προκαλέσουν ορατό κόστος. Τα κανάλια blockchain χωρίζονται σε δύο κατηγορίες: κανάλια πληρωμών και κανάλια κατάστασης.
Κανάλια πληρωμών
Ένα κανάλι πληρωμών περιγράφεται καλύτερα ως ένα "διπλό λογιστικό βιβλίο" που διατηρείται συλλογικά από δύο χρήστες. Το αρχικό υπόλοιπο του λογιστικού βιβλίου είναι το άθροισμα των καταθέσεων που κλειδώνονται στο συμβόλαιο στην αλυσίδα κατά τη φάση ανοίγματος του καναλιού. Οι μεταφορές καναλιού πληρωμών μπορούν να πραγματοποιηθούν άμεσα και χωρίς τη συμμετοχή της ίδιας της κρυπτοαλυσίδας, εκτός από μια αρχική εφάπαξ δημιουργία στην αλυσίδα και ένα τελικό κλείσιμο του καναλιού.
Οι ενημερώσεις στην υπόλοιπο του λογιστικού βιβλίου (δηλαδή, την κατάσταση του καναλιού πληρωμών) απαιτούν την έγκριση όλων των μερών στο κανάλι. Μια ενημέρωση καναλιού, υπογεγραμμένη από όλους τους συμμετέχοντες στο κανάλι, θεωρείται οριστικοποιημένη, παρόμοια με μια συναλλαγή στο Ethereum.
Τα κανάλια πληρωμών ήταν από τις πρώτες λύσεις κλιμάκωσης που σχεδιάστηκαν για να ελαχιστοποιήσουν την ακριβή δραστηριότητα στην αλυσίδα απλών αλληλεπιδράσεων χρηστών (π.χ. μεταφορές ETH, ατομικά ανταλλάγματα, μικροπληρωμές). Οι συμμετέχοντες στο κανάλι μπορούν να πραγματοποιήσουν απεριόριστο αριθμό άμεσων συναλλαγών χωρίς προμήθειες μεταξύ τους, εφόσον το καθαρό άθροισμα των μεταφορών τους δεν υπερβαίνει τα κατατεθέντα token.
Κανάλια κατάστασης
Εκτός από την υποστήριξη εκτός αλυσίδας πληρωμών, τα κανάλια πληρωμών δεν έχουν αποδειχθεί χρήσιμα για τη διαχείριση γενικής λογικής μετάβασης κατάστασης. Τα κανάλια κατάστασης δημιουργήθηκαν για να λύσουν αυτό το πρόβλημα και να κάνουν τα κανάλια χρήσιμα για την κλιμάκωση του υπολογισμού γενικής χρήσης.
Τα κανάλια κατάστασης εξακολουθούν να έχουν πολλά κοινά με τα κανάλια πληρωμών. Για παράδειγμα, οι χρήστες αλληλεπιδρούν ανταλλάσσοντας κρυπτογραφικά υπογεγραμμένα μηνύματα (συναλλαγές), τα οποία πρέπει να υπογραφούν και από τους άλλους συμμετέχοντες στο κανάλι. Εάν μια προτεινόμενη ενημέρωση κατάστασης δεν υπογραφεί από όλους τους συμμετέχοντες, θεωρείται άκυρη.
Ωστόσο, εκτός από τη διατήρηση των υπολοίπων του χρήστη, το κανάλι παρακολουθεί επίσης την τρέχουσα κατάσταση της αποθήκευσης του συμβολαίου (δηλαδή, τις τιμές των μεταβλητών του συμβολαίου).
Αυτό καθιστά δυνατή την εκτέλεση μιας έξυπνης σύμβασης εκτός αλυσίδας μεταξύ δύο χρηστών. Σε αυτό το σενάριο, οι ενημερώσεις στην εσωτερική κατάσταση του έξυπνου συμβολαίου απαιτούν μόνο την έγκριση των χρηστών που δημιούργησαν το κανάλι.
Ενώ αυτό επιλύει το πρόβλημα κλιμάκωσης που περιγράφηκε προηγουμένως, έχει επιπτώσεις στην ασφάλεια. Στο Ethereum, η εγκυρότητα των μεταβάσεων κατάστασης επιβάλλεται από το πρωτόκολλο συναίνεσης του δικτύου. Αυτό καθιστά αδύνατη την πρόταση μιας άκυρης ενημέρωσης της κατάστασης μιας έξυπνης σύμβασης ή την αλλοίωση της εκτέλεσης της έξυπνης σύμβασης.
Τα κανάλια κατάστασης δεν έχουν τις ίδιες εγγυήσεις ασφάλειας. Σε κάποιο βαθμό, ένα κανάλι κατάστασης είναι μια μικρογραφία του Mainnet. Με ένα περιορισμένο σύνολο συμμετεχόντων που επιβάλλουν κανόνες, αυξάνεται η πιθανότητα κακόβουλης συμπεριφοράς (π.χ. πρόταση άκυρων ενημερώσεων κατάστασης). Τα κανάλια κατάστασης αντλούν την ασφάλειά τους από ένα σύστημα διαιτησίας διαφοράς που βασίζεται σε .
Πως λειτουργούν τα κανάλια κατάστασης
Βασικά, η δραστηριότητα σε ένα κανάλι κατάστασης είναι μια περίοδος αλληλεπιδράσεων που περιλαμβάνει χρήστες και ένα σύστημα blockchain. Χρήστες κυρίως επικοινωνούν μεταξύ τους εκτός αλυσίδας και αλληλεπιδρούν μόνο με την υποκείμενη αλυσίδα μπλοκ για να ανοίξουν το κανάλι, να κλείσουν το κανάλι ή να διευθετήσουν πιθανές διαφωνίες μεταξύ των συμμετεχόντων.
Η ακόλουθη ενότητα περιγράφει τη βασική ροή εργασίας ενός καναλιού κατάστασης:
Άνοιγμα καναλιού
Το άνοιγμα ενός καναλιού απαιτεί από τους συμμετέχοντες να δεσμεύσουν χρήματα σε ένα έξυπνο συμβόλαιο στο Mainnet. Η κατάθεση χρησιμεύει επίσης ως ένα εικονικό "ταμείο", ώστε οι συμμετέχοντες να μπορούν να πραγματοποιούν συναλλαγές ελεύθερα χωρίς να χρειάζεται να διευθετούν τις πληρωμές άμεσα. Μόνο όταν το κανάλι ολοκληρωθεί στην αλυσίδα, τα μέρη διευθετούν μεταξύ τους και αποσύρουν ό,τι έχει απομείνει από το "ταμείο" τους.
Αυτή η κατάθεση χρησιμεύει επίσης ως εγγύηση για την ειλικρινή συμπεριφορά από κάθε συμμετέχοντα. Εάν οι καταθέτες κριθούν ένοχοι για κακόβουλες ενέργειες κατά τη φάση επίλυσης διαφορών, το συμβόλαιο μειώνει την κατάθεσή τους.
Τα μέρη του καναλιού πρέπει να υπογράψουν μια αρχική κατάσταση, στην οποία όλα συμφωνούν. Αυτό χρησιμεύει ως τη γένεση του καναλιού κατάστασης, μετά την οποία οι χρήστες μπορούν να ξεκινήσουν τις συναλλαγές τους.
Χρήση καναλιού
Μετά την εκκίνηση της κατάστασης του καναλιού, οι ομότιμοι αλληλεπιδρούν υπογράφοντας συναλλαγές και στέλνοντάς τες ο ένας στον άλλον για έγκριση. Οι συμμετέχοντες ξεκινούν ενημερώσεις κατάστασης με αυτές τις συναλλαγές και υπογράφουν ενημερώσεις κατάστασης από άλλους. Κάθε συναλλαγή περιλαμβάνει τα ακόλουθα:
-
Ένα nonce, το οποίο λειτουργεί ως μοναδικό αναγνωριστικό για συναλλαγές και αποτρέπει επιθέσεις επανάληψης. Προσδιορίζει επίσης τη σειρά με την οποία πραγματοποιήθηκαν οι ενημερώσεις κατάστασης (η οποία είναι σημαντική για την επίλυση διαφορών)
-
Η παλιά κατάσταση του καναλιού
-
Η νέα κατάσταση του καναλιού
-
Η συναλλαγή που ενεργοποιεί τη μετάβαση κατάστασης (π.χ., η Alice στέλνει 5 ETH στον Bob)
Οι ενημερώσεις κατάστασης στο κανάλι δε μεταδίδονται στην αλυσίδα όπως συμβαίνει συνήθως όταν οι χρήστες αλληλεπιδρούν στο Mainnet, κάτι που ευθυγραμμίζεται με τον στόχο των κρατικών καναλιών να ελαχιστοποιήσουν το αποτύπωμα στην αλυσίδα. Εφόσον οι συμμετέχοντες συμφωνούν για ενημερώσεις κατάστασης, είναι τόσο τελικές όσο μια συναλλαγή Ethereum. Οι συμμετέχοντες χρειάζεται να εξαρτώνται μόνο από τη συναίνεση του Mainnet εάν προκύψει διαφωνία.
Κλείσιμο καναλιού
Το κλείσιμο ενός καναλιού κατάστασης απαιτεί την υποβολή της τελικής, συμφωνημένης κατάστασης του καναλιού στο έξυπνο συμβόλαιο στην αλυσίδα. Οι λεπτομέρειες που αναφέρονται στην ενημέρωση κατάστασης περιλαμβάνουν τον αριθμό των κινήσεων κάθε συμμετέχοντα και μια λίστα εγκεκριμένων συναλλαγών.
Αφού επαληθευτεί ότι η ενημέρωση κατάστασης είναι έγκυρη (δηλαδή, έχει υπογραφεί από όλα τα μέρη), το έξυπνο συμβόλαιο οριστικοποιεί το κανάλι και διανέμει τα κλειδωμένα χρήματα σύμφωνα με το αποτέλεσμα του καναλιού. Οι πληρωμές που γίνονται εκτός αλυσίδας εφαρμόζονται στην κατάσταση του Ethereum και ο κάθε συμμετέχων λαμβάνει το υπόλοιπο μέρος των κλειδωμένων χρημάτων.
Το σενάριο που περιγράφεται παραπάνω αντιπροσωπεύει τι συμβαίνει στην καλή περίπτωση. Μερικές φορές, οι χρήστες μπορεί να μην μπορούν να καταλήξουν σε συμφωνία και να οριστικοποιήσουν το κανάλι (η κακή περίπτωση). Οποιοδήποτε από τα ακόλουθα μπορεί να ισχύει για την κατάσταση:
-
Οι συμμετέχοντες είναι εκτός σύνδεσης και αποτυγχάνουν να προτείνουν μεταβάσεις κατάστασης
-
Οι συμμετέχοντες αρνούνται να συνυπογράψουν έγκυρες ενημερώσεις κατάστασης
-
Οι συμμετέχοντες προσπαθούν να ολοκληρώσουν το κανάλι προτείνοντας μια παλιά ενημέρωση κατάστασης στο συμβόλαιο στην αλυσίδα.
-
Οι συμμετέχοντες προτείνουν μη έγκυρες μεταβάσεις κατάστασης για να υπογράψουν άλλοι
Κάθε φορά που διακόπτεται η συναίνεση μεταξύ των συμμετεχόντων παραγόντων σε ένα κανάλι, η τελευταία επιλογή είναι να βασιστείτε στη συναίνεση του Κεντρικού δικτύου για να επιβάλετε την τελική, έγκυρη κατάσταση του καναλιού. Σε αυτήν την περίπτωση, το κλείσιμο του καναλιού κατάστασης απαιτεί επίλυση διαφορών στην αλυσίδα.
Settling disputes
Συνήθως, τα μέλη σε ένα κανάλι συμφωνούν να κλείσουν το κανάλι εκ των προτέρων και συνυπογράφουν την τελευταία μετάβαση κατάστασης, την οποία υποβάλλουν στο έξυπνο συμβόλαιο. Μόλις εγκριθεί η ενημέρωση στην αλυσίδα, η εκτέλεση του έξυπνου συμβολαίου εκτός αλυσίδας τελειώνει και οι συμμετέχοντες εξέρχονται από το κανάλι με τα χρήματά τους.
Ωστόσο, ένα μέρος μπορεί να υποβάλει μια αίτηση στην αλυσίδα για να τερματίσει την εκτέλεση του έξυπνου συμβολαίου και να ολοκληρώσει το κανάλι - χωρίς να περιμένει την έγκριση του άλλου μέρους. Εάν συμβεί κάποια από τις περιγραφόμενες προηγουμένως καταστάσεις παραβίασης της συναίνεσης, οποιοδήποτε μέρος μπορεί να ενεργοποιήσει το συμβόλαιο στην αλυσίδα για να κλείσει το κανάλι και να διανείμει τα κεφάλαια. Αυτό εξαλείφει την ανάγκη απόδειξης εμπιστοσύνης, διασφαλίζοντας ότι τα ειλικρινή μέρη μπορούν να εξέλθουν από τις καταθέσεις τους ανά πάσα στιγμή, ανεξάρτητα από τις ενέργειες του άλλου μέρους.
Για να επεξεργαστεί την έξοδο καναλιού, ο χρήστης πρέπει να υποβάλει την τελευταία έγκυρη ενημέρωση κατάστασης της εφαρμογής στο συμβόλαιο στην αλυσίδα. Εάν αυτό είναι εντάξει (δηλαδή, φέρει την υπογραφή όλων των μελών), τότε τα κεφάλαια αναδιανέμονται υπέρ τους.
Ωστόσο, υπάρχει καθυστέρηση στην εκτέλεση αιτημάτων εξόδου ενός χρήστη. Εάν το αίτημα για ολοκλήρωση του καναλιού εγκρίθηκε ομόφωνα, τότε η συναλλαγή εξόδου στην αλυσίδα εκτελείται αμέσως.
Η καθυστέρηση τίθεται σε εφαρμογή σε εξόδους ενός χρήστη λόγω της πιθανότητας απατηλών ενεργειών. Για παράδειγμα, ένας συμμετέχων στο κανάλι μπορεί να προσπαθήσει να ολοκληρώσει το κανάλι στο Ethereum υποβάλλοντας μια παλαιότερη ενημέρωση κατάστασης στην αλυσίδα.
Ως αντιστάθμισμα, τα κανάλια κατάστασης επιτρέπουν στους ειλικρινείς χρήστες να αμφισβητήσουν τις μη έγκυρες ενημερώσεις κατάστασης υποβάλλοντας την τελευταία, έγκυρη κατάσταση του καναλιού εντός αλυσίδας. Τα κανάλια κατάστασης σχεδιάζονται έτσι ώστε οι νεότερες, συμφωνημένες ενημερώσεις κατάστασης να επικρατούν των παλαιότερων ενημερώσεων κατάστασης.
Μόλις ένας συμμετέχων ενεργοποιήσει το σύστημα επίλυσης διαφωνιών εντός αλυσίδας, το άλλο μέρος πρέπει να απαντήσει εντός χρονικού ορίου (που ονομάζεται παράθυρο πρόκλησης). Αυτό επιτρέπει στους χρήστες να αμφισβητήσουν τη συναλλαγή εξόδου, ειδικά εάν το άλλο μέρος εφαρμόζει μια παλιά ενημέρωση.
Όποια και αν είναι η περίπτωση, οι χρήστες του καναλιού έχουν πάντα ισχυρές εγγυήσεις οριστικότητας: εάν η μετάβαση κατάστασης στην κατοχή τους υπογράφηκε από όλα τα μέλη και είναι η πιο πρόσφατη ενημέρωση, τότε έχει την ίδια οριστικότητα με μια κανονική συναλλαγή στην αλυσίδα. Πρέπει ακόμα να αμφισβητήσουν το άλλο μέρος στην αλυσίδα, αλλά το μόνο πιθανό αποτέλεσμα είναι η ολοκλήρωση της τελευταίας έγκυρης κατάστασης που κατέχουν.
Πώς αλληλεπιδρούν τα κανάλια κατάστασης με το Ethereum;
Αν και υπάρχουν ως πρωτόκολλα εκτός αλυσίδας, τα κανάλια κατάστασης έχουν ένα στοιχείο εντός αλυσίδας: το έξυπνο συμβόλαιο που αναπτύσσεται στο Ethereum κατά το άνοιγμα του καναλιού. Αυτό το συμβόλαιο ελέγχει τα περιουσιακά στοιχεία που κατατίθενται στο κανάλι, επαληθεύει τις ενημερώσεις κατάστασης και διαιτητεύει τις διαφορές μεταξύ των συμμετεχόντων.
Τα κανάλια κατάστασης δε δημοσιεύουν δεδομένα συναλλαγών ή καταστάσεις δεσμεύσεων στο Mainnet, σε αντίθεση με τις λύσεις κλιμάκωσης επιπέδου 2. Ωστόσο, συνδέονται περισσότερο με το Mainnet παρά με, πλευρικές αλυσίδες καθιστώντας τα κάπως πιο ασφαλή.
Τα κανάλια κατάστασης βασίζονται στο κύριο πρωτόκολλο Ethereum για τα ακόλουθα:
1. Επιβιωσιμότητα
Το συμβόλαιο στην αλυσίδα που αναπτύσσεται κατά το άνοιγμα του καναλιού είναι υπεύθυνο για τη λειτουργικότητα του καναλιού. Εάν το συμβόλαιο εκτελείται στο Ethereum, τότε το κανάλι είναι πάντα διαθέσιμο για χρήση. Αντίθετα, μια πλευρική αλυσίδα μπορεί πάντα να αποτύχει, ακόμα και αν το Κεντρικό δίκτυο είναι λειτουργικό, θέτοντας σε κίνδυνο τα κεφάλαια των χρηστών.
2. Ασφάλεια
Σε κάποιο βαθμό, τα κανάλια κατάστασης βασίζονται στο Ethereum για να τους παρέχουν ασφάλεια και να προστατεύουν τους χρήστες από κακόβουλους ομότιμους. Όπως συζητείται σε επόμενες ενότητες, τα κανάλια χρησιμοποιούν έναν μηχανισμό απόδειξης απάτης που επιτρέπει στους χρήστες να αμφισβητήσουν τις προσπάθειες οριστικοποίησης του καναλιού με μια μη έγκυρη ή παλιά ενημέρωση.
Σε αυτήν την περίπτωση, το έντιμο μέρος παρέχει την πιο πρόσφατη έγκυρη κατάσταση του καναλιού ως απόδειξη απάτης στο συμβόλαιο στην αλυσίδα για επαλήθευση. Οι αποδείξεις απάτης επιτρέπουν σε μέρη που δεν εμπιστεύονται το ένα το άλλο να πραγματοποιούν εκτός αλυσίδας συναλλαγές χωρίς να διακινδυνεύουν τα κεφάλαιά τους στη διαδικασία.
3. Οριστικότητα
Οι ενημερώσεις κατάστασης που υπογράφονται συλλογικά από τους χρήστες του καναλιού θεωρούνται εξίσου καλές με τις συναλλαγές στην αλυσίδα. Ωστόσο, όλες οι ενέργειες εντός ενός καναλιού αποκτούν πραγματική οριστικότητα μόνο όταν το κανάλι κλείνει στο Ethereum.
Στην αισιόδοξη περίπτωση, και τα δύο μέρη μπορούν να συνεργαστούν και να υπογράψουν την τελική ενημέρωση κατάστασης και να την υποβάλουν στην αλυσίδα για να κλείσει το κανάλι, μετά την οποία τα χρήματα διανέμονται σύμφωνα με την τελική κατάσταση του καναλιού. Στην απαισιόδοξη περίπτωση, όπου κάποιος προσπαθεί να εξαπατήσει δημοσιεύοντας μια εσφαλμένη ενημέρωση κατάστασης στην αλυσίδα, η συναλλαγή δεν ολοκληρώνεται μέχρι να παρέλθει το παράθυρο πρόκλησης.
Εικονικά κανάλια κτάστασης
Η αφελής υλοποίηση ενός καναλιού κατάστασης θα ήταν η ανάπτυξη ενός νέου συμβολαίου όταν δύο χρήστες επιθυμούν να εκτελέσουν μια εφαρμογή εκτός αλυσίδας. Αυτό όχι μόνο δεν είναι εφικτό, αλλά αναιρεί επίσης τη σχέση κόστους - αποτελεσματικότητας των καναλιών κατάστασης (το κόστος συναλλαγών στην αλυσίδα μπορεί γρήγορα να αυξηθεί).
Για να λυθεί αυτό το πρόβλημα, δημιουργήθηκαν «εικονικά κανάλια». Σε αντίθεση με τα κανονικά κανάλια που απαιτούν το άνοιγμα και τον τερματισμό συναλλαγών στην αλυσίδα, ένα εικονικό κανάλι μπορεί να ανοιχτεί, να εκτελεστεί και να οριστικοποιηθεί χωρίς να αλληλεπιδράσει με την κύρια αλυσίδα. Είναι ακόμη δυνατό να διευθετηθούν διαφορές εκτός αλυσίδας χρησιμοποιώντας αυτή τη μέθοδο.
Αυτό το σύστημα βασίζεται στην ύπαρξη των λεγόμενων "καναλιών καταλόγου", τα οποία έχουν χρηματοδοτηθεί στην αλυσίδα. Μπορούν να δημιουργηθούν εικονικά κανάλια μεταξύ δύο μερών πάνω από ένα υπάρχον κανάλι καταλόγου, με τους ιδιοκτήτες του καναλιού καταλόγου να χρησιμεύουν ως ενδιάμεσοι.
Οι χρήστες σε κάθε εικονικό κανάλι αλληλεπιδρούν μέσω μιας νέας εμφάνισης συμβολαίου, με το κανάλι καταλόγου να είναι σε θέση να υποστηρίζει πολλαπλές εμφανίσεις συμβολαίου. Η κατάσταση του καναλιού καταλόγου περιέχει επίσης περισσότερες από μία καταστάσεις αποθήκευσης συμβολαίου, επιτρέποντας παράλληλη εκτέλεση εφαρμογών εκτός αλυσίδας μεταξύ διαφορετικών χρηστών.
Όπως ακριβώς και στα κανονικά κανάλια, οι χρήστες ανταλλάσσουν ενημερώσεις κατάστασης για να προχωρήσουν το μηχάνημα κατάστασης. Εκτός από διαφωνία, επικοινωνία με τον μεσάζοντα γίνεται μόνο κατά το άνοιγμα ή τον τερματισμό του καναλιού.
Εικονικά κανάλια πληρωμών
Τα εικονικά κανάλια πληρωμών λειτουργούν με την ίδια ιδέα όπως τα κανάλια εικονικής κατάστασης: οι συμμετέχοντες που είναι συνδεδεμένοι στο ίδιο δίκτυο μπορούν να υποβάλουν μηνύματα χωρίς να χρειάζεται να ανοίξουν ένα νέο κανάλι στην αλυσίδα. Στα εικονικά κανάλια πληρωμών, οι μεταφορές αξίας δρομολογούνται μέσω ενός ή περισσότερων διαμεσολαβητών, με εγγυήσεις ότι μόνο ο σκοπούμενος παραλήπτης μπορεί να λάβει μεταφερόμενα χρήματα.
Εφαρμογές καναλιών κατάστασης
Πληρωμές
Τα αρχικά κανάλια blockchain ήταν απλά πρωτόκολλα που επέτρεπαν σε δύο συμμετέχοντες να πραγματοποιούν γρήγορες, χαμηλής χρέωσης μεταφορές εκτός αλυσίδας χωρίς να χρειάζεται να πληρώνουν υψηλά τέλη συναλλαγών στο Mainnet. Σήμερα, τα κανάλια πληρωμής εξακολουθούν να είναι χρήσιμα για εφαρμογές που έχουν σχεδιαστεί για την ανταλλαγή και τις καταθέσεις ether και tokens.
Οι πληρωμές βασισμένες σε κανάλια έχουν τα ακόλουθα πλεονεκτήματα:
-
Απόδοση: Η ποσότητα των εκτός αλυσίδας συναλλαγών ανά κανάλι δε συνδέεται με την απόδοση του Ethereum, η οποία επηρεάζεται από διάφορους παράγοντες, ειδικά το μέγεθος του μπλοκ και ο χρόνος μπλοκ. Με την εκτέλεση συναλλαγών εκτός αλυσίδας, τα κανάλια blockchain μπορούν να επιτύχουν υψηλότερη απόδοση.
-
Απόρρητο: Επειδή τα κανάλια υπάρχουν εκτός αλυσίδας, οι λεπτομέρειες των αλληλεπιδράσεων μεταξύ των συμμετεχόντων δεν καταγράφονται στο δημόσιο blockchain του Ethereum. Οι χρήστες καναλιών πρέπει να αλληλεπιδρούν μόνο στην αλυσίδα κατά τη χρηματοδότηση και το κλείσιμο καναλιών ή την επίλυση διαφορών. Έτσι, τα κανάλια είναι χρήσιμα για άτομα που επιθυμούν πιο ιδιωτικές συναλλαγές.
-
Καθυστέρηση: Οι εκτός αλυσίδας συναλλαγές που πραγματοποιούνται μεταξύ των συμμετεχόντων του καναλιού μπορούν να διευθετηθούν άμεσα, εάν συνεργαστούν και τα δύο μέρη, μειώνοντας τις καθυστερήσεις. Αντίθετα, η αποστολή μιας συναλλαγής στο Κεντρικό δίκτυο απαιτεί αναμονή για τους κόμβους να επεξεργαστούν τη συναλλαγή, να παράγουν ένα νέο μπλοκ με τη συναλλαγή και να επιτευχθεί συναίνεση. Οι χρήστες μπορεί επίσης να χρειαστεί να περιμένουν περισσότερες επιβεβαιώσεις μπλοκ πριν θεωρήσουν μια συναλλαγή οριστικοποιημένη.
-
Κόστος: Τα κανάλια κατάστασης είναι ιδιαίτερα χρήσιμα σε περιπτώσεις όπου ένα σύνολο συμμετεχόντων θα ανταλλάξει πολλές ενημερώσεις κατάστασης για μεγάλο χρονικό διάστημα. Τα μόνα έξοδα που προκύπτουν είναι το άνοιγμα και το κλείσιμο του έξυπνου συμβολαίου καναλιού κατάστασης. Κάθε αλλαγή κατάστασης μεταξύ του ανοίγματος και του κλεισίματος του καναλιού θα είναι φθηνότερη από την τελευταία καθώς το κόστος διακανονισμού κατανέμεται ανάλογα.
Η εφαρμογή καναλιών κατάστασης σε λύσεις επιπέδου 2, όπως τα rollups, θα μπορούσε να τα κάνει ακόμη πιο ελκυστικά για πληρωμές. Ενώ τα κανάλια προσφέρουν φθηνές πληρωμές, το κόστος εγκατάστασης του συμβολαίου στην αλυσίδα στο Mainnet κατά τη φάση ανοίγματος μπορεί να γίνει ακριβό, ειδικά όταν τα τέλη gas αυξάνονται απότομα. Τα πακέτα ενημέρωσης που βασίζονται στο Ethereum προσφέρουν χαμηλότερα τέλη συναλλαγών και μπορούν να μειώσουν τα έξοδα για τους συμμετέχοντες του καναλιού μειώνοντας τα έξοδα εγκατάστασης.
Μικροσυναλλαγές
Οι μικροσυναλλαγές είναι πληρωμές χαμηλής αξίας (π.χ. χαμηλότερες από ένα κλάσμα του δολαρίου) τις οποίες οι επιχειρήσεις δεν μπορούν να επεξεργαστούν χωρίς να υποστούν απώλειες. Αυτές οι οντότητες πρέπει να πληρώνουν τους παρόχους υπηρεσιών πληρωμών, κάτι που δεν μπορούν να κάνουν εάν το περιθώριο στις πληρωμές πελατών είναι πολύ χαμηλό για να βγει κέρδος.
Τα κανάλια πληρωμών λύνουν αυτό το πρόβλημα μειώνοντας τα γενικά έξοδα που σχετίζονται με τις μικροσυναλλαγές. Για παράδειγμα, ένας πάροχος υπηρεσιών διαδικτύου (ISP) μπορεί να ανοίξει ένα κανάλι πληρωμής με έναν πελάτη, επιτρέποντάς του να πραγματοποιεί ροή μικρών πληρωμών κάθε φορά που χρησιμοποιεί την υπηρεσία.
Πέρα από το κόστος ανοίγματος και κλεισίματος του καναλιού, οι συμμετέχοντες δεν επιβαρύνονται με επιπλέον κόστος για μικροσυναλλαγές (χωρίς χρεώσεις gas). Αυτή είναι μια κατάσταση win-win, καθώς οι πελάτες έχουν μεγαλύτερη ευελιξία στο πόσα πληρώνουν για υπηρεσίες και οι επιχειρήσεις δε χάνουν τις κερδοφόρες μικροσυναλλαγές.
Αποκεντρωμένες εφαρμογές
Όπως τα κανάλια πληρωμής, τα κανάλια κατάστασης μπορούν να πραγματοποιούν πληρωμές υπό όρους σύμφωνα με τις τελικές καταστάσεις του μηχανήματος κατάστασης. Τα κανάλια κατάστασης μπορούν επίσης να υποστηρίξουν αυθαίρετη λογική μετάβασης κατάστασης, καθιστώντας τα χρήσιμα για την εκτέλεση γενικών εφαρμογών εκτός αλυσίδας.
Τα κανάλια κατάστασης συχνά περιορίζονται σε απλές εφαρμογές, καθώς αυτό διευκολύνει τη διαχείριση των κεφαλαίων που έχουν δεσμευτεί στο συμβόλαιο εντός αλυσίδας. Επίσης, με περιορισμένο αριθμό μερών που ενημερώνουν την κατάσταση της εφαρμογής εκτός αλυσίδας σε διαστήματα, η τιμωρία της ανέντιμης συμπεριφοράς είναι σχετικά απλή.
Η αποτελεσματικότητα μιας εφαρμογής καναλιού κατάστασης εξαρτάται επίσης από τον σχεδιασμό της. Για παράδειγμα, ένας προγραμματιστής μπορεί να αναπτύξει το συμβόλαιο καναλιού εφαρμογής εντός αλυσίδας μία φορά και να επιτρέψει σε άλλους παίκτες να επαναχρησιμοποιήσουν την εφαρμογή χωρίς να χρειάζεται να μεταβούν εντός αλυσίδας. Σε αυτήν την περίπτωση, το αρχικό κανάλι εφαρμογής λειτουργεί ως κανάλι λογιστικού βιβλίου που υποστηρίζει πολλαπλά εικονικά κανάλια, με κάθε ένα να εκτελεί μια νέα εμφάνιση του έξυπνου συμβολαίου της εφαρμογής εκτός αλυσίδας.
Μια πιθανή χρήση για εφαρμογές καναλιού κατάστασης είναι τα απλά παιχνίδια δύο παικτών, όπου τα κεφάλαια διανέμονται με βάση το αποτέλεσμα του παιχνιδιού. Το όφελος εδώ είναι ότι οι παίκτες δε χρειάζεται να εμπιστεύονται ο ένας τον άλλον (αποκέντρωση) και το συμβόλαιο εντός αλυσίδας, όχι οι παίκτες, ελέγχει την κατανομή των κεφαλαίων και την επίλυση των διαφορών (αποκέντρωση).
Άλλες πιθανές χρήσεις για εφαρμογές καναλιού κατάστασης περιλαμβάνουν την ιδιοκτησία ονόματος ENS, τα μητρώα NFT και πολλά άλλα.
Προσωπικές μεταφορές
Τα αρχικά κανάλια πληρωμής περιορίζονταν σε μεταφορές μεταξύ δύο μελών, περιορίζοντας τη χρηστικότητά τους. Ωστόσο, η εισαγωγή εικονικών καναλιών επέτρεψε στα άτομα να δρομολογούν μεταφορές μέσω ενδιάμεσων (δηλαδή πολλαπλών καναλιών p2p) χωρίς να χρειάζεται να ανοίξουν ένα νέο κανάλι στην αλυσίδα.
Συχνά περιγράφονται ως "μεταφορές πολλαπλών εναλλαγών", οι δρομολογημένες πληρωμές είναι ατομικές (δηλαδή, είτε όλα τα μέρη της συναλλαγής επιτυγχάνουν είτε αποτυγχάνουν εντελώς). Οι ατομικές μεταφορές χρησιμοποιούν Συμβόλαια Χρονικού Κλειδώματος με Hash (HTLCs) για να εξασφαλίσουν ότι η πληρωμή απελευθερώνεται μόνο εάν πληρούνται ορισμένες προϋποθέσεις, μειώνοντας έτσι τον κίνδυνο του αντιπάλου.
Μειονεκτήματα της χρήσης καναλιών κατάστασης
Υποθέσεις επιβιωσιμότητας
Για να διασφαλιστεί η αποτελεσματικότητα, τα κανάλια κατάστασης θέτουν χρονικά όρια στην ικανότητα των συμμετεχόντων του καναλιού να ανταποκρίνονται σε διαφωνίες. Αυτός ο κανόνας υποθέτει ότι οι συμμετέχοντες θα είναι πάντα συνδεδεμένοι στο δίκτυο για να παρακολουθούν τη δραστηριότητα του καναλιού και να αμφισβητούν ενστάσεις όταν είναι απαραίτητο.
Στην πραγματικότητα, οι χρήστες μπορούν να βγουν εκτός σύνδεσης για λόγους έξω από τον έλεγχό τους (π.χ. κακή σύνδεση στο διαδίκτυο, μηχανική βλάβη κ.λπ.). Αν ένας ειλικρινής χρήστης αποσυνδεθεί, ένας κακόβουλος συμμετέχων μπορεί να εκμεταλλευτεί την κατάσταση παρουσιάζοντας παλιές ενδιάμεσες καταστάσεις στο συμβόλαιο διαιτησίας και κλέβοντας τα δεσμευμένα κεφάλαια.
Μερικά κανάλια χρησιμοποιούν "πύργους παρακολούθησης" - οντότητες υπεύθυνες για την παρακολούθηση εκτός αλυσίδας συμβάντων διαφωνιών για λογαριασμό άλλων και τη λήψη των απαραίτητων ενεργειών, όπως την ειδοποίηση των ενδιαφερομένων μερών. Ωστόσο, αυτό μπορεί να αυξήσει το κόστος χρήσης ενός καναλιού κατάστασης.
Μη διαθεσιμότητα δεδομένων
Όπως εξηγήθηκε προηγουμένως, η αμφισβήτηση μιας μη έγκυρης διαφωνίας απαιτεί την παρουσίαση της πιο πρόσφατης, έγκυρης κατάστασης του καναλιού κατάστασης. Αυτός είναι ένας άλλος κανόνας που βασίζεται σε μια υπόθεση - ότι οι χρήστες έχουν πρόσβαση στην πιο πρόσφατη κατάσταση του καναλιού.
Αν και είναι λογικό να περιμένουμε ότι οι χρήστες του καναλιού θα αποθηκεύουν αντίγραφα της κατάστασης της εφαρμογής εκτός αλυσίδας, αυτά τα δεδομένα ενδέχεται να χαθούν λόγω σφάλματος ή μηχανικής βλάβης. Αν ο χρήστης δεν έχει αντίγραφο ασφαλείας των δεδομένων, μπορεί μόνο να ελπίζει ότι το άλλο μέρος δε θα ολοκληρώσει ένα άκυρο αίτημα εξόδου χρησιμοποιώντας παλιές μεταβάσεις κατάστασης που βρίσκονται στην κατοχή του.
Οι χρήστες του Ethereum δεν έχουν αυτό το πρόβλημα, καθώς το δίκτυο επιβάλλει κανόνες σχετικά με τη διαθεσιμότητα δεδομένων. Τα δεδομένα συναλλαγών αποθηκεύονται και διαδίδονται από όλους τους κόμβους και είναι διαθέσιμα στους χρήστες για λήψη, εάν και όταν είναι απαραίτητο.
Ζητήματα ρευστότητας
Για να δημιουργηθεί ένα κανάλι blockchain, οι συμμετέχοντες πρέπει να κλειδώσουν κεφάλαια σε ένα έξυπνο συμβόλαιο στην αλυσίδα για τον κύκλο ζωής του καναλιού. Αυτό μειώνει τη ρευστότητα των χρηστών του καναλιού και επίσης περιορίζει τα κανάλια σε εκείνους που μπορούν να αντέξουν οικονομικά να κρατήσουν κεφάλαια κλειδωμένα στο Mainnet.
Ωστόσο, τα κανάλια λογιστικού βιβλίου, που λειτουργούν από έναν παροχέα υπηρεσιών εκτός αλυσίδας (OSP), μπορούν να μειώσουν τα προβλήματα ρευστότητας για τους χρήστες. Δύο ομότιμοι χρήστες που είναι συνδεδεμένοι σε ένα κανάλι λογιστικού βιβλίου μπορούν να δημιουργήσουν ένα εικονικό κανάλι, το οποίο μπορούν να ανοίξουν και να ολοκληρώσουν εντελώς εκτός αλυσίδας, όποτε θέλουν.
Οι παροχείς υπηρεσιών εκτός αλυσίδας θα μπορούσαν επίσης να ανοίξουν κανάλια με πολλούς ομότιμους, καθιστώντας τα χρήσιμα για τη δρομολόγηση πληρωμών. Φυσικά, οι χρήστες πρέπει να πληρώνουν τέλη στους OSPs για τις υπηρεσίες τους, κάτι που μπορεί να είναι ανεπιθύμητο για ορισμένους.
Griefing attacks
Οι επιθέσεις griefing είναι ένα κοινό χαρακτηριστικό των συστημάτων που βασίζονται σε απόδειξη απάτης. Μια επίθεση griefing δεν ωφελεί άμεσα τον επιτιθέμενο αλλά προκαλεί θλίψη (δηλαδή βλάβη) στο θύμα, εξ ου και το όνομα.
Η απόδειξη απάτης είναι ευάλωτη σε επιθέσεις griefing επειδή το έντιμο μέρος πρέπει να ανταποκριθεί σε κάθε διαφωνία, ακόμα και σε άκυρες, ή να διακινδυνεύσει να χάσει τα κεφάλαιά του. Ένας κακόβουλος συμμετέχοντας μπορεί να αποφασίσει να δημοσιεύσει επανειλημμένα παλιές μεταβάσεις κατάστασης στην αλυσίδα, αναγκάζοντας το έντιμο μέρος να απαντήσει με την έγκυρη κατάσταση. Το κόστος αυτών των συναλλαγών στην αλυσίδα μπορεί να αυξηθεί γρήγορα, προκαλώντας απώλειες στα έντιμα μέρη στη διαδικασία.
Προκαθορισμένα σύνολα συμμετεχόντων
Εκ σχεδιασμού, ο αριθμός των συμμετεχόντων που αποτελούν ένα κανάλι κατάστασης παραμένει σταθερός καθ' όλη τη διάρκεια ζωής του. Αυτό συμβαίνει επειδή η ενημέρωση του συνόλου των συμμετεχόντων θα περιέπλεκε τη λειτουργία του καναλιού, ειδικά κατά τη χρηματοδότηση του καναλιού, ή την επίλυση διαφορών. Η προσθήκη ή η αφαίρεση συμμετεχόντων θα απαιτούσε επίσης πρόσθετη δραστηριότητα εντός της αλυσίδας, η οποία αυξάνει τα γενικά έξοδα για τους χρήστες.
Αν και αυτό κάνει τα κανάλια κατάστασης ευκολότερο να συλλογιστούν, περιορίζει τη χρησιμότητα των καναλιών σχεδίων στους προγραμματιστές εφαρμογών. Αυτό εξηγεί εν μέρει γιατί τα κανάλια κατάστασης έχουν εγκαταλειφθεί υπέρ άλλων λύσεων κλιμάκωσης, όπως τα rollups.
Παράλληλη επεξεργασία συναλλαγών
Οι συμμετέχοντες στο κανάλι κατάστασης στέλνουν ενημερώσεις κατάστασης με τη σειρά τους, γι' αυτό λειτουργούν καλύτερα για "εφαρμογές βασισμένες σε περιστροφές" (π.χ. ένα παιχνίδι σκάκι δύο παικτών). Αυτό εξαλείφει την ανάγκη να χειριστείτε ταυτόχρονες ενημερώσεις κατάστασης και μειώνει τη δουλειά που πρέπει να κάνει το συμβόλαιο στην αλυσίδα για να τιμωρήσει τους δημοσιευτές παλιών ενημερώσεων. Ωστόσο, μια παρενέργεια αυτού του σχεδιασμού είναι ότι οι συναλλαγές εξαρτώνται η μία από την άλλη, αυξάνοντας την καθυστέρηση και μειώνοντας τη συνολική εμπειρία χρήστη.
Μερικά κανάλια κατάστασης επιλύουν αυτό το πρόβλημα χρησιμοποιώντας ένα σχεδιασμό "full-duplex" που χωρίζει την κατάσταση εκτός αλυσίδας σε δύο μονόδρομες καταστάσεις "simplex", επιτρέποντας ταυτόχρονες ενημερώσεις κατάστασης. Τέτοια σχέδια βελτιώνουν την απόδοση εκτός αλυσίδας και μειώνουν τις καθυστερήσεις συναλλαγών.
Χρήση καναλιών κατάστασης
Πολλά έργα παρέχουν υλοποιήσεις καταστάσεων καναλιών που μπορείτε να ενσωματώσετε στα dapps σας:
Περαιτέρω υλικό για διάβασμα
Κανάλια κατάστασης
- Λύσεις κλιμάκωσης του επιπέδου 2 του Ethereum: Κανάλια κατάστασης, Plasma και Truebit – Josh Stark, 12 Φεβ 2018
- Κανάλια κατάστασης - εξήγηση 6 Νοε 2015 - Jeff Coleman
- Βασικά στοιχεία καναλιών κατάστασης District0x
- Κανάλια κατάστασης κρυπτοαλυσίδας: Μια κατάσταση της τέχνης
Γνωρίζετε κάποιο πόρο της κοινότητας που σας βοήθησε; Επεξεργαστείτε αυτή τη σελίδα και προσθέστε το!