Ein einfacher Blockchain-Beispiel in Python

Die Blockchain-Technologie hat in den letzten Jahren enorme Aufmerksamkeit erregt, insbesondere durch die Popularität von Kryptowährungen wie Bitcoin. Doch was genau ist eine Blockchain und wie kann man sie implementieren? In diesem Artikel werden wir ein einfaches Beispiel einer Blockchain in Python erstellen, um die Grundlagen dieser Technologie zu verstehen.

Was ist eine Blockchain?

Eine Blockchain ist im Wesentlichen eine dezentrale Datenbank, die aus einer Kette von Blöcken besteht. Jeder Block enthält Daten, einen Zeitstempel und einen Hash-Wert des vorherigen Blocks. Dieser Hash-Wert ist entscheidend, da er die Integrität der gesamten Kette gewährleistet.

1. Die Grundlagen einer Blockchain

Bevor wir mit dem Code beginnen, ist es wichtig, die grundlegenden Komponenten einer Blockchain zu verstehen:

  • Block: Ein Block besteht aus den Transaktionsdaten, einem Zeitstempel und einem Hash des vorherigen Blocks.
  • Hash: Ein Hash ist ein einzigartiger Identifikator für einen Block, der aus den Daten des Blocks erstellt wird.
  • Kette: Die Kette von Blöcken ist durch die Hashes miteinander verbunden.

2. Die Implementierung in Python

Um eine einfache Blockchain in Python zu erstellen, benötigen wir die folgenden Schritte:

Schritt 1: Block-Klasse erstellen

Zuerst erstellen wir eine Klasse Block, die die Struktur eines Blocks definiert. Jeder Block enthält Daten, einen Zeitstempel, den Hash des vorherigen Blocks und seinen eigenen Hash.

python
import hashlib import datetime class Block: def __init__(self, data, previous_hash=''): self.timestamp = datetime.datetime.now() self.data = data self.previous_hash = previous_hash self.hash = self.calculate_hash() def calculate_hash(self): data_to_hash = str(self.timestamp) + str(self.data) + str(self.previous_hash) return hashlib.sha256(data_to_hash.encode()).hexdigest()

In diesem Code:

  • Der __init__-Konstruktor initialisiert den Block mit den Daten und dem vorherigen Hash.
  • Die Methode calculate_hash berechnet den Hash des Blocks, indem sie die Daten, den Zeitstempel und den vorherigen Hash zusammenführt und dann den SHA-256-Hash davon erstellt.

Schritt 2: Blockchain-Klasse erstellen

Nun erstellen wir eine Klasse Blockchain, die eine Liste von Blöcken enthält und sicherstellt, dass die Kette der Blöcke korrekt ist.

python
class Blockchain: def __init__(self): self.chain = [self.create_genesis_block()] def create_genesis_block(self): return Block('Genesis Block') def get_latest_block(self): return self.chain[-1] def add_block(self, new_block): new_block.previous_hash = self.get_latest_block().hash new_block.hash = new_block.calculate_hash() self.chain.append(new_block) def is_chain_valid(self): for i in range(1, len(self.chain)): current_block = self.chain[i] previous_block = self.chain[i - 1] if current_block.hash != current_block.calculate_hash(): return False if current_block.previous_hash != previous_block.hash: return False return True

In diesem Code:

  • Die Methode create_genesis_block erstellt den ersten Block in der Kette, auch als Genesis-Block bekannt.
  • Die Methode get_latest_block gibt den zuletzt hinzugefügten Block zurück.
  • Die Methode add_block fügt einen neuen Block zur Kette hinzu, nachdem sie den Hash des vorherigen Blocks aktualisiert hat.
  • Die Methode is_chain_valid überprüft, ob die Blockchain gültig ist, indem sie sicherstellt, dass alle Blöcke die korrekten Hashes haben und die Kette nicht manipuliert wurde.

3. Testen der Blockchain

Jetzt können wir unsere Blockchain testen, indem wir einige Blöcke hinzufügen und die Integrität der Kette überprüfen.

python
# Blockchain erstellen my_blockchain = Blockchain() # Blöcke hinzufügen my_blockchain.add_block(Block('Block 1')) my_blockchain.add_block(Block('Block 2')) # Blockchain ausgeben for block in my_blockchain.chain: print(f'Block Data: {block.data}') print(f'Block Hash: {block.hash}') print(f'Previous Block Hash: {block.previous_hash}') print('---') # Überprüfen, ob die Blockchain gültig ist print(f'Is blockchain valid? {my_blockchain.is_chain_valid()}')

Fazit

In diesem Artikel haben wir eine einfache Blockchain in Python implementiert. Wir haben gesehen, wie Blöcke erstellt werden, wie sie miteinander verknüpft sind und wie die Integrität der Blockchain überprüft wird. Dieses Beispiel dient als Grundlage, auf der komplexere Blockchains aufgebaut werden können. Es ist wichtig, dass man sich auch mit weiterführenden Themen wie Konsensmechanismen und Smart Contracts beschäftigt, um ein umfassenderes Verständnis für Blockchain-Technologie zu erlangen.

Beliebte Kommentare
    Derzeit keine Kommentare
Kommentar

0