Ανακοινώνουμε το νέο πορτοφόλι MultiChain PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ανακοινώνοντας το νέο πορτοφόλι MultiChain

Ένα σημαντικό βήμα προς τα εμπρός για απόδοση και επεκτασιμότητα

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

Πριν αναφερθούμε στις λεπτομέρειες, επιτρέψτε μου να σας δώσω κάποιο πλαίσιο. Όταν ξεκινήσαμε την ανάπτυξη του MultiChain, πήραμε την απόφαση να το χρησιμοποιήσουμε Bitcoin Core, ο τυπικός κόμβος για το δημόσιο δίκτυο bitcoin, ως αφετηρία. Σε όρους προγραμματισμού, αυτό σημαίνει ότι το MultiChain είναι ένα «πιρούνι» του λογισμικού bitcoin. Ο πρωταρχικός μας λόγος ήταν ότι το bitcoin ήταν (και συνεχίζει να είναι) το υψηλότερο αποτιθέμενο και δοκιμασμένο με μάχη οικοσύστημα κρυπτογράφησης, με κάποιον τρόπο.

Από την άλλη πλευρά, αυτή η απόφαση μας βοήθησε να φτάσουμε στην αγορά γρήγορα, σε σύγκριση με την κωδικοποίηση ενός κόμβου blockchain από το μηδέν. Παρά τις πολλές διαφορές μεταξύ δημόσιων και ιδιωτικών blockchain, μοιράζονται μεγάλο τεχνικό κοινό έδαφος, όπως το πρωτόκολλο peer-to-peer, η δομή συναλλαγών και μπλοκ, η δημιουργία και επαλήθευση ψηφιακών υπογραφών, οι κανόνες συναίνεσης, η βασική διαχείριση και η ανάγκη για API κόμβου. Το Forking από το Bitcoin Core μας επέτρεψε να αξιοποιήσουμε την ωριμότητά του και να επικεντρωθούμε σε αυτό που προσθέτει το MultiChain στα blockchains - διαμόρφωση, άδεια και υποστήριξη εγγενών στοιχείων. Ως αποτέλεσμα, μπορέσαμε να κυκλοφορήσουμε το πρώτο άλφα τον Ιούνιο του 2015, μόλις 6 μήνες μετά την έναρξη της ανάπτυξης.

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

Το πορτοφόλι του Bitcoin Core

Το «πορτοφόλι» στο Bitcoin Core ήταν πάντα το πιο σημαντικό από αυτά τα σημεία πόνου. Η δουλειά του είναι να αποθηκεύει τις συναλλαγές που έχουν ιδιαίτερη σχέση με τον κόμβο, επειδή περιλαμβάνουν μια διεύθυνση blockchain που κατέχει ή «μόνο για παρακολούθησηΔιεύθυνση της οποίας τη δραστηριότητα παρακολουθεί. Για παράδειγμα, κάθε συναλλαγή που στέλνει χρήματα προς ή από έναν κόμβο πρέπει να αποθηκεύεται στο πορτοφόλι αυτού του κόμβου. Και κάθε φορά που ένας κόμβος δημιουργεί μια συναλλαγή, πρέπει να αναζητά μία ή περισσότερες "μη χρησιμοποιημένες εξόδους" προηγούμενων συναλλαγών πορτοφολιού τις οποίες θα δαπανήσει η νέα συναλλαγή.

Τι συμβαίνει λοιπόν με το πορτοφόλι που κληρονομήσαμε από το Bitcoin Core; Στην πραγματικότητα, τρία πράγματα:

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

Η συνέπεια είναι ότι, με περίπου 20,000 συναλλαγές αποθηκευμένες, το πορτοφόλι του Bitcoin Core επιβραδύνεται σημαντικά. Μετά από 200,000 περίπου, σταματάει σχεδόν. Ακόμα χειρότερα, δεδομένου ότι ένα blockchain MultiChain επιτρέπει έως 8 MB μεταδεδομένων ανά συναλλαγή (σε σύγκριση με τα 80 bytes του bitcoin), οι απαιτήσεις μνήμης του πορτοφολιού μπορούν να αναπτυχθούν γρήγορα ακόμα και με μικρό αριθμό συναλλαγών.

