MultiChain

MultiChain ist ein erweiterter Open-Source-Fork von Bitcoin. Es lässt sich verwenden, um benutzerdefinierte Blockchains zu schaffen, die öffentlich wie nichtöffentlich sein können, und lässt sich leicht konfigurieren. Es bietet eine zweckmäßig ausgewählte Zahl an Features und Verbesserungen, die sich an Unternehmens- und Geschäftskunden richten. Die Unterstützung von native assets und die Speicherung größerer Mengen beliebiger Daten scheinen vielversprechend. Ein optionaler, aber einzigartiger Ansatz wird mit dem konsensbasierten Berechtigungs-Management für consortional blockchains verfolgt. Im Zusammenhang mit einer öffentlichen Blockchain sind diese Funktionen weniger interessant. All diese Erweiterungen werden bei gleichzeitiger Kompatibilität hinsichtlich vieler technischer Aspekte des Bitcoin Core erreicht; folglich lässt sich ein großer Teil der Bitcoin-Dokumentation auch auf MultiChain anwenden.

Diese Kompatibilität macht MultiChain zu einem vielversprechenden Kandidaten für das Content-Blockchain-Projekt , da sich die meisten Bitcoin-kompatiblen Ansätze auch auf MultiChain anwenden lassen. Zusätzlich ist die „flexible Erstellung und Übertragung von benutzerdefinierten Assets / Tokens“, die MultiChain von Haus aus unterstützt, von besonderem Interesse. Ebenfalls erwähnenswert ist, dass das Projekt auf sehr transparente Weise entwickelt wird: Fragen, die im offiziellen Q&A-Bereich der Webseite gestellt werden, werden zügig und kompetent beantwortet.

Da MultiChain davon ausgeht, dass der Benutzer seine eigenen Blockchains für seine jeweiligen Anwendungszwecke erstellt, gibt es kein „offizielles“ öffentliches Blockchain-Netzwerk, das seine Stabilität und Sicherheit hätte belegen können. Da es sich jedoch um einen Fork der Bitcoin-Codebasis handelt, sollten seine Grundlagen solide sein, und es ist sehr einfach, eine lokale Chain zu Testzwecken aufzusetzen.

Setup

Eine typische MultiChain Installation besteht aus drei ausführbaren Komponenten:

  • multichain-util wird ein einziges Mal ausgeführt, um eine neue Blockchain zu initialisieren
  • multichaind startet einen Node, der die Chain hostet
  • multichain-cli ist der Client, der Aktionen auf der Chain ausführt

Die Intallation und Verwendung ist unkompliziert und gut dokumentiert.

Die Chain wird den eigenen Bedürfnissen angepasst, indem man ein einfaches Textfile editiert, das von multichain-util erstellt wird; dies muß geschehen, bevor multichaind zum ersten Mal gestartet wird, da sich die Einstellungen nicht mehr ändern lassen, sobald die Chain vollständig erzeugt worden ist.

Auszug aus der erzeugten Konfigurationsdatei. Alle Parameter werden zusätzlich zur Onlinedokumentation verständlich erklärt. Besonders wichtige Einstellungen wie die Block-Time, benötigte Berechtigungen und Mining-Beschränkungen lassen sich leicht ändern und dem jeweiligen Anwendungszweck anpassen.

Die interaktive Getting-Started-Anleitung ist gut geschrieben und leistet als Einführung für die Einrichtung, Benutzung und Netzwerkverbindung der Chain gute Dienste. Sowohl grundlegende Befehle (z. B. das Erstellen einer Wallet, die Übertragung von Währungsbeträgen) als auch erweiterte Kommandos (z. B. das Erstellen eines Assets, die Verwaltung von Berechtigungen) werden erklärt.

Wir haben ein kleines Testnetzwerk mit einem Explorer und einem Wallet-Frontend aufgesetzt.

Mögliche Einsatzszenarien für das Content-Blockchain-Projekt

Föderierte Verwaltung von Content-Identifiern und Metadaten

Streams sind bei MultiChain öffentlich lesbare, append-only Schlüsselwert-Datenbanken auf der Blockchain, deren Einträge „viele Megabyte groß“ sein können. Aufgrund der append-only-Strategie kann eine Anwendung ältere, korrekte Daten auch dann noch aus dem Stream entnehmen, wenn irgendein Benutzer versucht hat, sie böswillig zu überschreiben. Trotz des öffentlichen Charakters gibt es Wege, vertrauliche Daten in einem Stream zu speichern, die jedoch etwas umständlich umzusetzen sind. Eine A Stream-Gesamtgröße von mehreren Gigabyte ist möglich, und die angekündigte Transaktionrate von 500 tx/s für Einfügen-Transaktionen scheint vielversprechend. Diese Zahlen können systembedingt nur in geschlossenen Setups Bestand haben, die kein proof of work bedingen und stattdessen einen berechtigungsbasierten Round-Robin-Konsens verwenden.

