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

Пользователь кошелька, независимо от версии кошелька, может генерировать сколько угодно адресов , верно?

Поскольку адрес — это, по сути, открытый ключ, а в криптографии «закрытый-открытый ключ» есть только один открытый ключ, соответствующий закрытому ключу, как вообще возможна генерация большого количества адресов ?

Может ли один и тот же закрытый ключ генерировать несколько адресов? это не то, о чем я спрашиваю.

Ответы (2)

Ну, это очень просто. Традиционные кошельки просто генерируют несколько закрытых ключей.

Закрытый ключ — это случайно сгенерированное число. Вы можете сгенерировать несколько из них и сохранить их все в файле.

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

Решение, которое хорошо работает в большинстве случаев, состоит в том, чтобы просто заранее сгенерировать несколько ключей (я думаю, по умолчанию 100) и сохранить их в резервной копии. По мере использования большего количества адресов ключи выбираются из предварительно сгенерированного пула, и для его пополнения заранее генерируются дополнительные ключи. Таким образом, резервная копия может оставаться актуальной еще долгое время после ее создания.

но я много раз слышал, что «кошелек — это, по сути, ваш закрытый ключ (или пара закрытый/открытый)», что подразумевает «один»
Слово «в основном» намекает на то, что это упрощение. Если бы «кошелек» буквально означал «закрытый ключ», люди просто сказали бы «закрытый ключ» вместо «кошелек».
В общем, для «кошелька» нет универсального определения, оно может означать разные вещи в разных контекстах. Если слово сбивает с толку, мы должны стараться избегать его использования. Программное обеспечение Bitcoin-qt сгенерировало несколько закрытых ключей, каждый со своим адресом, и сохранило их в файле. Используете ли вы слово «кошелек» для обозначения программного обеспечения, адреса, файла, чего-то еще или какой-либо комбинации вышеперечисленного, это не меняет сути того, что происходит на самом деле.
Сегодня Bitcoin Core и многие другие кошельки используют HD-кошельки, чтобы резервные копии оставались действительными в течение неопределенного времени для извлечения средств. Регулярные резервные копии по-прежнему важны, иначе метаинформация о транзакциях будет потеряна.
@Murch: Пожалуйста, прочитайте этот комментарий OP - bitcoin.stackexchange.com/questions/98502/… . А также уточнение в вопросе, что ОП не спрашивает об «этом», где «это» — вопрос и ответ относительно HD-кошельков.
Хотя я вижу, что ОП специально не спрашивает о современных кошельках, я думаю, что объявить пулы ключей «решением» все же вводит в заблуждение, поскольку, насколько я знаю, по сути, этот подход больше не используется.
@GlennWillen: 1. Мой ответ начинается со слов «традиционные кошельки». Решение — это решение проблемы традиционных кошельков. Несмотря на то, что сейчас она имеет в основном историческое значение. 2. ОП не просто «не спрашивает конкретно о современных кошельках», они конкретно не спрашивают о современных кошельках , согласно их комментарию, который я принял во внимание при написании этого ответа.
Правильно, и я сначала прочитал ваш ответ, так как он был сверху, и из вопроса и вашего ответа мне было непонятно, почему вы не упомянули деривацию. Позже я увидел ответ Рагхава (у меня в телефоне). В любом случае, даже если спрашивающий спрашивал о «несовременных» кошельках, для меня имело бы смысл упомянуть модемный подход для других читателей в качестве контраргумента.

Современные кошельки представляют собой иерархические детерминированные (HD) кошельки.

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

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

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

Переход на HD-кошельки был сделан из соображений эргономики и безопасности — в старых кошельках, если вы не делали резервную копию после каждого нового адреса, вы теряли все адреса, сгенерированные после последней резервной копии, если файл кошелька был потерян. Для HD-кошельков необходимо создавать резервную копию только корневого ключа (обычно это мнемоника BIP39) — из него можно восстановить все адреса и их ключи.

Вы невнимательно читали -- я не про современные кошельки спрашиваю
Несовременные кошельки делали то же самое, только без единого корневого ключа — для каждого адреса в недетерминированном кошельке программное обеспечение кошелька генерировало новый случайный закрытый ключ.
Важный момент, который вы упустили (относительно традиционных кошельков), заключается в том, что несколько ключей на самом деле генерируются заранее, поэтому резервные копии остаются актуальными в течение некоторого времени после их создания. Кошелек был бы непригоден для использования, если бы вам действительно приходилось создавать новую резервную копию каждый раз, когда вы отправляете или получаете деньги.
@MeniRosenfeld Верно, но я решил, что лучше дать общий подход, а не конкретику - не все кошельки, отличные от HD, имели пулы ключей, iirc, хотя Bitcoin Core и другие обычно используемые обычно имели
@RaghavSood: я думаю, что этот момент является ключевой частью того, о чем спрашивал ОП, даже если они не обязательно это осознавали. Я не думаю, что «генерация нескольких ключей» — это огромный скачок — интересный вопрос заключается в том, как мы можем на самом деле использовать кошелек, когда он продолжает генерировать новые ключи. И предварительная генерация ключей — недостающая часть этой головоломки.
О, я вижу, что обсуждение уже было. -- вы оба правы в том, что обе части необходимы для полного понимания происходящего. :)