Was passiert mit einer einmal generierten Transaktion?

Ich versuche zu verstehen, wie Bitcoin technisch funktioniert. Ich verstehe die Blockchain, digitale Signaturen usw. Ich interessiere mich mehr dafür, was mit einer Transaktion passiert, sobald sie "erstellt" ist.

Angenommen, Bitcoin enthält nur eine Transaktion pro Block (zur Vereinfachung). Grundsätzlich:

  1. jemand eine Transaktion mit seiner Brieftasche erstellt
  2. diese Transaktion muss validiert werden (Eingaben prüfen, digitale Signatur etc ...
  3. ein Proof of Work muss auf dem Block-Hash berechnet werden
  4. Der Block wird der Blockchain hinzugefügt

Ich weiß also, dass Bergleute dafür verantwortlich sind, den Arbeitsnachweis zu erbringen. Meine Fragen sind:

  • Wie sendet ein Knoten eine Transaktion an die Miner? Ist es Teil des P2P-Protokolls?
  • überprüft der Miner die Transaktion (digitale Signatur, verfügbare Eingaben usw.)?
  • übermittelt Miner Blöcke direkt an die Blockchain?

Dieser Teil ist immer noch verwirrend für mich, alle Hilfehinweise zum Artikel wären großartig :)

Aktualisieren:

In einem P2P-Netzwerk sind Knoten nicht mit allen anderen Knoten verbunden. Nehmen wir also an, das Netzwerk sieht so aus:

node1 <-> node2 <-> node3(1 und 2 sind direkt verbunden und 2 und 3 sind direkt verbunden. 1 und 3 sind durch 2 verbunden)

Wenn node1eine Transaktion zur Validierung gesendet werden soll, wird sie nur an gesendet node2. Dann node2kann es schließlich an gesendet werden , um ihm die Möglichkeit zu geben, die Transaktion node3von zu validieren .node1

Da wir uns jedoch in einem nicht vertrauenswürdigen Netzwerk befinden, hindert nichts daran node2, die Transaktion zu validieren, ohne sie niemals zu übertragen, node3und somit die Mining-Gebühren für sich selbst zu behalten.

Wir könnten uns auch vorstellen, node1die unbestätigte Transaktion niemals zu übertragen, die Mining-Arbeit selbst zu erledigen und nur den validierten Block zu übertragen, damit er in die Blockchain „zusammengeführt“ wird.

Wie geht Bitcoin mit dieser Situation um?

Antworten (2)

Zu deinem Update:

Es ist wahr, dass, wenn ein Knoten eine Transaktion erhält, ihn nichts dazu zwingt, sie weiterzuleiten. Sie können einfach darauf sitzen, wenn sie wollen.

Aber das Netzwerk wird nicht wie das Bild aussehen, das Sie gezeichnet haben. Wenn Node1 tatsächlich möchte, dass seine Transaktion bestätigt wird, möchte er sie an möglichst viele andere Nodes verteilen. Insbesondere wenn Node2 der einzige Miner ist, der über die Transaktion Bescheid weiß, kann dies nicht bestätigt werden, bis Node2 erfolgreich einen Block abgebaut hat. Unter der Annahme, dass Node2 nur einen Bruchteil der gesamten Mining-Leistung des Netzwerks kontrolliert, kann dies (sehr) lange dauern. Node1 würde es vorziehen, dass seine Transaktion in den nächsten Block aufgenommen wird, um Miner zu sein, egal wer sie abbaut.

Aus diesem Grund sendet Knoten1 die Transaktion nicht nur an Knoten2, sondern an viele verschiedene Knoten. Bitcoin Core zum Beispiel versucht standardmäßig, sich mit mindestens 8 verschiedenen Knoten zu verbinden. Wenn zumindest einige dieser Knoten ehrlich sind, leiten sie die Transaktion an viele weitere Knoten weiter und so weiter. Dies bedeutet auch, dass Node2 weniger Anreiz hat, gierig zu sein; Es hilft nur, gierig zu sein, wenn keine anderen Miner von der Transaktion wissen (oder nur sehr wenige) und Node2 weiß, dass dies wahrscheinlich nicht der Fall ist. Auf der anderen Seite, wenn Node2 ein Miner ist, dann hat sie einen leichten Anreiz, nicht gierig zu sein: Nachdem Node2 in Bitcoin-Mining-Ausrüstung investiert hat, hat sie ein Interesse daran, dass Bitcoin einen hohen Wert behält, was nur passieren wird, wenn die Leute es weiterhin verwenden es, und eine schnelle Bestätigung ihrer Transaktionen würde dies tendenziell fördern. Also irgendwann

(Denken Sie auch daran, dass nicht alle Knoten Miner sind. Viele Knoten im Bitcoin-Netzwerk werden von Leuten betrieben, die kein Mining betreiben, und nur zum Spaß einen vollständigen Knoten betreiben oder das Netzwerk uneigennützig oder so unterstützen sie haben Bitcoin Core mit Standardeinstellungen installiert und wissen nicht wirklich oder kümmern sich nicht darum, was es tatsächlich tut.)

