Αναπτύξτε λογισμικό για αποκεντρωμένη ενοικίαση σκούτερ. Ποιος είπε ότι θα ήταν εύκολο;

Σε αυτό το άρθρο θα μιλήσω για το πώς προσπαθήσαμε να δημιουργήσουμε αποκεντρωμένη ενοικίαση σκούτερ με έξυπνα συμβόλαια και γιατί χρειαζόμασταν ακόμα μια κεντρική υπηρεσία.

Αναπτύξτε λογισμικό για αποκεντρωμένη ενοικίαση σκούτερ. Ποιος είπε ότι θα ήταν εύκολο;

Πώς ξεκίνησαν όλα

Τον Νοέμβριο του 2018, πήραμε μέρος σε ένα hackathon αφιερωμένο στο Διαδίκτυο των Πραγμάτων και στο blockchain. Η ομάδα μας επέλεξε την κοινή χρήση σκούτερ ως ιδέα μιας και είχαμε ένα σκούτερ από τον χορηγό αυτού του hackathon. Το πρωτότυπο έμοιαζε με μια εφαρμογή για κινητά που σας επιτρέπει να ξεκινήσετε ένα σκούτερ μέσω NFC. Από την άποψη του μάρκετινγκ, η ιδέα υποστηρίχθηκε από μια ιστορία για ένα «λαμπρό μέλλον» με ένα ανοιχτό οικοσύστημα όπου ο καθένας μπορεί να γίνει ενοικιαστής ή ιδιοκτήτης, όλα βασισμένα σε έξυπνα συμβόλαια.

Αυτή η ιδέα άρεσε πολύ στους μετόχους μας και αποφάσισαν να τη μετατρέψουν σε πρωτότυπο για προβολή σε εκθέσεις. Μετά από αρκετές επιτυχημένες επιδείξεις στο Mobile World Congress και το Bosch Connected World το 2019, αποφασίστηκε να δοκιμαστεί η ενοικίαση σκούτερ με πραγματικούς χρήστες, υπαλλήλους της Deutsche Telekom. Έτσι ξεκινήσαμε να αναπτύσσουμε ένα πλήρες MVP.

Blockchain σε πατερίτσες

Δεν νομίζω ότι αξίζει να εξηγήσω ποια είναι η διαφορά μεταξύ ενός έργου που θα προβληθεί στη σκηνή και ενός που θα χρησιμοποιηθεί από πραγματικούς ανθρώπους. Σε έξι μήνες έπρεπε να μετατρέψουμε το ακατέργαστο πρωτότυπο σε κάτι κατάλληλο για πιλότο. Και τότε καταλάβαμε τι σημαίνει «πόνος».

Για να κάνουμε το σύστημά μας αποκεντρωμένο και ανοιχτό, αποφασίσαμε να χρησιμοποιήσουμε έξυπνα συμβόλαια Ethereum. Η επιλογή έπεσε σε αυτήν την πλατφόρμα αποκεντρωμένων διαδικτυακών υπηρεσιών λόγω της δημοτικότητάς της και της δυνατότητας δημιουργίας μιας εφαρμογής χωρίς διακομιστή. Σχεδιάσαμε να υλοποιήσουμε το έργο μας ως εξής.

Αναπτύξτε λογισμικό για αποκεντρωμένη ενοικίαση σκούτερ. Ποιος είπε ότι θα ήταν εύκολο;

Όμως, δυστυχώς, ένα έξυπνο συμβόλαιο είναι ένας κώδικας που εκτελείται από μια εικονική μηχανή τη στιγμή της συναλλαγής και δεν μπορεί να αντικαταστήσει έναν πλήρη διακομιστή. Για παράδειγμα, ένα έξυπνο συμβόλαιο δεν μπορεί να εκτελέσει εκκρεμείς ή προγραμματισμένες ενέργειες. Στο έργο μας, αυτό δεν μας επέτρεψε να εφαρμόσουμε μια υπηρεσία ενοικίασης ανά λεπτό, όπως κάνουν οι περισσότερες σύγχρονες υπηρεσίες κοινής χρήσης αυτοκινήτων. Επομένως, χρεώσαμε το κρυπτονόμισμα από τον χρήστη μετά την ολοκλήρωση της συναλλαγής χωρίς να είμαστε σίγουροι ότι είχε αρκετά χρήματα. Αυτή η προσέγγιση είναι αποδεκτή μόνο για έναν εσωτερικό πιλότο και, φυσικά, προσθέτει προβλήματα κατά το σχεδιασμό ενός ολοκληρωμένου έργου παραγωγής.

Σε όλα τα παραπάνω προστίθεται και η υγρασία της ίδιας της πλατφόρμας. Για παράδειγμα, εάν γράψετε ένα έξυπνο συμβόλαιο με λογική διαφορετική από τα διακριτικά ERC-20, θα αντιμετωπίσετε προβλήματα χειρισμού σφαλμάτων. Συνήθως, εάν η εισαγωγή είναι λανθασμένη ή οι μέθοδοί μας δεν λειτουργούν σωστά, λαμβάνουμε έναν κωδικό σφάλματος ως απάντηση. Στην περίπτωση του Ethereum, δεν μπορούμε να πάρουμε τίποτα άλλο εκτός από την ποσότητα αερίου που δαπανάται για την εκτέλεση αυτής της λειτουργίας. Το φυσικό αέριο είναι ένα νόμισμα που πρέπει να πληρωθεί για συναλλαγές και υπολογισμούς: όσο περισσότερες πράξεις στον κωδικό σας, τόσο περισσότερα θα πληρώσετε. Για να καταλάβετε λοιπόν γιατί ο κωδικός δεν λειτουργεί, πρώτα τον δοκιμάζετε προσομοιώνοντας όλα τα πιθανά σφάλματα και κωδικοποιείτε το αέριο που καταναλώθηκε ως κωδικό σφάλματος. Αλλά αν αλλάξετε τον κωδικό σας, αυτός ο χειρισμός σφαλμάτων θα σπάσει.

Επιπλέον, είναι σχεδόν αδύνατο να δημιουργήσετε μια εφαρμογή για κινητά που να λειτουργεί ειλικρινά με το blockchain, χωρίς να χρησιμοποιήσετε ένα κλειδί που είναι αποθηκευμένο κάπου στο cloud. Αν και υπάρχουν τίμια πορτοφόλια, δεν παρέχουν διεπαφές για την υπογραφή εξωτερικών συναλλαγών. Αυτό σημαίνει ότι δεν θα δείτε μια εγγενή εφαρμογή εκτός και αν έχει ενσωματωμένο κρυπτογραφικό πορτοφόλι, το οποίο οι χρήστες θα έχουν ελάχιστη εμπιστοσύνη (δεν θα το εμπιστευόμουν). Ως αποτέλεσμα, έπρεπε επίσης να κόψουμε μια γωνία εδώ. Τα έξυπνα συμβόλαια παραδόθηκαν στο ιδιωτικό δίκτυο Ethereum και το πορτοφόλι βασίστηκε σε σύννεφο. Ωστόσο, παρά το γεγονός αυτό, οι χρήστες μας βίωσαν όλες τις «χαρές» των αποκεντρωμένων υπηρεσιών με τη μορφή μακράς αναμονής για συναλλαγές πολλές φορές ανά περίοδο ενοικίασης.

Όλα αυτά μας οδηγούν σε αυτή την αρχιτεκτονική. Συμφωνώ, είναι πολύ διαφορετικό από αυτό που σχεδιάζαμε.

Αναπτύξτε λογισμικό για αποκεντρωμένη ενοικίαση σκούτερ. Ποιος είπε ότι θα ήταν εύκολο;

Άσσος στην τρύπα: Αυτοκυρίαρχη Ταυτότητα

Δεν μπορείς να οικοδομήσεις ένα εντελώς αποκεντρωμένο σύστημα χωρίς αποκεντρωμένη ταυτότητα. Η Self-Sovereign Identity (SSI) είναι υπεύθυνη για αυτό το μέρος, η ουσία του οποίου είναι ότι πετάτε έξω τον κεντρικό πάροχο ταυτότητας (IDP) και διανέμετε όλα τα δεδομένα και την ευθύνη για αυτό στους ανθρώπους. Τώρα ο χρήστης αποφασίζει ποια δεδομένα χρειάζεται και με ποιον θα τα μοιραστεί. Όλες αυτές οι πληροφορίες βρίσκονται στη συσκευή του χρήστη. Αλλά για την ανταλλαγή θα χρειαστούμε ένα αποκεντρωμένο σύστημα για την αποθήκευση κρυπτογραφικών στοιχείων. Όλες οι σύγχρονες υλοποιήσεις της ιδέας SSI χρησιμοποιούν blockchain ως αποθήκευση.

