Blockchain Erklärung für Anfänger ohne Vorwissen (2024)

Blockchain einfach erklärt - Coding Lab Steffen Lippke einfach erklärt
Blockchain 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
01 Bitcoin Kurs

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

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

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

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

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

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;
    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert


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


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

Die Webseite nutzt nur technisch notwendige Cookies.