22.8.2017

Dialogic Blockchain Serie #5

Über Blockchain wird viel gesprochen, aber wie sieht eine Blockchain "in der Realität" aus? Der beste Weg, eine neue Technologie kennenzulernen, ist, damit selbst zu experimentieren. In diesem Artikel erklären wir, wie Sie selbst mit der Blockchain experimentieren können. Das Erstellen Ihrer eigenen Blockchain ist nämlich überhaupt nicht schwierig. Es mag manchmal schwierig aussehen - aber keine Sorge, es ist eigentlich ziemlich einfach.

Dieser Text wurde automatisch übersetzt und kann daher vom Original abweichen. Aus dieser Übersetzung können keine Rechte abgeleitet werden.

💬 Click here to read this page in English.

Ärmel hochkrempeln!

Los geht's: Was brauchst du?

Um eine einfache Blockchain einzurichten, kannst du kostenlose Software aus dem Internet verwenden. Diese Software funktioniert in den meisten Fällen auf Windows- und Mac-Computern. In diesem Beispiel werden wir das Ethereum-Plattform benutzen. Ethereum ist eine öffentlich zugängliche Blockchain - die Nutzung der Blockchain erfolgt über die digitale Währung 'Ether'. In diesem Beispiel verwenden wir die Software unter der Ethereum-Blockchain, um unsere eigene private Kopie davon zu erstellen.

Die Client-Installation

Zunächst benötigen wir einen Client. Dies ist eine Software, die die Blockchain-Kommunikation mit anderen Computern ('Nodes') regelt. Durch das Starten des Clients beteiligst du dich an der Blockchain und kannst neue Verträge in der Blockchain speichern. Lade den 'Go Ethereum'-Client von dieser Seite herunter und installiere ihn. Wenn du dies gemacht hast, überprüfe, ob der Client korrekt installiert wurde. Dazu gehst du (bei Windows) zum Startmenü, gibst 'Ausführen' ein, und dann 'cmd', gefolgt von 'OK' (Mac-Benutzer öffnen über den Ordner Anwendungen den Ordner Dienstprogramme und dann das Programm 'Terminal'; die weiteren Anweisungen sind gleich). Gib im erscheinenden Bildschirm 'geth version' ein und drücke die Eingabetaste. Wenn alles gut verlaufen ist, erhältst du eine Übersicht über die installierte Version von Go-Ethereum.

Der Start der Kette: das Blockchain-Genesis

Nach der Installation der Software ist es an der Zeit, die Blockchain aufzubauen. Wie bereits beschrieben, besteht eine Blockchain aus einer Kette von 'Blöcken'. Der erste Block wird als 'Genesis-Block' bezeichnet und ist speziell, da ihm alle Teilnehmer ohne weitere Kontrolle vertrauen. Alle Blöcke, die auf den Genesis-Block folgen, sind Teil der Blockchain.

Lade zuerst die Datei genesis.json herunter und lege sie auf dem Desktop ab. Diese Datei beschreibt, wie der Genesis-Block aussehen soll. Führe dann im Befehlsfenster den folgenden Befehl aus:

geth –datadir %USERPROFILE%/Desktop/data –networkid 3336 init %USERPROFILE%/Desktop/genesis.json

Wenn alles erfolgreich war, wird die Meldung angezeigt, dass der Genesis-Block erfolgreich erstellt wurde. Auf dem Desktop wird ein 'data'-Ordner erstellt - hier speichert der Client alle benötigten Daten, um an der Blockchain teilzunehmen.

Nachdem der Genesis-Block erstellt wurde, ist es an der Zeit, die Blockchain zu starten! Verwende dazu den folgenden Befehl:

geth –datadir %USERPROFILE%\Desktop\data –ipcpath ./geth.ipc –rpc –rpccorsdomain “*” –networkid 3336

