Στη σημερινή εποχή, ελάχιστα είναι τα πράγματα που βασανίζουν το μυαλό ενός προγραμματιστή. Τα κυριότερα από αυτά είναι :
- Είναι ασφαλή τα δεδομένα στις εφαρμογές που γράφω;
- Does it scale?
Στο συγκεκριμένο post θα ασχοληθούμε με το πρώτο θέμα, καθώς εδώ και αρκετό διάστημα, ως εταιρία έχουμε μπεί στη διαδικασία σχεδιασμού και υλοποίησης εφαρμογών “Smart City”. Οι περισσότερες λειτουργίες έχουν να κάνουν με τη μεταφορά δεδομένων απο IoT Sensors πάνω απο δίκτυο κινητής τηλεφωνίας και συγκεκριμένα το πρωτόκολλο Narrowband (NB-IoT).
Στο παρελθόν, η καταγραφή των δεδομένων γινόταν χειροκίνητα, οπότε η ευθύνη για την αξιοπιστία των δεδομένων έπεφτε στο ανθρώπινο δυναμικό που ήταν υπεύθυνο για την καταγραφή και την καταχώριση των δεδομένων.
Πλέον τα δεδομένα έχουν αλλάξει, καθώς αυτή η διαδικασία μπορεί να αυτοματοποιηθεί.
Για παράδειγμα, η καταγραφή κατανάλωσης από υδρόμετρα γίνεται αυτόματα και απομακρυσμένα με τα δεδομένα να καταλήγουν σε μία βάση και τα οποία στη συνέχεια θα περάσουν σε κάποιο διαχειριστικό σύστημα για τιμολόγηση και περαιτέρω επεξεργασία.
Κατά την τεχνική ανάλυση, σταθήκαμε αρκετά στον τρόπο της μεταφοράς και της αποθήκευσης των δεδομένων, καθώς τεχνικά υπάρχουν αρκετοί τρόποι να μεταβάλει κάποιος τις τιμές κατά την μεταφορά τους από τον αισθητήρα στον server ή μετά την καταχώριση στη βάση δεδομένων.
Τι γίνεται, για παράδειγμα, αν κατά τη μεταφορά των δεδομένων υπάρξει παρέμβαση στις μετρήσεις του υδρομέτρου με σκοπό την χαμηλότερη τιμολόγηση του καταναλωτή ή αν ο υπάλληλος κάποιας υπηρεσίας αποφασίσει να τροποποιήσει αυτά τα στοιχεία;
Την λύση εδώ δίνει η τεχνολογία Blockchain. Η τεχνολογία έγινε γνωστή απο τα ψηφιακά νομίσματα όπως το BitCoin. Φυσικά το Blockchain δεν είναι το BitCoin, το οποίο προκύπτει από την εφαρμογή της τεχνολογίας blockchain πάνω στις βασικές αρχές του τραπεζικού συστήματος για αποκεντρωμένες συναλλαγές.
Δεν θα μπούμε σε σύνθετες τεχνικές αναλύσεις σχετικά με το Bitcoin, θα περιγραψουμε απλά τις βασικές αρχές και την εφαρμογή του πάνω στις πλατφόρμες μας.
Τι είναι λοιπόν το Blockchain και πώς εξασφαλίζει την ακαιραιότητα των στοιχείων μας;
Το Blockchain λειτουργεί σε γενικές γραμμές όπως μια αλυσίδα απο εγγραφές δεδομένων, με κάθε κρίκο να γνωρίζει μόνο την προηγούμενη και την επόμενη εγγραφή. Κάθε εγγραφή στηρίζεται στα δεδομένα της και σε δεδομένα άλλων εγγραφών. Συνδυαστικά παράγεται για αυτήν ενα μοναδικό hash το οποίο λειτουργεί ως “δαχτυλικό” αποτύπωμα. Αν τροποποιηθεί οποιαδήποτε πληροφορία, ο αλγόριθμος επαλήθευσης αποτυγχάνει και η εγγραφή βγαίνει άκυρη.
Από τη στιγμή που ένα block προστεθεί στην αλυσίδα, δεν μπορεί να τροποποιηθεί.
Ας δούμε ένα, “φιλικό” στο μάτι, κομμάτι κώδικα στο οποίο προσθέτουμε δύο εγγραφές στο Blockchain μας, με αριθμό εγγραφής, timestamp και φυσικά την καταμέτρηση του αισθητήρα.
Στη συνέχεια ρωτάμε αν η εγγραφή είναι ακέραια και φυσικά παίρνουμε την απάντηση true (αληθές).
Τροποποιούμε τον αριθμό της καταμέτρησης σε μία εγγραφή και ρωτάμε ξανά για την ακεραιότητα της εγγραφής, για να λάβουμε αρνητική απάντηση.
Φυσικά, αυτό το απλό παράδειγμα, περιγράφει ένα υπαρκτό πρόβλημα και τις βασικές αρχές του blockchain που εφαρμόζουμε για την επίλυσή του και δεν περιγράφει την πραγματική εφαρμογή της τεχνολογίας που κάνουμε χρήση στις πλατφόρμες μας, καθώς αυτή περιλαμβάνει σύνθετη κρυπτογράφηση κατά τη μεταφορά και την καταγραφή των δεδομένων από τους αισθητήρες προς τους servers μας.