Как мы можем получить взаимно однозначное сопоставление, учитывая разницу в размерах ключей?

Если открытые ключи имеют длину 34 символа, а закрытые ключи имеют длину 61 символ, то комбинаций из 34 символов недостаточно, чтобы каждая комбинация из 61 символа представляла собой уникальную пару.

Мои расчеты показывают 8,6 * 10 ^ 89 комбинаций для закрытого ключа.

И 9,0 * 10 ^ 59 комбинаций для открытого ключа.

Так как же у нас получается однозначное сопоставление?

(Пожалуйста, поправьте меня, если я ошибаюсь).

Вы должны просмотреть свои старые вопросы и отметить правильные ответы.
Учитывают ли ваши расчеты, что Base58 не допускает использование определенных символов в хэше?

Ответы (1)

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

Чтобы найти два ключа, хэш которых соответствует одному и тому же идентификатору, вам придется попробовать в среднем 2 ^ 80 ключей. Если бы у вас был миллион компьютеров, каждый из которых мог бы пробовать 1000 ключей в секунду, потребовалось бы 380 000 столетий, чтобы найти одно совпадение. И все, что вы могли сделать с этими двумя ключами, — это потребовать деньги, отправленные на один и тот же идентификатор с любым из них, что не причинило бы никакого вреда.

Теперь, если вы хотите найти ключ, который соответствует ключу, в котором уже есть биткойны, это гораздо более сложная задача. Скажем, есть 10 000 000 идентификаторов с монетами. Вероятность совпадения одного ключа с одним из этих 10 000 000 составляет 2 ^ 160/10 000 000 — даже если 1 000 000 компьютеров пытаются использовать 1 000 ключей в секунду, на это уйдут миллиарды миллиардов столетий.

Так что для практических целей это один к одному.

В первой части ответа вы говорите 2 ^ 80 ключей, а во второй части вы говорите 2 ^ 160, но не объясняете, как перейти от одного к другому. Кроме того, я вычислил 10 ^ 89, а у вас 2 ^ 80. Мое 10 ^ 89 - это 58 возможных символов (az | AZ | 0-9) X 61 цифра.
Сколько людей вам нужно, чтобы иметь шанс 50/50 найти человека с днем ​​рождения 11 мая? Сколько людей вам нужно, чтобы иметь шанс 50/50 найти двух людей с одинаковым днем ​​​​рождения? Вот причина разницы. Ваша математика неверна, потому что часть информации избыточна. Идентификатор учетной записи получен из 160-битного хэша , поэтому существует только 2 ^ 160 возможных допустимых адресов.