Peer to Peer Network (P2P Network)
by fragagou · November 13, 2018
Τί είναι λοιπόν ένα δίκτυο ομότιμων κόμβων(P2P Network); Ο Κόμβος στην Γεωμετρία, ορίζεται ώς το σημείο όπου συναντιούνται τρείς ή/και περισσότερες γραμμές (δρόμοι). Η λέξη "ομότιμων" μας ξεκαθαρίζει την απουσία προτεραιότητας (όποιου είδους) κάποιου κόμβου έναντι κάποιου άλλου. Δεν είναι ίδιοι οι κόμβοι, αλλά είναι ίσοι μεταξύ τους αναφορικά με οποιαδήποτε διαδικασία εκλογής/επιλογής μεταξύ αυτών. Στατιστικά μιλώντας, θα λέγαμε ότι εάν τεθεί θέμα εκλογής κάποιου κόμβου, η εκλογή αυτή θα δίνει ίσα ποσοστά επιτυχίας (ή αποτυχίας εάν είστε τέτοιος τύπος) σε κάθε έναν από αυτούς τους κόμβους και θα εκτελείται τυχαία. Δίκτυο είναι ένα σύνολο από κόμβους συμπεριλαμβανομένων των δρόμων μεταξύ αυτών.
Στην περίπτωση της αλυσίδας κοινοποιήσεων ένας κόμβος αντιστοιχεί σε έναν επεξεργαστή ηλεκτρονικού υπολογιστή συνδεδεμένου στο διαδικτυακά με άλλους κόμβους. Ο ρόλος των κόμβων είναι διπλός. Καταρχάς να διαφυλάττουν ένα αντίγραφο της αλυσίδας κοινοποιήσεων μέσα στον αποθηκευτικό χώρο που διαθέτουν και κατά δεύτερον να επεξεργάζονται συναλλαγές. Με απλά λόγια δηλαδή, ένα δίκτυο ομότιμων κόμβων είναι ένα δίκτυο ηλεκτρονικών υπολογιστών επιφορτισμένων με δύο ειδών εργασίες (αποθήκευσης και επεξεργασίας δεδομένων), όπου δεν νοείται η προτεραιότητα κάποιου υπολογιστή έναντι κάποιου άλλου.
Προτεραιότητα σε τί όμως; Στην περίπτωση της αλυσίδας κοινοποιήσεων, προτεραιότητα στο δικαίωμα υποβολής υποψηφιότητας στην τοποθέτηση ενός καινούργιου μπλόκ (πεπερασμένης ποσότητας δεδομένων δηλαδή) στην αλυσίδα κοινοποιήσεων.
Πότε όμως ένας κόμβος αποκτά το δικαίωμα να υποβάλλει υποψηφιότητα το μπλόκ που παρήγαγε; Και τί σημαίνει "παρήγαγε";
Η απάντηση σε αυτά (και σε άλλα ερωτήματα) ξεκινά απο την αποσαφήνιση της έννοιας πρωτόκολλο συναίνεσης (consensus protocol). Πρίν όμως προχωρήσουμε στο "πρωτόκολλο συννενόησης", να πούμε ακόμα δυό πράγματα για το δίκτυο ομότιμων κόμβων.
Θυμάται κανένας μία εφαρμογή που λεγόταν Napster εκεί γύρω στα τέλη των 90's; Σε αυτήν την εφαρμογή εάν είχες κάποιο τραγουδάκι που σου άρεσε και ήθελες να το μοιραστείς με κόσμο, τότε "άνοιγες" (open) την εφαρμογή και "τράβαγες" (apply) μια συνάρτηση κατατεμαχισμού ( Cryptographic Hash Function ) πάνω στο εν λόγω τραγουδάκι και αυτή (η συνάρτηση) σου "ξέρναγε" το κρυπτογραφικό του αποτύπωμα (του τραγουδιού). Μέσω της εφαρμογής τότε, κοινοποιούσες το αποτύπωμα αυτο με μιά περιγραφή του τραγουδιού (τίτλο, όνομα καλλιτέχνη κτλ) στην κοινότητα των χρηστών που "έτρεχαν" (χρησιμοποιούσαν) την ίδια εφαρμογή και απλά άφηνες τον υπολογιστή σου ανοιχτόν όλο το βράδυ. Το πρωί που ξύπναγες, και λίγο πριν φύγεις για την τάξη, τσέκαρες την εφαρμογή. Τότε θα έβλεπες ότι το τραγουδάκι σου το είχαν "κατεβάσει" (download) και άλλοι χρήστες της εφαρμογής, απο εσένα. Δλδ (δηλαδή), τώρα πιά υπήρχαν αντίγραφα (copies) της επιλογής σου (για το τραγουδάκι μιλάμε πάντα), και στους σκληρούς δίσκους (hard discs) άλλων ανθρώπων. Οπότε:
- Αν για κάποιο λόγο (συγύρισμα μαμάς π.χ.) είχε χαθεί ή καταστραφεί ο σκληρός σου δίσκος, μπορούσες να το ανακτήσεις απο αυτούς που εσύ το ο ίδιος είχες προσφέρει στο παρελθόν.
- Μπορούσες επίσης να αποκτήσεις και όσα τραγουδάκια δεν είχες (και επιθυμούσες) και τύχαινε να τα έχουν κάποιοι (ή έστω ένας) οι οποίοι τα μοιράζονταν με τον ίδιο τρόπο που είχες και εσύ κάποτε μοιραστεί το δικό σου.
Με λίγα λόγια συνέβαινε το εξής. Μοιραζόμενος κάτι, αυτό το κάτι δεν εξέπιμπτε αλλά πολλαπλασιαζόταν. Ήταν πιά αποτέλεσμα κοίνο-ποίησης.