Bitcoin Forum

Local => Anfänger und Hilfe => Topic started by: Queenvio on February 27, 2014, 06:32:11 PM



Title: transaction malleability was ist das genau?
Post by: Queenvio on February 27, 2014, 06:32:11 PM
Hallo, MtGox hat/hatte ja problem mit dem "transaction malleability".
Kann mir bitte mal jemand erklären was da genau passiert ist.

Grüße


Title: Re: transaction malleability was ist das genau?
Post by: Serpens66 on February 27, 2014, 06:42:22 PM
vlllt hilft ja:
http://www.coindesk.com/bitcoin-bug-guide-transaction-malleability/


Title: Re: transaction malleability was ist das genau?
Post by: Queenvio on February 27, 2014, 07:01:05 PM
vlllt hilft ja:
http://www.coindesk.com/bitcoin-bug-guide-transaction-malleability/

Danke nur leider ist mein englisch nur "ok" und dann noch die "Fachwörter".
Ne kurzer Erklärung auf deutsch würde mich freuen.


Title: Re: transaction malleability was ist das genau?
Post by: mezzomix on February 27, 2014, 07:12:45 PM
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.


Title: Re: transaction malleability was ist das genau?
Post by: Queenvio on February 27, 2014, 07:17:51 PM
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


Title: Re: transaction malleability was ist das genau?
Post by: Hirnhamster on March 01, 2014, 05:14:53 PM
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 :)


Title: Re: transaction malleability was ist das genau?
Post by: paduser on March 01, 2014, 10:55:50 PM
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 :)

Danke. Sehr gute Erklärung.


Title: Re: transaction malleability was ist das genau?
Post by: Coiner.de on March 02, 2014, 09:59:02 AM
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.


Title: Re: transaction malleability was ist das genau?
Post by: mezzomix on March 03, 2014, 06:20:08 AM
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.