Τι είναι το Ηashing και πώς λειτουργεί:

0
252

Hashing ή αλλιώς συνάρτηση κατακερματισμού, είναι η διαδικασία εισόδου οποιουδήποτε μεγέθους πληροφοριών σε συγκεκριμένου μεγέθους έξοδο χρησιμοποιώντας μία μαθηματική συνάρτηση. Αυτό σημαίνει ότι οποιαδήποτε πληροφορία όσο μεγάλη και αν είναι μπορεί να μετατραπεί σε μία σειρά από γράμματα και αριθμούς μέσω ενός αλγόριθμου. Το μέγεθος αυτό μπορεί να είναι από 32 bit μέχρι 256 bit ή και περισσότερα ανάλογα με το λόγο χρήσης της συνάρτησης. Το μήνυμα που θα εισάγουμε λέγεται είσοδος (input), ο αλγόριθμος που χρησιμοποιούμε για να γίνει αυτό λέγεται hash function και η έξοδος λέγεται hash value.
Στο πλαίσιο των κρυπτονομισμάτων όπως για παράδειγμα bitcoin οι συναλλαγές λαμβάνονται ως είσοδος και τρέχουν μέσω ενός αλγόριθμου κατακερματισμού (SHA-256) το οποίο δίνει μία έξοδο σταθερού μήκους.
(Παράδειγμα )

Το Cryptonomismata.com (input) 
adf3b246b927e437580d8be1be51e22c5acef49cd2908181d0a31c80e700fb60 (hash value)

Το Cryptonomismata.com ειναι η καλυτερη σελιδα ενημερωσης για crypto στην Ελλαδα (input) 
e4e3988b9aee767b23b0b00de8dcbd056fa9306d82408f10678c61f38e5fcddd (hash value)

Όπως μπορείτε να δείτε στην περίπτωση του SHA-256 ανεξάρτητα από το πόσο μεγάλη ή μικρή είναι η είσοδός σας, η έξοδος θα έχει πάντα σταθερό μήκος 256 bit καθιστώντας το κρίσιμο όταν πρόκειται για ένα τεράστιο όγκο δεδομένων και συναλλαγών. Έτσι αντί να θυμάστε τα δεδομένα εισόδου που θα μπορούσαν να είναι τεράστια μπορείτε απλά να θυμηθείτε το hash και να τα παρακολουθείτε.

Μία κρυπτογραφική συνάρτηση κατακερματισμού για να είναι χρήσιμη πρέπει να έχει ορισμένα στοιχεία όπως:

  • Κάθε έξοδος (hash value) θα πρέπει να είναι μοναδική, που σημαίνει ότι θα ήταν αδύνατο να παράγουμε το ίδιο hash value βάζοντας διαφορετικές εισόδους (input), ώστε το ίδιο μήνυμα πάντα θα παράγει το ίδιο αποτέλεσμα (hash value).
  • Να είναι εύκολος ο υπολογισμός της εξόδου για οποιαδήποτε είσοδο.
  • Να μην είναι εφικτό να βρούμε την είσοδο από την έξοδο
  • Να μην γίνετε να αλλάξουμε την είσοδο χωρίς να αλλάξει η έξοδος
    Ακόμα κι αν κάνουμε μία μικρή αλλαγή στην είσοδο, οι αλλαγές που θα αντικατοπτρίζονται στο hash θα είναι τεράστιες
    (Παράδειγμα)

Το Cryptonomismata.com ειναι η καλυτερη σελιδα ενημερωσης για crypto στην Ελλαδα (
input) e4e3988b9aee767b23b0b00de8dcbd056fa9306d82408f10678c61f38e5fcddd (hash value)

Το Cryptonomismata.com ειναι η καλύτερη σελίδα ενημέρωσης για crypto στην Ελλάδα 
(input) bee287574fdf8d3ae783221c0f01063a8ed2e84b54c7851a6fdb11353f0db4d8 (hash value)
Εδώ παρόλο που μόλις αλλάξαμε μόνο τους τόνους στο μήνυμα εισόδου βλέπουμε πως επηρεάζεται όλη η hash έξοδος.

