Sendet der Satoshi-Client die Änderung einer Transaktion immer an eine neu generierte Adresse?

Experimentell scheint dies der Fall zu sein, aber ist das immer so oder hängt es von einigen Details ab? Generiert es auch jedes Mal eine neue Adresse oder durchsucht es zuerst die Brieftasche, wenn dort bereits eine leere Adresse vorhanden ist? (Und verwendet das in diesem Fall) Ist es wahrscheinlich, dass sich dieses Verhalten in einer späteren Version des Satoshi-Clients ändert?

Kein Duplikat: Er fragte nicht „warum“, er fragte „wann“ (macht es das), und er fragte „ob“ (wird es sich in Zukunft ändern).

Antworten (2)

Wenn Sie eine Brieftasche erstellen, enthält die Brieftasche standardmäßig 100 Bitcoin-Adressen . Dies ist aus vielen Gründen gut, z. B. können alte Backups Ihrer Brieftasche im Falle eines Festplattenausfalls alle Verluste wiederherstellen usw.

Der "Datenschutzgrund" ist, dass jemand, der sich die Blockchain ansieht, nicht sehen kann, welche Bitcoins an den Empfänger gehen und welche die Änderung der Eingaben sind.

Und nicht zuletzt liegt der „Sicherheitsgrund“ darin, dass jede Bitcoin-Adresse nur ein Hash eines öffentlichen Schlüssels ist, sodass jemand mit einem funktionierenden Quantencomputer den öffentlichen Schlüssel nicht angreifen kann (da er nur einen Hash des Schlüssels sehen kann). , nicht der Schlüssel selbst). Aber wann immer Sie Bitcoins ausgeben müssen, müssen Sie den öffentlichen Schlüssel offenlegen, damit alle Adressen, die zuvor Bitcoins ausgegeben haben, „angreifbar“ sind (aber neue Adressen nicht).

Die Antwort auf die Frage im Titel lautet also „Ja“.
Wie wäre es mit "generiert es jedes Mal eine neue Adresse, oder durchsucht es zuerst die Brieftasche, wenn dort bereits eine leere Adresse vorhanden ist?" Mich interessiert insbesondere, ob eventuell extern importierte Schlüssel für die Änderung verwendet werden (falls zuvor nicht verwendet) oder ob die Änderung immer an eine zuvor nicht im Wallet vorhandene Adresse erfolgt?
Diese „öffentliche Schlüssel“-Erklärung macht nicht viel Sinn: öffentliche Schlüssel sind öffentlich, private Schlüssel sind privat, und es gibt keinen Grund (noch eine Möglichkeit ), öffentliche Schlüssel zu „schützen“.
Ich habe nicht gesagt, dass öffentliche Schlüssel nicht öffentlich sind, ich habe gesagt, dass Bitcoin-Adressen Hashes von öffentlichen Schlüsseln sind. Und den Hash des Schlüssels anzugreifen ist viel schwieriger als den Schlüssel anzugreifen (dh Sie "schützen" den öffentlichen Schlüssel, indem Sie ihn nicht preisgeben). Wenn Sie Bitcoins ausgeben, müssen Sie den öffentlichen Schlüssel preisgeben, aber gleichzeitig verschieben Sie alle Bitcoins an der Adresse an eine neue Adresse mit einem neuen, nicht offengelegten öffentlichen Schlüssel. Angreifer haben also nur einen sehr kleinen Zeitrahmen, um Ihren öffentlichen Schlüssel anzugreifen (im Gegensatz zu so viel Zeit, wie eine wiederverwendete Adresse Bitcoins enthält ) .

Ja, wenn es eine Änderung gibt, wird es an eine neue Adresse gesendet. Siehe https://en.bitcoin.it/wiki/Change

. Natürlich, wenn die Summe aller Ausgangstransaktionen, die für die eine Eingangsadresse (den Empfänger) verwendet werden, genau der richtige Betrag ist, dann ist keine Änderung erforderlich, daher wird nichts an eine neue gesendet die Anschrift.

Dies wird sich in zukünftigen Versionen des Clients nicht ändern, da es Teil des Bitcoin-Designs ist.