Diese Webseite nutzt nur technisch notwendige Cookies.

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 dass Du dazu Vorwissen brauchst!

Statt nur bei der Theorie zu bleiben, zeige ich Dir auch echte Code-Beispiele …

Auf geht’s!

Was ist eine Blockchain? – Blockchain Erklärung

Eine Blockchain ist eine Datenbank, welche Dateien in Blocken beinhaltet. Die Datenblöcke sind über kryptografische Hash-Funktionen verknüpft, sodass bei Änderung eines Blockteils die ganze Blockchain invalide wird. Diese Funktion verhindert Manipulation. Die Teilnehmer, welche Kopien der Blockchain speichern, einigen sich mit einer Abstimmung über den nächsten Block und dessen Inhalt.

Ether – Eine Anwendung der Blockchain

Einige Journalisten verwechseln Bitcoin oder Ether mit der Blockchain ist. Bitcoins, Alt-Coins 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.

Was bringt die Blockchain?

Datenbanken haben wir vor der Blockchain wie Sand am Meer gehabt. Die Blockchain ist nicht besonders effizient oder schnell im Vergleich zu anderen Datenbanken.

Trotzdem löste die Blockchain ein praktisches Problem: Misstrauen und Abhängigkeit zum Mittelsmanns.

Banken als Vertrauensinstanz haben in den letzten Jahren Transaktionen für die Bevölkerung durchgeführt und sich damit reich geworden. Jetzt können die Teilenehmer Transaktion über eine Blockchain laufen lassen. Wenn 1 Person behauptet, die den Kauf eines Produktes nie gemacht zu haben, können die 100.000+ anderen Teilnehmer diese Aussage als Lüge abstempeln (dank kryptografischer Hashes).

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. Manipulation ist nur möglich, wenn Du die Technologie hackst. Vertraue lieber einer 1000-fach überprüfter Software statt einem korrupten, fehleranfälligen und profitgierigen Mittelsmann.

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.

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 einen „interaktiven“ Vertrag, der auf Ereignisse automatisch reagiert.

  • Kauft ein Kunde ein Auto auf Raten und versäumt zwei Raten, öffnet sich das Auto nicht mehr.
  • Zahlt ein Arbeitnehmer in den Rententopf ein Jahr nicht ein, dann bekommt er X % weniger Rente mit 67.
  • Zahlt ein Versicherungsnehmer jedes Jahr seine Police, schüttet die Blockchain den festgelegten Betrag aus ohne zu diskutieren.

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.

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');

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 dem 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.

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

Lass uns wissen, was du denkst! War dieses Tutorial /Beitrag hilfreich, oder hast du noch brennende Fragen? Schreibe einen Kommentar und werde Teil unserer wachsenden Community. Teile Deine Erfolge, Herausforderungen und Tipps – gemeinsam schaffen wir Großes im Bereich Security und Coding!

Schreibe einen Kommentar

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

get rss abo

Jetzt
Abbonnieren
academy

Erhalte Free
Security Kurs

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!