MultiChain 2.1: Μεταβλητές και βιβλιοθήκες

Κόμβος πηγής: 1587135

Κάνοντας τα Έξυπνα Φίλτρα πολύ πιο έξυπνα

Σήμερα, είμαστε στην ευχάριστη θέση να κυκλοφορήσουμε το MultiChain 2.1, με δύο σημαντικές νέες δυνατότητες για προγραμματιστές MultiChain.

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

Τα Έξυπνα φίλτρα διατίθενται σε δύο ποικιλίες - φίλτρα συναλλαγών και φίλτρα ροής. Ένα φίλτρο συναλλαγών επικυρώνει τις συναλλαγές στην αλυσίδα στο σύνολό τους, εξετάζοντας τις εισόδους, τις εξόδους και τα μεταδεδομένα τους. Εάν μια συναλλαγή δεν περάσει το φίλτρο, απορρίπτεται από κάθε κόμβο στο δίκτυο. Ένα φίλτρο ροής επικυρώνει μεμονωμένα στοιχεία που είναι γραμμένα στο α Ροή MultiChain, κοιτάζοντας τα κλειδιά τους, τους εκδότη και τα δεδομένα εντός ή εκτός αλυσίδας, σε JSON, κείμενο ή δυαδική μορφή. Εάν ένα στοιχείο δεν περάσει το φίλτρο, επισημαίνεται ως μη έγκυρο και τα δεδομένα του κρύβονται από κάθε κόμβο που είναι εγγεγραμμένος στη ροή.

Και οι δύο τύποι έξυπνων φίλτρων είναι γραμμένοι σε JavaScript και εκτελούνται σε μια ντετερμινιστική έκδοση της Google V8, η εξαιρετικά γρήγορη μηχανή JavaScript που τροφοδοτεί το Chrome, το Node.js και πολλές άλλες πλατφόρμες. Τα απλά φίλτρα είναι εύκολο να κωδικοποιηθούν και να κατανοηθούν - για παράδειγμα, εδώ είναι ένα φίλτρο ροής που επικυρώνει ότι τα στοιχεία έχουν τουλάχιστον δύο κλειδιά:

συνάρτηση filterstreamitem() { var item=getfilterstreamitem(); // συνάρτηση επανάκλησης εάν (item.keys.length2) επιστρέψει "Απαιτούνται τουλάχιστον δύο πλήκτρα". }

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

Δεύτερον, ορισμένοι προγραμματιστές θέλουν να χρησιμοποιήσουν ένα σύνολο συναρτήσεων JavaScript σε πολλαπλά φίλτρα, χωρίς αντίγραφο κώδικα. Θέλουν επίσης να μπορούν να ενημερώσουν αυτές τις λειτουργίες, να διορθώσουν ένα σφάλμα ή να καλύψουν κάποιες νέες καταστάσεις, χωρίς να απενεργοποιήσουν τα υπάρχοντα φίλτρα τους και να δημιουργήσουν νέα στη θέση τους. Για παράδειγμα, ο κοινόχρηστος κώδικας θα μπορούσε να περιέχει λογική για συγκεκριμένη εφαρμογή, μια βιβλιοθήκη τρίτου μέρους για την επικύρωση JSON ή την ανάλυση των περιεχομένων ενός PDF.

MultiChain 2.1 εισάγει δύο νέους τύπους οντοτήτων on-chain, μεταβλητές και βιβλιοθήκες, για να ανταποκριθούν σε αυτές τις ανάγκες.

Μεταβλητές

Ας ξεκινήσουμε με τις μεταβλητές MultiChain. Αυτά λειτουργούν αρκετά όπως εκείνα στις κανονικές γλώσσες προγραμματισμού, αλλά με μια συστροφή της αλυσίδας μπλοκ. Οποιοσδήποτε αριθμός ονομασμένων μεταβλητών μπορεί να δημιουργηθεί στο blockchain. Κάθε μεταβλητή έχει ένα δυναμικό σύνολο διευθύνσεων που επιτρέπεται να ενημερώνει την τιμή της και αυτό το σύνολο διαχειρίζεται ένας ή περισσότεροι διαχειριστές μεταβλητών (από προεπιλογή, μόνο ο δημιουργός της μεταβλητής). Οι μεταβλητές δημιουργούνται ή ενημερώνονται σε μια συναλλαγή blockchain, η οποία μπορεί να σταλεί χρησιμοποιώντας μια απλή εντολή API υψηλού επιπέδου. Εναλλακτικά, τα API χαμηλότερου επιπέδου μπορούν να χρησιμοποιηθούν για τη δημιουργία σύνθετων συναλλαγών που ορίζουν ατομικά μία ή περισσότερες μεταβλητές, γράφουν στοιχεία ροής, μεταφέρουν στοιχεία, αλλάζουν δικαιώματα και ούτω καθεξής.

Η ίδια η τιμή της μεταβλητής μπορεί να περιέχει οποιαδήποτε δομή JSON, συμπεριλαμβανομένων αριθμών, συμβολοσειρών, booleans, ένθετων αντικειμένων και πινάκων, και αποθηκεύεται στην αλυσίδα στην αποδοτική UBJSON μορφή σειριοποίησης. Φυσικά, τα Έξυπνα φίλτρα μπορούν να ρωτήσουν την τρέχουσα τιμή μιας μεταβλητής χρησιμοποιώντας μια απλή λειτουργία επανάκλησης. Επειδή όμως πρόκειται για blockchain, το πλήρες ιστορικό των τιμών και των εγγραφών της μεταβλητής είναι επίσης διαθέσιμο και μπορεί να ανακτηθεί εν μέρει ή πλήρως χρησιμοποιώντας μια άλλη συνάρτηση επανάκλησης. Για να γίνει ευκολότερη η ανάπτυξη, αυτές οι επανακλήσεις είναι επίσης διαθέσιμες μέσω του API που αντιμετωπίζει την εφαρμογή.

βιβλιοθήκες

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

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

Ο κώδικας για μια βιβλιοθήκη είναι γραμμένος σε κανονική JavaScript και ορίζει μία ή περισσότερες συναρτήσεις για χρήση των Έξυπνων Φίλτρων. Όπως και με τις μεταβλητές, οι βιβλιοθήκες δημιουργούνται ή ενημερώνονται σε μια ειδική συναλλαγή, η οποία αποστέλλεται εύκολα χρησιμοποιώντας το API. Όταν δημιουργείται ένα Έξυπνο Φίλτρο, οι απαιτούμενες βιβλιοθήκες του παρέχονται στη συνέχεια σε μια προαιρετική παράμετρο. Μια βιβλιοθήκη εκτελείται πάντα στο πλαίσιο του φίλτρου που το απαιτεί, έτσι ώστε να μπορεί να χρησιμοποιήσει τις επανακλήσεις του Έξυπνου φίλτρου όπου χρειάζεται. Το MultiChain παρέχει εκτεταμένη λειτουργικότητα για τη δοκιμή (και την επαναφορά) των βιβλιοθηκών και τις ενημερώσεις τους τοπικά, πριν πραγματοποιήσετε μια αλλαγή στο blockchain.

Τυλίξτε το

Όπως συμβαίνει με όλες τις δυνατότητες που σχετίζονται με τους κανόνες του blockchain, οι μεταβλητές και οι βιβλιοθήκες είναι διαθέσιμες τόσο στην Community όσο και στην έκδοση Enterprise του MultiChain 2.1. Η τεκμηρίωση προγραμματιστή μας παρέχει μια λεπτομερή περιγραφή του νέου JSON-RPC API και Επιστροφές κλήσεων Smart Filter διαθέσιμος. Για να χρησιμοποιήσετε τις νέες δυνατότητες σε ένα blockchain που εκτελείται ήδη, πρώτα μεταφέρετε τους κόμβους στο MultiChain 2.1 και, στη συνέχεια, αναβάθμισης το πρωτόκολλο της αλυσίδας στην έκδοση 20012.

Λοιπόν τι ακολουθεί? Τους επόμενους μήνες, θα επικεντρωθούμε σε κάποια λεπτομερή και έντονη εργασία κάτω από την κουκούλα, για να βελτιώσουμε την απόδοση και τη συγχρονικότητα του MultiChain ενώ είναι υπό σημαντικό φορτίο. Αυτό θα αυξήσει την ανταπόκριση των εφαρμογών που πρέπει να ρωτήσουν έναν κόμβο ενώ συνεχίζει να επεξεργάζεται εκατοντάδες ή χιλιάδες νέες συναλλαγές ανά δευτερόλεπτο.

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

Παρακαλώ δημοσιεύστε τυχόν σχόλια στο LinkedIn.

Σφραγίδα ώρας:

Περισσότερα από Πολλαπλές αλυσίδες