Διαπλανητικό Σύστημα Αρχείων

Το Διαπλανητικό Σύστημα Αρχείων (InterPlanetary File System, IPFS) είναι πρωτόκολλο και δίκτυο σχεδιασμένο για να δημιουργήσει μια μέθοδο peer-to-peer για την αποθήκευση και την κοινή χρήση υπερμέσων σε κατανεμημένο σύστημα αρχείων. Το IPFS αρχικά σχεδιάστηκε από τον Χουάν Μπένετ, και τώρα είναι εγχείρημα ανοιχτού κώδικα που αναπτύχθηκε με βοήθεια από την κοινότητα.

Ιστορία

Το 2014, το πρωτόκολλο εκμεταλλεύτηκε το πρωτόκολλο Bitcoin blockchain και την υποδομή του δικτύου για να αποθηκεύσει αναλλοίωτα δεδομένα, να αφαιρέσει τα διπλά αρχεία σε όλο το δίκτυο και να αποκτήσει πληροφορίες διεύθυνσης για την πρόσβαση σε αποθήκευση κόμβους για να αναζητήσει αρχεία στο δίκτυο.
Υπάρχουν υλοποιήσεις στο Go και JavaScript, ενώ η υλοποίηση στη Python βρίσκεται σε εξέλιξη. Η εφαρμογή στη Go θεωρείται ότι είναι η υλοποίηση αναφοράς, ενώ αναπτύσσονται τυπικές προδιαγραφές.

Περιγραφή

Το IPFS είναι διανεμημένο σύστημα αρχείων peer-to-peer που επιδιώκει να συνδέσει όλες τις υπολογιστικές συσκευές με το ίδιο σύστημα αρχείων. Κατά κάποιο τρόπο, το IPFS είναι παρόμοιο με το World Wide Web, αλλά το IPFS, θα μπορούσε να θεωρηθεί ως ενιαίο σμήνος BitTorrent, ανταλλάσοντας αντικείμενα μέσα σε αποθετήριο Git. Με άλλα λόγια το IPFS παρέχει υψηλής απόδοσης, διευθετημένο σε περιεχόμενο μοντέλο μπλοκ αποθήκευσης, με διευθετημένες σε περιεχόμενο υπερσυνδέσεις. Αυτό αποτελεί ένα γενικευμένο κατευθυνόμενο άκυκλο γράφο Μερκλ. Το IPFS, συνδυάζει ένα κατανεμημένο πίνακα κατακερματισμού, ένα μεγάλο μπλοκ ανταλλαγής και ονοματοχώρο αυτοπιστοποίησης. Το IPFS δεν έχει ενιαίο σημείο αποτυχίας, και οι κόμβοι δεν πρέπει να εμπιστεύονται ο ένας τον άλλον για να μην πειραχτούν τα δεδομένα κατά τη μεταφορά. Η Διανεμημένη Παράδοση Περιεχόμενου εξοικονομεί εύρος ζώνης και αποτρέπει επιθέσεις DDoS, με τις οποίες αγωνίζεται το HTTP.
Το σύστημα αρχείων μπορεί να έχει πρόσβαση σε μια ποικιλία από τρόπους, όπως μέσω FUSE και πάνω από HTTP. Ένα τοπικό αρχείο μπορεί να προστεθεί στο σύστημα αρχείων του IPFS, καθιστώντας το διαθέσιμο στον κόσμο. Διανέμονται χρησιμοποιώντας πρωτόκολλο βασισμένο στο BitTorrent. Άλλοι χρήστες που βλέπουν το περιεχόμενο βοηθούν στην εξυπηρέτηση του περιεχομένου σε άλλους στο δίκτυο. Το IPFS διαθέτει υπηρεσία ονόματος, την IPNS, ένα παγκόσμιο χώρο ονομάτων που βασίζεται στη PKI. Χρησιμεύει για να οικοδομήσει αλυσίδες εμπιστοσύνης και είναι συμβατό με άλλα NS και μπορεί να χαρτογραφήσει DNS, .onion, .bit, κλπ. στο IPNS.

Μορφή δεδομένων Μερκλ

Κάθε δέντρο Μερκλ είναι κατευθυνόμενος άκυκλος γράφος επειδή κάθε κόμβος είναι προσβάσιμο μέσω του ονόματός του. Κάθε παράρτημα του Μερκλ είναι το κλειδί κατακερματισμού του τοπικού περιεχομένου. Έτσι, μετά τη δημιουργία δεν υπάρχει κανένας τρόπος για την επεξεργασία ενός κόμβους. Αυτό αποτρέπει κύκλους (υποθέτοντας ότι δεν υπάρχουν συγκρούσεις κατακερματισμού), εφόσον ένας δεν μπορεί να συνδέσει τον πρωτοδημιουργημένο κόμβο στον τελευταίο κόμβο για να δημιουργήσει την τελευταία αναφορά.
Σε γενικές γραμμές, για κάθε Μερκλ για να δημιουργηθεί ένα νέο παράρτημα ή την επαλήθευση υφιστάμενου κλάδου, ένας αλγόριθμος κατακερματισμού χρησιμοποιείται σε συνδυασμό με το τοπικό περιεχόμενο. Λίγοι διαφορετικοί αλγόριθμοι κατακερματισμού είναι διαθέσιμοι στο IPFS.
Η εισαγωγή δεδομένων σε οποιαδήποτε από αυτούς τους αλγόριθμους κατακερματισμού είναι τεκμηριωμένη.

Αξιοσημείωτοι χρήστες

Το δημοψήφισμα για την ανεξαρτησία της Καταλονίας, που έλαβε χώρα τον Σεπτέμβριο–Οκτώβριο του 2017, κρίθηκε παράνομο από το Συνταγματικό Δικαστήριο της Ισπανίας και πολλές σχετικές ιστοσελίδες είχαν μπλοκαριστεί. Στη συνέχεια, το Καταλανικό Πειρατικό αντέγραψε την ιστοσελίδα του στο IPFS για να παρακάμψει την διαταγή μπλοκαρίσματος του Ανώτατου Δικαστηρίου της Καταλονίας.
Το IPFS χρησιμοποιείται για να δημιουργήσει ένα αντίγραφο της Βικιπαίδειας, η οποία επιτρέπει την πρόσβαση της Βικιπαίδειας σε δικαιοδοσίες όπου η Βικιπαίδεια έχει μπλοκαριστεί.
Το UltraNote, κρυπτονόμισμα που υποστηρίζει κρυπτογραφημένα μηνύματα με μεταφορές αρχείων έως και 100MB με το χαρακτηριστικό "αυτοκαταστροφής" χρησιμοποιεί IPFS, για να αποθηκεύσει τα αρχεία.