Уникальность аккаунта гарантирована?

Когда мы создаем учетную запись в основной сети Ethereum, как протокол гарантирует уникальный адрес учетной записи? Поскольку, даже если мы не подключены к сети, мы можем создать учетную запись, существует ли возможность того, что две учетные записи получат один и тот же адрес? Хранится ли информация об учетной записи в блокчейне?

Ответы (3)

Цитата Chris613 на форуме ethereum о cpp ethereum :

  1. 256-битный закрытый ключ инициализируется случайными данными.

  2. Секрет проверяется на предмет приемлемости ключа, что просто означает ненулевое значение и меньше «порядка кривой», который, как я думаю, является верхним диапазоном, после которого ключи становятся слабыми (исправления приветствуются).

  3. Из этого секрета генерируется 512-битный открытый ключ, который проверяется secp256k1_ecdsa_pubkey_verify. Я не полностью понимаю эту проверку без дополнительных исследований (типы ключей), но я понимаю, что любое число может быть действительным секретным ключом, и генерация открытого ключа всегда должна быть надежной (исправления приветствуются).

  4. Открытый ключ хэшируется с помощью SHA-3 [Keccak-256] для получения 256-битного вывода. Старшие 96 бит отбрасываются, а младшие 160 бит становятся адресом.

Так как алгоритм хэширования, используемый для адреса, имеет очень-очень большое количество возможностей и очень-очень низкий уровень коллизий, конечные адреса должны быть уникальными.

Поскольку вы не можете угадать ПК по его адресу, создание ПК, совпадающего с адресом, потребует перебора множества комбинаций ПК, прежде чем будет найдено совпадение. Таким образом, речь идет не о переборе адресов, а о попытках использовать открытые ключи, а затем закрытые ключи, чтобы, наконец, сопоставить адрес.

Никто, как известно, не преуспел в этом сегодня.

Квантовый компьютер, вероятно, мог бы сделать это, но компьютера, способного выполнять такие вычисления, до сих пор не существует. Следующее поколение криптоденьг обязательно должно будет учитывать квантовый компьютер.

Изменить: закрытые ключи должны быть меньше порядка кривой, потому что в противном случае они будут «зацикливаться» и будут равны закрытым ключам других людей из-за того, как работают группы EC. Подумайте об аналоговых часах: в 13:00 часы показывают 1. Здесь происходит то же самое, но с гораздо большим числом (чуть меньше 2^256). На часах это нормально, потому что мы знаем, утро сейчас или день, но здесь один и тот же закрытый ключ => один и тот же открытый ключ => один и тот же адрес, а это означает, что если два закрытых ключа эквивалентны, владельцы обоих могут получить доступ и сформировать действительные транзакции, исходящие из тот же аккаунт.

Проверка открытого ключа проверяет, является ли он действительной, рациональной точкой кривой. Это в значительной степени просто проверка того, что два 256-битных числа являются целыми числами и удовлетворяют формуле, необходимой для правильного выполнения всей арифметики.

Хеш-функции на самом деле не полностью взломаны квантовой криптографией, поэтому этап адрес -> открытый ключ все еще может быть достаточно надежным. Однако вычисление закрытых ключей людей из их открытых ключей было бы тривиальной задачей, поэтому криптовалютам следующего поколения действительно придется использовать квантовую криптографию!

Адреса Ethereum представляют собой 160-битные хэши, то есть существует 2^160 возможных хэшей. Согласно проблеме дня рождения , вероятность коллизии возрастает до 50%, когда создается около 2 ^ 80 учетных записей.

Чтобы дать вам представление о том, насколько это маловероятно, скажем, что если бы каждый человек на земле тратил все свое время только на создание учетных записей Ethereum, и они генерировали бы одну учетную запись в секунду, они бы генерировали только около 2 ^ 57 из них. Чтобы сгенерировать 2^80 и достичь 50-процентной вероятности обнаружения столкновения, им нужно будет продолжать генерировать одно столкновение в секунду в течение примерно 8 миллионов лет.

Короче говоря, Эфириум гарантирует уникальность учетной записи, имея такое ошеломляюще большое количество возможных адресов, что ни один мыслимый случайный процесс не может создать дубликат. Так же обеспечивается безопасность учетной записи — если вы можете сгенерировать дубликат хэш-ключа, вы также можете украсть чей-то эфир!

Еще одно интересное сравнение: на Земле примерно 2^63 песчинки. Гораздо меньше песчинок, чем общее возможное количество аккаунтов
Расширяя комментарий выше другим способом для изображения размера этого числа: если мы вычтем 2 ^ 63 из 2 ^ 160, то мы получим примерно... 2 ^ 160.
Кажется, возможна коллизия хешей: stackoverflow.com/questions/67002019/…

Это небольшое отклонение от вопроса, но обнаружение конфликтующего приватного ключа и попытка вывести средства могут быть основанием для юридического вмешательства .

Существуют распределенные усилия, такие как LBC , которые пытаются найти закрытые ключи, и показаны подробности того, как они это делают.