Είναι σημαντικό να διευκρινιστεί ότι αυτές οι αδυναμίες ισχύουν μόνο για τα Bitcoin Core πορτοφόλι, παρά τη γενική ικανότητα επεξεργασίας συναλλαγών. Με άλλα λόγια, μπορεί να επεξεργαστεί και να αποθηκεύσει άνετα εκατομμύρια (ή ακόμη και δισεκατομμύρια) συναλλαγών που δεν σχετίζονται με τις δικές του διευθύνσεις, καθώς αυτές πραγματοποιούνται σε δίσκο και όχι στη μνήμη. Για παράδειγμα, πολλά δημοφιλή ανταλλακτικά και πορτοφόλια bitcoin χρησιμοποιούν το Bitcoin Core ως έχει, αλλά αποθηκεύουν τις δικές τους συναλλαγές εξωτερικά και όχι μέσα στον κόμβο.

Το νέο πορτοφόλι του MultiChain

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

Πώς διαφέρει το νέο πορτοφόλι; Αν έχετε εμπειρία με βάσεις δεδομένων, οι απαντήσεις μπορεί να είναι προφανείς:

  • Αντί να διατηρούν τις συναλλαγές πορτοφολιού στη μνήμη, αποθηκεύονται σε δίσκο σε κατάλληλη μορφή, με συναλλαγές ενδιαφέροντος που ανακτώνται όταν είναι απαραίτητο.
  • Αντί να εκτελούν πλήρη σάρωση πορτοφολιών, οι συναλλαγές "ευρετηριάζονται" με διάφορους τρόπους για να επιτρέψουν σε αυτές που πληρούν συγκεκριμένα κριτήρια να εντοπίζονται γρήγορα.
  • Τυχόν μεταδεδομένα συναλλαγών που είναι μεγαλύτερα από 256 byte δεν αποθηκεύονται στο πορτοφόλι. Αντ 'αυτού, το πορτοφόλι περιέχει ένα δείκτη στη θέση αυτών των μεταδεδομένων στο ίδιο το blockchain.

Με άλλα λόγια, έχουμε ξαναχτίσει το πορτοφόλι εντός κόμβου ώστε να βασίζεται σωστά στη βάση δεδομένων (χρησιμοποιώντας LevelDB), αντί να βασίζεστε σε μια αφελής δομή στη μνήμη που δεν μπορεί να αναζητηθεί αποτελεσματικά. Δεν προκαλεί έκπληξη, η διαφορά (όπως μετράται σε Intel Core i3.4 7 GHz) είναι μάλλον δραματική:

Απόδοση συναλλαγών πορτοφολιού MultiChain

Χρήση μνήμης

Τα γραφήματα δείχνουν ότι, όταν το παλιό πορτοφόλι περιέχει 250,000 συναλλαγές, το ποσοστό αποστολής του μειώνεται στα 3 tx / sec και προσθέτει 600 MB στη χρήση μνήμης του κόμβου. Αντίθετα, το νέο πορτοφόλι διατηρεί πάνω από 100 tx / sec και προσθέτει μόνο 90 ​​MB. Σταματήσαμε να δοκιμάζουμε το παλιό πορτοφόλι σε αυτό το σημείο, αλλά ακόμα και με 6-8 εκατομμύρια αποθηκευμένες συναλλαγές, το νέο πορτοφόλι συνεχίζει να στέλνει πάνω από 100 tx / sec και ξεπερνά τα 250 MB μνήμης RAM που χρησιμοποιείται (λόγω της προσωρινής αποθήκευσης βάσης δεδομένων).