«Τι σχέση έχει αυτό με τον άσο στην τρύπα;» - εσύ ρωτάς. Ξεκινήσαμε την υπηρεσία για εσωτερικές δοκιμές σε δικούς μας υπαλλήλους στο Βερολίνο και τη Βόννη και αντιμετωπίσαμε δυσκολίες με τη μορφή γερμανικών συνδικαλιστικών οργανώσεων. Στη Γερμανία, απαγορεύεται στις εταιρείες να παρακολουθούν τις μετακινήσεις των εργαζομένων και αυτό ελέγχουν τα συνδικάτα. Αυτοί οι περιορισμοί θέτουν τέλος στην κεντρική αποθήκευση δεδομένων ταυτότητας χρήστη, καθώς σε αυτήν την περίπτωση θα γνωρίζαμε την τοποθεσία των εργαζομένων. Ταυτόχρονα, δεν μπορούσαμε να μην τα ελέγξουμε λόγω της πιθανότητας κλοπής σκούτερ. Όμως, χάρη στο Self-Sovereign Identity, οι χρήστες μας χρησιμοποίησαν το σύστημα ανώνυμα και το ίδιο το σκούτερ έλεγξε την άδεια οδήγησης πριν από την έναρξη της ενοικίασης. Ως αποτέλεσμα, αποθηκεύσαμε μετρήσεις ανώνυμων χρηστών· δεν είχαμε έγγραφα ή προσωπικά δεδομένα: περιέχονταν όλα στις συσκευές των ίδιων των προγραμμάτων οδήγησης. Έτσι, χάρη στην SSI, η λύση του προβλήματος στο έργο μας ήταν έτοιμη ακόμη και πριν εμφανιστεί.

Η συσκευή μου δημιούργησε προβλήματα

Δεν εφαρμόσαμε εμείς οι ίδιοι την Αυτοκυρίαρχη Ταυτότητα, καθώς απαιτεί εξειδίκευση στην κρυπτογραφία και πολύ χρόνο. Αντίθετα, εκμεταλλευτήκαμε το προϊόν της Jolocom των συνεργατών μας και ενσωματώσαμε το κινητό πορτοφόλι και τις υπηρεσίες τους στην πλατφόρμα μας. Δυστυχώς, αυτό το προϊόν έχει ένα σημαντικό μειονέκτημα: η κύρια γλώσσα ανάπτυξης είναι η Node.js.

Αυτή η στοίβα τεχνολογίας περιορίζει σημαντικά την επιλογή υλικού ενσωματωμένου στο σκούτερ. Ευτυχώς, στην αρχή του έργου, επιλέξαμε το Raspberry Pi Zero και εκμεταλλευτήκαμε όλα τα πλεονεκτήματα ενός πλήρους μικροϋπολογιστή. Αυτό μας επέτρεψε να τρέξουμε το ογκώδες Node.js στο σκούτερ. Επιπλέον, λάβαμε παρακολούθηση και απομακρυσμένη πρόσβαση μέσω VPN χρησιμοποιώντας έτοιμα εργαλεία.

Εν κατακλείδι

Παρά τον «πόνο» και τα προβλήματα, το έργο ξεκίνησε. Δεν λειτουργούσαν όλα όπως σχεδιάζαμε, αλλά ήταν πραγματικά δυνατό να οδηγήσετε σκούτερ νοικιάζοντάς τα.

Ναι, κάναμε πολλά λάθη κατά το σχεδιασμό της αρχιτεκτονικής που δεν μας επέτρεψαν να κάνουμε την υπηρεσία εντελώς αποκεντρωμένη, αλλά ακόμη και χωρίς αυτά τα λάθη δύσκολα θα μπορούσαμε να δημιουργήσουμε μια πλατφόρμα χωρίς διακομιστή. Είναι άλλο πράγμα να γράφεις μια άλλη κρυπτο-πυραμίδα και πολύ άλλο να γράφεις μια ολοκληρωμένη υπηρεσία στην οποία πρέπει να χειρίζεσαι σφάλματα, να επιλύεις οριακές υποθέσεις και να εκτελείς εργασίες σε εκκρεμότητα. Ας ελπίσουμε ότι οι νέες πλατφόρμες που προέκυψαν πρόσφατα θα είναι πιο ευέλικτες και λειτουργικές.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο