Legacy («Легаси») и SegWit («Сегвит») — термины, которыми обозначают разные типы адресов и сценариев расходования средств в сети Bitcoin. Для новичка эти названия могут показаться странными и непонятными, однако отличить основные форматы достаточно просто: Legacy-адреса обычно начинаются с «1», P2SH-адреса — с «3», а нативные SegWit-адреса — с «bc1q».
Несмотря на техническую сложность вопроса, типы адресов Bitcoin — важная тема для каждого, кто решил познакомиться с криптовалютами. В предыдущих статьях мы уже рассматривали, что такое биткоин, какими бывают Bitcoin-кошельки и как купить BTC. Казалось бы, этой информации достаточно, чтобы стать полноценным пользователем криптовалют, но для безопасного перевода средств важно также понимать различия между форматами адресов.
Такие отличия действительно могут поставить пользователя в тупик. Во-первых, не сразу понятно, для чего существует несколько форматов. Во-вторых, появляется страх потерять средства при переводе между разными типами адресов. Осторожность оправданна: перед отправкой необходимо проверить сеть, адрес и поддержку формата сервисом. Однако стандартные адреса принадлежат одной сети Bitcoin, и при наличии поддержки со стороны кошелька перевод между ними выполняется обычным образом — «не так страшен чёрт, как его малюют».
В этой статье мы разберём основные особенности Bitcoin-адресов, объясним отличия Legacy, P2SH и SegWit и покажем, что на практике выбрать подходящий формат не так сложно.
Ключевые моменты
- Legacy, P2SH и SegWit — это разные форматы представления условий, на которых можно потратить BTC. Они работают в одной сети Bitcoin, но отличаются структурой транзакций, совместимостью и эффективностью использования места в блоке.
- Legacy-адреса P2PKH начинаются с «1». Они поддерживаются практически всеми Bitcoin-сервисами, но расходование полученных на них монет обычно требует большего виртуального размера и, при одинаковой ставке sat/vB, более высокой комиссии.
- Адреса с «3» являются P2SH-адресами. Они могут содержать разные сценарии, включая мультиподпись и совместимый SegWit P2SH-P2WPKH, поэтому префикс «3» сам по себе не означает, что адрес обязательно является мультиподписным или SegWit.
- Нативные SegWit-адреса версии 0 используют формат Bech32 и обычно начинаются с «bc1q». Они устойчивее к ошибкам при вводе и позволяют эффективнее использовать место в блоке. Taproot-адреса начинаются с «bc1p» и кодируются с помощью Bech32m.
- Сетевая комиссия зависит от виртуального размера транзакции и выбранной ставки в sat/vB, а не от стоимости переводимой суммы. SegWit может уменьшить виртуальный размер, но не гарантирует фиксированную экономию или более быстрое подтверждение.
Что такое адрес Bitcoin-кошелька
Адрес Bitcoin-кошелька — это удобное для передачи представление условия, на которое отправляются BTC. Его можно условно сравнить с реквизитами для получения средств, хотя технически адрес не является банковским счётом и не хранит монеты внутри себя. Чтобы совершить перевод, пользователь указывает адрес получателя, а получатель предоставляет этот адрес отправителю. Право потратить поступившие BTC подтверждается соответствующими приватными ключами и скриптами кошелька.
В первые годы существования Bitcoin наиболее распространённым форматом был Legacy P2PKH. Однако уже в 2012 году в сети появился P2SH, а после активации SegWit в 2017 году получили распространение новые сценарии и форматы адресов. Изменилось не только внешнее представление адресов, но и способ размещения и учёта данных подписи в транзакциях.
Рассмотрим основные типы адресов Bitcoin и важные особенности каждого из них.
Что такое Legacy-адрес Bitcoin
Legacy-адрес P2PKH — Pay-to-Public-Key-Hash — это классический формат назначения платежа в сети Bitcoin, предусмотренный ранними версиями протокола и до сих пор поддерживаемый большинством криптокошельков, бирж и сервисов.
Такой адрес можно определить по цифре «1» в начале. Средства отправляются на хеш публичного ключа, а при расходовании владелец раскрывает соответствующий публичный ключ и предоставляет действительную цифровую подпись.
Legacy остаётся широко совместимым форматом с момента запуска сети Bitcoin. Однако сегодня он уже не всегда является наиболее экономичным вариантом для новых кошельков и регулярных транзакций.
Несмотря на распространённость Legacy-адресов, у них есть ряд практических особенностей и недостатков:
- Base58Check чувствителен к регистру, поэтому замена заглавной буквы на строчную или наоборот изменит адрес; длинную строку также неудобно переписывать вручную;
- при одинаковом количестве входов и выходов Legacy-транзакция обычно имеет больший виртуальный размер, чем сопоставимая SegWit-транзакция, поэтому при одинаковой ставке sat/vB её итоговая комиссия будет выше;
- Legacy P2PKH использует надёжные подписи ECDSA на кривой secp256k1, однако не получает преимуществ SegWit: скидки на witness-данные, отделения подписей и исправления основной формы сторонней изменяемости TXID;
- в классических транзакциях возможна сторонняя изменяемость идентификатора транзакции — transaction malleability, поскольку данные подписи входят в расчёт TXID.
Технические тонкости! Для P2PKH-адреса хеш публичного ключа кодируется с помощью Base58Check. Это не просто преобразование открытого ключа в Base58: к хешу добавляется байт версии и контрольная сумма, после чего результат представляется в алфавите Base58. Такой формат похож на Base64 только общей идеей текстового кодирования двоичных данных, но использует другой алфавит и встроенную проверку ошибок.
В алфавите Base58 отсутствуют визуально похожие символы 0 — ноль, O — заглавная латинская «o», I — заглавная латинская «i» и l — строчная латинская «L». Символы «+» и «/», используемые в Base64, также не входят в Base58. Это снижает вероятность ошибок при чтении, копировании и ручной записи адреса.
На первый взгляд эти недостатки могут показаться незначительными, но по мере роста нагрузки на Bitcoin и развития новых сценариев использования эффективность транзакций стала играть всё более важную роль.
Комиссия за транзакцию выплачивается в сатоши и рассчитывается исходя из виртуального размера операции и ставки в sat/vB. Рост рыночной цены BTC может увеличить фиатный эквивалент уже назначенной комиссии, однако сам механизм комиссии зависит прежде всего от спроса на место в блоке. При переводе BTC на сумму, эквивалентную 10 000 USD, комиссия в 5 USD может казаться небольшой, но для микроплатежа та же сумма окажется значительной долей перевода. Поэтому более компактные типы транзакций особенно полезны при высокой загрузке сети и использовании множества входов.
Что такое SegWit и SegWit-адрес Bitcoin
До конца лета 2017 года большинство пользователей BTC работали преимущественно с Legacy- и P2SH-адресами. 24 августа 2017 года на высоте блока 481 824 в сети Bitcoin был активирован софтфорк Segregated Witness. Основная спецификация SegWit была опубликована как BIP141 и подготовлена группой разработчиков, включая Эрика Ломброзо, Джонсона Лау и Питера Вюлле.
Обновление ввело структуру witness для данных, необходимых при проверке подписи, а также новые выходы SegWit P2WPKH — Pay-to-Witness-Public-Key-Hash и P2WSH — Pay-to-Witness-Script-Hash. Для удобного представления нативных SegWit-адресов версии 0 позднее был стандартизирован формат Bech32.
Segregated Witness — «отделённый свидетель» — отделяет witness-данные, включая подписи и скрипты разблокировки SegWit-входов, от основной части сериализации транзакции, используемой для расчёта TXID. При этом данные не удаляются из блокчейна и не хранятся за его пределами: они передаются, проверяются и фиксируются в блоке через отдельное обязательство witness commitment.
Краткое описание технологии: SegWit изменил структуру транзакции и способ расчёта её веса. Данные без witness учитываются с коэффициентом четыре, а каждый байт witness — с коэффициентом один. Максимальный вес блока составляет 4 000 000 единиц, поэтому блок может содержать больше операций, если значительная часть их данных относится к witness. SegWit также устранил основную форму сторонней изменяемости TXID для SegWit-входов и создал основу для более надёжной работы протоколов второго уровня, включая Lightning Network. Однако обновление не отменило рынок комиссий: скорость подтверждения по-прежнему зависит от ставки в sat/vB, текущей загрузки мемпула и решений майнеров.
Обновление затронуло не формат публичных ключей как таковых, а правила формирования выходов и входов транзакций, структуру witness-данных и способы кодирования адресов для новых типов назначения платежа.
Нативные SegWit-адреса версии 0 используют Bech32 и обычно начинаются с «bc1q». Bech32 не различает регистр при условии, что вся строка записана одинаково: адрес может быть целиком строчным или целиком прописным. Смешивать верхний и нижний регистр в одном адресе нельзя. Например, строчный вариант bc1qnnc… и полностью прописной вариант BC1QNNC… могут быть действительными представлениями, а смешанный вариант bc1Qnnc… должен отклоняться. На практике кошельки обычно выводят адреса строчными буквами.
Формат Bech32 упростил автоматическую проверку адресов и сделал их удобнее для QR-кодов и машинной обработки. К преимуществам нативных SegWit-адресов относятся:
- контрольная сумма, разработанная для надёжного выявления распространённых ошибок при вводе и копировании адресов;
- более эффективное использование веса блока, благодаря чему в блок может помещаться больше сопоставимых транзакций;
- меньший виртуальный размер при расходовании P2WPKH по сравнению с P2PKH, что при одинаковой ставке sat/vB обычно означает более низкую итоговую комиссию.
Исторически основным недостатком нативного SegWit была неполная поддержка адресов Bech32 старыми кошельками и сервисами. Сегодня поддержка значительно шире, но перед крупным переводом всё равно следует проверить, принимает ли конкретная платформа адреса «bc1q» или «bc1p». Для переходного периода использовался совместимый вариант SegWit, вложенный в P2SH.
Поддержка Legacy- и SegWit-адресов реализована в Trustee Wallet, а также в популярных решениях Trezor, Electrum и аппаратных кошельках Ledger. Доступные форматы и расположение настроек могут различаться в зависимости от версии приложения или прошивки.
Что такое Multisignature, P2SH и Compatible-адреса
Формат P2SH появился в сети Bitcoin в 2012 году не как прямое решение проблемы высоких комиссий, а для упрощения отправки средств на сложные условия расходования. Отправителю достаточно указать хеш скрипта фиксированной длины, а сам скрипт и необходимые данные раскрывает получатель при расходовании монет.
Разработчик Гэвин Андресен предложил обновление BIP16, которое перенесло ответственность за предоставление условий расходования со стороны отправителя на сторону получателя. Благодаря P2SH можно отправлять BTC на хеш программируемого Bitcoin Script, в том числе на сценарии мультиподписи. Такие сценарии функционально напоминают ограниченные смарт-контракты, но отличаются от модели смарт-контрактов Ethereum.
После внедрения P2SH в основной сети появились адреса, которые начинаются с цифры «3». Важно учитывать, что один и тот же префикс используется для разных скриптов: адрес «3…» может представлять мультиподпись, совместимый SegWit P2SH-P2WPKH или другой P2SH-сценарий.
Структура текстового представления P2SH похожа на Legacy: оба формата используют Base58Check, но имеют разные байты версии и кодируют разные хеши. В кошельках с мультиподписью часто применяется схема m-of-n, например 2-of-3: для расходования средств нужны любые две действительные подписи из трёх предусмотренных ключей. Нельзя говорить, что один адрес просто «имеет два или три приватных ключа» — количество участников и требуемых подписей задаётся условиями скрипта.
Не будем слишком глубоко погружаться в устройство Bitcoin Script, а рассмотрим, как P2SH взаимодействует с Legacy и SegWit.
Старые кошельки, созданные до распространения Bech32, могли не распознавать адреса «bc1». Для обратной совместимости SegWit можно было вложить в P2SH: получался формат P2SH-P2WPKH или P2SH-P2WSH, часто называемый Compatible SegWit или Nested SegWit. Старый кошелёк воспринимает адрес «3…» как обычный P2SH и может отправить на него BTC, а владелец расходует полученный выход с использованием witness. Такой вариант обычно эффективнее Legacy, но нативный SegWit Bech32, как правило, требует ещё меньше данных. При этом не каждый адрес «3…» является Compatible SegWit — определить точный сценарий можно только после раскрытия скрипта при расходовании.
Переход от Legacy к SegWit в Trustee Wallet
После внедрения SegWit в Trustee Wallet у некоторых пользователей возник вопрос: «Как так: я отправил часть средств в BTC, а кошелёк показал списание всего выбранного входа?». Такое отображение связано с моделью UTXO и созданием выхода сдачи, а не с потерей оставшейся части баланса.
Чтобы ответить на этот вопрос, необходимо немного подробнее рассмотреть механизм транзакций Bitcoin.
Bitcoin не хранит баланс как одно изменяемое число на счёте. Кошелёк управляет набором неизрасходованных выходов транзакций — UTXO. При отправке он выбирает один или несколько UTXO, полностью расходует их как входы и создаёт новые выходы: один или несколько — получателям, а при наличии остатка — выход сдачи на адрес, контролируемый тем же кошельком. Кошелёк не обязан использовать весь доступный баланс: алгоритм выбора монет подбирает только те UTXO, которые нужны для покрытия суммы платежа и комиссии.
При поддержке SegWit в Trustee Wallet могла применяться следующая особенность миграции: при расходовании UTXO, полученного на Legacy-адрес, выход сдачи создавался уже на SegWit-адрес, принадлежащий тому же кошельку. Это позволяет постепенно переводить собственные средства с P2PKH на более эффективный формат без отдельной транзакции между своими адресами. При этом слово «бесплатно» следует понимать условно: отдельная операция миграции не требуется, но обычная сетевая комиссия за исходную транзакцию всё равно уплачивается. Конкретное поведение выбора адреса сдачи зависит от версии и настроек кошелька.
Заключение
Технологии не стоят на месте, а протоколы и программное обеспечение в экосистеме криптовалют постоянно развиваются. Новые форматы адресов появляются для повышения эффективности, расширения возможностей скриптов, улучшения контроля ошибок и поддержки новых сценариев использования Bitcoin.
Выше мы рассмотрели основные типы адресов Bitcoin и объяснили различия между Legacy P2PKH, P2SH, Compatible SegWit и нативным SegWit Bech32. Команда Trustee Wallet поддерживает работу с распространёнными форматами адресов. Перед переводом BTC всегда проверяйте сеть, полный адрес получателя, поддержку выбранного формата и рассчитанную сетевую комиссию.
Частые вопросы о Legacy- и SegWit-адресах Bitcoin (FAQ)
Чем Legacy-адрес отличается от SegWit-адреса?
Legacy P2PKH начинается с «1» и использует классическую структуру транзакции. Нативный SegWit P2WPKH обычно начинается с «bc1q» и хранит подпись во witness-части. При сопоставимых условиях расходование SegWit-выхода имеет меньший виртуальный размер, поэтому при одинаковой ставке sat/vB комиссия обычно ниже.
Можно ли отправить BTC с Legacy-адреса на SegWit-адрес?
Да, разные стандартные форматы работают в одной сети Bitcoin. Перевод между Legacy, P2SH и SegWit возможен, если отправляющий кошелёк распознаёт формат адреса получателя. Старые сервисы могут не поддерживать «bc1», поэтому перед отправкой следует проверить совместимость и сначала выполнить тестовый перевод небольшой суммы.
Почему одни адреса Bitcoin начинаются с «1», другие — с «3» или «bc1»?
Префикс указывает на формат кодирования и тип условия расходования. «1» обычно означает Legacy P2PKH, «3» — P2SH, включая мультиподпись или вложенный SegWit, «bc1q» — нативный SegWit версии 0, а «bc1p» — Taproot версии 1. Адрес «3» нельзя автоматически считать SegWit или мультиподписным без анализа раскрытого скрипта.
SegWit всегда снижает комиссию на 50%?
Нет. Размер экономии зависит от количества и типов входов и выходов, используемого скрипта и структуры транзакции. SegWit предоставляет скидку на witness-данные и часто уменьшает виртуальный размер, но фиксированного процента экономии не существует. Итоговая комиссия рассчитывается как виртуальный размер, умноженный на выбранную ставку в sat/vB.
Какой адрес Bitcoin лучше использовать?
Для новых обычных переводов нативный SegWit «bc1q» обычно является удобным и экономичным вариантом при условии поддержки получателем и отправителем. Legacy стоит использовать, когда требуется совместимость со старым сервисом. P2SH может быть нужен для вложенного SegWit или специальных скриптов, а Taproot «bc1p» — для кошельков и сценариев, поддерживающих SegWit версии 1.
























































