Интересно, каждому закрытому/открытому ключу соответствует уникальный открытый/закрытый ключ?
Конечно, вычислительно невозможно вычислить закрытый ключ из открытого ключа, но верно ли это для другого направления?
Может ли кто-нибудь ответить, могут ли два пользователя в блокчейне Ethereum использовать один и тот же закрытый ключ, хотя они не могут использовать один и тот же открытый ключ (адрес EOA)?
В частности, какая случайность связана с генерацией ключей, чтобы два пользователя не получили один и тот же открытый ключ?
Закрытый ключ Эфириума — это просто число, случайно выбранное из диапазона от 0 до примерно 2^256. Это огромный диапазон; вероятность того, что два человека независимо друг от друга используют один и тот же закрытый ключ, невероятно мала (1 из 2^128).
Открытый ключ детерминированно генерируется из закрытого ключа, так что закрытый ключ однозначно определяет открытый ключ.
Теоретически два разных открытых ключа могут привести к одному и тому же адресу, поскольку адрес представляет собой усеченный хэш открытого ключа. Опять же, шансы на это астрономически малы — в данном случае 1 из 2^80, или 0,0000000000000000000000082%
Изменить для более подробной информации:
Открытый ключ в необработанном виде составляет 65 байт (это пара x,y на эллиптической кривой). Однако его можно сжать до 33 байт (возьмите только x
байт и байт четности)
Источник случайности не указан, но большинство реализаций будут использовать свой источник случайности ОС (/dev/urandom).
Опять же, несмотря на то, что существует вероятность столкновения адресов двух людей, существует более высокая вероятность того, что вы застрянете из-за молнии, одновременно выиграв в лотерею примерно триллион раз.
Шучжэн
Тьяден Хесс