К основному содержимому

Что такое программный кошелек?

Обновлено более 2 нед. назад

Концепция программного кошелька

Программный кошелек использует случайное число для генерации основного приватного ключа.

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

Зачем нам нужен «детерминированный, необратимый» алгоритм? Потому что «детерминированный» гарантирует, что все подприватные ключи могут быть сгенерированы из основного приватного ключа, в то время как «необратимый» гарантирует, что основной приватный ключ не может быть восстановлен по подприватному ключу.

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

Когда мы впервые создаем HD-кошелек или делаем резервную копию кошелька, генерируется вспомогательное слово. Вспомогательное слово — это последовательность английских слов, и эта последовательность слов создает «seed» (начальное значение), которое, в свою очередь, создает все приватные ключи. Эта последовательность слов также является резервной копией кошелька, которая может быть восстановлена. А «seed» соответствует случайному числу всех детерминированных кошельков.

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

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

Зачем нужно так много приватных ключей

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

Биткоин-транзакция — это структура данных, содержащая входное значение и выходное значение. Эта структура данных содержит информацию о коде, который перемещает актив из начальной точки (входное значение) по адресу назначения (выходное значение).

Когда речь идет о входах и выходах биткоин-транзакции, важно понимать термин UTXO (Unspent Transaction Output — неистраченный выход транзакции), который является основной единицей биткоин-транзакции и представляет собой неиспользованный выход транзакции. Единица истраченного биткоина распределена по сотням транзакций и сотням блоков как UTXO. На самом деле, нет места для хранения адреса или баланса USD, только децентрализованный UTXO, заблокированный владельцем.

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

Вот пример того, что это означает. Если у вас есть UTXO в 20 рупий, и вы хотите заплатить 1 рупию, ваша транзакция должна потребить весь UTXO в 20 рупий и создать два выхода: один, который отправляет 1 рупию получателю, и другой, который возвращает 19 рупий сдачи на ваш кошелек. В этом случае большинство транзакций в обменном курсе будут генерировать сдачу.

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

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

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

Нашли ответ на свой вопрос?