Zum Inhalt springen

Double Spending, überprüfung der Signatur einer Transaktion


Empfohlene Beiträge

Hallo,

eine kleine Frage zum Thema Sicherheit bei Bitcoins.

Wer garantiert, dass die Mehrheit der Miner wirklich prüfen ob die Transaktionen gültig sind (in die vergangenen Transaktionen schauen um den "Kontostand" zu bestimmen), also ob es sich um ein Versuch des double spending handelt? Wenn die Miner nur die "nonce" finden müssen, könnten sie die Transaktion doch einfach in den Block aufnehmen ohne eine wirkliche Prüfung durchzuführen? Wie wird garantiert, dass die Mehrheit der Miner wirklich die Transaktionen überprüfen sowie die Signatur der einzelnen Transaktionen zu validieren (dass auch der den Bitcoin ausgibt dem er gehört) und somit die "längere" verkettung von Blocks auch wirklich vertrauenswürdig ist? Wäre es nicht einfacher nur zu versuchen die "nonce" zu finden um einen validierten block zu erstellen ohne die transaktionen zu überprüfen? 

Ich hoffe meine Frage ist verständlich, vielen Dank bereits für etliche Antworten!

Grüße,

Max 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, ja ist verständlich und eine grundlegende Frage bei solch einem dezentralen System. Es geht um die Frage, wieso sich jemand an die Regeln halten sollte. Einfach:

Die Mehrheit entscheidet. Da die Mehrheit prüft, wäre mein falscher Block ungültig und meine ganze Schürfleistung wertlos. Der Block wird dann einfach nicht angenommen. D.h. niemand wird damit anfangen, falsche Blöcke zu produzieren bzw ganz schnell wieder damit aufhören. Weil niemand damit anfängt, bleibt es dabei, dass die Mehrheit aus reinem Selbstinteresse weiter kontrolliert und sich an die Regeln hält. 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Vielen Dank für die Antwort. Das heißt die Frage ist insofern berechtigt, als dass es schon denkbar wäre, das miner den Block gar nicht prüfen, sondern lediglich den Blog lösen, bzw validieren wollen, um die Belohnung zu erhalten, und um rechenleistung zu sparen garkeine Prüfung vornehmen. Und damit eventuell unsignierte oder doppelbuchungen mit validieren? 

Das heißt wenn ich das richtig verstanden habe, halten sich nur alle brav an die Regel, und lösen keine Blöcke mit theoretisch ungültigen Transaktionen, weil sie davon ausgehen, dass die Mehrheit keine weiteren Blöcke an diesen ranhängen wird? 

Inwiefern ist jetzt allerdings die Lösung eines Blockes und die Belohnung mit der Akzeptanz dieses Blockes gekoppelt? Denn jetzt wäre es ja möglich außer Konkurrenz Blöcke zu lösen, die z.b. fehlerhafte Transaktionen enthalten, weil ja sonst keiner solche Blöcke lösen zu versucht?

Bearbeitet von Max.663
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Minute schrieb Max.663:

Danke für die Antwort. Das heißt die Frage ist insofern berechtigt, als dass es schon denkbar wäre, das miner den Block gar nicht prüfen, sondern lediglich den Blog lösen, bzw validieren wollen, um die Belohnung zu erhalten, und um rechenleistung zu sparen garkeine Prüfung vornehmen. Und damit eventuell unsignierte oder doppelbuchungen mit validieren? 

Das heißt wenn ich das richtig verstanden habe, halten sich nur alle brav an die Regel, und lösen keine Blöcke mit theoretisch ungültigen Transaktionen, weil sie davon ausgehen, dass die Mehrheit keine weiteren Blöcke an diesen ranhängen wird? 

Inwiefern ist jetzt allerdings die Lösung eines Blockes und die Belohnung mit der Akzeptanz dieses Blockes gekoppelt? Denn jetzt wäre es ja möglich außer Konkurrenz Blöcke zu lösen, die z.b. fehlerhafte Transaktionen enthalten, weil ja sonst keiner solche Blöcke lösen zu versucht?

Natürlich werden die Transaktionen validiert.

Das ist im Vergleich zur nötigen Hash-Leistung keinerlei Aufwand.

Ein ungültiger Block würde verworfen. Die Belohnung und die Gebühren wären verloren und der Miner hätte umsonst gearbeitet.

Das macht natürlich niemand.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Max.663:

Hallo,

eine kleine Frage zum Thema Sicherheit bei Bitcoins.

Wer garantiert, dass die Mehrheit der Miner wirklich prüfen ob die Transaktionen gültig sind (in die vergangenen Transaktionen schauen um den "Kontostand" zu bestimmen), also ob es sich um ein Versuch des double spending handelt? Wenn die Miner nur die "nonce" finden müssen, könnten sie die Transaktion doch einfach in den Block aufnehmen ohne eine wirkliche Prüfung durchzuführen? Wie wird garantiert, dass die Mehrheit der Miner wirklich die Transaktionen überprüfen sowie die Signatur der einzelnen Transaktionen zu validieren (dass auch der den Bitcoin ausgibt dem er gehört) und somit die "längere" verkettung von Blocks auch wirklich vertrauenswürdig ist? Wäre es nicht einfacher nur zu versuchen die "nonce" zu finden um einen validierten block zu erstellen ohne die transaktionen zu überprüfen? 

Ich hoffe meine Frage ist verständlich, vielen Dank bereits für etliche Antworten!

Grüße,

Max 

Wenn jemand eine signierte Transaktion an einen Bitcoin Fullnode sendet, dann prüft dieser Fullnode ob die Transaktion gültig ist.

Der Fullnode prüft somit ob die in der Transaktion verwendeten Inputs tatsächlich in noch keiner anderen Transaktion verwendet wurden, weder in der Blockchain noch im eigenen Mempool.

Falls ein Doublespend entdeckt wird, dann wird die Transaktion gar nicht erst in den eigenen Mempool übernommen und auch nicht an andere Nodes weitergeleitet.

Die Miner prüfen überhaupt keine Transaktionen, die erhalten die im Block zu verarbeitenden Transaktionen vom Node und die zählen nur die Nonce hoch und errechnen den Hashwert, prüfen diesen ob er die Difficulty-Anforderungen erfüllen und wenn nicht, geht das von vorne los.

 

  • Up 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Es kann jedoch vorkommen, dass ein Angreifer einen Doublespend erfolgreich in die Blockchain bekommt.

Und das geht so:

Der Angreifer muss an möglichst weit entfernten Nodes zwei Transaktionen mit demselben Input und unterschiedlichen Outputs verteilen.

Diese beiden weit entfernten Nodes stellen beide für sich fest, dass es sich um eine gültige Transaktion handelt. Sie geben diese Transaktionen jeweils weiter.

Nun lass es den Zufall so sein, dass Miner hinter diesen ersten Nodes stecken, die beide gleichzeitig einen Block finden und beide zeitgleich die jeweilige Transaktion verarbeiten.

Nun werden an die Blockchain zwei unterschiedliche Blöcke angehangen, die beide unterschiedliche Transaktionen enthalten, die jedoch beide denselben UTXO haben.

Es wird nur ein einziger Block überleben, der andere wird verwaisen - je nachdem welches die längere Blockchain wird.

Der Angreifer hat nun für einen Block einen Doublespend in der Blockchain gehabt - danach hat sich das wieder in Luft aufgelöst.

Die längste parallelen Blockchains waren wohl 6 Blöcke, daher verlangt man bei vielen Exchanges 6 Bestätigungen bis Einzahlungen gutgeschrieben werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 6 Minuten schrieb Rikki77:

Natürlich werden die Transaktionen validiert.

Das ist im Vergleich zur nötigen Hash-Leistung keinerlei Aufwand.

Ein ungültiger Block würde verworfen. Die Belohnung und die Gebühren wären verloren und der Miner hätte umsonst gearbeitet.

Das macht natürlich niemand.

Die Miner hängen "hinter" ihrem Node.

Der Node validiert alle Transaktionen bevor die Miner den Blockhash errechnen.

Der errechnete Blockhash wird samt den darin verarbeiteten Transaktions-IDs an die anderen Nodes übergeben.

Jeder Node prüft nun jede einzelne Transaktions-ID auf ihre Gültigkeit. Wenn einem Node Transaktions-IDs fehlen, fragt er die von seinen Nachbar-Nodes an bekommt dann die nötigen Details der Inputs, Outputs und Signaturen um die Prüfung fortzusetzen.

 

Aufgrund dieser Systematik ist die Bitcoin-Blockchain extrem sicher, aber sie skaliert nicht. Auch mit größeren Blöcken skaliert das Ganze nicht, den dadurch entsteht nur noch mehr Netzwerklast für alle beteiligten Nodes.

Das ist übrigens einer der Gründe wieso sich aus dem BSV-Netzwerk immer mehr Nodes verabschieden, das ist einfach nicht mehr zu wuppen wenn da die Gigabyte-Blöcke unterwegs sind und sich gegenseitig überholen.

  • Like 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

vielen Dank für die ausführlichen Erklärungen und Danke für den Hinweis auf die Nodes. Was ist die Motivation einen node zu betreiben? Eine direkte Belohnung lockt ja nur das lösen eines Blockes. Sind das rein Community/soziale Motivationen?

