27 / 736ADDR

Биткоин-адрес

Реквизит для получения платежа, а не банковский счёт

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

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

Алиса хочет заплатить Бобу. Боб открывает в кошельке «Получить», проверяет адрес и отправляет его текстом или QR-кодом. Алиса считывает его своим кошельком и перед отправкой проверяет получателя и сумму. Разбирать смысл каждого символа не нужно: это делает приложение. Из адреса кошелёк строит условие будущего расходования денег — обычно подпись соответствующим приватным ключом. Транзакция записывает это условие как скрипт под названием scriptPubKey. В ней хранятся сумма и скрипт, а не привычный текст адреса. Поэтому адрес — удобный способ передать платёжные реквизиты, а не контейнер с монетами. [1] [3]

Длинный адрес лучше скопировать или считать QR-кодом, а не вводить вручную. Но на этом проверка не заканчивается: вредоносная программа может подменить адрес в буфере обмена. Сравните его целиком с реквизитами, полученными от адресата по надёжному каналу. Если используете Hardware Wallet, проверьте и собственный экран устройства. Начала и конца недостаточно — мошеннический адрес может их имитировать. Адреса содержат контрольную сумму для обнаружения опечаток, но она не определяет, принадлежит ли правильно записанный адрес нужному человеку. Кошелёк также должен поддерживать формат и сеть. Небольшой пробный платёж может помочь, но не заменяет проверки адреса при следующем переводе. Протокол не позволяет просто отменить подтверждённый платёж на ошибочный, но действительный адрес. [2] [7] [8] [18]

Когда Боб снова откроет «Получить», там может оказаться другой адрес. Это не означает, что его деньги исчезли. Новый адрес помогает сохранять приватность: зная опубликованный адрес, можно следить за платежами на него в блокчейне, но это не должно автоматически раскрывать все поступления кошелька. Повторное использование облегчает такую связь. Впрочем, новые адреса тоже не гарантируют анонимность: последующие транзакции могут раскрыть другие связи. Адресом можно поделиться для оплаты, но публиковать его повсюду без необходимости не стоит. Кроме того, один адрес не равен одному человеку: средствами могут совместно управлять несколько людей или сервис от имени клиентов. [1] [14]

Кошелёк управляет ключами, находит платежи, которые может потратить, и показывает их сумму. Поэтому баланс может складываться из поступлений на множество адресов. Обычный HD Wallet создаёт семейства ключей из общей основы: новый адрес не означает открытие другого кошелька. При оплате приложение также может вернуть неизрасходованный остаток на собственный Change Address — адрес сдачи. Но самих адресов для восстановления недостаточно. Резервная копия должна позволять восстановить нужные ключи и правила их использования. Многие кошельки применяют Seed Phrase — набор слов для восстановления; более сложные настройки могут потребовать дополнительных сведений. Плательщику эти слова и ваши приватные ключи никогда не нужны. [10] [14]

QR-код — лишь способ записи информации. Он может содержать адрес или платёжный запрос, который начинается с bitcoin: и добавляет сумму, обозначение получателя или сообщение. Этот механизм описывал BIP21, а BIP321 его расширяет. Перед подтверждением проверьте, что именно считал кошелёк. Запросы Lightning Network, например invoice для отдельного платежа или offer, по которому можно каждый раз запрашивать новую invoice, используют другой порядок оплаты; Lightning Address упрощает получение такого запроса. Некоторые запросы предлагают несколько способов заплатить. Точно так же цифровая подпись сообщения не подтверждает автоматически личность: BIP322 позволяет показать возможность выполнить условия скрипта, но сам по себе не удостоверяет личность в юридическом смысле и не означает согласия с произвольным счётом. [15] [16] [17]

Base58Check соединяет байт версии с данными, называемыми payload. Добавляет первые четыре байта SHA256(SHA256(version || payload)) и кодирует результат алфавитом Base58. В mainnet 0x00 означает P2PKH, а 0x05 — P2SH; отсюда обычные начальные 1 и 3. Тестовые сети используют другие версии. Алфавит исключает легко перепутываемые символы 0, O, I и l. Эта 32-битная контрольная сумма обнаруживает многие опечатки, но не удостоверяет личность получателя. [2] [3]

Запись нативного SegWit содержит префикс bc для mainnet либо tb для testnet, разделитель 1, witness-версию и данные в группах по 5 бит. В конце идут 6 символов контрольной суммы. BIP173 ввёл Bech32; после обнаружения слабости при некоторых вставках и удалениях BIP350 сохранил Bech32 для версии 0 и назначил Bech32m для версий 1–16. Буквы могут быть все строчными или все прописными, но не смешанными. Предел кодирования — 90 символов. Даже корректная запись может относиться к другой сети или неподдерживаемой версии. [7] [8]

