Wie funktioniert eine Blockchain?

Du hast dich bestimmt schon oft gefragt was eine Blockchain genau ist. In diesem Artikel erfährst du mehr über die technische Funktionsweise sowie über Anwendungsfälle in der Praxis. Dazu zeigen wir dir wie eine Blockchain aufgebaut ist mit Hilfe von Javascript und du lernst wie man selbst eine programmiert.

Aufbau einer Blockchain

Die Blockchain ist nichts anderes als eine Liste mit der jeder Eintrag durch Hashes verknüpft ist. Dazu entstehen die Fragen „Wie sieht diese Liste aus?“ und „Was sind überhaupt Hashes?“.

Linked List

Zum einen nennt man diese Liste eine „Linked List“. Das ist eine spezielle Datenstruktur aus der Informatik. Eine linked List ist objektorientiert aufgebaut das bedeutet, dass jedes Element in dieser Liste ein Objekt darstellt. Linked bedeutet, dass jedes Element auf seinen Vorgänger verlinkt. Das heißt das erste Element verlinkt auf „nichts“ und alle folgenden Elemente bzw. Objekte verlinken auf das davor.

Hashes

Hashes kommen aus der Kryptographie und dienen dazu, beliebig lange Daten zu einem fixen (= immer gleiche Länge), sogenannten „Hash“, umzuwandeln. Eine Hash-Funktion, ist eine mathematische Funktion, welche diese Hashes dann erzeugt.

Der Clou ist dabei, dass die Hash-Funktion eine Einwegfunktion ist. Mit dieser lässt sich die Integrität der zuvor eingegebenen Daten feststellen. Werden also die Daten verändert und danach der Hash noch mal erzeugt, so entsteht ein völlig anderer Hash-Wert.

Zusammenspiel von Hash und Linked List

Sind also die technischen Grundlagen einigermaßen klar, so können mit diesen beiden Konzepten eine Blockchain erstellt werden. Eine Blockchain ist als eine Datenkette die nicht veränderbar ist und dennoch verteilt werden kann. Dadurch wird das Problem des Mittelsmanns bei vielen Anwendungen gelöst. Zum Beispiel bei Banken (Person A will Person B Geld geben und vertraut dabei auf eine Bank) oder bei Verträgen (Person A will einen Vertrag mit Person B machen und vertraut dabei auf einen Notar)

Weiterführende Links

https://anders.com/blockchain/blockchain.html

Prozesse digitalisieren – Wie funktioniert das?

Workflows, Abläufe und Prozesse digitalisieren. Das ist ein Wunsch vieler Unternehmen die in Richtung prozessorientiertheit streben. Zunächächst aber stellt sich die Frage: Was ist ein Prozess?

Definition Prozess

Laut Wikipedia ist ein Prozess wie folgt definiert:

Ein Prozess (von lat. procedere = vorwärts gehen) kann als ein Verlauf, eine Entwicklung oder ganz allgemein als ein System von Bewegungen bezeichnet werden. Vergleichbare Begriffe sind auch „Hergang“, „Fortgang“, „Ablauf“, und „Vorgang“.

Die richtige Datenstrukutur

Wie kann man also einen „Ablauf“ mit einer geeigneten Datenstruktur in die Welt der Informatik überführen? Am Besten dafür eignen sich dafür Graphen.

Ähnlich zu Graphen ist auch die Baumstruktur, die aber bei Prozessen nicht wirklich sinnvoll eingesetzt werden kann, da oft Zyklen und geschlossene Pfade vorkommen.

Linked-Lists eigenen sich dafür ganz gut, wobei in jedem Element das nächste als Pointer gespeichert wird. Problematisch ist jedoch wenn mehrere Elemente als Nachfolger gespeichert werden sollen.

Am Besten ist es, wenn man eine Datenbank verwendet wobei man 2 Tabellen verwendet. Eine Tablle mit den Elementen (Nodes) und eine weitere Tabelle für den Verbindungen zwischen den Elementen (Links).

Das würde dann in etwa so aussehen:

Tabelle „Nodes“

1      neues Element

2     bearbeitetes Element

3    abgeschlossenes Element

4    storniertes Element

Tabelle „Links“

1      ->     2

2     ->     3

3    ->      4

1     ->      4

2     ->      4

Oder etwas anschaulicher als Grafik:

Graphdarstellung für Prozesse digitalisieren

Visualisierung eines einfachen Prozesses

 

 

 

 

 

 

 

 

 

 

Damit lassen sich schnell und einfach Prozesse oder Workflows in einer Datenbank abbilden. Somit ist es möglich, ganze Arbeitsabläufe zu digitalisieren und verarbeiten. Dieses Schema kann dann beliebig erweitert werden. Beispielsweise können Teilschritte automatisiert werden und Schnittstellen zu anderen Tools sind auch umsetzbar.

Prozesse digitalisieren, Am Beispiel Spaghetti kochen

Jetzt haben wir also das nötige Vorwissen und können einen einfachen Prozess digitalisieren. Am besten eignet sich dafür ein Kochrezept. Ich werde Spaghetti kochen als Beispiel nehmen. Die folgenden Schritte werden benötigt:

  1. Topf mit Wasser füllen
  2. Topf mit Wasser darauf stellen
  3. Herd einschalten
  4. Wasser kochen
  5. Spaghetti ins Wasser geben
  6. Warten bis Spaghetti durch sind
  7. Spaghetti sind fertig

Als kleine Hausaufgabe darfst du dir überlegen, wie man diesen Koch-Prozess am Besten digitalisieren kann. Wenn du eine Lösung hast, kannst du sie gerne als Kommentar posten. Ich freue mich über jede Lösung.

 

Wie programmiert man einen Bot?

Du hast dich bestimmt schon öfter gefragt wie du deinen eigenen Zombie, Crawler oder Bot programmieren kannst. Hier erfährst du wie man so was macht. Als erstes brauchst du ein bisschen Know-How im programmieren. Am besten eignet sich die Programmiersprache Python um rein zu kommen, da sie einfach und schnell zu erlernen ist. Hast du bereits etwas Programmiererfahrung, kannst du diesen Schritt einfach überspringen und direkt anfangen.

Schritt 1 – Python installieren

Wenn du auf Windows arbeitest würde ich dir WinPython empfehlen, da es sehr einfach zu installieren geht und du danach direkt anfangen kannst. Weiters sind auch schon viele Module vorinstalliert wie zum Beispiel NumPy, requests und viele mehr. WinPython kannst du einfach bei Google eingeben und dann downloaden und installieren.

Nach dem du mit der Installation fertig bist, kannst du mit Schritt 2 fortfahren.

Schritt 2 – Selenium Modul installieren

Jetzt fragst du dich bestimmt „Wtf ist Selenium?“

Selenium ist ein Modul für sehr viele Programmiersprachen, das es erlaubt Cross-Browser Automatisierung zu machen. Das bedeutet, dass du damit mit Hilfe eines Skripts automatisiert Eingaben machen kannst, wie zum Beispiel Text in ein Online-Formular einfügen. Du kannst aber noch 1000 andere Sachen damit machen. Beispielsweise Screenshots erstellen der aktuellen Browserseite, Elemente auslesen (So wie hier wenn du die Webentwickler Tools verwendest) und vieles mehr.

WinPython Tools

WinPython Tools

Das funktioniert eigentlich ganz einfach indem du auf WinPython Command Prompt klickst und
pip install selenium
eingibst.

Danach kommt eine Fortschrittsanzeige und dann sollte es installiert sein.

Schritt 3 – Webdriver downloaden

Was ist jetzt wieder ein Webdriver? Ein Webdriver stellt die Schnittstelle zwischen deinem Bot (Python+Selenium) dar und verbindet damit den  Browser, wie du in der folgenden Abbildung sehen kannst.

Diagramm für Selenium

Verbindung zwischen Selenium, Webdriver und Browser

 

 

 

 

 

Dazu ist es nun entscheidend welchen Browser du verwendest. Die meisten von euch werden wohl Firefox oder Chrome verwenden, also werde ich euch dafür die Links bereitstellen. Du kannst aber auch jeden anderen Browser verwenden, so lange dieser Selenium unterstützt und einen Webdriver anbietet. Selenium ist also eine Schnittstelle für alle möglichen Webdriver und bietet allgemeine Befehle an, damit es möglich ist den Code browserunabhängig auszuführen. Jetzt sind wir schon einige Schritte näher an dem Ziel „Bot programmieren“

Wie geht es weiter? Hier erfährst du mehr