MultiChain 2.1: Variablen und Bibliotheken

Quellknoten: 1587135

Intelligente Filter viel intelligenter machen

Heute freuen wir uns, MultiChain 2.1 mit zwei wichtigen neuen Funktionen für MultiChain-Entwickler zu veröffentlichen.

Vor anderthalb Jahren wurde MultiChain 2.0 eingeführt Intelligente Filter, mit denen benutzerdefinierte Logik zur Validierung von Transaktionen und Daten in eine Blockchain eingebettet werden kann. Smart Filter ähneln konzeptionell den „Smart Contracts“ anderer Blockchain-Plattformen, haben jedoch ein anderes Design, um dem schnelleren Transaktionsmodell von MultiChain zu entsprechen.

Smart Filter gibt es in zwei Varianten - Transaktionsfilter und Stream-Filter. Ein Transaktionsfilter validiert Transaktionen in der gesamten Kette, indem er ihre Eingaben, Ausgaben und Metadaten untersucht. Wenn eine Transaktion den Filter nicht besteht, wird sie von jedem Knoten im Netzwerk abgelehnt. Ein Stream-Filter überprüft einzelne Elemente, die in a geschrieben wurden MultiChain-StreamBetrachten Sie die Schlüssel, Herausgeber und On-Chain- oder Off-Chain-Daten in JSON-, Text- oder Binärformat. Wenn ein Element den Filter nicht besteht, wird es als ungültig markiert und seine Daten werden von jedem Knoten, der den Stream abonniert hat, ausgeblendet.

Beide Arten von Smart Filtern sind in JavaScript geschrieben und werden in einer deterministischen Version von Google ausgeführt V8, die superschnelle JavaScript-Engine, die Chrome, Node.js und viele andere Plattformen unterstützt. Einfache Filter sind einfach zu codieren und zu verstehen. Hier ist beispielsweise ein Stream-Filter, der überprüft, ob Elemente mindestens zwei Schlüssel haben:

Funktion filterstreamitem() { var item=getfilterstreamitem(); // Callback-Funktion if (item.keys.length2) return "Mindestens zwei Schlüssel erforderlich"; }

Insgesamt haben wir großartige Rückmeldungen zu intelligenten Filtern erhalten, aber wir haben auch wiederholt von zwei Möglichkeiten gehört, wie wir sie noch besser machen können. Erstens möchten viele Benutzer Filter, die Informationen lesen können, die sich in der Blockchain befinden, jedoch nicht in der zu validierenden Transaktion oder dem zu validierenden Stream-Element. Zu den Anwendungsfällen gehören eine sich ändernde Liste der zulässigen Länder, Wechselkurse, die von einem externen „Orakel“ bereitgestellt werden, oder ein Wechsel zum Umschalten bestimmter Regeln.

Zweitens möchten einige Entwickler eine Reihe von JavaScript-Funktionen in mehreren Filtern verwenden, ohne Code zu duplizieren. Sie möchten auch in der Lage sein, diese Funktionen zu aktualisieren, einen Fehler zu beheben oder einige neue Situationen abzudecken, ohne ihre vorhandenen Filter zu deaktivieren und an ihrer Stelle neue zu erstellen. Beispielsweise kann freigegebener Code anwendungsspezifische Logik enthalten, eine Bibliothek eines Drittanbieters zum Überprüfen von JSONs oder zum Analysieren des Inhalts einer PDF-Datei.

MultiChain 2.1 führt zwei neue Arten von On-Chain-Entitäten ein: Variablen und Bibliotheken, um diese Bedürfnisse zu beantworten.

Variablen

Beginnen wir mit MultiChain-Variablen. Diese funktionieren ähnlich wie in normalen Programmiersprachen, jedoch mit einem Blockchain-Twist. In der Blockchain können beliebig viele benannte Variablen erstellt werden. Jede Variable verfügt über einen dynamischen Adressensatz, der ihren Wert aktualisieren kann. Dieser Satz wird von einem oder mehreren Variablenadministratoren verwaltet (standardmäßig nur vom Ersteller der Variablen). Variablen werden in einer Blockchain-Transaktion erstellt oder aktualisiert, die mit einem einfachen API-Befehl auf hoher Ebene gesendet werden kann. Alternativ können APIs auf niedrigerer Ebene verwendet werden, um komplexe Transaktionen zu erstellen, die eine oder mehrere Variablen atomar festlegen, Stream-Elemente schreiben, Assets übertragen, Berechtigungen ändern usw.

Der Variablenwert selbst kann eine beliebige JSON-Struktur enthalten, einschließlich Zahlen, Zeichenfolgen, Booleschen Werten, verschachtelten Objekten und Arrays, und wird in der Kette in der effizienten Struktur gespeichert UBJSON Serialisierungsformat. Natürlich können Smart Filter den aktuellen Wert einer Variablen mithilfe einer einfachen Rückruffunktion abfragen. Da es sich jedoch um eine Blockchain handelt, ist auch der vollständige Verlauf der Werte und Writer der Variablen verfügbar und kann mit einer anderen Rückruffunktion teilweise oder vollständig abgerufen werden. Um die Entwicklung zu vereinfachen, sind diese Rückrufe auch über die anwendungsbezogene API verfügbar.

Bibliotheken

Kommen wir zu den Bibliotheken, bei denen es sich um größere Geschwister von Variablen handelt. Wie bei Variablen kann eine beliebige Anzahl benannter Bibliotheken in der Blockchain erstellt werden. Bibliotheken haben jedoch ein umfangreicheres Modell für die Aktualisierung mit drei verfügbaren Modi: unveränderlich, sofortig und vorbehaltlich der Genehmigung.

Einmal an unveränderlich Bibliothek erstellt wird, kann ihr Code nie geändert werden. Eine Bibliothek mit sofortig Aktualisierungen können wie eine Variable mit einer Reihe von Adressen geändert werden, die den Code einzeln ersetzen können. Aber in einer Bibliothek mit vorbehaltlich der Genehmigung Updates, ein Update wird erst angewendet, nachdem es von einem bestimmten Teil der globalen Administratoren der Blockchain genehmigt wurde. Dieser letzte Modus bietet einen guten Kompromiss zwischen Sicherheit und Flexibilität.

Der Code für eine Bibliothek ist in normalem JavaScript geschrieben und definiert eine oder mehrere Funktionen, die Smart Filter verwenden können. Wie bei Variablen werden Bibliotheken in einer speziellen Transaktion erstellt oder aktualisiert, die einfach über die API gesendet werden kann. Wenn ein Smart Filter erstellt wird, werden die erforderlichen Bibliotheken in einem optionalen Parameter bereitgestellt. Eine Bibliothek wird immer im Kontext des Filters ausgeführt, für den sie erforderlich ist, sodass sie gegebenenfalls Smart Filter-Rückrufe verwenden kann. MultiChain bietet umfangreiche Funktionen zum lokalen Testen (und Zurücksetzen) von Bibliotheken und deren Aktualisierungen, bevor Änderungen an der Blockchain vorgenommen werden.

Geschenkpapier it up

Wie bei allen Funktionen, die sich auf die Regeln der Blockchain beziehen, sind Variablen und Bibliotheken sowohl in der Community- als auch in der Enterprise-Edition von MultiChain 2.1 verfügbar. Unsere Entwicklerdokumentation enthält eine detaillierte Beschreibung des neuen JSON-RPC-APIs und Smart Filter-Rückrufe verfügbar. Um die neuen Funktionen in einer bereits ausgeführten Blockchain zu verwenden, migrieren Sie zuerst die Knoten zu MultiChain 2.1 mehr Stunden das Protokoll der Kette auf Version 20012.

Was kommt als nächstes? In den kommenden Monaten werden wir uns auf detaillierte und intensive Arbeiten unter der Haube konzentrieren, um die Leistung und Parallelität von MultiChain zu verbessern, während es unter erheblicher Belastung steht. Dies erhöht die Reaktionsfähigkeit von Anwendungen, die einen Knoten abfragen müssen, während er weiterhin Hunderte oder Tausende neuer Transaktionen pro Sekunde verarbeitet.

In der Zwischenzeit wünschen wir alle im MultiChain-Team unseren Benutzern und Kunden Gesundheit und Gesundheit für das kommende Jahr. Wir wissen, dass dies schwierige Zeiten für alle sind, und freuen uns darauf, zum normalen Rhythmus von Meetings und Konferenzen zurückzukehren, sobald dies sicher ist.

Bitte posten Sie Kommentare auf LinkedIn.

Zeitstempel:

Mehr von Multikette