P2PKH и P2WPKH ссылаются на 20-байтовый HASH160 публичного ключа. P2SH использует HASH160 скрипта redeemScript, а P2WSH — SHA256 скрипта witnessScript. Поэтому SegWit v0 распознаёт 20-байтовый P2WPKH и 32-байтовый P2WSH. P2TR по BIP341 устроен иначе: его программа версии 1 содержит 32-байтовый модифицированный выходной ключ Q в формате x-only, а не хеш обычного ключа получения. При формировании Q можно также учесть корень дерева дополнительных скриптов. Так ключ криптографически связывается с этими условиями расходования. Поэтому один адрес не раскрывает всех вариантов расходования. [6] [9]

Ранние биткоин-выходы часто платили прямо на публичный ключ. P2PKH отложил его раскрытие до расходования. BIP13 и BIP16 позволили с помощью P2SH передавать хеш более сложного скрипта. BIP141 добавил версионируемые witness-программы, BIP173 — Bech32, а BIP341 вместе с BIP350 — формат Taproot с Bech32m. За разным внешним видом стоят разные условия проверки. Не «преобразуйте» адрес ручной заменой префикса: можно создать другой или нерасходуемый выход. Некоторые нестандартные скрипты и ранние выходы pay-to-pubkey не имеют обычного канонического адреса. [4] [5] [6] [7] [8] [9] [3]

HD Wallet по BIP32 выводит множество ключей из общего корня. Пути различают типы выходов: BIP44 использует назначение 44' для P2PKH, BIP84 — 84' для P2WPKH, а BIP86 — 86' для P2TR с одним ключом. Далее идут тип монеты (coin type), аккаунт, ветвь получения или сдачи и индекс адреса. Одной Seed Phrase может не хватить для определения всех путей, аккаунтов и правил Multisig. Output Descriptor сохраняет также происхождение ключей и устройство скрипта. Восстановление должно найти реальные средства, а не просто снова показать знакомый адрес. [10] [11] [12] [13] [14]

В P2PKH и P2WPKH сначала обычно виден хеш ключа; при расходовании раскрывается публичный ключ. P2SH и P2WSH раскрывают использованный redeemScript или witnessScript. Taproot уже содержит модифицированный публичный ключ в выходе. Расходование через key path обычно добавляет Schnorr Signature, а через script path — раскрывает выбранный скрипт, control block и путь Меркла; неиспользованные ветви могут остаться скрытыми. Поэтому утверждение, будто каждый адрес скрывает публичный ключ, неверно. [6] [9]

Для полной картины прочитайте эту статью вместе с Private Key, Кошелёк, Change Address, Bitcoin, SegWit, Taproot. На эту статью также ссылаются Hash, SHA-256, Cold Storage, Watch-only Wallet.

01Является ли адрес Bitcoin номером счёта?

Нет. Адрес подсказывает кошельку отправителя, как подготовить платёж для получателя. Условие его последующего расходования записывается в транзакции как scriptPubKey. Один кошелёк может управлять множеством адресов; сам адрес не устанавливает личность человека.

02Можно ли безопасно использовать адрес Bitcoin повторно?

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

DOC · 001Bitcoin whitepaper — Transactions and PrivacyПервичный источник DOC · 002Bitcoin Core — Base58Check implementationПервичный источник DOC · 003Bitcoin Core — destination encoders and decodersПервичный источник DOC · 004BIP 13 — Address Format for pay-to-script-hashСпецификация DOC · 005BIP 16 — Pay to Script HashСпецификация DOC · 006BIP 141 — Segregated Witness consensus layerСпецификация DOC · 007BIP 173 — Base32 address format for native v0-16 witness outputsСпецификация DOC · 008BIP 350 — Bech32m format for witness v1 and laterСпецификация DOC · 009BIP 341 — Taproot validation and output keysСпецификация DOC · 010BIP 32 — Hierarchical deterministic walletsСпецификация DOC · 011BIP 44 — Multi-account hierarchyСпецификация DOC · 012BIP 84 — Derivation for native P2WPKHСпецификация DOC · 013BIP 86 — Derivation for single-key P2TRСпецификация DOC · 014Bitcoin Core — Output descriptorsДокументация DOC · 015BIP 21 — URI schemeСпецификация DOC · 016BIP 322 — Generic signed message formatСпецификация DOC · 017BIP 321 — URI schemeПервичный источник DOC · 018Trezor — verify every address on your deviceДокументация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией