Netzwerkknoten (Bitcoin)steemCreated with Sketch.

in #deutsch6 years ago (edited)

Hey liebe Kryptowährungs/Technologie-Interessierte. Dies ist jetzt bereits mein vierter Artikel zum Thema Bitcoin (Technische Erläuterungen). Zu den bisherigen Beiträgen habt ihr mir ein gutes Feedback gegeben was mich natürlich sehr freut:) Hier nochmal die bisherigen Artikel in einer Übersicht:

  1. Das Bitcoin-System
  2. Erfüllung der drei Transaktionsbedingungen bei Bitcoin
  3. Transaktionskonsens bei Bitcoin (Mining und Blockchain)

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:

  1. Am Anfang hätte der Knoten keine Adressen womit er useless wäre, weshalb beim Download des Clienten eine IP Liste mit heruntergeladen wird. 
  2. 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 Verfizieren 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 indirket 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.

Siehe Abbildung

Dies ist natürlich andererseits sehr bequem birgt aber eine extreme Abhänghigkeit 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 ganzer 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.

Jetzt könnte man noch etwas über Bloom-Filter schreiben, aber das würde den Rahmen sprengen:D

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 war es auch schon wieder mit diesem Artikel. Das Thema war diesmal etwas trocken wie ich finde, aber da wir nun immer mehr vom Bitcoin Netzwerk verstehen, müssen wir uns natürlich eingehender mit den bereits besprochenen Dingen beschäftigen, was das ganze etwas komplizierter macht. Vielleicht wagen wir uns sogar mal an elliptische Kurven und so:D In denen nächsten Artikeln werden wir uns nochmal eingehender mit der Transaktionslegitimität und dem Transaktionskonsens beschäftigen.

Über Iota(Technische Erläuterungen würde ich auch noch gerne mehr erfahren und somit auch Artikel schreiben aber kommt drauf an, wie gut ich das ternäre Zeug so verstehe:D

Über einen Upvote würde ich mich sehr freuen und über Feedback und Anmerkungen ebenfalls:)

Quellen:

 

  • Bild 

 Das Bild habe ich mithilfe von Paint 3D erstellt. 

  • Mein Wissen über dieses Thema habe ich ebenfalls größtenteils aus diesem Buch.

https://www.amazon.de/gp/product/3738653929/ref=as_li_tl?ie=UTF8&tag=urdreamscomet-21&camp=1638&creative=6742&linkCode=as2&creativeASIN=3738653929&linkId=d95515f27071b70b443408ad7170a100

Dies ist ein ref Link von mir zu dem Buch.

Ebenfalls als Quelle empfehlen kann ich Medium und https://coinforum.de/forum/19-technik-entwicklung-sicherheit/
 

Sort:  

wow, jetzt hast du einen Lauf. Alles nachvollziehbar und hochwertig wiedergegeben. Man merkt beim lesen richtig, dass du alles verstanden hast.

da mein upvote nicht so groß ist, hab ich nen kleinen tip auf der wallet hinterlassen. Weiter so! Dann werd ich Bitcoin vielleicht doch verstehen bevor der nächste Bullrun losgeht :D

Vielen Dank für dein Feedback und die sbd!
Hast Recht, man muss ja verstehen durch was man reich geworden ist(hoffentlich:D)
Hab dich mal bei @steembasicincome "eingeschrieben". Bekommst dann nach ner Bearbeitungszeit von so 6 Tagen auf jeden Post den du ab dann schreibst nen kleinen Upvote. Ist zwar nicht viel aber immerhin eine kleine "Ergänzung" zu meinen upvotes auf deine Posts:)

Hi, toller Artikel mal wieder!

Eine Frage: Wie kann ich herausfinden wie ich mit dem Bitcoin-Netzwerk verbunden bin? Ich verwende Electrum & Jaxx. Wahrscheinlich hat jede Wallet ihre eigene Kommunikationsstrategie oder worauf kommt es an? Gibt es vielleicht eine Möglichkeit die Betreiber von Knoten künftig auch zu entlohnen?

Ich denke es wird noch reichlich Optimierungsarbeit nötig sein.

Bei Ethereum und Cardano muss ich oft eine komplette Synchronisation vornehmen. Weißt du was es damit konkret auf sich hat? Dadurch wird das Netzwerk doch bestimmt sicherer, oder?