Das Registrieren eines ISCC auf der Chain könnte umgesetzt werden, indem ein Stream erzeugt wird, wobei der Identifier-String als benutzerdefiniertes Feld oder als Name des Streams (max. 32 Bytes) übergeben wird, wobei sich letztere Variante der Einmaligkeit des Streams bedient. Streams und Assets scheinen leider einen gemeinsamen Namespace zu teilen, was bedeutet, dass die Namen der Streams über die Asset-Namen hinweg ebenfalls einmalig sein müssen. Beliebige Daten für den jeweiligen ISCC, z. B. On-chain-Plain-Text oder URLs, die auf externe Ressourcen verweisen, ließen sich dann auf dem Stream veröffentlichen. Ein Problem bei diesem Ansatz ist, dass die Streams als geschlossene erstellt werden können, was bedeutet, dass der Ersteller des Streams anderen Benutzern explizit Schreibzugriff auf Stream gewähren muß. Dies würde bösartigen Benutzern ermöglichen, einen ISCC zu sperren. Zur Zeit (24.02.2017) scheint es nicht möglich zu sein, nur offene Streams auf der Chain zu erlauben. Dieses Problem ließe sich aber möglicherweise lösen, indem man das Projekt bittet, eine solche Funktion zu implementieren, oder indem man einen Fork erstellt.

ISCCs könnten alternativ als individuelle Einträge eines Streams gespeichert werden (indem z. B. der ISCC als Schlüssel verwendet wird). Um die Duplizierung und Streuung von ISCCs zu vermeiden, könnten wir ausschließlich den root stream für diesen Zweck einsetzen, was einen einzigen, sehr großen Stream zur Folge hätte. Falls die Größe eines einzelnen Streams ein Problem darstellt, könnten mehrere Streams verwendet werden, um ISCCs zu gruppieren, zum Beispiel mittels eines gemeinsamen Präfixes. Um sicherzustellen, dass diese Streams jedermann offenstehen, lässt sich die Stream-Erzeugung selbst durch den Einsatz des Konsens-Berechtigungssystems von MultiChain auf bestimmte Wallet-Adressen beschränken. Das konkrete Protokoll für diesen Zweck muss jedoch gründlich durchdacht sein, da es unwiderruflich administrative Mitglieder auf der Chain einführt, nachdem diese erstellt wurde.

Flexible Erstellung und Transaktion benutzerdefinierter Assets / Tokens

MultiChain erlaubt die dynamische Erstellung von nativen Assets durch jeden, der die nötigen Berechtigungen besitzt. Diese Assets lassen sich direkt auf der Chain handeln, sodass alle Nodes solche Transaktionen auf dieselbe Weise validieren, wie sie die Chain-eigene Währung validieren würden. Zusätzlich erlaubt MultiChain den Austausch kleinster Mengen beliebiger Assets (darunter auch die Standardwährung), sodass verschiedene Assets, seien es nun Lizenzen, Ratings oder konkrete Währungsbeträge, auf sichere und effiziente Weise auf der Chain gehandelt werden können.

Unterstützung der Entwicklung von eigenen Blockchain-Anwendungen (Smart Contracts)

MultiChain unterstützt gegenwärtig die Ausführung von Turing-vollständigen Smart Contracts auf der Chain, wie es zum Beispiel bei Ethereum der Fall ist, nicht. Smart Contracts sind jedoch ein viel diskutiertes Thema1,2, und die MultiChain-Entwickler haben die Einführung von Smart Contracts nicht vollständig ausgeschlossen, möchten jedoch „überzeugende Anwendungsfelder“3 sehen, die sich nicht mittels einer Kombination von Multi-Signatur-Transaktionen, clientseitiger Systematik und vertrauenswürdiger Drittparteien umsetzen lassen.

Bemerkungen

Während des Tests wurde ein Umstand recht bald klar: dezentralisiertes, konsensbasiertes Berechtigungsmanagement (wenn es denn zum Einsatz kommt) wird sehr schnell zu einer Last und einer verwaltungstechnischen Herausforderung. Die Tatsache, dass der Prozentsatz an Administratoren, die benötigt werden, um Änderungen freizugeben, bereits zum Startzeitpunkt der Chain in Stein gemeißelt ist, würde es erschweren, sich einer wachsenden Community anzupassen. Während es auf der einen Seite vorteilhaft ist, dass es für MultiChain keine Rolle spielt, welche Art von Daten übergeben oder in Streams oder Metadaten gespeichert werden, ermöglicht dieser Umstand auf der anderen Seite, Streams mit Daten zu spammen, die innerhalb des Kontextes des eigentlichen Verwendungszwecks ungültig sind. Ein Mechanismus, der die Validierung von Transaktionsdaten nach einem vorgegebenen Schema an das Konsenssystem bindet, wäre hilfreich.

Ergebnis

Die Möglichkeit, MultiChain als öffentliche, umfangreiche und verteilte Datenspeicherung zu verwenden, macht es zu einem vielversprechenden Kandidaten für die ISCC-Datenbank. In Verbindung mit handelbaren Assets ließe sich konventioneller Lizenzhandel, also das Übergeben eines unterzeichneten, rechtsgültigen Schriftstücks an einen Käufer, auf diese digitale Plattform übertragen. Das größte verbleibende Problem scheint eine vernünftige Mining-Konfiguration zu sein, die sicherstellt, dass die Chain Spam, Zensur und Zentralisierung widerstehen kann.

Kontakt            Impressum und Datenschutz                 Kontaktieren Sie uns! info@content-blockchain.org