DesignSpark Electrical Logolinkedin
Menu Suche
Ask a Question

Einführung Blockchain – Teil 2

In Teil 1 haben wir uns den Aufbau von grundlegenden Blöcken angesehen und untersucht, wie diese zu einem unveränderbaren Hauptbuch zusammengeschlossen werden. In diesem Teil werden wir uns ansehen, wie Blockchain als Teil eines kooperativen Netzwerks in freier Wildbahn funktioniert.

Knoten

Eine der wichtigsten Eigenschaften der Blockchain-Technologie ist ihr dezentraler Charakter. Es gibt keine zentrale Stelle, die spezielle Server zum Hosten der Blockchain betreibt. Stattdessen basiert sie auf dem Konsens zwischen den Benutzern in einem verteilten Peer-to-Peer-Netzwerk (P2P).

Generell ist jeder Teilnehmer in diesem Netzwerk ein Knoten, aber nicht alle Knoten sind gleich. Je nach Umsetzung kann es zahlreiche Knotentypen geben. In den meisten Varianten sind jedoch zwei Knotentypen in der einen oder anderen Form vorhanden:

Vollständige Knoten: Diese fungieren als Server im Blockchain-Netzwerk und hosten eine Kopie der gesamten Blockchain in einer lokalen Datenbank, weswegen sie manchmal als „vollständige Archivierungsknoten“ bezeichnet werden. Die Hauptaufgaben dieser Knoten sind die Aufrechterhaltung des Konsenses zwischen anderen Knoten und die Überprüfung von Transaktionen. Dies sind in der Regel die Knoten, die dem Netzwerk Blöcke hinzufügen können. Wie sie dies tun, hängt vom verwendeten Konsensprotokoll ab.

Leichte Knoten: Dies kann ein „reduzierter“ vollständiger Knoten sein, der Blöcke speichert und wie gewohnt hinzufügt. Sobald die Kette jedoch eine voreingestellte Größe erreicht hat, löscht der Knoten die ältesten Blöcke und behält nur die Kopfzeilen und die Position in der Kette bei. Da reduzierte Knoten immer noch als vollständige Knoten betrachtet werden, können sie in der Regel Transaktionen überprüfen und in den Konsens einbezogen werden.

Alternativ dazu interagiert ein echter leichter Knoten mit der Blockchain, indem er sich darauf verlässt, dass ihm die vollständigen Knoten die erforderlichen Informationen bereitstellen. Da er keine Kopie der Kette speichert, muss er den aktuellen Status der letzten Block- und Broadcast-Transaktionen zur Verarbeitung abfragen. Mit beiden Methoden können Knoten mit begrenzten Ressourcen Teil eines Blockchain-Ökosystems sein.

Weitere Knotentypen, auf die Sie möglicherweise stoßen, sind Master-Knoten und Authority-Knoten.

Der einzige Zweck eines Master-Knotens besteht darin, Blöcke zu validieren und zu speichern: Sie können keine Blöcke hinzufügen und helfen, das Netzwerk zu sichern.

Wenn in einem Netzwerk Authority-Knoten verwendet werden, gibt es eine begrenzte (vom Netzwerkentwickler festgelegte) Anzahl von Knoten, die als vollständige Knoten fungieren. Alle anderen Knoten sind leichte Knoten. Diese teilweise Zentralisierung kann das System beschleunigen, indem es die für einen Konsens benötigte Zeit verkürzt.

Konsens-Protokolle

Eines der Probleme, das von einem verteilten System von Peers gelöst werden muss, ist die Frage, wer Daten schreiben kann oder, was noch wichtiger ist, wer keine Daten schreiben kann. Die Regeln, nach denen ein Blockchain-Netzwerk arbeitet und die Gültigkeit der in Blöcken geschriebenen Informationen bestätigt, werden als „Konsens“ bezeichnet. In Blockchain-Netzwerken müssen wir jederzeit einen Block oder eine Blockkette auf Datenintegrität überprüfen können, insbesondere dann, wenn neue Blöcke von anderen Knoten kommen und wir entscheiden müssen, ob wir sie akzeptieren können. Es ist von entscheidender Bedeutung, im gesamten Netzwerk einen Konsens zu erzielen, um die Datenintegrität aufrechtzuerhalten und einen Schutz vor potenziellen Angreifern, die das Netzwerk mit Junk-Blöcken überschwemmen, zu gewährleisten.

Die beiden am weitesten entwickelten Ansätze zur Lösung dieses Problems werden als Proof-of-Work (PoW) und Proof-of-Stake (PoS) bezeichnet. Beide haben Vorteile, aber auch Nachteile.

Proof-of-Work

PoW (auch „CPU-Kostenfunktion“ genannt) wurde 1993 von Cynthia Dwork und Moni Naor entwickelt und stellt einfach ein Puzzle, damit der erste Knoten, der das Puzzle löst, den nächsten Block hinzufügen kann. Dabei muss das Puzzle relativ schwer zu lösen sein, aber man muss einfach überprüfen können, ob die Lösung gefunden wurde.

Wenn Sie Teil 1 dieser Einführung gelesen haben, werden Sie wahrscheinlich nicht überrascht sein, dass die Puzzles häufig auf der Lösung von Hash-Funktions-Herausforderungen basieren, die nur durch Brute-Force-Methoden gelöst werden können, aber dann leicht zu überprüfen sind. Das Lösen von Puzzles wird im Allgemeinen als „Mining“ bezeichnet.

Ein Beispiel für die Puzzleart, die gestellt werden könnte, ist ein Block, der wie folgt aussieht:

Die meisten Inhalte des Blocks stehen fest: Der Blockindex, die Daten und der vorherige Hash sind alles Werte, die unverändert bleiben müssen. Aus diesem Grund fügen wir sie einer Blockchain überhaupt erst hinzu! Wenn wir diese Werte über einen Hash-Algorithmus ausführen, erhalten wir immer denselben Hash-Wert.

Die einzige Möglichkeit, den Hash-Wert für den Block zu bearbeiten, besteht darin, eine Instanz aufzunehmen, die wir ändern können. In diesem Fall ist es die „Nonce“ oder „number used once“ (Zahl, die einmal verwendet wird). Jede Änderung dieser Zahl führt zu einem völlig anderen Hash-Wert, und wir können nicht vorhersagen, wie dieser Hash-Wert aussehen wird.

Das Puzzle für den Miner besteht darin, eine Nonce zu finden, die einen Hash-Wert unter einem beliebigen Zielwert erzeugt. Suchen Sie beispielsweise einen hexadezimalen Hash-Wert, der vier führende Nullen enthält, d. h. die 16 führenden Bits sind ausschließlich Nullen.

Dieses Puzzle kann nur durch Brute Force gelöst werden: Man muss jede Kombination der Nonce von Null aufwärts ausprobieren, bis man einen Hash erhält, der die Anforderungen erfüllt. Je mehr führende Nullen benötigt werden, desto schwieriger ist es, das Puzzle zu lösen. Jedes hinzugefügte Bit verdoppelt die durchschnittliche Lösungszeit. Sobald Sie jedoch die Nonce haben, ist es für das System sehr einfach, dies zu überprüfen.

Der erste Miner, der eine vom System verifizierte Nonce produziert, kann den Block auf die Kette schreiben.

Dieser Beispielmechanismus ähnelt dem ursprünglichen Hashcash PoW-System, das als Denial-of-Service-Gegenmaßnahme vorgeschlagen wurde, und wird auch von einigen Kryptowährungen, einschließlich Bitcoin, als Teil ihres Mining-Algorithmus verwendet.

Der wesentliche Nachteil dieser Konsensform ist die zunehmende Rechenleistung (und damit auch Energie), die für die Ausführung einer Blockchain auf diese Weise erforderlich ist. Das Bitcoin-Protokoll ist beispielsweise so konzipiert, dass es durchschnittlich 10 Minuten dauert, bis es gelöst ist. Wenn mehr Mining-Knoten in das Netzwerk eingebunden werden, wird die Schwierigkeit des Puzzles verändert, um die Lösungszeit gleich zu halten.

Stand 2018 berechnen Computer im Bitcoin-Netzwerk 343 Petahashes (3,43 x 107) pro Sekunde, was (laut einer schriftlichen Aussage dem US-Senat gegenüber) fast 1 % des weltweit produzierten Stroms verbraucht! Hier können Sie den Energieverbrauch von Bitcoin verfolgen.

Proof-of-Stake

Ein alternativer Konsensansatz ist der Proof-of-Stake (PoS). In diesem Schema wird der nächste Knoten, der einen Block erstellt, durch eine vordefinierte Kombination aus zufälliger Auswahl, Größe des Token-Vermögens (z. B. Menge der Kryptowährung und auch „Stake“ genannt) und der Dauer, für die der Stake gehalten wird, ausgewählt.

Wenn die Auswahl einfach nur auf der Größe des Stake beruhen würde, würde immer derselbe Benutzer ausgewählt werden. Das würde de facto zu einer Zentralisierung führen, da der Benutzer mit dem „Prime-Stake“ einen dauerhaften Vorteil hätte. Dieser Benutzer dürfte immer den nächsten Block erstellen.

Hier kommt die Randomisierung ins Spiel. Im Allgemeinen möchten wir, dass die Wahrscheinlichkeit, der Ersteller des nächsten Blocks zu sein (als „Forger“ oder „Minter“ und nicht als „Miner“ bezeichnet) proportional zur relativen Größe des Stakes ist.

