Биткоин-адрес — это строка из цифр и букв, которой можно поделиться с любым, кто хочет отправить вам биткоины. Биткоин-адрес, сгенерированный из открытого ключа (также представляющего собой строку из цифр и букв), начинается с цифры "1". Пример биткоин-адреса:
1J7mdg5rbQyUHENYdx39WVWK7fsLpEoXZy
В транзакции биткоин-адрес обычно выступает в роли получателя. Если сравнивать биткоин-транзакцию с чеком, то биткоин-адрес — это получатель, который указывается в поле получателя. Получателем чека может быть банковский счет, компания, организация или даже чек на предъявителя. Вместо указания конкретного счета чек использует абстрактное имя в качестве получателя, что делает его достаточно гибким платежным инструментом. Аналогичным образом, биткоин-адреса используют схожую абстракцию, что также делает биткоин-транзакции гибкими. Биткоин-адрес может представлять владельца пары открытого и закрытого ключей, а может представлять нечто иное. Теперь давайте рассмотрим простой пример генерации биткоин-адреса из открытого ключа.
Биткоин-адреса могут быть получены из открытых ключей с помощью одностороннего криптографического алгоритма хеширования. Хеш-алгоритм — это односторонняя функция, которая принимает входные данные произвольной длины и выдает их «отпечаток» или хеш. Криптографические хеш-функции широко используются в Биткоине: в биткоин-адресах, скриптовых адресах и в алгоритмах proof-of-work при майнинге. Алгоритмами, используемыми для генерации биткоин-адресов из открытых ключей, являются Secure Hash Algorithm (SHA) и RACE Integrity Primitives Evaluation Message Digest (RIPEMD), а именно SHA256 и RIPEMD160.
Используя открытый ключ K в качестве входных данных, рассчитывается его SHA256-хеш, а полученный результат используется для расчета RIPEMD160-хеша, в результате чего получается число длиной 160 бит (20 байт).
A = RIPEMD160(SHA256(K))
В формуле K — это открытый ключ, а A — сгенерированный биткоин-адрес.
Подсказка: Биткоин-адреса отличаются от открытых ключей. Биткоин-адреса генерируются с помощью односторонней хеш-функции от открытого ключа.
Биткоин-адреса, которые обычно видят пользователи, закодированы с использованием "Base58Check" (см. раздел "Кодирование Base58 и Base58Check"), которое использует 58 символов (Base58Base58Check-кодирование также используется в других местах Биткоина, таких как биткоин-адреса, закрытые ключи, зашифрованные ключи и хеши скриптов, для повышения читаемости и корректности ввода.
