Ankündigung der neuen MultiChain Wallet PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Ankündigung der neuen MultiChain-Brieftasche

Ein wichtiger Schritt vorwärts für Leistung und Skalierbarkeit

Nach zwei Monaten intensiver Entwicklung und Tests sind wir stolz darauf, das neueste Alpha von MultiChain mit einer komplett neu geschriebenen In-Node-Brieftasche zu veröffentlichen. Diese neue Brieftasche verändert die Leistung und Skalierbarkeit beim Erstellen, Empfangen und Speichern von Transaktionen in MultiChain.

Bevor wir auf die Details eingehen, möchte ich einen Kontext angeben. Als wir mit der Entwicklung von MultiChain begannen, haben wir uns für die Verwendung entschieden Bitcoin Core, der Standardknoten für das öffentliche Bitcoin-Netzwerk, als Ausgangspunkt. In Bezug auf die Programmierung bedeutet dies, dass MultiChain eine „Gabel“ der Bitcoin-Software ist. Unsere Hauptargumentation war, dass Bitcoin in gewisser Weise das am höchsten bewertete und am meisten kampferprobte Kryptowährungs-Ökosystem war (und bleibt).

Auf der positiven Seite hat uns diese Entscheidung geholfen, schnell auf den Markt zu kommen, verglichen mit der Codierung eines Blockchain-Knotens von Grund auf neu. Trotz der vielen Unterschiede zwischen öffentlichen und privaten Blockchains teilen sie eine große Menge technischer Gemeinsamkeiten, einschließlich des Peer-to-Peer-Protokolls, der Transaktions- und Blockstruktur, der Erstellung und Überprüfung digitaler Signaturen, der Konsensregeln, der Schlüsselverwaltung und der Notwendigkeit eine Knoten-API. Durch das Forken von Bitcoin Core konnten wir seine Reife nutzen und uns auf das konzentrieren, was MultiChain zu Blockchains hinzufügt - Konfigurierbarkeit, Berechtigung und native Asset-Unterstützung. Infolgedessen konnten wir das erste Alpha im Juni 2015, nur 6 Monate nach Beginn der Entwicklung, veröffentlichen.

Neben diesen Vorteilen mussten wir jedoch auch die Tatsache akzeptieren, dass einige Aspekte von Bitcoin Core schlecht strukturiert sind. Während sie in kleinen Maßstäben einwandfrei funktionieren, nimmt ihre Leistung mit zunehmender Nutzung dramatisch ab. Da das öffentliche Bitcoin-Netzwerk immer noch auf wenige Transaktionen pro Sekunde beschränkt ist, wird dies für die meisten Bitcoin Core-Benutzer lange Zeit kein Problem sein. Bei privaten Blockchains, die Hunderte oder Tausende von Transaktionen pro Sekunde anstreben, wussten wir jedoch, dass diese Engpässe früher oder später beseitigt werden mussten.

Brieftasche von Bitcoin Core

Die „Brieftasche“ in Bitcoin Core war immer der wichtigste dieser Schwachpunkte. Seine Aufgabe ist es, die Transaktionen zu speichern, die für den Knoten von besonderer Relevanz sind, da sie eine Blockchain-Adresse beinhalten, die er besitzt, oder eine „Nur Uhr”Adresse, deren Aktivität verfolgt wird. Beispielsweise muss jede Transaktion, die Geld an oder von einem Knoten sendet, in der Brieftasche dieses Knotens gespeichert werden. Und jedes Mal, wenn ein Knoten eine Transaktion erstellt, muss er nach einer oder mehreren "nicht ausgegebenen Ausgaben" früherer Wallet-Transaktionen suchen, die die neue Transaktion ausgeben wird.

Was stimmt also nicht mit der Brieftasche, die wir von Bitcoin Core geerbt haben? Eigentlich drei Dinge:

  • Alle Brieftaschentransaktionen werden gespeichert. Dies führt zu langsamen Startzeiten und einer schnell zunehmenden Speichernutzung.
  • Viele Vorgänge führen einen ineffizienten „vollständigen Scan“ jeder Transaktion in der Brieftasche durch, egal ob alt oder neu.
  • Jede Transaktion in der Brieftasche wird vollständig gespeichert, einschließlich beliebiger „Metadaten“, die aus Sicht des Knotens keine Bedeutung haben und bereits in der Blockchain auf der Festplatte gespeichert sind. Das ist sehr verschwenderisch.