Ich schreibe zuviel

Schönes Wochenende und Danke vielmals

Gruß

Chapper

Posted using Partiko Android

Edit: glaube mein reply hat nicht funktioniert daher schreib ich hier nochmal kurz:D die Antwort steht unten als Kommentar

Hallo ich bin Mikrobi,

dein Beitrag hat mir sehr gut gefallen und du bekommst von mir Upvote.
Ich bin ein Testbot, wenn ich alles richtig gemacht habe, findest du dein Beitrag in meinem Report wieder.

LG

Mikrobi

Hey,

Wie kann ich herausfinden wie ich mit dem Bitcoin-Netzwerk verbunden bin?

Ich würde sagen, dass kommt auf den Clienten bzw das Interface an. Gibt bestimmt Clienten die dir dann anzeigen, mit wievielen Knoten du verbunden bist.
Und nach der Installation beginnt dein Knoten ja sich die Blockchain herunterzuladen (über andere Knoten) wenn das klappt bist du verbunden.

Electrum und Jaxx habe ich noch nie benutzt, ich weiß gar nicht ob die nur die Wallet Funktion haben. Eine Full node muss ja mindestens die Verifizierungsfunktion haben.
Da hat wahrscheinlich jeder Client ein anderes Interface. Von komplizierten Sachen bishin zu einfachen graphischen Interface.
Wie das mit dem Entlohnen von Full node Betreibern aussieht (bei Bitcoin) weiß ich ehrlich gesagt nicht, werde mich da in Zukunft nochmal mit auseinandersetzen.
Es gibt aber auf jedenfall bereits viele andere cryptos die die Betreiber von Full nodes schon entlohnen.
Ist aber wirklich ein Problem. Glaube bei Iota zb ist das Betreiben einer Full node auch noch "ehrenamtlich":D

Bei Ethereum und Cardano muss ich oft eine komplette Synchronisation vornehmen. Weißt du was es damit konkret auf sich hat? Dadurch wird das Netzwerk doch bestimmt sicherer, oder?

Hört sich für mich nach dem aktuell halten der Registerzustände aller Knoten an falls du das meinst. Also dem Block Austausch.
Dir auch noch ein schönes Wochenende und grüße!

Danke wieder mal für die ausführliche Antwort.

Im Zusammenhang mit IOTA hab ich gelesen, dass es sich streng genommen nicht um eine Blockchain, sondern um eine andere Technologie handelt, die wohl primär nicht für Zahlungen o.Ä. zwischen Einzelpersonen, sondern für den Austausch zwischen Maschinen konzipiert wurde. Also so zu sagen ist IOTA eine Roboterwährung.

Abgedreht.

Bis bald

Chapper

Kein Problem:)

Ja Iota hat diese Tangle Technologie(aufgebaut wie die verbindungen der synapsen im Gehirn also Kreuz und quer sozusa.) und skaliert in der Theorie verdammt geil:D Wird theoretisch immer schneller umso mehr dieses Netzwerk genutzt wird.
Ich habe vor nach Bitcoin eine Artikelserie zu Iota zu schreiben, da ich das unbedingt verstehen will:D
Ja Iota soll dieses M2M machen und außerdem den Weg für Iot(internet of things) öffnen.
Grüße!

Geil, wollte mir auch schon ein Buch dazu kaufen. Ist aber extrem mathematisch. Das wirst du uns bestimmt wieder einleuchtender rüberbringen.

Besten Dank

Chapper

Congratulations @urdreamscometrue! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :

Award for the number of posts published

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:
SteemitBoard and the Veterans on Steemit - The First Community Badge.

Do you like SteemitBoard's project? Then Vote for its witness and get one more award!

You just planted 0.12 tree(s)!


Thanks to @urdreamscometrue

We have planted already 3331.14 trees
out of 1,000,000


Let's save and restore Abongphen Highland Forest
in Cameroonian village Kedjom-Keku!
Plant trees with @treeplanter and get paid for it!
My Steem Power = 24448.46
Thanks a lot!
@martin.mikes coordinator of @kedjom-keku
treeplantermessage_ok.png

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.033
BTC 64106.00
ETH 3129.71
USDT 1.00
SBD 4.16