Betrachten wir beispielsweise eine Kryptowährung, die wir als Redstones bezeichnen. Im Pool potenzieller Forger haben wir Xanthe mit 800 Redstones, Bert mit 600 Redstones, Carmine mit 400 Redstones und Ophelia mit 200 Redstones. Für jeden Block, der geschrieben werden soll, hat Xanthe eine Chance von 40 %, Bert hat eine Chance von 30 %, Carmine eine Chance von 20 % und Ophelia eine Chance von 10 %.

Dadurch wird das Problem des hohen Stromverbrauchs der PoW-Konsensprotokolle gelöst, aber es gibt noch weitere, die durch weitere Validierungsmechanismen gemindert werden müssen.

Der erste ist böswillige Absicht von einem oder mehreren großen Stakeholdern, die dadurch Chaos säen könnten, dass Sie die größte Chance zum Schreiben und Validieren von Blöcken haben. Dies öffnet die Tür für zahlreiche Angriffsmethoden, darunter Bestechungsangriffe.

Es gibt auch das Problem, dass die Gründer der Blockchain-Implementierung zu Beginn so große Stakes haben, dass sie ein Veto-Recht gegenüber dem restlichen Netzwerk haben, und das damit verbundene Problem des Stake-Hortens, das es anderen unmöglich macht, Stakes zu erwerben. Für eine Währung könnte das bedeuten, dass nur wenig Währung frei verfügbar ist.  

Eine Lösung für diese Probleme ist die Kombination der Randomisierung mit dem „Coin-Alter“, dem Produkt aus der Anzahl der Coins und der Anzahl der Tage, die die Coins gehalten wurden. Um einen Block schreiben zu können, müssen die Coins eines Knotens 30 Tage lang gehalten worden sein. Größere und ältere Tokensätze haben eine höhere Wahrscheinlichkeit, einen Block zu zeichnen, bis zu einer Obergrenze von 90 Tagen: Nach diesem Zeitpunkt ist die maximale Wahrscheinlichkeit erreicht und kann nicht weiter erhöht werden. Wenn jedoch ein Token-Stake zum Schreiben eines Blocks ausgewählt wird, wird das Stake-Alter auf null Tage zurückgesetzt und man muss 30 Tage warten, bevor er wieder zum Schreiben berechtigt wird. Dies ist das grundlegende System, das von Peercoin verwendet wird.

Eine weitere Lösung, die immer beliebter wird, ist:

Delegated Proof-of-Stake

Hierbei handelt es sich um ein System, das Authority-Knoten verwendet, die in der Regel als „Delegierte“ bezeichnet werden. Diese Systeme nutzen für gewöhnlich Echtzeitabstimmungen in Verbindung mit „Reputation“, um zu entscheiden, wer die festen Delegierten zu einem bestimmten Zeitpunkt sind.

Aktive Delegierte müssen von Tokeninhabern gewählt werden, deren Stimmgewichtung von der Anzahl der von ihnen gehaltenen Basistoken abhängt. In einigen Varianten müssen die Teilnehmer Mittel auf ein zeitlich gesperrtes Konto einzahlen, die bei einem Fehlverhalten konfisziert werden können.

Wenn die Reputation eines Delegierten unter ein bestimmtes Niveau fällt, wird er durch einen Stellvertreter ersetzt. Dieser übernimmt die Aufgabe des vorigen Delegierten, Blöcke vorzuschlagen und zu validieren.

Überblick

In diesem Teil haben wir uns die verschiedenen Blockchain-Knotentypen angesehen, auf die Sie möglicherweise stoßen, und einige der verschiedenen Protokolle, die verwendet werden können, um Konsens über die Knoten eines Peer-to-Peer-Netzwerks zu erzielen. Ich habe absichtlich die meisten der Pro-/Kontra-Argumente für alle Konsensprotokollarten ausgelassen, da viele in den esoterischen Bereich abdriften und in einen ziemlich verworrenen Kaninchenbau führen können. Es gibt durchgehend Diskussionen zwischen den verschiedenen Lagern, die ziemlich hitzig werden können. Diese helfen einem jedoch nicht weiter, wenn man versucht zu entscheiden, ob Blockchain für die eigene Anwendung geeignet ist.

Im letzten Teil dieser Reihe befassen wir uns dann mit der byzantinischen Fehlertoleranz und damit, wie Systeme mit Fehlern mit großer Tragweite umgehen.

Mark completed his Electronic Engineering degree in 1991 and went on to work in real-time digital signal processing applications engineering, later moving into technical marketing.

16 Apr 2019, 13:26

Kommentare