Die Folge ist, dass sich die Brieftasche von Bitcoin Core mit rund 20,000 gespeicherten Transaktionen erheblich verlangsamt. Nach ungefähr 200,000 kommt es praktisch zum Stillstand. Schlimmer noch, da eine MultiChain-Blockchain bis zu 8 MB Metadaten pro Transaktion zulässt (im Vergleich zu den 80 Byte von Bitcoin), kann der Speicherbedarf der Brieftasche selbst bei einer geringen Anzahl von Transaktionen schnell steigen.

Es ist wichtig zu klären, dass diese Mängel nur für Bitcoin Core gelten Brieftascheund nicht seine allgemeine Transaktionsverarbeitungskapazität. Mit anderen Worten, es kann Millionen (oder sogar Milliarden) von Transaktionen, die sich nicht auf seine eigenen Adressen beziehen, bequem verarbeiten und speichern, da diese eher auf der Festplatte als im Speicher gespeichert sind. Beispielsweise verwenden viele beliebte Bitcoin-Börsen und Brieftaschen Bitcoin Core unverändert, speichern ihre eigenen Transaktionen jedoch extern und nicht innerhalb des Knotens.

Die neue Brieftasche von MultiChain

Wir hätten die gleiche Forderung von MultiChain-Benutzern stellen können, ihre eigenen Transaktionen außerhalb des Knotens zu speichern. Dies schien jedoch nicht die richtige Lösung zu sein, da dies die Einrichtung und Wartung für jeden Teilnehmer einer Kette erheblich erschweren würde. Also haben wir stattdessen die Kugel gebissen und die Brieftasche von Grund auf neu geschrieben.

Wie unterscheidet sich die neue Brieftasche? Wenn Sie Erfahrung mit Datenbanken haben, können die Antworten offensichtlich sein:

  • Anstatt die Brieftaschentransaktionen im Speicher zu behalten, werden sie in einem geeigneten Format auf der Festplatte gespeichert, wobei interessierende Transaktionen bei Bedarf abgerufen werden.
  • Anstatt vollständige Wallet-Scans durchzuführen, werden die Transaktionen auf verschiedene Weise „indiziert“, damit diejenigen, die bestimmte Kriterien erfüllen, schnell gefunden werden können.
  • Transaktionsmetadaten, die größer als 256 Byte sind, werden nicht in der Brieftasche gespeichert. Stattdessen enthält die Brieftasche einen Zeiger auf die Position dieser Metadaten in der Blockchain.

Mit anderen Worten, wir haben die In-Node-Brieftasche so umgebaut, dass sie ordnungsgemäß datenbankgesteuert ist (mithilfe von LevelDB), anstatt sich auf eine naive In-Memory-Struktur zu verlassen, die nicht effizient durchsucht werden kann. Es überrascht nicht, dass der Unterschied (gemessen an einem Intel Core i3.4 mit 7 GHz) ziemlich dramatisch ist:

MultiChain Wallet-Transaktionsdurchsatz

Memory Usage

Die Grafiken zeigen, dass, sobald die alte Brieftasche 250,000 Transaktionen enthält, ihre Sendegeschwindigkeit auf 3 tx / s sinkt und die Speichernutzung des Knotens um 600 MB erhöht wird. Im Gegensatz dazu hält die neue Brieftasche über 100 tx / s und fügt nur 90 MB hinzu. Wir haben zu diesem Zeitpunkt aufgehört, die alte Brieftasche zu testen, aber selbst bei 6-8 Millionen gespeicherten Transaktionen sendet die neue Brieftasche weiterhin über 100 tx / s und erreicht (aufgrund von Datenbank-Caching) maximal 250 MB RAM.

Diese Tests wurden unter realistischen Bedingungen mit mehreren Adressen und Assets (und daher vielen nicht ausgegebenen Transaktionsausgaben) in der Brieftasche des Knotens durchgeführt. In einem idealisierten Szenario (eine Adresse, ein Asset, wenige UTXOs) lag die anhaltende Sendegeschwindigkeit bei über 400 tx / s. In beiden Fällen haben wir im Rahmen dieses Umschreibens auch alle Funktionen der Brieftasche hinter einer sauberen internen Benutzeroberfläche ordnungsgemäß abstrahiert. Dies wird es in Zukunft einfacher machen, andere Datenbank-Engines zu unterstützen, um noch robuster und schneller zu werden.

Um es noch einmal zu wiederholen: Alle diese Zahlen beziehen sich auf die Rate, mit der ein Knoten Transaktionen in seiner lokalen Brieftasche erstellen, senden und speichern kann, und nicht auf seinen Durchsatz bei der Verarbeitung von Transaktionen, die von anderen erstellt wurden. Für den allgemeinen Netzwerkdurchsatz kann MultiChain derzeit 200 bis 800 tx / s verarbeiten, abhängig von der Hardware, auf der es ausgeführt wird. (Seien Sie skeptisch gegenüber Blockchain-Software, die Zahlen wie 100,000 tx / s auf normaler Hardware verspricht, da der Engpass die Überprüfung der digitalen Signatur ist, deren Durchführung in Echtzeit erfolgt. Wenn Knoten einzelne Transaktionssignaturen nicht überprüfen, kann eine Blockchain möglicherweise nicht vertrauensübergreifend verwendet werden Grenzen, was es nicht besser macht als eine regulär verteilte Datenbank.)

Abschließend möchte ich die nächste wichtige Funktion von MultiChain erwähnen, für die diese Brieftasche neu geschrieben werden musste. Diese als Streams bezeichnete Funktion bietet eine allgemeine Abstraktion und API für die allgemeine Datenspeicherung in einer Blockchain. Sie können sich einen Stream als Zeitreihen- oder Schlüsselwertdatenbank vorstellen, mit den zusätzlichen Blockchain-bezogenen Vorteilen von Dezentralisierung, digitalen Signaturen, Zeitstempeln und Unveränderlichkeit. Wir kennen viele Blockchain-Anwendungsfälle, die diese Funktionalität nutzen könnten, und arbeiten bereits intensiv daran, sie zu erstellen. Beobachten Sie diesen Raum.

Bitte posten Sie Kommentare auf LinkedIn.

Technischer Nachtrag

Ab MultiChain Alpha 22 können Sie überprüfen, welche Version der Brieftasche derzeit ausgeführt wird, indem Sie die walletdbversion Bereich der getinfo or getwalletinfo API-Aufrufe. Ein Wert von 1 bedeutet die ursprüngliche Bitcoin Core-Brieftasche und 2 bedeutet die neue MultiChain-Brieftasche.

Wenn Sie die neue Version von MultiChain in einer vorhandenen Kette ausführen, wird nicht sofort auf die neue Brieftasche umgeschaltet. Sie können die Brieftasche aktualisieren, indem Sie den Knoten stoppen und dann erneut ausführen multichaind mit den Parametern -walletdbversion=2 –rescan. Sie können ein ähnliches Downgrade mit durchführen –walletdbversion=1 –rescan.

Wenn Sie einen Knoten in einer neuen Kette starten, wird standardmäßig automatisch die neue Brieftasche verwendet. Sie können dies ändern, indem Sie ausführen multichaind zum ersten Mal mit dem Parameter –walletdbversion=1.

Mit der neuen Brieftasche alle MultiChain-APIs funktionieren genauso wie zuvor, mit Ausnahme der alten APIs für Transaktionsabfragen getreceivedbyaddress, listreceivedbyaddress und listtransactions (benutzen listwallettransactions or listaddresstransactions stattdessen). Darüber hinaus unterstützt die neue Brieftasche keine API-Aufrufe und -Parameter im Zusammenhang mit dem schlecht implementierten und in Kürze veralteten "Konten" -Mechanismus von Bitcoin Core, der von MultiChain nie ordnungsgemäß unterstützt wurde. Diese Anrufe werden mit einer Fehlermeldung sicher deaktiviert.

Quelle: https://www.multichain.com/blog/2016/07/announcing-the-new-multichain-wallet/

Zeitstempel:

Mehr von Multikette