Blockchain Erklärung für Anfänger – OHNE Vorwissen {2021}

Blockchain einfach erklärt - Coding Lab Steffen Lippke einfach erklärt
Blockchain einfach erklärt – Coding Lab Steffen Lippke einfach erklärt

Du brauchst eine einfache Blockchain Erklärung?

Dieser Beitrag gibt Dir einen Einblick in die Zusammenhänge einer Blockchain, ohne das Du Vorwissen dazu brauchst!

[Bonus] erklärte Code-Beispiele für einen Einblick in das Leben einer Blockchain!

Auf geht’s!

Grundlagen zur Blockchain

Was ist eine Blockchain? – Blockchain Erklärung

Eine Blockchain ist ein Datenspeicher, der alle Beteiligten einsehen, neue Daten speichern und auf Echtheit und Fälschungen überprüfen können.

Die Datenblöcke sind über kryptografische Hash-Funktionen verknüpft, sodass die gespeicherten Daten nur schwierig manipulierbar sind.

Einige Journalisten behauptet, dass der Bitcoin die Blockchain ist. Das entspricht nicht der Wahrheit. Bitcoins, andere Kryptowährungen und Smart Contracts basieren auf der Blockchain-Technologie, die als Grundlage für alle Anwendung dient. Der Bitcoin ist eine Anwendung (Implementierungen) des theoretischen Konzepts einer Blockchain.

01 Bitcoin Kurs - Coding Lab Blochain Erklärung einfach Steffen Lippke
01 Bitcoin Kurs – Coding Lab Blochain Erklärung einfach Steffen Lippke

Was sind Smart Contracts?

Ein Smart Contract ist ein Vertrag zwischen zwei Parteien, bei dem eine Blockchain alle Transaktionen und Ereignisse bezüglich des Vertrags speichert. Ein am Anfang festgelegter Programmiercode ermöglicht eine Agilität des Vertrags, der auf Ereignisse automatisch reagiert.

  • Kauft ein Kunde ein Auto auf Raten und versäumt zwei Raten, öffnet sich sein Auto nicht mehr.
  • Zahlt ein Arbeitnehmer in den Rententopf ein Jahr nicht ein, dann bekommt er 3 % weniger Rente mit 67.
  • Zahlt ein Versicherungsnehmer jedes Jahr seine Police, schüttet die Lebensversicherung den festgelegten Betrag beim Tod automatisch aus.

Manipulation ist nahezu unmöglich!

Was ist ein kryptografischer Hash?

Ein kryptografischer Hash ist ein Programm, welches aus einer Datei eine Zeichenkette berechnet. Der gleicht einen Fingerabdruck und beweist die Integrität der Datei. Eine kleine Änderung in der Datei führt zu einer auffälligen Änderung der Hash-Berechnung.

03 Hash Algorithmus SHA - Coding Lab Blochain Erklärung einfach Steffen Lippke
03 Hash Algorithmus SHA – Coding Lab Blochain Erklärung einfach Steffen Lippke

Für mein Beispiel nutze ich den sicheren Hash-Algorithmus (SHA) mit 256 Bit. Die JavaScript-Bibliothek stellt eine entsprechende NPM-Bibliothek crypto-js zur Verfügung.

const SHA256 = require('crypto-js/sha256');

Was sind die Vorteile? Die Blockchain ermöglicht eine sichere Speicherung von Transaktionen und Ereignissen. Die Blockchain streicht den Mittelsmann heraus.

Banken müssen sich für die Zukunft eine andere Beschäftigung suchen.

Die Blockchain verhindert Korruption, Betrug und Manipulation effektiver als alle physischen Verträge.

Steffen Lippke

Was sind die Nachteile? Fehlbuchungen müssen aufwendig in dem nächsten Block zurückgebucht werden. Alle Abweichungen, die auf „menschliche Ausnahmen und Freundlichkeit“ beruhen sind nicht mehr möglich.

Wenn ein Schuldner seine Rate nicht mehr zahlt, dann bekommt der Schuldner eine Strafe. Der Smart-Contract kann auch einmalige Ausnahmen berücksichtigen, wenn die Parteien sich darauf einigen z. B. die Blockchain bestraft nicht, wenn der Schuldner zweimal nicht gezahlt hat.

04 Bitcoin Whitepaper - Coding Lab Blochain Erklärung einfach Steffen Lippke
04 Bitcoin Whitepaper – Coding Lab Blochain Erklärung einfach Steffen Lippke

Praxis Tutorial – Blockchain Erklärung mit TypeScript

Dieser Abschnitt soll Dir anhand von Code erklären, wie eine Blockchain im Detail funktioniert. Wir brauchen die Klassen Transaction, Block und Blockchain, um ein eigens Projekt auf die Beine zu stellen.

02 Eigene Blockchain mit JavaScript - Coding Lab Blochain Erklärung einfach Steffen Lippke
02 Eigene Blockchain mit JavaScript – Coding Lab Blochain Erklärung einfach Steffen Lippke

Klasse Blockchain Erklärung

Erstellen wir eine neue Blockchain mit

let steffenCoin = new Blockchain();

Wenn er Computer die Blockchain erstellt, erstellt der Computer zugleich das erste Kettenglied (den Ursprungsblock). Die Schwierigkeit setzen wir auf die Stufe 3 (Die Erklärung zu Schwierigkeiten kommt in Abschnitt Mining). Wir erstellen einen Array für alle wartenden Transaktionen und eine Summe X, die der Miner als Belohnung erhält.

class Blockchain {
    constructor() {
        this.chain = [this.createGenisisBlock()];
        this.difficulty = 3;
        this.pendingTransaction = [];
        this.miningReward = 100;
    }

Der Ursprungsblock initialisiert die Funktion createGenisisBlock(), von der die Blockchain ausgeht. Dieser ist notwendig, um einen ersten Hash zu berechnen.

createGenisisBlock() {
        return new Block("22/12/2018", "Genesis Block", "0");
}

Klasse Block zur Blockchain Erklärung

Die Klasse Block braucht einen Zeitstempel, die Transaktionen (hier „Genisis Block“) und einem vorherigen Hash. Weil der erste Block keinen vorherigen Block hat, nutze ich als einen Lückenfüller die 0.

class Block {
    constructor(timestamp, transactions, previousHash = '') {
        this.timestamp = timestamp;
        this.transactions = transactions;
        this.previousHash = previousHash;
        this.hash = this.calculateHash();
        this.nonce = 0;
    }

Das Herzstück – Die Hash-Funktion

Eine Hash-Funktion erstellt aus allen Komponenten des Blocks einen Hash innerhalb der Klasse Block. Der Hash beschreibt den gesamten Inhalt.  Der Hash macht die Blockchain überprüfbar und Fälschungen sind deshalb nur schwer anzufertigen.

calculateHash() {
        return SHA256(this.index + this.previousHash + this.timestamp + JSON.stringify(this.transactions) + this.nonce).toString();
}

Die Mining-Funktion ist die zweite Funktion der Klasse Block. Die Difficulty legt die Anzahl der Nullen fest, mit der der Hash beginnen muss.

  • Difficulty 1 ungültiger Hash: c234ad234….
  • Difficulty 1 gültiger Hash: 0234ad234….
  • Difficulty 2 ungültiger Hash: 0234ad234….
  • Difficulty 2 gültiger Hash: 0034ad234….

Mining Blockchain Erklärung

Um bei jeder Berechnung einen neuen Hash zu generieren, braucht der Block einen Lückenfüller nonce. Die Änderung des nonce führt zu der Änderung des Hashs. Mit etwas Glück berechnet der Algorithmus beim 2. oder 3. Durchlauf ein Hash mit dem gewünschten Präfix.

06 Mininen kostet Strom und Hardware - Coding Lab Blochain Erklärung einfach Steffen Lippke
06 Mininen kostet Strom und Hardware – Coding Lab Blochain Erklärung einfach Steffen Lippke

Je höher die Anforderungen an den Präfix sind, desto mehr Durchläufe sind notwendig.

