Zusammenfassung aller meiner bisherigen Bitcoin Artikel. (aufgrund überschrittener maximal post Größe leider unterteilt in zwei Teile).
Das Bitcoin-System
Abbildung 1
Bitcoin Einheit: Die Bitcoin Einheiten (umgangssprachlich Bitcoins) sind die virtuelle Geldeinheit. Sie existieren nicht physisch oder können als Datei versendet werden. Bitcoin Einheiten sind einfach Registereinträge, die einer gewissen Person zugeordnet sind. Dies legt fest, dass die zukünftige Transaktion dieser Bitcoin Einheiten an eine Bedingung gekoppelt wird, welche nur von dieser bestimmten Person erfüllt werden kann.
Bitcoin-Netzwerk: Vollständig dezentral und enthält alle Teilnehmer, sowie deren Verbindungen und ist der primäre Kommunikationsweg für Informationsaustausch und die Konsensfindung.
Bitcoin Protokoll: Im Bitcoin Protokoll ist die Art und Weise festgelegt, in der die Kommunikation innerhalb des Bitcoin-Netzwerkes abläuft (zb wie sehen Transaktionsnachrichten aus also standartisierte Formatierung etc)
Asymmetrische Kryptografie: Wird zur Beweiserbringung und für Kontrollzwecke eingesetzt. Sie ermöglicht es jedem Nutzer des Bitcoin-Netzwerkes die Legitimität beliebiger Transaktionsnachrichten zu überprüfen (mithilfe des private key und des public key aber dazu mehr in einem späteren Artikel)
Blockchain: Die Blockchain ist das öffentliche Register. Jeder kann sich dieses Register anschauen, eine Kopie herunterladen und abändern (die Kopie). Die entscheidende Registerversion ist die, die nur legitime Transaktionen beinhaltet (nachweisbar) und durch das Konsensprotokoll als aktuellste Version des Registers erkannt wird (Proof-of-Work).
Unterschied von Bitcoin zu schon davor bestehenden Systemen:
Die Führung eines Registers ist natürlich keine Erfindung der Blockchain Technologie. Geld kann als Gedächtnis für Gefälligkeiten (Gift-Giving System) verstanden werden. Dazu mehr in diesem Artikel von mir zum Thema Geld.
Auch unser heutiges Giralgeld (auch Buchgeld genannt) ist nichts anderes als die “Register basierte Virtualisierung von Besitzzuständen” (Giralgeld ist das Versprechen einer Auszahlung in Fiatgeld (Bargeld zb Euro). Der Unterschied zur Blockchain ist, dass das Register beim Giralgeld durch eine einzelne zentrale Instanz mit allen Rechten geführt wird (Bank). Diese zentrale Instanz gewährleistet die Transaktionsfähigkeit, die Transaktionslegitimität und den Transaktionskonsens.
Transaktionsfähigkeit bedeutet, dass der Eigentümer eine Transaktion seines Guthabens initiieren kann. Banken stellen dies durch die Bereitstellung entsprechender Infrastruktur sicher. Entfällt die Bank so bricht auch die zugehörige Infrastruktur weg.
Transaktionslegitimität bedeutet, dass die Bank verpflichtet ist den Transaktionsinitianten zu identifizieren um so festzustellen, ob er der tatsächliche Eigentümer des Guthabens ist. Diese Identifizierung erfolgt durch Pin Codes etc. All diese Kontrollmechanismen der Bank sind jedoch darauf angewiesen, dass die Zugangskriterien am Anfang (Kontoeröffnung) gespeichert wurden und nun abgeglichen werden. Ohne die zentrale Instanz kommt man folgendermaßen also nicht mehr an sein Geld.
Ein Transaktionskonsens ist in einer Bank nicht notwendig. Da die zentrale Instanz der alleinige Buchführer des Registers ist, wird dieses Register immer die einzigste Version desselben bleiben.
Das was Bitcoin also so grundsätzlich vom vorher dagewesenen System der Banken unterscheidet, ist der Verzicht auf zentrale Instanzen mit Sonderrechten (Bitcoin ist ein peer-to-peer Netzwerk, was bedeutet, das alle Teilnehmer gleichgestellt sind). Dadurch können keine Abhängigkeiten vom System entstehen. Bei einer Bank bist du komplett abhängig von dieser, da sie mit deinem Geld machen können was sie wollen und in der Lage wären dir den Zugriff zu verweigern (ohne die Bank kommst du nicht an ddein Geld). Die Besitzer eines Bitcoins dagegen können selbstständig und komplett uneingeschränkt über diesen verfügen, ohne auf einen Dritten vertrauen zu müssen. Durch das Fehlen einer zentralen Instanz wird die Sicherstellung der Transaktionsfähigkeit, die Prüfung der Transaktionslegitimität und das Erreichen eines Transaktionskonsens allerdings deutlich schwieriger.
Vor der Blockchain war virtuelles Geld ohne eine zentrale Instanz nicht möglich, da die Echtheit der Registerzustände (also Vermögenszustände/wem gehört wieviel) nicht überprüft werden konnte/nicht nachvollziehbar war (“Problem der byzantischen Generäle” könnt ihr bei Interesse mal googlen).
Die Lösung für das Sicherstellen der Echtheit des Registers ist die Blockchain.
Transaktionsfähigkeit
Wie gerade bereits erklärt wurde, bedeutet Transaktionsfähigkeit schlicht und einfach, dass der Besitzer eines Guthabens eine Transaktion seines Guthabens vornehmen kann. Bei einer Bank wird dies durch entsprechende Infrastruktur sichergestellt (Filialnetz das schriftliche Aufträge annimmt sowie vom Kunden initiierte Transaktionen über Terminals, Heimcomputer, weitere elektrische Kanäle)
Im Bitcoin-System funktioniert dieser Austausch der Transaktionsaufträge bzw Transaktionsnachrichten über das “Bitcoin-Netzwerk” (siehe Abbildung 1).
Wie schon vorher kurz angesprochen, basiert das Bitcoin-Netzwerk auf “peer-to-peer” Technologie, was bedeutet, dass alle Netzwerkteilnehmer gleichgestellt sind (nicht wie in einer Bank, wo die Bank alles machen kann). Im Bitcoin-Netzwerk existieren also keine Teilnehmer mit Sonderrechten und auch keine zentralen Strukturen.
Über das Bitcoin-Netzwerk werden nun Transaktionsnachrichten und Nachrichten zur Konsensfindung verschickt. Wie genau dies mit dem Standard des Bitcoin Protokolls verfasst wird und welche Rolle der public key und der private Key dabei spielen wird später noch erklärt.
In dem Bild (Abbildung 2) seht ihr nun den einfach dargestellten Ablauf des initiieren einer Transaktion. In einem späteren Artikel wird das ganze noch genauer erklärt.
Abbildung 2
Wann der Empfänger des Zahlungsauftrages von der Transaktionsnachricht erfährt ist egal. Sie muss also nicht zuerst an den Empfänger der Zahlung geschickt werden (er muss nichtmal zu den direkten Netzwerkteilnehmern gehören aber dazu später mehr).
Durch diese Topologie des Bitcoin Netzwerkes ist ebendieses extrem robust. Einzelne Ausfälle von Netzwerkteilnehmern sind egal. Um eine Transaktion zu initiieren genügt es die Transaktionsnachricht einem beliebigen Netzwerkteilnehmer zuzustellen und dann die Ausbreitung dieser Nachricht abzuwarten. Sollte die Weiterleitung der Nachricht scheitern, wird die Transaktionsnachricht einfach erneut an andere Netzwerkteilnehmer weitergeleitet. Dadurch ist die Transaktionsfähigkeit immer sichergestellt.
Jetzt gibt es allerdings ein Problem. Wenn ihr mitgedacht habt, wird euch aufgefallen sein, dass die Nachrichten einfach gefälscht werden könnten. Zum Beispiel: Ich könnte mir jetzt denken, ja du hast ziemlich viele Bitcoins. Ich schreibe jetzt eine Transaktionsnachricht in der ich behaupte, dass du mir 100 Bitcoins schicken willst. Denn wie sollen andere Netzwerkteilnehmer wissen, ob das jetzt stimmt oder nicht? Das ist auch das im Unterpunkt "Unterschiede von btc zu bereits bestehenden Systemen" kurz von mir angesprochene Problem “Der byzantischen Generäle”. Ihr bekommt eine Nachricht, die über verschiedene Personen weitergeleitet wurde. Wie könnt ihr sicher sein, dass der Inhalt der Nachricht wahr ist? Das ist jetzt der Knackpunkt(mit dezentralem Register) der erst mit Kryptowährungen gelöst werden konnte.
Da jeder Mensch unbegrenzt viele Pseudonyme erstellen kann sind Systemausschlüsse einzelner Personen die Transaktionsnachrichten fälschen auch keine Lösung.
Also muss jeder (Empfänger) einer Nachricht im Bitcoin Netzwerk in der Lage sein, deren Wahrheitsgehalt zu überprüfen.
Transaktionslegitimität
Um nun zu wissen, ob die Transaktion von einem bestimmten Guthaben auch tatsächlich vom Eigentümer des Guthabens initiiert wurde, bedient sich Bitcoin bewährter kryptographischer Verfahren.
Der Eigentümer eines Guthabens ist als einzigster im Besitz eines privaten Schlüssels (hoffentlich:D) Mit diesem privaten Schlüssel wird nun die Transaktionsnachricht vor dem Versenden ebendieser kryptographisch verschlüsselt. Mit dem zugehörigen öffentlichen Schlüssel kann die Nachricht dann wieder entschlüsselt werden.
Wie wahrscheinlich jeder weiß/wissen muss der in Kryptowährungen investiert und diese vorbildlich auf eine sichere Wallet gesendet hat, ist der öffentliche Schlüssel bekannt(im Gegensatz zum privaten schlüssel den nur der Eigentümer des Guthabens kennt).
Daraus folgt, dass die Entschlüsselung der Transaktionsnachricht (die durch den privaten Schlüssel verschlüsselt wurde) jeder beliebigen Person möglich ist(mithilfe des zugehörigen öffentlichen Schlüssels des Guthabens)
Dadurch kann nun die Verifizierung des Initianten der Transaktionsnachricht erfolgen. Die Entschlüsselung der Transaktionsnachricht klappt nämlich nur dann, wenn die Nachricht mit dem dem privaten Schlüssel zugehörigen öffentlichen Schlüssel entschlüsselt wird.
Da der Besitzer des Guthabens der einzige Mensch ist, der seinen privaten Schlüssel kennt kann durch dieses Verfahren überprüft werden ob der Initiant der Transaktion tatsächlich der Besitzer dieses Guthabens ist. Der private Schlüssel wird auch nirgendswo gespeichert (außer auf der Hard-Wallet des Besitzers).
Also:
Du willst mir 10Bitcoins schicken (Danke:D). Du verschlüsselst die Nachricht:”Ich schicke urdreamscometrue 10 Bitcoins” also mit deinem privaten Schlüssel. Raus kommt dann irgend ein komisches Zahlen/Buchstabengewirr. Dann verschickst du dieses Buchstaben/Zahlengewirr (also die verschlüsselte Transaktionsnachricht) an einen beliebigen Netzwerkteilnehmer der nun versucht die verschlüsselte Transaktionsnachricht mit deinem öffentlichen Schlüssel zu entschlüsseln. Gelingt diese Entschlüsselung und es kommt der Satz: “Ich schicke urdreamscometrue 10 Bitcoins” (also ein nach dem Bitcoin Protokoll richtig formatierter Satz heraus der Sinn macht) weiß dieser Netzwerkteilnehmer, dass die Nachricht wirklich von dir ist (dem Eigentümer des Guthabens). Er leitet die Transaktionsnachricht also an seine Verbindungen weiter, die diese ihrerseits wieder überprüfen um die Echtheit der Nachricht zu überprüfen und Manipulation vom vorherigen Empfänger auszuschließen.
Die Verbindungen, an die die Transaktionsnachricht nun immer weiter gesendet wird, werden also nur die verschlüsselte Originalnachricht akzeptieren. Ist die Transaktionsnachricht legitim kommt sie in die individuelle Transaktionssammlung des überprüfenden Netzwerkteilnehmers, wo sie sich dann in einer art “Warteschlange” befindet und bereit für die (mögliche) Übernahme ins Register ist.
Transaktionskonsens
Was ist ein “Transaktionskonsens”überhaupt? Konsens bedeutet sowas wie “Übereinstimmung der Meinungen”(laut Google). Bei Bitcoin (und anderen Kryptowährungen) ist es so, dass aufgrund der Dezentralität verschiedene Registerversionen entstehen können. Bei einer Bank (zentrale Instanz) ist ein Transaktionskonsens wie ich ihn vorher beschrieben habe nicht von nöten, da es immer nur dieses eine Register der zentralen Instanz geben wird. Bei Dezentralen Projekten stellt sich nun die Frage welche der Registerversionen nun gültig ist.
Gerade haben wir gelernt, wie eine Transaktion bei Bitcoin initiiert wird. Dort haben wir herausgefunden, dass wenn eine Transaktionsnachricht von einem Teilnehmer des Bitcoin Netzwerkes für legitim befunden wird, diese in eine art Transaktionssammlung des Teilnehmers kommt und sich nun in einer “Warteschlange” (zusammen mit den anderen überprüften Transaktionsnachrichten des Teilnehmers) befindet und dort darauf wartet in das Register zu kommen.
Nun könnte es allerdings passieren, dass jemand zwei widersprüchliche Transaktionsnachrichten losschickt, in denen er die Rechte an einer Bitcoin Einheit an unterschiedlichen Personen zuspricht. Er schickt also direkt nacheinander zwei Transaktionsnachrichten los, in denen er die Besitzrechte 1 Bitcoins (den er als Guthaben hat) einmal mir gibt und einmal dir. Die Transaktionslegitimität ist da, da er diese Transaktionsnachricht selber initiiert hat. Wie löst man dieses Problem also?
Bei einer zentralen Instanz wäre die Transaktion gültig, die zuerst bei der zentralen Instanz eintrifft. Da das Bitcoin Netzwerk jedoch keine zentrale Instanz hat, ist die Möglichkeit da, dass ein Teil des Netzwerkes von der einen Transaktionsnachricht erfährt und der andere Teil von der anderen Transaktionsnachricht die im Konflikt zur ersten steht.
Double Spend Problematik
Das Problem hierbei nennt man Double Spend und es bezeichnet das Problem, wenn jemand die Besitzrechte ein und derselben Bitcoin Einheit an mehrere Personen gleichzeitig überträgt. Es darf natürlich nur eine der beiden Transaktionen durchgeführt werden und ins öffentliche Register gelangen. Man benötigt also einen Prozess, der das Erreichen eines Konsens ermöglicht und festhält, welche Transaktion als gültig betrachtet wird.
Hierfür werden von den Netzwerkteilnehmern sogenannte Blocks erstellt (Informationspakete die mindestens eine Transaktion beinhalten). Zum Erstellen dieser Blocks benötigt man Rechenleistung die von den Netzwerkteilnehmern freiwillig erbracht werden kann (das sind dann die Miner)
Ein Miner kann beliebige Transaktionen aus seiner Warteschlange zum Erstellen eines Blocks benutzen. Die Transaktionen müssen dafür natürlich alle legitim sein und dürfen nicht mit einer anderern Transaktion in diesem Block in Konkurrenz stehen. Falls ein Bitcoin Miner eine dieser Bedingungen missachtet wird sein Block vom Rest des Netzwerkes abgelehnt. Neben den Transaktionen muss ein Block Angaben dazu machen, an welchen Registerzustand er anknüpft (Referenzierung an einen anderen Block) dadurch entsteht dann eine chronologische Blockkette (Blockchain). (siehe Bild)
Abbildung 3
Die zur Referenzierung des Blocks verwendete Identifikationsnummer ist abhängig vom Inhalt des Blocks (Hashwert des Block Headers; dazu später mehr) Daher hätte die Veränderung einer Transaktion oder eines anderen Block Bestandteiles die Veränderung der Identifikationsnummer zur Folge. Wenn diese Identifikationsnummer verändert wird, müssten alle nachfolgenden Blocks neu erstellt werden. Beispiel: Da die Identifikationsnummer in Block 1 verändert wurde und sie ein Input von Block 2 ist verändert sich auch die ID von Block 2 und damit auch die von Block 3 und allen nachfolgenden die dann alle neu erstellt werden müssten wenn man Block 1 verändern würde. Die Blockkette (Blockchain) lässt sich also (praktisch) nicht verändern (außer mit unglaublicher Rechenleistung bzw über 50% der Gesamtrechenleistung).
Per Konsens wird nun die Version der Kette die nur legitime Transaktionen beinhaltet und die längste bekannte Kette des Systems darstellt als aktueller Zustand des Registers betrachtet.
Ein einzelner Block kann extrem schnell berechnet werden. Um zu verhindern, dass Blocks schneller geschaffen werden, als sie über das Bitcoin Netzwerk ausgetauscht werden können, wird die Akzeptanz der Blöcke beschränkt. So akzeptiert das Netzwerk im Schnitt nur alle 10 Minuten einen neuen Block. Das ganze wird so erreicht, dass die Identifikationsnummer des neuen Blocks unter einem bestimmten Wert liegen muss welcher alle 2016 Blocks geändert wird. Aufgrund der speziellen Eigenschaft der Funktion mit welcher die Identifikationsnummer berechnet wird, kann nicht erahnt werden, welche Inputs zum gewünschten Zielwert der ID führen. Das ganze ist also eine Art “Glücksspiel:D Die Teilnehmer probieren solange verschiedene Block Inhalte aus, bis sie eine Kombination finden, die zur gewünschten ID führt. Damit ein Miner verschiedne ID´s erstellen kann, ohne die Transaktionen oder die Referenz zu verändern gibt es im Block Raum für arbiträre Daten (Nonce) welche der Miner durchprobieren kann, bis der Block die gewünschte ID hat (Hashwerte).
Dieses Verfahren wird Proof-of-work genannt (Arbeitsnachweis). Ein Block mit der gewünschten ID ist nämlich ein Beweis dafür, dass für seine Erstellung eine gewisse Rechenleistung (im Schnitt) aufgebracht wurde.
Wenn wir nochmal zum *Double-Spend *Problem zurückschauen, wird klar wie das ganze gelöst wird. Da in ein und demselben Block keine konkurierenden Transaktionen seien dürfen, befinden sich die beiden konkurrierenden Transaktionen in unterschiedlichen Blocks. Welche der beiden Transaktionen nun vom Block anerkannt wird, liegt darab, welcher Block zuerst fertig gemined wird (dessen ID unter dem Schwellenwert liegt). Die Kette kann sich also in mehrere Richtungen entwickeln je nachdem welcher Miner den nächsten Block erstellt (es beziehen sich mehrere Blocks auf den selben Referenzwert).
Coinbase Transaktion
Doch wieso sollte man Miner werden? Man muss immerhin die Rechenleistung (Hardware und Strom) bezahlen. Die Lösung hierfür ist die sogenannte Coinbase Transaktion (neue Bitcoins als Belohnung für den Miner). Diese Transaktion generiert neue Bitcoin Einheiten für den Miner, der den Block erstellt hat. Gelingt es einem Miner einen Block mit gültiger ID zu erstellen, wird der Block an das Ende der Kette angehängt. Wie alle Transaktionen wird die Coinbase Transaktion nur dann akzeptiert, wenn sie in der längsten Version der Kette auftaucht was den Minern den Anreiz gibt, den Block der längsten Kette zu referenzieren.
Die ersten vier Jahre war die Entlohnung (coinbase Transaktion) 50 Bitcoins. Diese Entlohnung wird alle 210 000 Blocks halbiert. Die Menge aller Bitcoin Einheiten steigt also nach einem abnehmenden Wachstum. (Nachdem alle 21 Millionen Bitcoin Einheiten geschaffen sind, wird das System ausschließlich durch Transaktionsgebühren getragen.)
Netzwerkknoten
Die drei Grundfunktionen der Netzwerkteilnehmer
Es gibt grundlegend drei verschiedene Funktionen die die Netzwerkteilnehmer ausüben können. Das sind:
Verifizierungsfunktion: Eingehende Transaktionsnachrichten werden verifiziert, lokal abgelegt und an andere Netzwerkknoten weitergeleitet. Außerdem wird eine vollständige Kopie der Blockchain gehalten und die Gültigkeit der einzelnen Blocks und Ketten überprüft. Die Verifizierungsfunktion ermöglicht das Versenden und Empfangen von Blocks. Knoten die mindestens über die Verifizierungsfunktion verfügen, werden Full nodes (vollwertige Knoten) genannt.
Wallet Funktion:Die sichere Aufbewahrung von privaten Schlüsseln (mit denen, wie wir ja gelernt haben die Transaktion initiiert wird, bzw die Legitimität der Transaktion sichergestellt wird) sowie die Verwaltung des Guthabens. Die Wallet Funktion ist an Endnutzer gerichtet und bietet oft noch 2FA oder andere Authentifikationsmethoden mit denen der private Schlüssel geschützt werden kann.
Mining-Funktion:Netzwerkknoten mit Mining-Funktion sind aktiv an der Erstellung neuer Blocks und damit an der Erweiterung des Blockchain Registers beteiligt.
Ein neuer Netzwerkknoten entsteht, indem man einen Bitcoin-Client installiert und Kommunikation mit anderen Netzwerkknoten des Bitcoin Netzwerkes aufnimmt. Dank open-source gibt es viele verschiedene Programme und wenn ihr das nötige Know-how besitzt könntet ihr euch auch selber einen Client programmieren und diesen mit dem Bitcoin Netzwerk kommunizieren lassen. Alle Clienten (die funktionieren wollen:D) halten sich an das standartisierte Verbindungs und Kommunikationsprotokoll. Der bekannteste Client ist Bitcoin Core. Mit diesem Client wird ein vollwertiger Knoten erstellt, der sich über eine grafische Benutzeroberfläche steuern lässt.
Bitcoin Core hält als vollwertiger Knoten eine Kopie der gesamten Blockchain (zurzeit über 145GB). Außerdem eine Wallet und Mining Funktion.
Hier der Link: https://bitcoin.org/en/download
Verbindungsaufbau und Topologie
"Der Verbindungsaufbau erfolgt über die gängigen Netzwerkprotokolle (TCP/IP) und standardmäßig über Port 8333." Wenn ein Knoten eine Verbindung eingehen möchte, sendet er eine Nachricht an die bekannte IP Adresse irgendeines Knotens. Die Nachricht enthält Angaben zum eigenen Knoten und Register wodurch die Verbindung ermöglicht wird.
Jetzt stellt sich die Frage woher der Knoten die IP Adressen bekommt, worauf es zwei Antworten gibt:
- Am Anfang hätte der Knoten keine Adressen womit er useless wäre, weshalb beim Download des Clienten eine IP Liste mit heruntergeladen wird.
- Wenn der Knoten sich mit einem anderen Knoten verbindet, kann er die Adressliste des Knotens anfragen und so seine eigene Adressliste um die neuen IP Adressen erweitern. Die IP Adressen die der Knoten ihm schickt sind eine zufällige Auswahl aus seiner Adressliste. Diese zufällige Auswahl der Adressen wird Bootstrapping genannt.
Umso mehr Verbindungen umso besser. (Standardmäßig versucht der Knoten mindestens 8 Verbindungen zu halten).
Aufgrund des Bootstrappings entstehen im Bitcoin Netzwerk praktisch zufällige Verbindungspfade, was zu einer sehr komplexen Netzwerktopologie führt (zufällige Entstehung von Netzwerkpartitionen quasi ausgeschlossen).
Umso mehr vollwertige Knoten (Full nodes) das Bitcoin Netzwerk besitzt, umso robuster wird es. Diese Anzahl ist also ein guter Indikator für den Zustand des Netzwerkes.
Das Problem ist, dass es keinen wirklichen Anreiz gibt einen vollwertigen Knoten zu betreiben, da man nicht entlohnt wird, aber selber die Strom und Hardware Kosten hat. Miner erhalten zwar wie wir gelernt haben eine Belohnung (Coinbase-Transaktion) aber um ein Miner zu sein benötigt man keinen vollwertigen Knoten (es gibt sehr viele sog. zentrale Mining Pools).
Auch braucht man als normaler Anwender keinen vollwertigen Knoten(Erhalt und Besitz von Bitcoin Einheiten und das Initiieren einer Transaktion) können auch ohne das Betreiben eines vollwertigen Knotens genutzt werden.
Das ist ein Problem, da die Menge der Transaktionen zunimmt, aber immer weniger vollwertige Knoten zur Verarbeitung der Transaktionen zu Verfügung stehen, was zu Problemen hinsichtlich der Skalierbarkeit von Bitcoin führt. Die Zahl der vollwertigen Netzwerkknoten kann also nicht mit der Anzahl der Bitcoin Nutzer gleichgesetzt werden.
Aufgrund der Hardware Anforderungen (Speicherplatz etc) und dem Stromverbraucher entscheiden sich viele Nutzer gegen den Betrieb eines Vollwertigen Knotens und verlassen sich somit bei der Kommunikation und dem Verifizieren der Transaktionen auf andere Teilnehmer die eine Full node betreiben.
Man muss also nicht selber das Blockchain Register herunterladen und ständig aktualisieren etc. Was natürlich Vorteile für den einfachen Anwender bietet. Der Nachteil ist der Verlust an Sicherheit. Das Bitcoin Netzwerk bietet jedem die Möglichkeit das komplette Register sowie die Legitimität von Transaktionen zu überprüfen. Wenn ein Netzwerkteilnehmer auf diese Möglichkeit verzichtet verliert er natürlich einen Teil seiner Selbstständigkeit, da er sich auf seine Informationsquelle verlassen muss/Vertrauen haben muss. Wie stark diese Abhängigkeiten sind, kommt darauf an, wie stark die eigene Netzwerkteilnahme ist/wieviele Funktionen genutzt werden.
Quasi-zentrale Subnetzwerke
Quasi-zentrale Subnetzwerke sind die höchste Form von Abhängigkeit. Dort ist der Teilnehmer nur indirekt an das Bitcoin Netzwerk angebunden und verlässt sich somit ganz auf die Informationen und den Kommunikationskanal einen spezifischen Knotens. Dabei ist der Teilnehmer nicht in der Lage die Informationen die er von diesem spezifischen Knoten bekommt zu überprüfen.
Abbildung 4
Dies ist natürlich einerseits sehr bequem, birgt aber eine extreme Abhängigkeit und damit Gefahr von dem einzelnen Knoten.
Kurz gesagt: Nicht zu empfehlen, da man die ganzen Vorteile eines peer-to-peer Netzwerkes wegwirft und wieder das Vertrauensproblem hat.
Simplified Payment Verification (SPV) Knoten
Dieser Client ermöglicht das Ausüben aller Wallet Funktionen ohne, dass man die Blockchain herunterladen muss. Im Unterschied zum Vorherigen Client wo der Teilnehmer nur indirekt über einen einzelnen Knoten mit dem Bitcoin Netzwerk verbunden war, verfügen SPV Knoten über einen direkten Zugang zum Bitcoin Netzwerk. Die benötigten Informationen werden also von verschiedenen Knoten beschafft und können immerhin teilweise geprüft werden. Man hat hier also viel mehr Selbstständigkeit und Sicherheit als mit dem Subnetzwerk von vorhin.
Ein SPV Knoten speichert nur einen kleinen Teil des Blocks (den Block Header, wie wir gelernt haben wird aus dem die ID berechnet) Darum braucht man mit einem SPV Client nur circa ein Tausendstel des Speicherplatzes eines vollwertigen Knotens.
Um zu überprüfen, dass das für eine Transaktion referenzierte Guthaben nicht schon bereits verwendet wurde überprüfen vollwertige Knoten das komplette Blockchain Register (lokale Datenbank mit noch nicht verwendeten trx outputs).
SPV Knoten nutzen im Gegensatz eine Heuristik basierend auf der Anzahl der Bestätigungen, durch die eine Transaktion besichert wurde. Wurde der Block also durch eine gewisse Anzahl weiterer Blocks referenziert betrachtet der SPV Knoten die darin enthaltenen Transaktionen als gültig (er verlässt sich also darauf, dass das ganze bereits geprüft wurde) funktioniert auch ziemlich gut, da der Miner eines neuen Blocks den Block den er referenziert sehr wahrscheinlich prüfen wird, da im Falle eines falschen Blocks auf den er referenziert seine Rechenleistung umsonst wäre (da ungültig).
Pool-Mining
Beim Pool Mining wird die Arbeit an verschiedene Pool-Mitglieder aufgeteilt.
Pool Mining reduziert die Volatilität der Entlohnungen, da diese aufgeteilt wird. Die konstantere Auszahlung macht den Prozess berechenbarer.
Beim klassischen Mining muss man einen vollwertigen Knoten betreiben. Beim Pool-Mining kann man als Pool-Mitglied ohne die Verifizierungsfunktion minen. Die Informationen, die die Miner brauchen verteilt der Pool-Betreiber an die Pool-Mitglieder (wie beim quasi zentralen Subnetzwerk eigentlich). Pool-Mining ist also ein Hauptgrund für den Rückgang der vollwertigen Knoten und somit Teil einer möglichen Zentralisierung des Bitcoin-Systems.
Das Bitcoin Kommunikationsprotokoll
Wie wir vorher gelernt haben, kann sich jeder seinen eigenen Client programmieren und so mit dem Bitcoin Netzwerk kommunizieren. Diese Kommunikation muss jedoch in einer standardisierten Form erfolgen (logisch) Wie gestern schon kurz erwähnt, sollte der Client sich an diese Formatierung halten, wenn er funktionieren möchte (sich mit anderen Knoten austauschen will) und das ist ja der Sinn des Netzwerkes (Austausch von Informationen über den aktuellen Zustand der Besitzverhältnisse und dann die Konsensfindung)
Wenn man sich einen solchen Client installiert (zb Bitcoin Core, verlinkt unter den drei Grundfunktionen der Netzwerkteilnehmer) und ihn dann startet muss man erstmal ein paar Stunden Geduld haben, in denen der Client alle Blocks des aktuellen Blockchain Registers von anderen Knoten bezieht und verifiziert. In die Software des Clienten ist nur der erste Block: Genesis Block eingebunden. Die anderen holt der Client sich wie gesagt von anderen Knoten (über 100GB).
Natürlich muss jeder Block nur einmal verifiziert und heruntergeladen werden. Lange Ladezeiten hat man nur dann, wenn der Client gerade installiert wurde oder wenn der Client(also Knoten) übere längere Zeit nicht mit dem Bitcoin Netzwerk verbunden war.
Austausch von Blocks
Der Austausch ob jeder Knoten die aktuelle Registerversion hat, erfolgt über den Austausch von Nachrichten in denen sich die Netzwerkknoten gegenseitig die ID(Identifikationsnummer) des neuesten Blocks der vom jeweiligen Knoten gespeicherten Kette mitteilen. Wenn diese Nummer gleich ist, müssen die Knoten keine Blocks austauschen. Passt sie nicht, tauschen die Knoten selbstständig die Informationen untereinander aus. Wenn ein Knoten dann neue Block Informationen bekommt, prüft er diese selbstverständlich auf die Gültigkeit der darin enthaltenen Transaktionen und verifiziert, dass die Transaktionen nicht ein bereits verwendetes Guthaben referenzieren und die Transaktion vom Eigentümer des jeweiligen Guthabens initiiert wurde. Er wird außerdem noch überprüfen ob der Block die korrekte ID des vorherigen Blocks referenziert und ob seine eigene ID unter dem Schwellenwert liegt.
Jeder (vollwertige) Knoten kann prüfen, ob ein Block die verschiedenen Konsensbedingungen erfüllt und damit in das Blockchain Register aufgenommen werden kann.
Austausch von Transaktionen
Wie wir bereits wissen sind Transaktionsnachrichten Zahlungsaufträge, die über das Bitcoin Netzwerk propagiert werden und von den vollwertigen Knoten geprüft und verarbeitet werden. Neben/zusammen mit dem Austausch von Block Informationen können Knoten auch Transaktionsdaten miteinander teilen.
Transaktionsnachrichten werden von Knoten immer geprüft(Auszahlungsbedingungen und Signaturen) was das Netzwerk vor DOS Angriffen, bei denen der Datenverkehr durch viele ungültige Transaktionsnachrichten gestört werden könnte schützt.
Ungültige Transaktionsnachrichten werden einfach verworfen. Gültige Transaktionsnachrichten kommen wie bereits erwähnt in den Transaction Pool des Knotens und die Originalnachricht wird anderen Knoten angeboten (exponentielle Verbreitung der Transaktionsnachrichten). Falls ein einzelner Teilnehmer die Verbreitung einer gültigen Transaktionsnachricht nun verweigert(oder er ausfällt;stromausfall oder so), ist das egal, da der Initiant der Transaktion diese einfach an andere Knoten weiterleiten kann.
Bitcoin Kopien
Da der Quellcode von Bitcoin open source ist, jeder ihn kopieren und verändern kann gibt es zahlreiche sogenannte Altcoins (Alternative Coins). Durch einen Altcoin der auf dem Bitcoin Quellcode basiert, werden natürlich keine neuen Bitcoin Einheiten geschaffen. Diese Altcoins basieren auf eigenen Registern. Jeder kann also seine eigene Kryptowährungen erschaffen und dafür zb Bitcoin als Vorbild nutzen. Ob diese dann erfolgreich wird und zu einer "Gefahr" für Bitcoin wird kommt darauf an, wie diese Kryptowährung von anderen Menschen eingeschätzt wird.
Verwaltung des Bitcoin Systems
Die Dynamik eines Systems ist von großer Bedeutung. Ein statisches System kann sich nicht an veränderte Anforderungen oder Bedingungen anpassen. Das Bitcoin System lässt sich also verändern. Dafür muss nur ein genügend großer Teil des Netzwerkes für diese Änderung sein.
Vorschläge für eine solche Änderung können grundsätzlich von jedem hervorgebracht werden. Die Formalisierung einer solchen Idee erfolgt dann über den Prozess der Bitcoin Improvement Proposals (BIP) (ich werde zum Thema BIP unten eine Quelle verlinken)
Wenn ein Vorschlag umstritten ist und kein Konsens über Annahme oder Ablehnung besteht wird darüber abgestimmt. An diesen Abstimmungen können nur Miner teilnehmen. Immer wenn ein Miner einen gültigen Block erstellt, kann er eine Stimme abgeben (umso mehr Rechenleistung man hat, umso mehr Macht hat man also in einer Abstimmung). Ein Vorschlag wird angenommen, wenn er in einem vorher festgelegten Zeitintervall (zb in den letzten 2000 Blocks) eine vorgeschriebene Prozentzahl an Stimmen erreicht hat. Da in einem dezentralen System niemand dazu gezwungen werden kann, eine Änderung umzusetzen bzw das Resultat der Abstimmung zu respektieren, gibt es bei jeder Meinungsverschiedenheit die Gefahr, dass das System sich spaltet und sogenannte Forks (Ein Teil des Netzwerks setzt eine Änderung um, während der andere Teil des Netzwerks den alten Code behält) entstehen. Durch Forks entstehen also konkurrierende Register.
Nun unterscheidet man noch zwischen Softforks und Hardforks kurz gesagt sind Softforks vorwärtskompatibel (unter der neuen Software erstellte Register werden auch von der alten Software als gültig betrachet) und Hardforks rückwärtskompatibel (unter der alten Software erstellte Register werden von der neuen Software als gültig betrachtet).
Wie in dem Bild zu sehen ist, setzen sich Softforks dann durch, wenn ihnen die Mehrheit der Netzwerkrechenleistung zuteil wird. Eine Hardfork lässt sich nur durch Dominanz der alten Software lösen.
Abbildung 5
All diese Prozesse der weiteren Entwicklung von Bitcoin sind von der Rechenleistung abhängig (am meisten Rechenleistung heißt deine Änderung setzt sich durch).
Der Schutz vor Missbrauch durch die Miner ist jedoch indirekt implementiert, da wenn die Miner eine Änderung durchsetzen die niemandem gefällt die Akzeptanz von Bitcoin schnell sinken wird, wodurch der Preis der Bitcoin Einheiten sinkt wodurch die Miner keinen Gewinn mehr machen. Besonders einen Hardfork könnten die Miner ohne eine breite Zustimmung gar nicht durchsetzen, da bei einem Hardfork alles aktualisiert werden muss; Börsen müssen Änderungen implementieren usw. Es liegt also im Interesse der Miner, die für das Bitcoin System besten Änderungen durchzusetzen.
Wieso Bitcoin Fiatgeld ist:
Bitcoins sind Fiatgeld, da sie keinen Fundamentalwert haben oder ein angeknüpftes Zahlungsversprechen besitzen. Der Preis von Bitcoin resultiert also aus der Erwartung der Menschen, dass sie einen Bitcoin den sie jetzt kaufen später einmal teurer verkaufen können(die Besitzrechte)
Die Rechenleistung ist kein Fundamentalwert. Die Höhe der aufgewandten Rechenleistung ist eine Konsequenz des Preises und nicht andersrum. Wenn der Preis von Bitcoin sinkt, sinkt auch die Entschädigung für die Miner (die benötigte Rechenleistung bleibt jedoch gleich) womit es weniger Miner geben würde. Diese Ressource (die Stromkosten die nötig sind) die (angeblich) der Fundamentalwert sind, sind also direkt vom Bitcoin Preis abhängig und könnten ohne weiteres wegfallen wenn es keinen Anreiz mehr gäbe Bitcoins zu minen (Gewinn aus Coinbase Transaktion kleiner als für den Block aufgewandte Rechenleistung).
Bitcoins sind kein gesetzliches Zahlungsmittel (niemand ist zu deren Annahme verpflichtet). Bitcoin Einheiten erhalten ihre Legitimität nicht durch das Vetrauen in einen Staat oder eine zentrale Instanz sondern durch eine Technologie.
Quellen
- Das in meinen Augen beste Buch zu diesem Thema, an dessen Aufbau sich der gesamte Artikel zu Bitcoin orientierte:
“Bitcoin, Blockchain und Kryptoassets Eine umfassende Einführung”
Geschrieben von: Aleksander Berentsen und Fabian Schär - Alles über Bitcoin Improvement Proposals (BIP) (https://github.com/bitcoin/bips/blob/master/bip-0001.mediawiki)
- Bitcoin ist kein Fiatgeld; siehe buch und Quelle aus einem Kommentar von @lauch3d unter diesem post (https://en.bitcoin.it/wiki/Myths#Bitcoin_is_backed_by_processing_power)
- Bitcoin Whitepaper
https://bitcoin.org/bitcoin.pdf - Interessante Charts
https://www.blockchain.com/charts - Paper zum lightning network
https://lightning.network/lightning-network-paper.pdf - lightning network implementation
https://github.com/ElementsProject/lightning - "Academic certificates on the Blockchain"
https://digitalcurrency.unic.ac.cy/free-introductory-mooc/self-verifiable-certificates-on-the-bitcoin-blockchain/academic-certificates-on-the-blockchain/ - blockchain based property ownership recording system
https://chromaway.com/papers/A-blockchain-based-property-registry.pdf
Die Abbildungen haben ich alle selbst mit Paint3D erstellt. Als Vorlage dienten mir die Abbildungen im gerade genannten Buch.
Ich danke euch für eure aufmerksamkeit und vorallem @lauch3d und @chappertron für die sehr interessanten Diskussionen und Erkenntnisse.
Ein wirklich sehr guter Bericht. Gut und einfach beschrieben.
LG Michael
!invest_vote
!jeenger
dankesehr
Your contribution was curated manually by @mima2606
Keep up the good work!
Wahnsinns Review zum Thema!
Re-Hive!
Muss ich mir gleich mal ausdrucken und entspannt durchschmöckern.
Vielen Dank Gruß
Chapper
Danke dir Chapper,
besteht im grunde aus meinen 11 Bitcoin einzeln Artikeln, wo ich nochmal alles durchgegangen bin und rechtschreibfehler etc entfernt habe/entfernen werde.
Ist so einfach deutlich übersichtlicher als mit den vielen Einzel artikeln.
beste grüße
da lohnt es sich ab und zu mal bei Hive reinzusehen. Finde auch, dass es sich so, nun richtig flüssig ließt.
Viele Grüße
danke dir, schön das du noch ab und zu vorbeischaust.
beste grüße und weiterhin viel erfolg 💪
da fällt mir grad ein, du interessierst dich doch für UBI, hast es wahrscheinlich schon im Radio gehört. DAS deutsche Wirtschaftsinstitut macht ne Studie mit 120 Leute die 3Jahre lang 1200€ UBI bekommen sollen. 1Million Bewerber werden angenommen. Die Chancen sind also nicht schlecht. https://www.pilotprojekt-grundeinkommen.de/teilnahme-bewerbung aber 1 Millionen sind auch schnell zusammen wenn das auf Twitter rumgeht. Beißt sich leider auch mit Bafög
Hatte ich noch gar nicht mitbekommen, danke für den hinweis.
PS: Falls du irgendwann mal wieder artikel schreibst (in einem forum oder anderer plattform) würde es mich sehr freuen wenn du das hier mitteilst damit ich es verfolgen kann.
grüße, bleib fit :D
Thanks for your contribution to the STEMsocial community. Feel free to join us on discord to get to know the rest of us!
Please consider supporting our funding proposal, approving our witness (@stem.witness) or delegating to the @stemsocial account (for some ROI).
Please consider using the STEMsocial app app and including @stemsocial as a beneficiary to get a stronger support.
Danke für die Zusammenstellung dieser Informationen 👍
Du hast ein Upvote von mir bekommen, diese soll die Deutsche Community unterstützen. Wenn du mich unterstützten möchtest, dann sende mir eine Delegation. Egal wie klein die Unterstützung ist, Du hilfst damit der Community. DANKE!
Du wurdest als Member von @investinthefutur gevotet!
Dazu noch ein kleines !BEER
View or trade
BEER
.Hey @urdreamscometrue, here is a little bit of
BEER
from @investinthefutur for you. Enjoy it!Learn how to earn FREE BEER each day by staking your
BEER
.@mima2606 denkt du hast ein Vote durch @investinthefutur verdient!
@mima2606 thinks you have earned a vote of @investinthefutur !
@tipu curate