1. Blockchain
Wenn ich diesen Artikel schreibe, ist der Bitcoin-Wechselkurs im Vergleich zum Maximalwert um mehr als das Fünffache gesunken. Als ich sagte, dass ich etwas mit der Blockchain zu tun habe, höre ich als erstes offene Skepsis: "Wer braucht das alles jetzt für Ihre Blockchain?" .
Ja, tatsächlich ist der Hype um die Blockchain vorbei. Die zugrunde liegenden Technologien blieben jedoch bestehen, sie entwickeln sich weiter und werden in bestimmten Nischen weiterentwickelt und eingesetzt.
Im Internet und insbesondere in Habré gibt es viele Materialien, die beide allgemeinen Bereiche der Technologieanwendung beschreiben (z. B.
habr.com/company/bitfury/blog/353350 und spezifischere Beispiele für
habr.com/company/raiffeisenbank/blog/332756 ).
Wie Sie wissen, ist Blockchain eine verteilte Registrierung, d. H. Eine Datenbank, die auf mehrere Knoten verteilt ist, während jeder Knoten eine vollständige Kopie der Registrierung speichert. Die Besonderheit der Blockchain besteht darin, dass die Datensätze (Transaktionen) zu Blöcken zusammengefasst und die Blöcke zu einer Blockkette zusammengefasst werden. Es sind jedoch nur Datenadditionsvorgänge verfügbar. All dies führt dazu, dass es fast unmöglich ist, Änderungen an Transaktionen vorzunehmen, die bereits in der Blockchain gespeichert sind.
Es gibt viele Materialien zur Funktionsweise der Blockchain (wenn Sie noch nichts über die Blockchain gehört haben, können Sie mit
diesem einfachen Video beginnen ).
Zum Zeitpunkt des größten Anstiegs des Interesses an Blockchain-Technologie gab es viele Aufrufe, Blockchain absolut überall zu verwenden. Es gibt jedoch bestimmte Anzeichen für Projekte / Aufgaben, deren Implementierung möglicherweise eine Blockchain erfordert.
Erstens die Teilnahme einer großen Anzahl von Spielern (Benutzern), die Daten aufzeichnen, während es notwendig ist, Inkonsistenzen zu vermeiden und das Vertrauen zu erhöhen.
Zweitens das Fehlen eines Dritten, dem jeder vertraut.
Drittens die Notwendigkeit eines Mechanismus zur Überprüfung öffentlicher Daten.
Wenn alle oben genannten Bedingungen erfüllt sind, müssen Sie über die Verwendung einer Blockchain nachdenken.
Solche Aufgaben können in jeder Branche auftreten. Das Projekt
www.101blockchains.com sammelt Informationen sowohl zu potenziellen als auch zu implementierten Projekten sowie zu den Funktionen der Verwendung von Blockchain in verschiedenen Bereichen.
Im Gesundheitswesen kann beispielsweise Blockchain verwendet werden:
- zur sicheren Verwaltung von Patientendaten;
- Bekämpfung von Arzneimittelfälschungen durch unveränderliche Transaktionen in der gesamten Lieferkette;
- Verbesserung der Überwachung und Wirksamkeit klinischer Studien durch Beseitigung von Betrug und Datenmanipulation.
Bei der Verwendung von Blockchain im Unternehmenssegment wird normalerweise eine private Blockchain mit verschiedenen Berechtigungsstufen (Private Permissioned Blockchain) verwendet. Solche Netzwerke haben einen speziellen Satz von Knoten zum Bestätigen von Transaktionen.
Bei der Entwicklung des ersten InterSystems IRIS-Adapters für die Arbeit mit der Blockchain haben wir uns jedoch für
Ethereum entschieden, das zur Kategorie Permissionless Blockchain gehört - eine offene Plattform ohne Leitungsgremium. Diese Wahl ist mit der Popularität von Ethereum und einer ziemlich entwickelten Infrastruktur verbunden: dem Vorhandensein verschiedener Tools und Bibliotheken. Sie können auch feststellen, dass Sie mit der Ethereum-Software
eine private Blockchain erstellen können.
2. Der Adapter
Jetzt ist es Zeit, zum Adapter selbst überzugehen.
Ein Adapter in InterSystems IRIS (sowie in Ensemble) ist eine Klasse oder ein Paket von InterSystems IRIS-Klassen, die die Möglichkeit bieten, mit einem externen System zu arbeiten. InterSystems-IRIS-Adapter werden in eingehende (zum Empfangen von Daten von einem externen System, wenn das externe System der Initiator der Interaktion ist) und ausgehende (zum Arbeiten mit einem externen System, wenn der Initiator der Interaktion InterSystems IRIS ist) unterteilt.
Der IRIS Ethereum-Adapter ist ein ausgehender Adapter und unterscheidet sich geringfügig von den meisten anderen InterSystems-IRIS-Adaptern, da ein Teil dieses Adapters ein Paket von InterSystems-IRIS-Klassen ist, der Adapter jedoch auch ein kleines NodeJS-Modul enthält. Die Architektur ist in Abbildung 1 dargestellt.
Abbildung 1Das NodeJS-Adaptermodul verwendet vorhandene NodeJS-Bibliotheken, um mit Ethereum zu arbeiten.
Der Adapter bietet die folgenden Funktionen:
- Platzieren Sie einen intelligenten Vertrag in Ethereum (wir planen, einen weiteren Artikel vorzubereiten, in dem wir mehr über intelligente Verträge und Entwicklungstools sprechen und ein Beispiel diskutieren).
- Rufen Sie intelligente Vertragsmethoden auf: sowohl Methoden, die den Status der Blockchain nicht ändern, als auch Methoden, die den Status der Blockchain ändern
- Speichern einer Transaktion (Überweisen von Geld von Brieftasche zu Brieftasche)
- Aufrufen von Hilfsmethoden, um den Blockchain-Status abzurufen
- Protokollieren aller Anforderungen (führt das NodeJS-Modul aus, das zum Debuggen nützlich ist)
Der Adapter ist mit OpenExchange- Quellcode verfügbar .
3. Ein einfaches Beispiel
Mit dem Adapter wird ein Beispiel für "Hallo Welt" installiert.
Um mit Ethereum zu arbeiten (einschließlich dieses Beispiels), benötigen Sie:
- Wählen Sie aus, mit welchem Netzwerk Sie arbeiten möchten. Für die Entwicklung werden üblicherweise Testnetzwerke wie Ropsten verwendet.
- Erstellen Sie eine Brieftasche in diesem Netzwerk und füllen Sie sie auf
- Installieren Sie einen lokalen Ethereum-Client (z. B. Geth) oder erhalten Sie einen Schlüssel für die Zusammenarbeit mit einem Cloud-Anbieter (z. B. Infura).
Beim Einrichten eines Geschäftsvorfalls müssen Sie Folgendes angeben (Abbildung 2):
- Server und Port, auf dem das NodeJS-Modul ausgeführt wird (Standardport ist 3000)
- Anbietereinstellungen (in diesem Fall Zugriff auf Infura)
- Zugriffsdetails (In den Zugriffsdetails müssen Sie Ihre Brieftasche als Benutzernamen und den privaten Schlüssel aus der Brieftasche als Kennwort angeben. In InterSystems IRIS werden die Zugriffsdetails in einer separaten Datenbank gespeichert, für die die Verschlüsselung aktiviert sein muss.)
Abbildung 2Um mit intelligenten Verträgen arbeiten zu können, müssen Sie (für jeden intelligenten Vertrag, mit dem Sie Kontakt aufnehmen) einen Ordner im Dateisystem erstellen und dort zwei Dateien ablegen:
* abi.txt
* bytecode.txt
Diese Dateien müssen einen ABI-Smart-Vertrag und einen Bytecode haben. Smart Contract ABI - eine formale Beschreibung der Smart Contract-Oberfläche im JSON-Format. ABI und Bytecode werden zum Zeitpunkt der Erstellung des Smart-Vertrags erstellt.
Bytecode wird nur zum Bereitstellen eines Vertrags benötigt.
Mit dem Testdienst können Sie den Betrieb eines Geschäftsvorfalls überprüfen.
In Abbildung 3 wird mithilfe des Testdienstes der Smart-Vertrag bereitgestellt. Das Ergebnis des Aufrufs dieses Geschäftsvorgangs ist eine Nachricht, die einen Transaktions-Hash enthält.
Abbildung 3Mit dem Browser ropsten.etherscan.io (https://etherscan.io/) können Sie diese Transaktion finden und die Adresse des platzierten Smart-Vertrags abrufen.
Um intelligente Vertragsmethoden mit dem Adapter auszuführen, müssen Sie die Einstellungen in der Produktkonfiguration angeben: ContractFolder und ContractAddress.
Der Code zum Aufrufen der Smart Contract-Methode ist recht einfach:
set ..ContractABI = [].%FromJSON(..ContractFolder_"abi.txt") set contract = ..Adapter.GetContract( ##class(Ethereum.Address).%New(..ContractAddress), ..ContractABI) set result = contract.hello() set pResponse = ##class(Ens.StringContainer).%New(result.args)
Mit der GetContract-Adaptermethode, der die Adresse des Smart Contract und ABI übergeben wird, wird ein Smart Contract-Objekt erstellt, mit dem die Methoden aufgerufen werden. In diesem Fall sollte die hello () -Methode im Smart-Vertrag definiert werden, der eine Zeichenfolge zurückgibt.
In diesem Beispiel ändert die hello () -Methode den Status der Blockchain nicht, sodass sie synchron aufgerufen werden kann. Methoden, die den Status der Blockchain ändern, können jedoch lange dauern (Warten auf Transaktionsbestätigung).
Um solche Methoden aufzurufen, können Sie den Mechanismus für verzögerte Antworten in InterSystems IRIS verwenden. Der Adapter muss das zurückgestellte Token übergeben. Wenn die NodeJS-Transaktion bestätigt wird, überträgt das Modul das Ergebnis seiner Ausführung an InterSystems IRIS. Dazu müssen Sie die Webanwendung konfigurieren und dem Produkt einen Geschäftsvorgang hinzufügen, der die empfangene Antwort verarbeitet.
Code zum Aufrufen einer Methode, die den Status der Blockchain ändert:
In diesem Fall müssen Sie vor dem Aufrufen der Smart-Contract-Methode setName () eine Reihe von Parametern angeben, einschließlich eines Tokens für verzögerte Antworten.
In unserem nächsten Artikel werden wir mehr über intelligente Verträge sprechen und ein Beispiel für die Lösung einer Anwendung mit dem InterSystems IRIS Ethereum-Adapter geben.