    mineBlock(difficulty) {
        while (this.hash.substring(0, difficulty) !== Array(difficulty + 1).join("0")) {
            this.nonce++;
            this.hash = this.calculateHash();
        }
        console.log("Block mined: " + this.hash);
    }

Der Block ist „ge-minet“, wenn Dein Computer den ersten gültigen Hash mit dem richtigen Präfix gefunden hat.

Exemplarischer Ablauf einer Blockchain

Schalten wir die Blockchain ein!

Um die Blockchain zu starten und den Mining-Vorgang zu beginnen, erstellen wir zwei Transaktionen.

steffenCoin.createTransaction(new Transaction("address1", "address2", 100));
steffenCoin.createTransaction(new Transaction("address2", "address1", 50));
console.log("Start mining");
steffenCoin.minePendingTransactions("steffen");

Die Funktion minePendingTransactions() arbeitet die neuen Transaktionen ab. Die Funktion erstellt einen neuen Block und berechnet den Hash. Der Blockchain SteffenCoin fügt den fertigen Block an sich selbst an this.chain.push().

Mining-Behohnung

Weil der Minier Strom- und Hardwarekosten vorgestreckt hat und einen neuen gültigen Block erstellt hat, erhält dieser eine Belohnung über eine neue Transaktion), die Blockchain dem Nutzer (steffen) in der nächsten Runde anrechnet.

minePendingTransactions(miningRewardAddress) {
        let block = new Block(Date.now(), this.pendingTransaction);
        block.mineBlock(this.difficulty);
        console.log("Block successfully mined!");
        this.chain.push(block);
        this.pendingTransaction = [
            new Transaction(null, miningRewardAddress, this.miningReward)
        ];
    }

Kontostand bestimmen

Die Blockchain speichert akribisch alle Transaktionen ab. Jeder Nutzer kann aus der Summe aller Transaktionen seinen / ihren aktuellen Kontostand berechnen.

05 Kontostand bestimmen - Coding Lab Blochain Erklärung einfach Steffen Lippke
05 Kontostand bestimmen – Coding Lab Blochain Erklärung einfach Steffen Lippke

Die Blockchain zieht alle negativen Transaktionen von allen positiven Transaktionen der Wallets ab:

    getBalanceOfAddress(address) {
        let balance = 0;
        for (const block of this.chain) {       
                for (const trans of block.transactions) {
                if (trans.fromAddress === address) {
                    balance -= trans.amount;
                }
                if (trans.toAddress === address) {
                    balance += trans.amount;
                }
            }
        }
        return balance;
    }

Blockchain auf Echtheit prüfen

Wenn ein Nutzer den Transaktionen keinen Glauben schenkt, kann der Nutzer die Blockchain validieren. Um die Korrektheit zu prüfen, berechnet der Nutzer von jedem Block einen Hash und überprüft, ob die Neuberechnung mit dem gespeicherten Hash im nächsten Block übereinstimmt.

    isChainValid() {
        for (let i = 1; i < this.chain.length; i++) {
            const currentBlock = this.chain[i];
            const previousBlock = this.chain[i - 1];
            if (currentBlock.hash !== currentBlock.calculateHash()) {
                return false;
            }
            if (currentBlock.previousHash !== previousBlock.hash) {
                return false;
            }
        }
        return true;
    }


Danke fürs Lesen! Erhalte weitere Tutorials in meinem kostenlosen Newsletter.
Jeden Monat teile ich mit Dir 4 neue praxisnahe Tutorials.
Trage Deine Mail zum kostenlosen Empfang des Newsletters* ein.




Quellenangabe Bilder: Icons und SVG-Grafiken im Titelbild von Microsoft PowerPoint 2019, frei verfügbar nach EULA
*) Mit dem Abonnement des Newsletters erklären Sie sich mit der Analyse des Newsletters durch individuelle Messung, Speicherung und Analyse von Öffnungsraten und der Klickraten in Profilen zu Zwecken der Gestaltung künftig besserer Newsletter einverstanden. Sie können die Einwilligung in den Empfang des Newsletters und die Messung mit Wirkung für die Zukunft widerrufen. Mehr in der Datenschutzerklärung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.


Jeden Monat teile ich mit den Mitgliedern
4 neue praxisnahe ausführliche Tutorials (je 1000+ Wörter).


Trage Deine Mail, damit Du
Deine Coding + Hacking Skills erweitern kannst!