Что такое закрытый ключ Биткоин адреса

Наверняка в вашем телефоне есть сканер лица или датчик отпечатков пальцев, который позволяет разблокировать устройство, в то время как биткоин, в качестве аутентификации, использует закрытый (приватный) ключ, чтобы вы могли отправлять платежи с кошелька. Возможно, вы не видели приватный ключ при создании кошелька на blockchain.com, но если вы присмотритесь, то увидите его.

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

Приватные ключи состоят из 64 символов. В их состав входят числа от 0 до 9 и буквы латинского алфавита от A до F. Поэтому они используют шестнадцатеричную систему счисления. Теперь давайте оставим сложные вещи!

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

Каждый приватный ключ биткоина также связан с адресом. Адрес или открытый ключ помогают вам указать других пользователей в сети, с которыми вы хотите заключить сделку (т.е. адрес вашего кошелька — это и есть открытый ключ). Подумайте об этом таким образом, вы могли бы отправлять платежи кому-то, если бы у вас не было номера их счета? Определенно! Но вы пошлете его не тому человеку. Это был сложный вопрос, но теперь вы поняли, к чему это приведет.

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

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

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

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

Читайте также:  В чем сила Биткоина

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

Обсудите эту новость в лучших чатах по криптовалюте CryptoOn и bt[c]hat — чат

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

В предыдущей статье мы рассматривали различные методы генерации закрытого ключа. Какой бы метод вы ни выбрали, в конце вы получите 32 байта данных. Вот ключ, который мы получили в конце той статьи:

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

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

Первое, что нам нужно сделать, это применить алгоритм цифровой подписи ECDSA или Elliptic Curve к нашему закрытому ключу. Эллиптической кривой является кривая, определенная уравнением y² = x³ + ax + b с выбранной a и b. Существует целое семейство таких кривых, которые широко известны и широко используются. Для биткоина используется кривая secp256k1/. Если вы хотите узнать больше о криптографии на основе эллиптических кривых, почитайте эту статью.

Применяя ECDSA к закрытому ключу, мы получаем 64-байтовое целое число. Оно состоит из двух 32-байтовых целых чисел, которые представляют соединенные вместе точки X и Y эллиптической кривой.

Для нашего примера мы получили:

На языке Python это будет выглядеть так:

Примечание: как видно из кода, прежде чем я использовал метод на базе модуля ECDSA, я расшифровал закрытый ключ, используя кодеки. Это больше относится к Python и меньше к самому алгоритму, но я объясню, что мы здесь делаем во избежание возможной путаницы.

В Python есть как минимум два класса, которые могут хранить закрытый и открытый ключи: “str” и “bytes”. Первый – это строка, а второй – массив байтов. Криптографические методы в Python работают с классом “bytes”, принимая его в качестве входных данных и возвращая как результат.

Теперь, есть маленькая загвоздка: строка, скажем, 4f3c не равна массиву байтов 4f3c, она равна массиву байтов с двумя элементами, O 031e7bcc70c72770dbb72fea022e8a6d07f814d2ebe4de9ae3f7af75bf706902a7

Этот ключ содержит ту же информацию, но он почти в два раза короче, чем несжатый ключ. Клево!

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

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

Читайте также:  Когда у мужа есть Биткоины но ты не знаешь как их потратить

Здесь нам нужно применить SHA-256 к открытому ключу, а затем применить RIPEMD-160 к результату. Порядок очень важен.

SHA-256 и RIPEMD-160 являются двумя хэш-функциями, и опять же, мы не будем вдаваться в детали того, как они работают.

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

Зашифрованный открытый ключ = RIPEMD-160 (SHA-256 (Открытый ключ))

Вот как мы шифруем открытый ключ в Python:

Биткоин имеет две сети, основную и тестовую. Основной сетью является сеть, которую все люди используют для перевода монет. Тестовая сеть была создана, как вы уже догадались, для тестирования новых функций и программного обеспечения.
Мы хотим создать адрес для использования его в основной сети, поэтому нам нужно добавить 0x00 к зашифрованному открытому ключу. Результат 00453233600a96384bb8d73d400984117ac84d7e8b . Для тестовой сети это будет 0x6f .

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

Чтобы вычислить контрольную сумму ключа, нам нужно применить SHA-256 дважды, а затем взять первые 4 байта результата. В нашем примере двойной SHA-256 — это 512f43c48517a75e58a7ec4c554ecd1a8f9603c891b46325006abf39c5c6b995 , и поэтому контрольная сумма 512f43c4 (обратите внимание, что 4 байта составляют 8 шестнадцатеричных цифр).

С = SHA-256 (SHA-256 (зашифрованный открытый ключ основной сети))
Контрольная сумма = первые 4 байта С

Для расчета контрольной суммы адреса используется следующий код:

Наконец, чтобы получить адрес, мы просто объединяем ключ основной сети и контрольную сумму. В нашем случае это выглядит так: 00453233600a96384bb8d73d400984117ac84d7e8b512f43c4

Вот и все! Это адрес кошелька для закрытого ключа, приведенного в начале статьи.

Но вы можете заметить, что что-то не так. Вы, вероятно, уже встречали биткоин-адреса, и они не выглядели так. Ну, причина в том, что они кодируются с помощью Base58 (вариант кодирования цифрового кода в виде буквенно-цифрового текста на основе латинского алфавита. Алфавит кодирования содержит 58 символов). Это немного странно.

Вот алгоритм для преобразования шестнадцатеричного адреса в адрес Base58:

Мы получаем 17JsmEygbbEUEpvt4PFtYaTeSqfb9ki1F1 , сжатый адрес биткоин-кошелька.


Шестнадцатеричный адрес = зашифрованный открытый ключ основной сети + адрес контрольной суммы = Base58 (Шестнадцатеричный адрес)

Процесс генерации ключей кошелька можно разделить на четыре этапа:

  • создание открытого ключа с помощью ECDSA
  • шифрование ключа с помощью SHA-256 и RIPEMD-160
  • расчет контрольной суммы с помощью двойной SHA-256
  • кодирование ключа с помощью Base58.

В зависимости от формы открытого ключа (полный или сжатый), мы получаем разные адреса, но оба совершенно допустимы.

Вот полный алгоритм для несжатого открытого ключа:

Эллиптический открытый ключ = ECDSA (закрытый ключ)
Открытый ключ = 0х04 + эллиптический открытый ключ
Зашифрованный открытый ключ = RIPEMD-160 (SHA-256 (открытый ключ))
Зашифрованный открытый ключ основной сети = 0х00 + Зашифрованный открытый ключ
С = SHA-256 (SHA-256 (Зашифрованный открытый ключ основной сети))
Контрольная сумма = первые 4 байта С
Шестнадцатеричный адрес = Зашифрованный открытый ключ основной сети + Контрольная сумма
Адрес = Base58 (Шестнадцатеричный адрес)

Читайте также:  Что такое ico Биткоин

Если вы хотите «поиграть» с кодом, я опубликовал его на GitHub.

Я делаю обзор о криптовалютах на Medium. Первая часть – подробное описание блокчейна.

21.11.2018 | Автор: Евгений Наумов

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

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

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

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

Адрес Биткоин кошелька вычисляется вновь на основе публичного ключа.
Количество символов в адресе Биткоин кошелька равняется 33-34. Выглядит это примерно так:

А так выглядит приватный и публичный ключ Ethereum

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

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

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

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

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

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

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

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

Не забывайте подписываться на наши социальные сети и делиться информацией! Мы будем рады 🙂

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

Читайте далее:

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Adblock detector