2. Биткойн-адрес и ключи шифрования

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

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

Типичный адрес выглядит так: 16ZEbJf29nAX5uc6psDJvgDAjgqKJU6i8m.

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

Похожая система есть и в номерах банковских карт.

Можно создавать любое количество кошельков и использовать их для разных целей. Зачем?

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

Данный подход развит, например, в кошельке Electrum

Хэш-функция и цифровая подпись

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

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

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

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

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

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

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