Wenn die Meldung 'IPC endpoint opened' angezeigt wird, ist der Client einsatzbereit. Du kannst den Client beenden, indem du im Befehlsfenster 'Strg-C' drückst. Jetzt ist es an der Zeit, die Blockchain tatsächlich zu nutzen. Dies kannst du auf verschiedene Arten tun; zunächst kannst du über die 'Konsole' auf die Blockchain zugreifen. Dies ist eine Umgebung, in der du mit Befehlen Aktionen auf der Blockchain ausführen kannst. Lass den Client laufen und öffne ein neues Befehlsfenster (Start, Ausführen, cmd oder Terminal auf Mac) und gib den folgenden Befehl ein:

geth attach \\.\pipe\geth.ipc

Wenn alles korrekt ist, erscheint "Welcome to the Geth JavaScript console!" mit einigen Versionsnummern. Zuerst müssen wir ein Konto erstellen - über ein Konto erhältst du Zugang zur Blockchain. Ein Konto ist durch ein Passwort gesichert. Bei der Kontoerstellung legst du dieses Passwort fest. Ein neues Konto erstellst du mit dem folgenden Befehl:

personal.newAccount()

Dann musst du jedes Mal, wenn der Client neu gestartet wird, das Konto entsperren. Dies kann mit dem folgenden Befehl erfolgen (der nach dem zuvor gewählten Passwort fragt):

personal.unlockAccount(personal.listAccounts[0])

Um den Client nun Blöcke in die Kette hinzufügen zu lassen, muss 'gemined' werden. Du startest den Mining-Prozess wie folgt:

miner.setEtherbase(personal.listAccounts[0])
miner.start(1)

Da das Mining viel Rechenleistung erfordert, entscheiden wir uns hier, die Geschwindigkeit zu begrenzen - die Zahl '1' bedeutet, dass nur ein Prozessor deines Computers für das Mining verwendet wird. In einem 'echten' Netzwerk würdest du die gesamte Rechenleistung einsetzen. Wenn du das Mining zum ersten Mal startest, dauert es eine Weile, bis tatsächlich Blöcke erscheinen (im Client-Bildschirm erscheint mehrmals "Generating DAG"). Danach sollten alle paar Sekunden neue Blöcke erscheinen:

Da im Genesis-File eingestellt ist, dass das Minen von Blöcken einfach ist, erscheinen schnell neue Blöcke. In einer 'echten' Blockchain ist das Minen schwieriger, und die Blöcke erscheinen langsamer. Zum Testen einer Blockchain ist es jedoch hilfreich, wenn Blöcke schnell erscheinen - deine Smart Contracts werden dann schneller verarbeitet.

Du kannst die Konsole jetzt verlassen, indem du 'exit' eingibst. Es schadet übrigens nicht, die Konsole noch eine Weile geöffnet zu lassen.

Schreiben von Smart Contracts

Zum Schreiben und Platzieren von Smart Contracts in der Blockchain verwendest du die Solidity-Programmierumgebung. Lade Solidity über diesen Link herunter, entpacke die ZIP-Datei und klicke doppelt auf die Datei 'index.html'. Wenn alles gut gelaufen ist, erscheint ein leeres Textfeld:

Zunächst müssen wir dem Solidity-Editor mitteilen, dass er mit unserer eigenen Blockchain (über unseren eigenen Client) kommunizieren kann. Gehe dazu zum Register 'Vertrag' und wähle unter 'Ausführungsumgebung auswählen' 'Web3-Anbieter'. Klicke dann durch alle Meldungen durch.

Jetzt bist du bereit, deinen ersten Smart Contract zu schreiben! In den folgenden Artikeln werden wir genauer auf verschiedene Smart Contracts eingehen. Hier ist ein sehr einfacher Vertrag, der eigentlich nichts tut, aber mit dem wir testen können, ob die Blockchain funktioniert:

pragma solidity ^0.4.0;

