Το δίκτυο Portal
Το Ethereum είναι ένα δίκτυο που αποτελείται από υπολογιστές που εκτελούν το λογισμικό πελάτη Ethereum. Καθένας από αυτούς τους υπολογιστές ονομάζεται «κόμβος». Το λογισμικό εκτέλεσης επιτρέπει σε έναν κόμβο να στέλνει και να λαμβάνει δεδομένα στο δίκτυο Ethereum και επαληθεύει δεδομένα σύμφωνα με τους κανόνες του πρωτοκόλλου Ethereum. Οι κόμβοι διατηρούν πολλά ιστορικά δεδομένα στον αποθηκευτικό χώρο του δίσκου τους και προσθέτουν σε αυτά νέα πακέτα πληροφοριών, γνωστά ως μπλοκ, από άλλους κόμβους του δικτύου. Αυτό είναι απαραίτητο για να ελέγχεται πάντα ότι ένας κόμβος έχει πληροφορίες συνεπής με το υπόλοιπο δίκτυο. Αυτό σημαίνει ότι η εκτέλεση ενός κόμβου μπορεί να απαιτεί πολύ χώρο στο δίσκο. Ορισμένες λειτουργίες κόμβου μπορεί να απαιτούν αρκετή χρήση μνήμης RAM.
Για να ξεπεραστεί αυτό το πρόβλημα αποθηκευτικού χώρου στο δίσκο, έχουν αναπτυχθεί «ελαφροί» κόμβοι που ζητούν πληροφορίες από πλήρεις κόμβους αντί να τις αποθηκεύουν όλες οι ίδιοι. Ωστόσο, αυτό σημαίνει ότι ο ελαφρύς κόμβος δεν επαληθεύει ανεξάρτητα τις πληροφορίες και εμπιστεύεται έναν άλλο κόμβο. Σημαίνει επίσης ότι οι πλήρεις κόμβοι πρέπει να αναλάβουν επιπλέον εργασία για την εξυπηρέτηση αυτών των ελαφρών κόμβων.
Το Δίκτυο Portal είναι ένας νέος σχεδιασμός δικτύωσης για το Ethereum που στοχεύει να λύσει το πρόβλημα διαθεσιμότητας δεδομένων για «ελαφρούς» κόμβους χωρίς να χρειάζεται να εμπιστευόμαστε ή να επιβαρύνουμε τους πλήρεις κόμβους, μοιράζοντας τα απαραίτητα δεδομένα σε μικρά κομμάτια στο δίκτυο.
Περισσότερα για κόμβους και πελάτες
Γιατί χρειαζόμαστε το Δίκτυο Portal
Οι κόμβοι Ethereum αποθηκεύουν το δικό τους πλήρες ή μερικό αντίγραφο του Ethereum blockchain. Αυτό το τοπικό αντίγραφο χρησιμοποιείται για την επικύρωση συναλλαγών και τη διασφάλιση ότι ο κόμβος ακολουθεί τη σωστή αλυσίδα. Αυτά τα τοπικά αποθηκευμένα δεδομένα επιτρέπουν στους κόμβους να επαληθεύουν ανεξάρτητα ότι τα εισερχόμενα δεδομένα είναι έγκυρα και σωστά χωρίς να χρειάζεται να εμπιστεύονται οποιαδήποτε άλλη οντότητα.
Αυτό το τοπικό αντίγραφο του blockchain και των σχετικών δεδομένων κατάστασης και παραλαβής καταλαμβάνει πολύ χώρο στον σκληρό δίσκο του κόμβου. Για παράδειγμα, ένας σκληρός δίσκος 2TΒ συνιστάται για την εκτέλεση ενός κόμβου χρησιμοποιώντας το Geth σε συνδυασμό με έναν πελάτη συναίνεσης. Χρησιμοποιώντας "snap sync", το οποίο αποθηκεύει μόνο δεδομένα αλυσίδας από ένα σχετικά πρόσφατο σύνολο μπλοκ, το Geth καταλαμβάνει συνήθως περίπου 650GB χώρου στο δίσκο, αλλά αυξάνεται περίπου στα 14GB/εβδομάδα (μπορείτε να περικόψετε τον κόμβο στα 650GB περιοδικά).
Αυτό σημαίνει ότι η εκτέλεση κόμβων μπορεί να είναι ακριβή, επειδή ένας μεγάλος χώρος στο δίσκο πρέπει να αφιερωθεί στο Ethereum. Υπάρχουν μερικές λύσεις για αυτό το πρόβλημα στον οδικό χάρτη του Ethereum, συμπεριλαμβανομένων των history expiry, state expiry και statelessness. Ωστόσο, είναι πιθανό να απέχουν αρκετά χρόνια από την εφαρμογή τους. Υπάρχουν επίσης ελαφροί κόμβοι που δεν αποθηκεύουν το δικό τους αντίγραφο των δεδομένων της αλυσίδας, έτσι ζητούν τα δεδομένα που χρειάζονται από πλήρεις κόμβους. Ωστόσο, αυτό σημαίνει ότι οι ελαφροί κόμβοι πρέπει να εμπιστεύονται τους πλήρεις κόμβους για να παρέχουν ειλικρινή δεδομένα και επίσης τονίζει τους πλήρεις κόμβους που πρέπει να εξυπηρετούν τα δεδομένα που χρειάζονται οι ελαφροί κόμβοι.
Το Δίκτυο Portal στοχεύει να παρέχει έναν εναλλακτικό τρόπο για τους ελαφρούς κόμβους να λαμβάνουν τα δεδομένα τους που δεν απαιτεί εμπιστοσύνη ή σημαντική προσθήκη στην εργασία που πρέπει να γίνει από τους πλήρεις κόμβους. Ο τρόπος με τον οποίο θα γίνει αυτό είναι να συσταθεί ένας νέος τρόπος για τους κόμβους Ethereum να μοιράζονται δεδομένα σε όλο το δίκτυο.
Πώς λειτουργεί το Δίκτυο Portal;
Οι κόμβοι Ethereum έχουν αυστηρά πρωτόκολλα που καθορίζουν τον τρόπο επικοινωνίας μεταξύ τους. Οι πελάτες εκτέλεσης επικοινωνούν χρησιμοποιώντας ένα σύνολο υπό πρωτοκόλλων γνωστών ως DevP2P, ενώ οι πελάτες συναίνεσης χρησιμοποιούν μια διαφορετική στοίβα υπό πρωτοκόλλων που ονομάζεται libP2P. Αυτά ορίζουν τους τύπους δεδομένων που μπορούν να διαβιβαστούν μεταξύ των κόμβων.
Οι κόμβοι μπορούν επίσης να εξυπηρετούν συγκεκριμένα δεδομένα μέσω του JSON-RPC API, με τον οποίο οι εφαρμογές και τα πορτοφόλια ανταλλάσσουν πληροφορίες με κόμβους Ethereum. Ωστόσο, κανένα από αυτά δεν είναι ιδανικά πρωτόκολλα για την εξυπηρέτηση δεδομένων σε ελαφρούς πελάτες.
Οι ελαφροί πελάτες δεν μπορούν αυτή τη στιγμή να ζητήσουν συγκεκριμένα κομμάτια δεδομένων αλυσίδας μέσω DevP2P ή libP2p επειδή αυτά τα πρωτόκολλα έχουν σχεδιαστεί μόνο για να επιτρέπουν τον συγχρονισμό αλυσίδας και τη διάδοση μπλοκ και συναλλαγών. Οι πελάτες μικρού μεγέθους δε θέλουν να κατεβάσουν αυτές τις πληροφορίες επειδή αυτό θα τους εμπόδιζε να είναι "μικροί".
Το API JSON-RPC δεν είναι μια ιδανική επιλογή για αιτήματα δεδομένων ελαφρών πελατών, επειδή βασίζεται σε μια σύνδεση με έναν συγκεκριμένο πλήρη κόμβο ή κεντρικό πάροχο RPC που μπορεί να εξυπηρετήσει τα δεδομένα. Αυτό σημαίνει ότι ο ελαφρύς πελάτης πρέπει να εμπιστεύεται ότι ο συγκεκριμένος κόμβος/πάροχος είναι ειλικρινής και επίσης ο πλήρης κόμβος μπορεί να χρειαστεί να χειριστεί πολλά αιτήματα από πολλούς ελαφρούς πελάτες, αυξάνοντας τις απαιτήσεις του σε εύρος ζώνης.
Το σημείο του Portal Network είναι να επανασχεδιάσει ολόκληρη τη σχεδίαση, κατασκευάζοντας ειδικά για ελαφρότητα, εκτός των περιορισμών σχεδιασμού των υπαρχόντων πελατών Ethereum.
Η βασική ιδέα του Portal Network είναι να λάβει τα καλύτερα κομμάτια της τρέχουσας στοίβας δικτύωσης επιτρέποντας πληροφορίες που χρειάζονται οι ελαφροί πελάτες, όπως τα ιστορικά δεδομένα και η ταυτότητα της τρέχουσας κεφαλής της αλυσίδας, να εξυπηρετούνται μέσω ενός ελαφρού δικτύου peer-to-peer τύπου DevP2P χρησιμοποιώντας ένα DHT (παρόμοιο με το Bittorrent).
Η ιδέα είναι να προστεθούν μικρά μέρη των συνολικών ιστορικών δεδομένων Ethereum και ορισμένες συγκεκριμένες ευθύνες κόμβου σε κάθε κόμβο. Στη συνέχεια, τα αιτήματα εξυπηρετούνται αναζητώντας τους κόμβους που αποθηκεύουν τα συγκεκριμένα δεδομένα που ζητήθηκαν και ανακτώντας τα από αυτούς.
Αυτό αντιστρέφει το κανονικό μοντέλο των ελαφρών κόμβων που βρίσκουν έναν μόνο κόμβο και τους ζητούν να φιλτράρουν και να εξυπηρετούν μεγάλους όγκους δεδομένων. Αντίθετα, φιλτράρουν γρήγορα ένα μεγάλο δίκτυο κόμβων που ο καθένας χειρίζεται μικρές ποσότητες δεδομένων.
Ο στόχος είναι να επιτραπεί σε ένα αποκεντρωμένο δίκτυο ελαφρών πελατών του Portal να:
- Παρακολουθεί την αρχή της αλυσίδας.
- Συγχρονίζει τα πρόσφατα και ιστορικά δεδομένα αλυσίδας.
- Λαμβάνει τα δεδομένα κατάστασης.
- Μεταδίδει συναλλαγές.
- Εκτελεί συναλλαγές χρησιμοποιώντας την EVM.
Τα πλεονεκτήματα αυτού του σχεδιασμού δικτύου είναι:
- Μείωση της εξάρτησης από κεντρικούς παρόχους
- Μείωση χρήσης εύρους διαδικτύου
- Ελαχιστοποίηση ή μηδενικός συγχρονισμός
- Προσβάσιμο σε συσκευές με περιορισμένους πόρους (<1 GB RAM, <100 MB χώρος δίσκου, 1 CPU)
Το παρακάτω διάγραμμα δείχνει τις λειτουργίες των υπάρχοντων πελατών που μπορούν να παραδοθούν από το Δίκτυο Πύλης, επιτρέποντας στους χρήστες να έχουν πρόσβαση σε αυτές τις λειτουργίες σε συσκευές πολύ χαμηλών πόρων.
Το δίκτυο Portal
Ελαφρύς πελάτης Beacon | Κατάσταση δικτύου | Ενημέρωση συναλλαγής | Δίκτυο ιστορικού |
---|---|---|---|
Beacon chain light | Αποθηκευτικός χώρος λογαριασμού και συμβολαίου | Μικρό μέγεθος mempool | Επικεφαλίδες |
Δεδομένα πρωτοκόλλου | Κορμός μπλοκ | ||
Αποδείξεις |
Ποικιλομορφία Πελατών από προεπιλογή
Οι προγραμματιστές του Δικτύου Portal έκαναν επίσης την επιλογή σχεδιασμού να κατασκευάσουν τρεις ξεχωριστούς πελάτες Δικτύου Portal από την πρώτη ημέρα.
Οι πελάτες του Δικτύου Portal είναι:
- Trin: γραμμένο σε Rust
- Fluffy: γραμμένο σε Nim
- Ultralight: γραμμένο σε Typescript
- Shisui: γραμμένο σε Go
Η ύπαρξη πολλαπλών ανεξάρτητων υλοποιήσεων πελατών ενισχύει την ανθεκτικότητα και την αποκέντρωση του δικτύου Ethereum.
Εάν ένας πελάτης αντιμετωπίζει προβλήματα ή ευπάθειες, άλλοι πελάτες μπορούν να συνεχίσουν να λειτουργούν ομαλά, αποτρέποντας ένα ενιαίο σημείο αποτυχίας. Επιπλέον, οι διαφορετικές υλοποιήσεις πελατών ενθαρρύνουν την καινοτομία και τον ανταγωνισμό, οδηγώντας σε βελτιώσεις και μειώνοντας τον κίνδυνο μονοκαλλιέργειας μέσα στο οικοσύστημα.