Was Ihr zweites Szenario angeht, wenn Node1 selbst ein Miner ist, kann er sicherlich seine eigenen Transaktionen behalten, um sie in seine eigenen Blöcke aufzunehmen, anstatt sie über das Netzwerk zu übertragen. Das bedeutet auch, dass er für diese Transaktion keine Gebühren zahlen muss (oder äquivalent, dass er die Gebühren an sich selbst zurückzahlt). Es gibt zwei Kompromisse: (1) Wie oben erwähnt, dauert es länger, bis die Transaktion bestätigt wird; (2) Wenn im Netzwerk ein hohes Transaktionsvolumen vorhanden ist, das ausreicht, um alle Blöcke gefüllt zu halten, gibt Node2 durch Einfügen seiner eigenen Transaktion in seinen Block die Möglichkeit auf, die Transaktion eines anderen einzubeziehen, für die ihm eine Gebühr zu zahlen wäre. Es liegt also an Node1, zu entscheiden, was für ihn am besten ist. Dies hat jedoch keine Auswirkungen auf andere Personen, sodass es für das Netzwerk so oder so kein wirkliches Problem darstellt.

Vielen Dank für Ihre Erklärung, die großartig ist und die Dinge für mich klar macht :)
In Bezug auf Ihren letzten Satz, wird es dem Miner nicht möglich sein, die Blockchain mit seinen eigenen unsinnigen Transaktionen zu füllen? Sicher, sie verpassen Gebühren, aber sie müssen ihre erfundenen Transaktionen nicht teilen und riskieren, Rechenzeit zu verschwenden.
@jiggunjer: Ein Miner kann alle gewünschten gültigen Transaktionen in seine eigenen Blöcke einfügen, und sicher, er könnte seine Blöcke mit seinen eigenen Transaktionen füllen. Ich kann mir nicht vorstellen, wie ihnen das nützen würde. Ich verstehe nicht, was Sie mit der Verschwendung von Rechenzeit meinen. kannst du erklären, was du vorhast?
So wie ich es sehe, bedeutet das Vervollständigen eines Blocks nicht, dass er in die Blockchain gelangt, wenn ein anderer Block eine Transaktion enthält, die er verwendet hat. Indem Sie einfach Ihre eigenen abbauen, können Sie 1) lange Wartezeiten für eine Transaktion mit niedrigen Gebühren vermeiden. 2) Ihre Blöcke werden niemals von der Blockchain abgelehnt.
Oh, ich verstehe, was du sagst. Aber das ist keine wirkliche Sorge. Blöcke sind in der Blockchain streng geordnet, da jeder den Hash des vorherigen Blocks enthält. Wenn Sie also einen Block abbauen, wissen Sie genau, welche Blöcke und damit welche Transaktionen sich bis zu diesem Punkt in der Kette befinden, und Sie können mit Sicherheit vermeiden, bereits vorhandene Transaktionen einzubeziehen. Wenn ein anderer Block später in der Kette versucht, eine Transaktion bereits in Ihren Block aufzunehmen, wird er abgelehnt, nicht Sie.
Es könnte sein, dass zwei gleichzeitig abgebaute Blöcke (beide mit demselben Block wie ihr vorheriger) dieselbe Transaktion enthalten. Aber in einem solchen Fall kann nur ein Block Teil der Kette werden, einfach wegen der strengen Reihenfolgeanforderung, und dies würde sogar dann gelten, wenn sie keine der gleichen Transaktionen enthalten würden. Das Vermeiden der Transaktionen anderer Personen bringt hier also keinen Vorteil.

Wie sendet ein Knoten eine Transaktion an die Miner? Ist es Teil des P2P-Protokolls?

Ja, das P2P-Protokoll hat unter anderem die Aufgabe, die Übertragung neuer Transaktionen und Blöcke zwischen den Teilnehmern sicherzustellen.

überprüft der Miner die Transaktion (digitale Signatur, verfügbare Eingaben usw.)?

ja, sollte ein Miner eine ungültige Transaktion schürfen, wäre der Block selbst ungültig und die gesamte vom Miner erweiterte Arbeit wäre nutzlos und kostspielig gewesen.

übermittelt Miner Blöcke direkt an die Blockchain?

Miner übermitteln Blöcke an ihre P2P-Protokollkollegen (aber heutzutage existieren spezialisierte Netzwerke wie FIBER zwischen Minern, um dies zu beschleunigen). Sobald ein Knoten einen gültigen neuen Block von einem Peer erhält, wird dieser lokal auf der Festplatte gespeichert und erweitert die bestehende Blockchain, er wird auch an Peers weitergeleitet, die ihn noch nicht erhalten haben.

Danke für deine Antwort :) Ich habe meine Frage mit weiteren Details aktualisiert