Το Blockchain είναι μία σειρά με Block (κύβους) που είναι συνδεδεμένα μεταξύ τους το ένα μετά το άλλο σαν μια τεράστια αλυσίδα που συνεχώς μεγαλώνει. Κάθε ένα από τα Block περιέχει δεδομένα και έναν Hash δείκτη που δείχνει το προηγούμενο Block δημιουργώντας έτσι την αλυσίδα. Ένας δείκτης Hash είναι παρόμοιος με έναν απλό δείκτη αλλά αντί μόνο να δείχνει το προηγούμενο Block περιέχει επίσης και όλα τα αρχεία του προηγουμένου Block σε hash μορφή. Αυτή η μικρή λεπτομέρεια καθιστά την Blockchain απίστευτα αξιόπιστη και καινοτόμο. Στο Blockchain το Hash χρησιμοποιείται για να καθορίσει τη συγκεκριμένη κατάσταση του Blockchain και να εξασφαλίσει την αμεταβλητότητα του. Κάθε συναλλαγή περιλαμβάνει κομμάτια από πληροφορίες όπως το χρηματικό ποσό που στάλθηκε, τη διεύθυνση που έγινε η αποστολή, τη χρονική στιγμή, καθώς και όλες τις πληροφορίες που συμμετείχαν στο να δημιουργηθεί η φόρμουλα για να παράγουν το hash value που λέγεται transaction id. Το transaction ID είναι ένα hash value που χρησιμοποιούμε για να επιβεβαιώσουμε ότι έγινε μία συναλλαγή.

Το πρώτο Block στο Blockchain γνωστό και ως Genesis Block περιέχει πληροφορίες που όταν συνδυάζονται παράγουν ένα μοναδικό hash value. Όταν το δεύτερο Block δημιουργείτε το hash value του Genesis Block προστίθεται σε αυτό μαζί με όλες τις νέες συναλλαγές και ο συνδυασμός τους δημιουργεί το επόμενο hash value, έτσι η αλυσίδα συνεχίζετε δημιουργώντας συνεχώς καινούργια Block, που περιέχουν όλες τις νέες πληροφορίες των συναλλαγών συν ένα hash το οποίο είναι ολόκληρο το προηγούμενο block.

Ας φανταστούμε για ένα λεπτό έναν hacker να επιτίθεται σε ένα Block με σκοπό να αλλάξει μονιμά τα δεδομένα της ιστορίας της αλυσίδας. Λόγω της ιδιότητας των hash λειτουργιών μία μικρή αλλαγή στα δεδομένα θα αλλάξει τελείως το hash value, που σημαίνει ότι οι αλλαγές που έγιναν στο Block θα πρέπει να αλλάξουν το hash value που αποθηκεύεται και στο προηγούμενο Block, που τώρα με τη σειρά πρέπει να αλλάξει και το προηγούμενο από αυτό Block μέχρι να φτάσει το Genesis Block ωστε να καταφέρει να αλλάξει τελείως όλη την αλυσίδα. Η παραπάνω διαδικασία είναι πρακτικά αδύνατη και αυτό ακριβώς αποτελεί τον τρόπο με τον οποίο το Blockchain πετυχαίνει το αμετάβλητο.

Παραδείγματα κρυπτογραφικόυ hash function
SHA 256: Παράγει 256-bit hash. Aυτό χρησιμοποιείται αυτή τη στιγμή για το Bitcoin.
Keccak-256: Παράγει 256-bit hash kai χρησιμοποιείται αυτή τη στιγμή για το Ethereum.

Τι είναι το hash rate

Η ταχύτητα του hash είναι επίσης σημαντικός παράγοντας, καθώς το hash function πρέπει να είναι γρήγορο στο να παράγει hash value. Στην ουσία το hash rate είναι το πόσο γρήγορα γίνονται οι hashing λειτουργείες. Κατά τη διάρκεια του Mining ένα μεγάλο hash rate σημαίνει ότι πολλοί άνθρωποι και μηχανές παίρνουν μέρος στη διαδικασία του Mining και σαν αποτέλεσμα το σύστημα τρέχει ομαλά. Εάν το hash rate είναι υπερβολικά μεγάλο σημαίνει ότι συμμετέχουν παραπάνω από όσοι χρειάζονται και η δυσκολία στο Mining αυξάνεται, έτσι αντίστοιχα όταν είναι μικρό η δυσκολία μειώνεται.

LEAVE A REPLY

Please enter your comment!
Please enter your name here