Author

Topic: transaction malleability was ist das genau? (Read 1629 times)

legendary
Activity: 2702
Merit: 1261
March 03, 2014, 01:20:08 AM
#9
Jeder der Zahlungen ohne Bestätigung akzeptiert sollte also prüfen, ob die Eingänge der Zahlungstransaktion schon bestätigt sind.

Das ist das Problem. Kann man bei kleinen Summen machen, wenn man weiss, was man tut. Beispiele sind der Kaugummiautomat oder eine Bar. Bei einem Online-Handel oder einer Börse ist sowas absolut unnötig.
hero member
Activity: 780
Merit: 533
Ein weiteres Problem ist noch, daß der aktuelle bitcoin-qt unbestätiges Wechselgeld mit diesem Hash senden kann.

Z.B. wenn alle Coins in der Wallet für die erste Transaktion verwendet werden müssen, ist danach nur noch das Wechselgeld in der Wallet. Wird jetzt das Wechselgeld für eine weitere Transaktion benutzt solange die erste Transaktion noch nicht in einem Block eingetragen ist, so kann diese weitere Transaktion ungültig werden, weil ein anderer Hash in die Blockchain geschrieben wird.

Jeder der Zahlungen ohne Bestätigung akzeptiert sollte also prüfen, ob die Eingänge der Zahlungstransaktion schon bestätigt sind.
sr. member
Activity: 432
Merit: 250
Ergänzend wäre noch zu erwähnen, dass die eigentliche Transaktion (also das wechseln der Bitcoin-Beträge von Sender zu Empfänger Adressen) durch die Transaction Malleability nicht betroffen sind - das fällt unter die von Queenvioals als kritische Teil der Transaktion bezeichnete Daten. Ergo: Die Bitcoins wechseln trotzdem ihren Besitzer!

Mt. Gox hat könnte (Achtung: Spekulation!) nun bei ihrer Implementierung des Bitcoin-Protocols nur auf die Transaktions-ID achten statt darauf, dass die Bitcoins tatsächlich den Besitzer gewechselt haben. Weiterhin könnte "automatisch" eine erneute Auszahlung veranlasst werden, wenn eine fehlgeschlagene Transaktion festgestellt wurde. Folgendes Szenario wäre dann denkbar:

Nutzer A hat 3 BTC auf seinem Konto/Wallet bei Mt.Gox.
Nutzer A will sich nun 1 BTC auf eine Adresse seines lokalen Wallets auszahlen lassen.
Das System von Mt. Gox erstellt eine Transaktion mit der ID "T" über 1 BTC.
Nutzer A fängt die Transaktion ab, ändert den Hash und erstellt eine neue Transaktion "T-neu".
"T-Neu" verbreitet sich schneller durch das Netzwerk und landet in einem Block, somit hat Nutzer A nun den 1 BTC in seinem lokalem Wallet während auf Mt. Gox nur "real" noch 2 BTC liegen.
Die originale Transaktion "T" wird als Double Spent Versuch erkannt, ignoriert und wird als fehlgeschlagen in der Blockchain markiert.
Mt. Gox' fehlerhafte Implementierung des Bitcoin-Protocols achtet jedoch nur darauf, dass "T" fehlgeschlagen ist (und nicht darauf, dass die Bitcoins tatsächlich überwiesen wurden) und zeigt deshalb weiterhin 3 BTC auf dem Konto von Nutzer A.

Nutzer A wiederholt diesen Prozess nun beliebig oft Smiley

Danke. Sehr gute Erklärung.
newbie
Activity: 35
Merit: 0
Ergänzend wäre noch zu erwähnen, dass die eigentliche Transaktion (also das wechseln der Bitcoin-Beträge von Sender zu Empfänger Adressen) durch die Transaction Malleability nicht betroffen sind - das fällt unter die von Queenvioals als kritische Teil der Transaktion bezeichnete Daten. Ergo: Die Bitcoins wechseln trotzdem ihren Besitzer!