Um meine obige Frage selbst zu beantworten: schreibt der miner seine Belohnung als Transaktion an sich selber in den Block den er validiert/löst rein? Denn das würde mir erklären wie gesteuert wird, dass auch wirklich nur belohnt wird, wer einen akzeptierten block shürft.

Bearbeitet von Max.663
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 12 Minuten schrieb Max.663:

Was ist die Motivation einen node zu betreiben?

Ab welcher Summe würdest du zusätzliche Sicherheitsmaßnahmen ergreifen um deine BTC bestmöglich zu schützen? Schreibst du auf dein Klingelschild "hier lagern X BTC"? Vermutlich nicht. Warum dann also mit der eigen IP Anfragen an irgendwelche zentralen Bitcoin Nodes stellen? Was macht diese Nodes so vertrauenswürdig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Max.663:

Denn jetzt wäre es ja möglich außer Konkurrenz Blöcke zu lösen, die z.b. fehlerhafte Transaktionen enthalten, weil ja sonst keiner solche Blöcke lösen zu versucht?

Das kann ein Miner machen. Dann baut er aber an seinem eigenen Blockchain Form weiter. Andere Miner ignorieren die Blöcke, weil ungültig und außerdem ist die Kette kürzer.

Die Block Rewards, die der Miner sich gutgeschrieben hat, sind dann leider keine Bitcoins mehr, weil nur die als längste von der Mehrheit verwendete Blockchain, die korrekte ist. Das Risiko, dass die Coins ungültig sind, ist zu groß, als das zu versuchen 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 32 Minuten schrieb skunk:

Ab welcher Summe würdest du zusätzliche Sicherheitsmaßnahmen ergreifen um deine BTC bestmöglich zu schützen? Schreibst du auf dein Klingelschild "hier lagern X BTC"? Vermutlich nicht. Warum dann also mit der eigen IP Anfragen an irgendwelche zentralen Bitcoin Nodes stellen? Was macht diese Nodes so vertrauenswürdig?

Na ja, Dinge die nicht jeder sehen soll macht man doch über VPN oder TOR. :)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 41 Minuten schrieb Rikki77:

Na ja, Dinge die nicht jeder sehen soll macht man doch über VPN oder TOR. :)

 

Das löst aber nur eines der beiden genannten Probleme. Du machst dich weiterhin abhängig von der zentralen Full Node. Sie kann dich dank TOR nicht mehr ausfindig machen aber es gibt dann trotzdem noch genug Möglichkeiten dir das Leben unnötig schwer zu machen.

Wenn du aber schon bereit bist eine TOR nur laufen zu lassen was hindert dich dann daran eine Bitcoin Node laufen zu lassen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Minuten schrieb skunk:

Das löst aber nur eines der beiden genannten Probleme. Du machst dich weiterhin abhängig von der zentralen Full Node. Sie kann dich dank TOR nicht mehr ausfindig machen aber es gibt dann trotzdem noch genug Möglichkeiten dir das Leben unnötig schwer zu machen.

Wenn du aber schon bereit bist eine TOR nur laufen zu lassen was hindert dich dann daran eine Bitcoin Node laufen zu lassen?

Was sollte mir der Full Node schwer machen und warum?

Technisch hindert mich gar nichts.

Aber ich möchte keinen Exit-Node für potentiell Kriminelle betreiben. :)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Rikki77:

Was sollte mir der Full Node schwer machen und warum?

Sie könnte dir die Auskunft verweigern oder deine Transaktionen nicht weiter leiten.

vor 5 Minuten schrieb Rikki77:

Aber ich möchte keinen Exit-Node für potentiell Kriminelle betreiben. :)

Schlussfolgerung: Du musst selbst ein Krimineller sein :D 

  • Haha 1
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe eine Bitcoin-Fullnode, einen Electrum-Server und eine Lightning-Node auf einem Raspi zu laufen. Warum?
Weil meine Wallets dann nur noch mit meiner eigenen Node und meinem eigenen Electrum-Server Daten austauschen müssen. Mein Blockexplorer spricht auch nur mit meiner Node. Ich habe die Hoheit über meine Daten und Bitcoin-Netzwerk-Anfragen, ein Plus an Datenschutz für mich und Grund genug eine Node zu betreiben.

Darüber hinaus leistet meine Node ihren kleinen Anteil am Bitcoin- und Lightning-Netzwerk und validiert und leitet Transaktionen und Blöcke an andere Nodes weiter. Win-Win

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...

Wichtige Information

Wir haben Cookies auf Deinem Gerät platziert. Das hilft uns diese Webseite zu verbessern. Du kannst die Cookie-Einstellungen anpassen, andernfalls gehen wir davon aus, dass Du damit einverstanden bist, weiterzumachen.