Wie generieren Ethereum-Clients eindeutige Adressen?

Wie generieren Ethereum-Clients wie Ethereum Wallet oder Eth-Lightwallet eindeutige Adressen, die zuvor noch nicht verwendet wurden, und wie hoch ist die Wahrscheinlichkeit, dass diese Adressen verwendet wurden?

Antworten (4)

Die Adresse wird von einem zufälligen privaten Schlüssel abgeleitet. Der Client überprüft nicht, ob es zuvor verwendet wurde, da die Wahrscheinlichkeit dafür nahezu null ist.

Vergessen wir nicht die goldene Regel des Murphy-Gesetzes – was passieren kann – wird passieren oder wie er sagte: „Was schief gehen kann, wird schief gehen.“

Ich denke, der wichtigste Satz in Ihrer Frage ist "Wie hoch ist die Wahrscheinlichkeit".

Die anderen Antworten sind richtig, um zu bestimmen, dass eine Wahrscheinlichkeit von 1 zu 2^160 besteht, eine Kollision mit einer Wahrscheinlichkeit von 100 % zu finden .

Aufgrund des Geburtstagsparadoxons geben Kryptografen einer Hash-Funktion mit einer Ausgabebitlänge von 160 eine bitweise Sicherheitsbewertung von 80. Dies liegt daran, dass es bei 2^80 Adressen eher wahrscheinlich ist (dh die Wahrscheinlichkeit liegt bei über 50 %) , dass Sie sie haben werden eine Adresskollision .

Zum visuellen Vergleich mit den obigen Antworten impliziert das Geburtstagsproblem, dass eine Kollision mit einer Wahrscheinlichkeit von 1 in 1.208.925.819.614.629.174.706.176 auftritt, huch.

Was das Geburtstagsproblem besagt, ist, dass, wenn Sie Adressen mit 2^80 zufälligen Startwerten generieren, die Wahrscheinlichkeit, dass ein Paar generierter Adressen gleich ist, ~50% beträgt. Das ist anders als zu sagen, dass die Wahrscheinlichkeit, dass eine neue Adresse schon einmal verwendet wurde, bei 1 zu 2^80 liegt, wenn Sie eine neue Adresse generieren. Die richtige Wahrscheinlichkeit ist 1 zu 2^160 mal die Anzahl der bereits generierten Adressen.
Ah ja, ich verstehe die Unterscheidung, ich denke, die Frage wurde eher als "wann werden wir wahrscheinlich eine Adresskollision bekommen" und weniger als "wie hoch ist die Wahrscheinlichkeit, dass jede neue Adressgenerierung (ab 0 Adressen) zu einer Kollision führt" interpretiert.

Ethereum Wallet (das offizielle Wallet, das Mist verwendet) wird web3.personal.newAccountzum Erstellen eines Kontos verwendet. Dies ist ein web3.js-Aufruf, der das Äquivalent von geth account new.

Der Adressraum in Ethereum ist ein 20-Byte-Wert (160-Bit-Adressraum, genau wie Bitcoin).

Wie hoch ist die Wahrscheinlichkeit, dass diese Adressen verwendet wurden?

2^160 oder ungefähr 1 von 1.461.501.637.330.902.918.203.684.832.716.283.019.655.932.542.976

Wird beim Erstellen des Kontos überprüft, ob zuvor andere Transaktionen diese Adresse verwendet haben?
@paulmorriss Ich konnte keinen finden, aber es ist möglich, dass ich nur etwas verpasst habe.
Nein, wenn Sie ein Konto erstellen, das auf eine vorhandene Brieftasche verweist, können Sie die gesamte dort enthaltene ETH ausgeben

Ethereum verwendet Adressen, die 160 Bit lang sind. Die Wahrscheinlichkeit, dass eine Adresse mit jeder anderen gegebenen Adresse identisch ist, beträgt daher 1 zu 2^160. Aufgrund des Geburtstagsparadoxons steigt jedoch die Wahrscheinlichkeit, dass eine neue Ethereum-Adresse dieselbe wie eine bereits bestehende Ethereum-Adresse ist, mit jeder neuen Ethereum-Adresse exponentiell an und wird wie folgt berechnet:

Anzahl möglicher Paare: ( Anzahl eindeutiger Ethereum-Adressen + 1 / Anzahl eindeutiger Ethereum-Adressen) = ((4.807.984 + 1) * 4.807.984) / 2 = 11.558.357.476.120

Chance auf ein eindeutiges Paar: ((2^160)-1) / 2^160) = 0,99999999999999999999999999999999999999999999999315772234

Chance of 11,558,357,476,120 unique pairs = 0.999999999999999999999999999999999999999999999999315772234 ^ 11,558,357,476,120 = 0.999999999999999999999999999999999992091451

Wahrscheinlichkeit einer Übereinstimmung = 1 - 0,99999999999999999999999999999999992091451 = 7,908549 × 10^-36

Stand heute (26. Juli 2017) beträgt die Wahrscheinlichkeit, dass eine neue Ethereum-Adresse mit einer bereits bestehenden Ethereum-Adresse identisch ist, ~8 × 10^-36