Что такое кошелек?

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

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

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

Что такое кошелек?

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

Каждый аккаунт в блокчейне состоит из криптографической пары ключей; набор из 2 ключей, связанных друг с другом. В контексте блокчейнов такой вид аккаунта обычно называется Внешне Собственным Аккаунтом (EOA) и состоит из открытого и закрытого ключей:

  • Публичный ключ: Адрес вашего кошелька. Им можно поделиться с кем угодно, и другие люди (или смарт-контракты) могут использовать его для отправки вам криптовалюты.
  • Приватный ключ: «ключ подписи», который вы используете для подписи сообщений или транзакций. Любой, у кого есть доступ к приватному ключу, имеет полный контроль над средствами в кошельке.

У этой пары ключей есть мощная функция, называемая функцией ловушки; что означает, что

  • Легко определить открытый ключ, если у вас есть закрытый ключ (A→B).
  • Невозможно вычислить приватный ключ, имея только публичный ключ (B→A).

Для чего используются кошельки?

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

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

Например, Джаррод может отправить транзакцию, утверждая, что Абрил отправила ему 5 ETH, даже если она никогда не соглашалась на эту транзакцию. Однако, поскольку блокчейн проверяет подпись каждой транзакции, он быстро отклонит транзакцию, поскольку восстановленный адрес из подписи не соответствует «отправителю» транзакции (т.е. Абрил).

Блокчейны, такие как Ethereum, используют ECDSA (Elliptic Curve Digital Signature Algorithm), чтобы проверить, соответствует ли общедоступный ключ, восстановленный из подписи транзакции, общедоступному ключу лица, отправившего транзакцию в сеть.

Как создаются кошельки?

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

  1. Приватный ключ состоит из 64 шестнадцатеричных символов (символы 0→F).
  2. Открытый ключ получается из закрытого ключа с помощью криптографии на эллиптических кривых (ECC).
  3. Открытый ключ разбивается, хешируется и форматируется, чтобы стать адресом из 42 символов.

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

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

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

Что такое фраза-сид?

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

Это позволяет пользователям запомнить единственный набор слов для доступа ко всем своим учетным записям; каждая из которых имеет индивидуальную пару открытого и закрытого ключей. Любое количество новых закрытых ключей может быть получено из единой фразы-сида, используя определенную функцию производной ключа (KDF).

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

Как работают сид-фразы

Когда вы впервые устанавливаете приложение для кошелька, обычно оно попросит вас записать и сохранить где-то фразу-семя; обычно это комбинация из 12 или 24 слов. Вы можете увидеть пример списка возможных английских слов.здесь, который, как вы заметите, состоит из 2048 слов (о этом числе мы поговорим позже).

Что такое BIP-39?

Эта идея хранения фразы мнемонического сида была представлена в 2013 году с помощью BIP (Bitcoin Improvement Proposal); BIP-39. Этот проект предоставляет стандартизированный способ генерации случайной энтропии и ее перевода в серию легко запоминающихся слов.

Как генерируется фраза-семя?

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

Для этого генерируется случайное число с использованием CSPRNG (криптографически безопасного псевдослучайного генератора чисел), что вы можете сделать в своем браузере:

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

  • 15 слов: 160 бит
  • 18 слов: 192 бита
  • 21 слово: 224 бита
  • 24 слова: 256 бит

Итак, как мы используем эти биты для создания фразы-сида? Какова связь между битами и словами? Сначала создается контрольная сумма для энтропии и добавляется к 128 битам; это 4-битный хэш энтропии, созданный для обеспечения ее целостности.

Итак, теперь у нас есть 128 бит энтропии + 4 бита контрольной суммы, что в сумме составляет 132 бита. Затем эти 132 бита преобразуются в двоичное представление; конкретно, они разбиваются на группы по 11 бит.

У нас теперь есть набор из 12 двоичных чисел, каждое из которых состоит из 11 бит. Подсказка: у нас есть 12 чисел, и наша мнемоническая фраза будет состоять из 12 слов!

Напомним, что в нашем списке 2048 слов, и 2048 было выбрано потому, что 2048 является 2^11, так как существует 2048 различных возможных двоичных чисел, которые можно получить с 11 бит.

Теперь нам просто нужно преобразовать эти двоичные числа в слова из нашего списка слов. Это выполняется с использованием двоичного числа в качестве индекса для поиска слова в списке слов. т.е. Если двоичное число равно 10, мы используем 9-е слово в списке (поскольку мы начинаем с индекса 0), например:

  • 000000111, (7 в двоичном формате) - 8-й элемент списка, который - абстрактный! 😉
  • 11111111111, (в двоичной системе 2047) - последний элемент в списке (2048-й), который является «zoo».

Повторите это 12 раз, по одному для каждого 11-битного числа, чтобы сформировать сид-фразу, содержащую 12 слов.

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

Может кто-нибудь угадать мою фразу-семя?

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

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

Итак, мы можем сказать, что для того, чтобы кто-то еще смог угадать эту же последовательность слов, ему нужно правильно угадать то же самое слово, как и мы, с вероятностью 1/2048, 12 раз подряд. Сейчас вы, наверное, думаете: "хорошо, это не кажется таким сложным...", верно?«Но давайте разыграем это:

  • Первое слово: 2048 вариантов
  • Второе слово: 2048 выборов
  • И так далее, до 12: 2048 вариантов

Это 2048 х 2048 х 2048 ... 12 раз. Или 2048^12. Это... абсурдно большое число. Приблизительно 5 септиллионов или 5 квадриллионов миллиардов. Это непостижимо для нас, но давайте попробуем...

Представьте, что вы начали угадывать прямо сейчас, используя безумно мощный компьютер, который может угадывать 1 триллион фраз-семян в секунду. Этой машине потребовалось бы 159 триллионов лет, чтобы угадать одну фразу-семян. Или (в зависимости от вашей веры) примерно в 11 000 раз дольше, чем текущий возраст вселенной.

24-словные фразы-семена лучше, чем 12?

Некоторые кошельки выбирают 128 бит (12 слов), но более современные кошельки просят вас запомнить 24 слова для вашей фразы-сида! Что снова, невероятно большое.

Как происходит вывод частных ключей из фраз-сиде

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

  1. По желанию пользователь может указать дополнительный пароль.
  2. Алгоритм с именем PBKDF2 (Password-Based Key Derivation Function) принимает: фразу-семя, комбинацию строки «мнемоника» и необязательного пароля.

Этот процесс (называемый функцией производства ключа) выдает 64-байтовое хеш-значение, называемое бинарным сидом, с использованием другого алгоритма, называемого HMAC-SHA512, в качестве псевдослучайной функции.

Полученное значение хэша длиной в 64 байта можно использовать для создания аккаунтов с использованием логики, основанной на стандартах Bitcoin, а именно BIP-32 и, при желании, расширения BIP-32, BIP-44.

Что такое BIP-32?

BIP-32 вводит иерархические детерминированные (HD) кошельки, где множество кошельков может быть получено из одного семени, и больше кошельков может быть получено из этих кошельков, создавая «дерево» кошельков.

Что такое BIP-44?

BIP-44 обеспечивает стандартизированный способ создания иерархии для структур кошельков из одного двоичного семени, реализуя определенный путь производной следуя структуре: m / purpose’ / coin_type’ / account’ / change / address_index:

  • Назначение: Определяет используемый стандарт BIP; для BIP-44 это 44'.
  • coin_type: Указывает на криптовалюту; например, 0 для биткойна, 60 для эфира.
  • аккаунт: различает разные пользовательские аккаунты.
  • change: указывает тип адреса: 0 для получения, 1 для сдачи.
  • address_index: Предоставляет уникальный индекс для каждого адреса в рамках одного и того же аккаунта и типа изменений.

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

Как создаются частные ключи из двоичного семени?

Как мы уже упоминали ранее, приватные ключи состоят из 64 шестнадцатеричных символов, что равно 32 байтам. И мы только что сгенерировали 64-байтовое двоичное значение через процесс PBKDF2. Как же мы используем это 64-байтовое хэш-значение для создания приватных ключей?

Сначала хэш разбивается на две половины, каждая размером 32 байта:

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

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

Как работают открытые и закрытые ключи

Используя криптографию эллиптических кривых (ECC), мы можем определить открытый ключ для заданного закрытого ключа. Существуют различные виды эллиптических кривых, но та, которая используется как в Bitcoin, так и в Ethereum, называется secp256k1.

Спецификация этой эллиптической кривой включает базовую точку G, которая используется в качестве отправной точки для создания других точек на кривой. Из этой отправной точки мы «перемещаемся» по кривой определенное количество раз (определяемое нашим приватным ключом), определенным образом. Точка на кривой, в которой мы окажемся, остановив этот процесс, будет нашим открытым ключом.

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

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

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

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

Для чего на блокчейне используются публичные ключи?

Открытые ключи, как следует из названия, могут быть общедоступными и распространяться с любым человеком. Они полезны для:

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

Завершение

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

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

Отказ от ответственности:

  1. Эта статья перепечатана с [https://abs.xyz/blog], Перенаправьте оригинальное название «Что такое кошелек?», Все авторские права принадлежат оригинальному автору [Джаррод Уоттс]. Если есть возражения против этой публикации, пожалуйста, свяжитесь сGate Learnкоманде, и они незамедлительно справятся с этим.

  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, являются исключительно мнениями автора и не являются инвестиционными советами.

  3. Переводом статьи на другие языки занимается команда Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Что такое кошелек?

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

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

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

Что такое кошелек?

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

Каждый аккаунт в блокчейне состоит из криптографической пары ключей; набор из 2 ключей, связанных друг с другом. В контексте блокчейнов такой вид аккаунта обычно называется Внешне Собственным Аккаунтом (EOA) и состоит из открытого и закрытого ключей:

  • Публичный ключ: Адрес вашего кошелька. Им можно поделиться с кем угодно, и другие люди (или смарт-контракты) могут использовать его для отправки вам криптовалюты.
  • Приватный ключ: «ключ подписи», который вы используете для подписи сообщений или транзакций. Любой, у кого есть доступ к приватному ключу, имеет полный контроль над средствами в кошельке.

У этой пары ключей есть мощная функция, называемая функцией ловушки; что означает, что

  • Легко определить открытый ключ, если у вас есть закрытый ключ (A→B).
  • Невозможно вычислить приватный ключ, имея только публичный ключ (B→A).

Для чего используются кошельки?

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

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

Например, Джаррод может отправить транзакцию, утверждая, что Абрил отправила ему 5 ETH, даже если она никогда не соглашалась на эту транзакцию. Однако, поскольку блокчейн проверяет подпись каждой транзакции, он быстро отклонит транзакцию, поскольку восстановленный адрес из подписи не соответствует «отправителю» транзакции (т.е. Абрил).

Блокчейны, такие как Ethereum, используют ECDSA (Elliptic Curve Digital Signature Algorithm), чтобы проверить, соответствует ли общедоступный ключ, восстановленный из подписи транзакции, общедоступному ключу лица, отправившего транзакцию в сеть.

Как создаются кошельки?

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

  1. Приватный ключ состоит из 64 шестнадцатеричных символов (символы 0→F).
  2. Открытый ключ получается из закрытого ключа с помощью криптографии на эллиптических кривых (ECC).
  3. Открытый ключ разбивается, хешируется и форматируется, чтобы стать адресом из 42 символов.

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

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

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

Что такое фраза-сид?

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

Это позволяет пользователям запомнить единственный набор слов для доступа ко всем своим учетным записям; каждая из которых имеет индивидуальную пару открытого и закрытого ключей. Любое количество новых закрытых ключей может быть получено из единой фразы-сида, используя определенную функцию производной ключа (KDF).

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

Как работают сид-фразы

Когда вы впервые устанавливаете приложение для кошелька, обычно оно попросит вас записать и сохранить где-то фразу-семя; обычно это комбинация из 12 или 24 слов. Вы можете увидеть пример списка возможных английских слов.здесь, который, как вы заметите, состоит из 2048 слов (о этом числе мы поговорим позже).

Что такое BIP-39?

Эта идея хранения фразы мнемонического сида была представлена в 2013 году с помощью BIP (Bitcoin Improvement Proposal); BIP-39. Этот проект предоставляет стандартизированный способ генерации случайной энтропии и ее перевода в серию легко запоминающихся слов.

Как генерируется фраза-семя?

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

Для этого генерируется случайное число с использованием CSPRNG (криптографически безопасного псевдослучайного генератора чисел), что вы можете сделать в своем браузере:

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

  • 15 слов: 160 бит
  • 18 слов: 192 бита
  • 21 слово: 224 бита
  • 24 слова: 256 бит

Итак, как мы используем эти биты для создания фразы-сида? Какова связь между битами и словами? Сначала создается контрольная сумма для энтропии и добавляется к 128 битам; это 4-битный хэш энтропии, созданный для обеспечения ее целостности.

Итак, теперь у нас есть 128 бит энтропии + 4 бита контрольной суммы, что в сумме составляет 132 бита. Затем эти 132 бита преобразуются в двоичное представление; конкретно, они разбиваются на группы по 11 бит.

У нас теперь есть набор из 12 двоичных чисел, каждое из которых состоит из 11 бит. Подсказка: у нас есть 12 чисел, и наша мнемоническая фраза будет состоять из 12 слов!

Напомним, что в нашем списке 2048 слов, и 2048 было выбрано потому, что 2048 является 2^11, так как существует 2048 различных возможных двоичных чисел, которые можно получить с 11 бит.

Теперь нам просто нужно преобразовать эти двоичные числа в слова из нашего списка слов. Это выполняется с использованием двоичного числа в качестве индекса для поиска слова в списке слов. т.е. Если двоичное число равно 10, мы используем 9-е слово в списке (поскольку мы начинаем с индекса 0), например:

  • 000000111, (7 в двоичном формате) - 8-й элемент списка, который - абстрактный! 😉
  • 11111111111, (в двоичной системе 2047) - последний элемент в списке (2048-й), который является «zoo».

Повторите это 12 раз, по одному для каждого 11-битного числа, чтобы сформировать сид-фразу, содержащую 12 слов.

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

Может кто-нибудь угадать мою фразу-семя?

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

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

Итак, мы можем сказать, что для того, чтобы кто-то еще смог угадать эту же последовательность слов, ему нужно правильно угадать то же самое слово, как и мы, с вероятностью 1/2048, 12 раз подряд. Сейчас вы, наверное, думаете: "хорошо, это не кажется таким сложным...", верно?«Но давайте разыграем это:

  • Первое слово: 2048 вариантов
  • Второе слово: 2048 выборов
  • И так далее, до 12: 2048 вариантов

Это 2048 х 2048 х 2048 ... 12 раз. Или 2048^12. Это... абсурдно большое число. Приблизительно 5 септиллионов или 5 квадриллионов миллиардов. Это непостижимо для нас, но давайте попробуем...

Представьте, что вы начали угадывать прямо сейчас, используя безумно мощный компьютер, который может угадывать 1 триллион фраз-семян в секунду. Этой машине потребовалось бы 159 триллионов лет, чтобы угадать одну фразу-семян. Или (в зависимости от вашей веры) примерно в 11 000 раз дольше, чем текущий возраст вселенной.

24-словные фразы-семена лучше, чем 12?

Некоторые кошельки выбирают 128 бит (12 слов), но более современные кошельки просят вас запомнить 24 слова для вашей фразы-сида! Что снова, невероятно большое.

Как происходит вывод частных ключей из фраз-сиде

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

  1. По желанию пользователь может указать дополнительный пароль.
  2. Алгоритм с именем PBKDF2 (Password-Based Key Derivation Function) принимает: фразу-семя, комбинацию строки «мнемоника» и необязательного пароля.

Этот процесс (называемый функцией производства ключа) выдает 64-байтовое хеш-значение, называемое бинарным сидом, с использованием другого алгоритма, называемого HMAC-SHA512, в качестве псевдослучайной функции.

Полученное значение хэша длиной в 64 байта можно использовать для создания аккаунтов с использованием логики, основанной на стандартах Bitcoin, а именно BIP-32 и, при желании, расширения BIP-32, BIP-44.

Что такое BIP-32?

BIP-32 вводит иерархические детерминированные (HD) кошельки, где множество кошельков может быть получено из одного семени, и больше кошельков может быть получено из этих кошельков, создавая «дерево» кошельков.

Что такое BIP-44?

BIP-44 обеспечивает стандартизированный способ создания иерархии для структур кошельков из одного двоичного семени, реализуя определенный путь производной следуя структуре: m / purpose’ / coin_type’ / account’ / change / address_index:

  • Назначение: Определяет используемый стандарт BIP; для BIP-44 это 44'.
  • coin_type: Указывает на криптовалюту; например, 0 для биткойна, 60 для эфира.
  • аккаунт: различает разные пользовательские аккаунты.
  • change: указывает тип адреса: 0 для получения, 1 для сдачи.
  • address_index: Предоставляет уникальный индекс для каждого адреса в рамках одного и того же аккаунта и типа изменений.

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

Как создаются частные ключи из двоичного семени?

Как мы уже упоминали ранее, приватные ключи состоят из 64 шестнадцатеричных символов, что равно 32 байтам. И мы только что сгенерировали 64-байтовое двоичное значение через процесс PBKDF2. Как же мы используем это 64-байтовое хэш-значение для создания приватных ключей?

Сначала хэш разбивается на две половины, каждая размером 32 байта:

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

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

Как работают открытые и закрытые ключи

Используя криптографию эллиптических кривых (ECC), мы можем определить открытый ключ для заданного закрытого ключа. Существуют различные виды эллиптических кривых, но та, которая используется как в Bitcoin, так и в Ethereum, называется secp256k1.

Спецификация этой эллиптической кривой включает базовую точку G, которая используется в качестве отправной точки для создания других точек на кривой. Из этой отправной точки мы «перемещаемся» по кривой определенное количество раз (определяемое нашим приватным ключом), определенным образом. Точка на кривой, в которой мы окажемся, остановив этот процесс, будет нашим открытым ключом.

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

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

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

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

Для чего на блокчейне используются публичные ключи?

Открытые ключи, как следует из названия, могут быть общедоступными и распространяться с любым человеком. Они полезны для:

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

Завершение

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

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

Отказ от ответственности:

  1. Эта статья перепечатана с [https://abs.xyz/blog], Перенаправьте оригинальное название «Что такое кошелек?», Все авторские права принадлежат оригинальному автору [Джаррод Уоттс]. Если есть возражения против этой публикации, пожалуйста, свяжитесь сGate Learnкоманде, и они незамедлительно справятся с этим.

  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, являются исключительно мнениями автора и не являются инвестиционными советами.

  3. Переводом статьи на другие языки занимается команда Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

今すぐ始める
登録して、
$100
のボーナスを獲得しよう!