Kontoeindeutigkeit garantiert?

Wenn wir ein Konto im Hauptnetzwerk von Ethereum erstellen, wie garantiert das Protokoll die eindeutige Adresse eines Kontos? Da wir ein Konto erstellen können, auch wenn wir nicht mit dem Netzwerk verbunden sind, besteht die Möglichkeit, dass zwei Konten dieselbe Adresse erhalten? Werden die Kontoinformationen in der Blockchain gespeichert?

Antworten (3)

Zitieren von Chris613 im Ethereum-Forum über cpp Ethereum :

  1. Ein privater 256-Bit-Schlüssel wird mit Zufallsdaten initialisiert

  2. Das Geheimnis wird auf einen akzeptablen Schlüssel getestet, was nur ungleich Null und weniger als "die Ordnung der Kurve" bedeutet, was meiner Meinung nach ein oberer Bereich ist, nach dem Schlüssel schwach sind (Korrekturen willkommen).

  3. Aus diesem Geheimnis wird ein öffentlicher 512-Bit-Schlüssel generiert und von secp256k1_ecdsa_pubkey_verify getestet. Ich verstehe diese Überprüfung nicht ohne weitere Nachforschungen (Schlüsseltypen), aber ich verstehe, dass jede Zahl ein gültiger geheimer Schlüssel sein kann und das Generieren eines öffentlichen Schlüssels daraus immer zuverlässig sein sollte (Korrekturen willkommen).

  4. Der öffentliche Schlüssel wird mit SHA-3 [Keccak-256] gehasht, um eine 256-Bit-Ausgabe zu erzeugen. Die oberen 96 Bits werden verworfen und die unteren 160 Bits werden zur Adresse.

Da der für die Adresse verwendete Hash-Algorithmus sehr viele Möglichkeiten und eine sehr sehr geringe Kollisionsrate hat, sollten endgültige Adressen eindeutig sein.

Da Sie einen PK nicht anhand seiner Adresse erraten können, müssten Sie zum Erstellen eines PK, der mit der Adresse übereinstimmt, viele PK-Kombinationen ausprobieren, bevor Sie eine Übereinstimmung finden. Hier geht es also nicht um das Brute-Forcing von Adressen, sondern darum, öffentliche Schlüssel und dann private Schlüssel zu versuchen, um schließlich eine Adresse abzugleichen.

Niemandem ist bekannt, dass es ihm heute gelungen wäre.

Ein Quantencomputer könnte das wahrscheinlich tun, aber einen, der diese Art von Berechnung durchführen kann, gibt es noch nicht. Die nächste Generation von Kryptogeld wird sicherlich Quantencomputer berücksichtigen müssen.

Bearbeiten: Private Schlüssel müssen kleiner als die Ordnung der Kurve sein, da sie sonst "zurückkehren" und aufgrund der Funktionsweise von EC-Gruppen den privaten Schlüsseln anderer Personen entsprechen. Denken Sie an eine analoge Uhr: Um 13:00 Uhr zeigt die Uhr auf 1. Was hier passiert, ist ähnlich, aber mit einer viel größeren Zahl (knapp unter 2^256). Auf einer Uhr ist das in Ordnung, weil wir wissen, ob es Morgen oder Nachmittag ist, aber hier gleicher privater Schlüssel => gleicher öffentlicher Schlüssel => gleiche Adresse, d das gleiche Konto.

Die Überprüfung des öffentlichen Schlüssels überprüft, ob es sich um einen gültigen, rationalen Punkt der Kurve handelt. Dies ist so ziemlich nur die Überprüfung, ob die beiden 256-Bit-Zahlen ganze Zahlen sind und eine Formel erfüllen, die für die korrekte Arithmetik erforderlich ist.

Hash-Funktionen werden unter der Quantenkryptographie tatsächlich nicht vollständig gebrochen, sodass die Phase Adresse -> öffentlicher Schlüssel immer noch ziemlich robust sein könnte. Die Berechnung der privaten Schlüssel von Personen aus ihren öffentlichen Schlüsseln wäre jedoch trivial, und daher müssen Kryptowährungen der nächsten Generation tatsächlich Quantenkrypto aufnehmen!

Ethereum-Adressen sind 160-Bit-Hashes, was bedeutet, dass es 2^160 mögliche Hashes gibt. Gemäß dem Geburtstagsproblem steigt die Wahrscheinlichkeit einer Kollision auf 50 %, wenn etwa 2^80 Konten erstellt wurden.

Um Ihnen eine Vorstellung davon zu geben, wie unwahrscheinlich das ist: Wenn jeder Mensch auf der Erde seine ganze Zeit damit verbringen würde, nichts anderes zu tun, als Ethereum-Konten zu erstellen, und sie einen pro Sekunde erstellen würden, würden sie nur etwa 2^57 davon erstellen. Um 2 ^ 80 zu erzeugen und eine Wahrscheinlichkeit von 50 % zu erreichen, eine Kollision zu finden, müssten sie etwa 8 Millionen Jahre lang eine pro Sekunde erzeugen.

Kurz gesagt, die Art und Weise, wie Ethereum die Eindeutigkeit von Konten garantiert, besteht darin, eine so unglaublich große Anzahl möglicher Adressen zu haben, dass kein denkbarer zufälliger Prozess jemals ein Duplikat erzeugen könnte. Auf diese Weise wird auch die Kontosicherheit gewährleistet - wenn Sie einen doppelten Schlüssel-Hash generieren können, können Sie auch jemandes Ether stehlen!

Ein weiterer interessanter Vergleich: Es gibt schätzungsweise 2^63 Sandkörner auf der Erde. Weitaus weniger Sandkörner als die insgesamt mögliche Anzahl von Konten
Erweitern Sie den obigen Kommentar um eine andere Möglichkeit, die schiere Größe dieser Zahl darzustellen: Wenn wir 2 ^ 63 von 2 ^ 160 subtrahieren, erhalten wir ungefähr ... 2 ^ 160.
Eine Hash-Kollision scheint möglich zu sein: stackoverflow.com/questions/67002019/…

Dies ist eine geringfügige Abweichung von der Frage, aber das Auffinden eines kollidierenden privaten Schlüssels und der Versuch, das Geld abzuheben , können Gründe für ein rechtliches Eingreifen sein .

Es gibt verteilte Bemühungen wie die LBC , die versuchen, private Schlüssel zu finden, und es wird gezeigt , wie sie dabei vorgehen.