Αυτές οι δοκιμές πραγματοποιήθηκαν υπό ρεαλιστικές συνθήκες, με πολλαπλές διευθύνσεις και στοιχεία (και συνεπώς πολλές μη χρησιμοποιημένες συναλλαγές) στο πορτοφόλι του κόμβου. Σε ένα εξιδανικευμένο σενάριο (μία διεύθυνση, ένα στοιχείο, λίγα UTXOs), το σταθερό ποσοστό αποστολής ήταν πάνω από 400 tx / s. Είτε έτσι είτε αλλιώς, ως μέρος αυτής της επανεγγραφής, αφαιρέσαμε επίσης σωστά όλες τις λειτουργίες του πορτοφολιού πίσω από μια καθαρή εσωτερική διεπαφή. Αυτό θα διευκολύνει την υποστήριξη άλλων μηχανών βάσης δεδομένων στο μέλλον, για ακόμη μεγαλύτερη αντοχή και ταχύτητα.

Για να το επαναλάβω, όλοι αυτοί οι αριθμοί αναφέρονται στο ρυθμό με τον οποίο ένας κόμβος μπορεί να δημιουργήσει, να στείλει και να αποθηκεύσει συναλλαγές στο τοπικό του πορτοφόλι, αντί για την απόδοσή του όσον αφορά την επεξεργασία συναλλαγών που δημιουργούνται από άλλους. Για γενική απόδοση δικτύου, το MultiChain μπορεί επί του παρόντος να επεξεργαστεί 200 έως 800 tx / sec, ανάλογα με το υλικό στο οποίο λειτουργεί. (Να είστε δύσπιστοι για οποιοδήποτε λογισμικό blockchain υπόσχεται αριθμούς, όπως 100,000 tx / sec σε κανονικό υλικό, επειδή το σημείο συμφόρησης είναι επαλήθευση ψηφιακής υπογραφής, η οποία απαιτεί πραγματικό χρόνο για να εκτελεστεί. Εάν οι κόμβοι δεν επαληθεύουν μεμονωμένες υπογραφές συναλλαγών, ένα blockchain δεν είναι πιθανό να χρησιμοποιηθεί σε όλη την εμπιστοσύνη όρια, καθιστώντας το καλύτερο από μια κανονική κατανεμημένη βάση δεδομένων.)

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

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

Τεχνική προσθήκη

Ξεκινώντας από το MultiChain alpha 22, μπορείτε να επαληθεύσετε ποια έκδοση του πορτοφολιού εκτελείται αυτήν τη στιγμή εξετάζοντας το walletdbversion πεδίο του getinfo or getwalletinfo Κλήσεις API. Μια τιμή του 1 σημαίνει το αρχικό πορτοφόλι Bitcoin Core και 2 σημαίνει το νέο πορτοφόλι MultiChain.

Εάν εκτελέσετε τη νέα έκδοση του MultiChain σε μια υπάρχουσα αλυσίδα, δεν θα αλλάξει αμέσως στο νέο πορτοφόλι. Μπορείτε να αναβαθμίσετε το πορτοφόλι σταματώντας τον κόμβο και στη συνέχεια εκτελέστε ξανά multichaind με τις παραμέτρους -walletdbversion=2 –rescan. Μπορείτε να υποβαθμίσετε παρόμοια χρήση –walletdbversion=1 –rescan.

Από προεπιλογή, όταν ξεκινάτε έναν κόμβο σε μια νέα αλυσίδα, θα χρησιμοποιεί αυτόματα το νέο πορτοφόλι. Μπορείτε να το αλλάξετε τρέχοντας multichaind για πρώτη φορά με την παράμετρο –walletdbversion=1.

Με το νέο πορτοφόλι, όλα API πολλαπλών αλυσίδων λειτουργούν ακριβώς με τον ίδιο τρόπο όπως πριν, με εξαίρεση τα παλιά API ερωτημάτων συναλλαγών getreceivedbyaddress, listreceivedbyaddress και listtransactions (χρήση listwallettransactions or listaddresstransactions αντι αυτου). Επιπλέον, το νέο πορτοφόλι δεν υποστηρίζει κλήσεις και παραμέτρους API που σχετίζονται με τον μηχανισμό «λογαριασμών» του Bitcoin Core που δεν έχει εφαρμοστεί καλά και πρόκειται να καταργηθεί σύντομα, ο οποίος δεν υποστηρίχθηκε ποτέ σωστά από το MultiChain. Αυτές οι κλήσεις απενεργοποιούνται με ασφάλεια με ένα μήνυμα σφάλματος.

Πηγή: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

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

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