contract Hello {
    address public owner;

    function Hello() {
        owner = msg.sender;
    }

    // Es können keine Zahlungen gesendet werden
    function () {
        throw;
    }
}

Was steht hier? Die erste Zeile gibt im Grunde nur an, welche Version der Programiersprache verwendet werden soll (0.4.0). Danach beginnt der Vertrag ("contract Hello"). Die Zeile 'address public owner' zeigt an, dass in diesem Vertrag eine Daten gespeichert wird, nämlich die Adresse (die 'Kontonummer') der Person, die den Vertrag erstellt hat. Die 'function Hello' gibt an, was passieren soll, wenn dieser Vertrag erstellt wird. Alles, was wir jetzt tun, ist zu speichern, wer den Vertrag erstellt hat, im zuvor besprochenen Adressfeld. Schließlich finden sich einige Regeln, um sicherzustellen, dass keine Blockchain-Gelder an den Vertrag gesendet werden können.

Der Code für einen Vertrag ist als eine Blaupause zu verstehen - du kannst einen oder mehrere Verträge instanziieren, die nach dem Code funktionieren (genauso wie in der Welt der 'normalen' Verträge beispielsweise mehrere 'Kaufverträge' über verschiedene Häuser abgeschlossen werden können, die sich äußerlich gleich aussehen).

Um einen neuen Vertrag abzuschließen, klicke in Solidity auf 'Erstellen' im Register 'Vertrag'. Es sollte zuerst 'Warte auf die Veröffentlichung der Transaktion' stehen. Es kann sein, dass eine Fehlermeldung angezeigt wird - in diesem Fall könnte es sein, dass dein Konto wieder 'gesperrt' ist. Gib dann in der Konsole erneut den Befehl 'personal.unlockAccount(personal.listAccounts[0])' ein. Wenn alles gut lief, erscheint schließlich ein Block 'Untitled: Hello at' gefolgt von einer langen Zahl. Diese Zahl ist die Adresse des Vertrags, die Vertragsnummer im Grunde genommen. Mit dieser Nummer kannst du spezifische Aktionen mit dem Vertrag ausführen - darauf kommen wir später zurück. Im Block selbst findest du die Eigenschaften des Vertrags, einschließlich der Kontonummer des 'Eigentümers'. Für den Moment belassen wir es dabei - du hast deinen ersten Smart Contract erstellt!

Zum Schluss

Auf Basis deiner eigenen Blockchain kannst du im Prinzip allerlei Anwendungen auf der Grundlage von Smart Contracts erstellen. Das bedeutet jedoch nicht, dass es ratsam ist, deine eigene Blockchain dafür zu verwenden. Die erste Frage, die du dir stellen musst, lautet, ob die Verwendung einer Blockchain wirklich erforderlich ist. Wenn alle Parteien, die Informationen austauschen und Vereinbarungen treffen müssen, einander vollständig vertrauen, reicht eine 'einfache' gemeinsam genutzte Datenbank tatsächlich aus. Wenn du dennoch eine Blockchain verwenden möchtest, ist es ratsam, bestehende Blockchains zu nutzen: Diese haben die Masse, um die Vorteile von Blockchains optimal zum Tragen zu bringen.

Um zu verstehen, wie etwas wirklich funktioniert, ziehe ich es am liebsten komplett auseinander und versuche dann, es selbst wieder zusammenzusetzen.

Mehr über dieses Thema erfahren?

Tommy van der Vorst, partner

Lernen Sie Tommy kennen

Angebot anfordern?

Haben Sie eine konkrete Forschungsfrage oder einen Auftrag und möchten dafür ein Angebot von uns erhalten? Dann können Sie Ihre Anfrage per E-Mail an tenderdesk@dialogic.nl senden. Über diese Adresse können Sie uns auch auf (öffentliche) Ausschreibungen hinweisen. Wir antworten innerhalb von fünf Arbeitstagen.

Weitere Informationen