Mt. Gox hat könnte (Achtung: Spekulation!) nun bei ihrer Implementierung des Bitcoin-Protocols nur auf die Transaktions-ID achten statt darauf, dass die Bitcoins tatsächlich den Besitzer gewechselt haben. Weiterhin könnte "automatisch" eine erneute Auszahlung veranlasst werden, wenn eine fehlgeschlagene Transaktion festgestellt wurde. Folgendes Szenario wäre dann denkbar:

Nutzer A hat 3 BTC auf seinem Konto/Wallet bei Mt.Gox.
Nutzer A will sich nun 1 BTC auf eine Adresse seines lokalen Wallets auszahlen lassen.
Das System von Mt. Gox erstellt eine Transaktion mit der ID "T" über 1 BTC.
Nutzer A fängt die Transaktion ab, ändert den Hash und erstellt eine neue Transaktion "T-neu".
"T-Neu" verbreitet sich schneller durch das Netzwerk und landet in einem Block, somit hat Nutzer A nun den 1 BTC in seinem lokalem Wallet während auf Mt. Gox nur "real" noch 2 BTC liegen.
Die originale Transaktion "T" wird als Double Spent Versuch erkannt, ignoriert und wird als fehlgeschlagen in der Blockchain markiert.
Mt. Gox' fehlerhafte Implementierung des Bitcoin-Protocols achtet jedoch nur darauf, dass "T" fehlgeschlagen ist (und nicht darauf, dass die Bitcoins tatsächlich überwiesen wurden) und zeigt deshalb weiterhin 3 BTC auf dem Konto von Nutzer A.

Nutzer A wiederholt diesen Prozess nun beliebig oft Smiley
hero member
Activity: 838
Merit: 534
February 27, 2014, 02:17:51 PM
#5
Eine Transaktion wird mit Hilfe des Private-Key signiert, wobei nur der kritische Teil der Transaktionsdaten von der Signatur abgedeckt wird. Daneben kann man eine Hashsumme über die gesammte Transaktion erstellen.

Da die Signatur nur einen Teil der Transaktionsdaten abdeckt, kann man die restlichen Daten ändern und damit eine gleichwertige Transaktion mit unterschiedlicher Hashsumme erstellen.

Wird nun diese zweite Transaktion in einen Block aufgenommen, ist die Transaktion abgeschlossen und verbucht. Die erste Transaktion wird als Double-Spend verworfen. Wenn nun nur die Hashsumme der ersten Transaktion als Indikator für die erfolgreiche Transaktion genutzt wird, wird das Transaktionergebnis nie sichtbar.


danke
legendary
Activity: 2702
Merit: 1261
February 27, 2014, 02:12:45 PM
#4
Eine Transaktion wird mit Hilfe des Private-Key signiert, wobei nur der kritische Teil der Transaktionsdaten von der Signatur abgedeckt wird. Daneben kann man eine Hashsumme über die gesammte Transaktion erstellen.

Da die Signatur nur einen Teil der Transaktionsdaten abdeckt, kann man die restlichen Daten ändern und damit eine gleichwertige Transaktion mit unterschiedlicher Hashsumme erstellen.

Wird nun diese zweite Transaktion in einen Block aufgenommen, ist die Transaktion abgeschlossen und verbucht. Die erste Transaktion wird als Double-Spend verworfen. Wenn nun nur die Hashsumme der ersten Transaktion als Indikator für die erfolgreiche Transaktion genutzt wird, wird das Transaktionergebnis nie sichtbar.
hero member
Activity: 838
Merit: 534
February 27, 2014, 02:01:05 PM
#3

Danke nur leider ist mein englisch nur "ok" und dann noch die "Fachwörter".
Ne kurzer Erklärung auf deutsch würde mich freuen.
legendary
Activity: 2968
Merit: 1133
hero member
Activity: 838
Merit: 534
February 27, 2014, 01:32:11 PM
#1
Hallo, MtGox hat/hatte ja problem mit dem "transaction malleability".
Kann mir bitte mal jemand erklären was da genau passiert ist.

Grüße
Jump to: