1. Биткойн-фон
Биткойн использует модель транзакций, подобную наличным (наличную систему), а его метод оплаты основан на модели под названием UTXO, которая отличается от традиционной модели, основанной на балансе счета. Например: в процессе модели учета банковского счета, когда A переводит 100 юаней B, банк записывает три шага, которые представляют собой процесс транзакции. Первым шагом является списание 100 юаней со счета А. Идентификатор записи этого шага — tid1. Второй шаг — внести 100 юаней на счет B. Идентификатор записи этого шага — tid2. Третий шаг — записать запись о переводе, которая связывает tid1 и tid2, указывая, что счет A уменьшается на 100 юаней, а счет B увеличивается на 100 юаней. Таким образом, отношения передачи между A и B записываются, и их можно запрашивать и отслеживать в будущем. Теперь мы объясним способ оплаты биткойнов, представив UTXO и модель оплаты.
УТХО
В блокчейне Биткойна все балансы хранятся в списке под названием «Выход неизрасходованных транзакций» (UTXO). Каждый UTXO содержит определенное количество биткойнов, а также информацию о владельцах этих биткойнов и указывает, доступны ли они. Думайте об этом как о денежном чеке с именем владельца, и пока владелец подписывает его, права использования могут быть переданы кому-то другому. Для конкретного адреса сумма всех сумм UTXO представляет собой баланс кошелька адреса. Перебирая все UTXO, мы можем получить текущий баланс каждого адреса. Добавьте общее количество всех UTXO, чтобы получить все биткойны, находящиеся в настоящее время в обращении.
В структуре транзакции Биткойн каждая транзакция включает в себя несколько входов и выходов, где каждый вход является ссылкой на существующий UTXO, а каждый выход указывает новый адрес получения средств и соответствующую сумму. После инициации транзакции UTXO, на который ссылается ее входная часть, временно блокируется, чтобы предотвратить повторное использование до завершения транзакции. Только когда транзакция будет успешно упакована майнерами в блок и подтверждена сетью, соответствующий статус UTXO изменится. В частности, UTXO, используемые в качестве входных данных для транзакции, удаляются из списка UTXO, что указывает на то, что они были израсходованы, в то время как выходные данные транзакции генерируют новые UTXO и добавляются в список UTXO. Можно понимать, что после использования старого кассового чека он становится недействительным и генерируется новый кассовый чек, право собственности на который принадлежит новому держателю.
Стоит подчеркнуть, что каждый UTXO можно использовать в транзакции только один раз. Как только он используется в качестве входных данных, он навсегда удаляется из списка UTXO. В то же время вновь сгенерированный вывод добавляется в список как новый UTXO. Список UTXO постоянно меняется и по мере создания каждого нового блока соответственно обновляется. И, анализируя историю транзакций в блокчейне, мы можем восстановить состояние списка UTXO в любой момент времени.
Кроме того, общая сумма ввода транзакции обычно немного превышает общую сумму вывода. Эта разница, называемая комиссией за транзакцию или сетевой комиссией, предоставляется в качестве стимула для майнеров, ответственных за упаковку транзакций в блоки. Размер сетевой комиссии прямо пропорционален сложности транзакции, поэтому транзакция с большим количеством входов и выходов обычно требует более высокой сетевой комиссии.
Теперь, чтобы более наглядно понять структуру транзакций Биткойна, мы проведем углубленный анализ на конкретном примере. Структура транзакции Биткойн следующая: две переменные vin и vout представляют «вход» и «выход» транзакции Биткойн соответственно. Биткойн-транзакции не фиксируют изменения данных в форме счета, как в традиционной модели баланса счета, а представлены входами и выходами.
const std::vector<CTxIn> vin;const std::vector<CTxOut> vout;const int32_t nVersion;const uint32_t nLockTime;
Мы можем случайным образом выбрать запись транзакции на блокчейне для анализа.На рисунке ниже показана транзакция с хеш-идентификатором 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Он содержит один вход и два выхода.
Используя команды bitcoin-cli getrawtransaction и decoderawtransaction, мы можем просмотреть базовую структуру вышеуказанной транзакции:
{"версия": 1,"locktime": 0,"vin": [{"txid": "7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18","vout": 0,"scriptSig" : "3045022100884d14 0484ecc0d46 f1918b30928fa0e4ed99f16a0fb4fde0735e7ade8416ab9fe423cc5412336376789d172787ec3457eee41c04f4938de5cc17b4a10fa336a8d752adf","последовательность": 4294967295 }],"vout": [{"value": 0.01500000,"scriptPubKey": "OP_DUP OP_HASH160 ab68025513c3dbd2f7b92a94e0581f5d50f654e7 OP_EQUALVERIFY OP_CHECKSIG"},{"value": 0.08450000,"script PubKey": "OP_DUP OP_HASH160 7f9b1a7fb68d60c536c2fd8aeaa53a8f3cc025a8 OP_EQUALVERIFY OP_CHECKSIG",}]}
В сети Биткойн выходные данные транзакции содержат две важные части информации: адрес (хэш открытого ключа) и сумму (в биткойнах). Если выход транзакции не используется при входе других транзакций, то выход транзакции называется неизрасходованным выходом транзакции (UTXO). Тот, кто владеет приватным ключом, соответствующим публичному ключу в UTXO, имеет право использовать (то есть тратить) этот UTXO.
Давайте посмотрим на информацию в "vin" в приведенном выше коде. Она указывает, что UTXO, потраченный на эту транзакцию, поступает с 0-го выхода (выход транзакции может иметь несколько значений, индекс начинается с 0), мы можем найти сумма этого UTXO из исторических транзакций (например, 0,1), поэтому в этой транзакции пользователь потратил 0,1 BTC, и значение 0,1 не нужно писать явно в транзакции, а через поиск информации UTXO получается. «vout» этой транзакции имеет два выхода.Эти два выхода представляют собой два новых UTXO, соответствующих новому балансу и держателю, пока другая транзакция не использует их в качестве входных данных.
Модель оплаты
Чтобы лучше понять модель оплаты в сети Биткойн, мы используем пример, чтобы представить процесс оплаты, в котором A платит B сумму n биткойнов. На рисунке ниже показан процесс отправки пользователем A 3 биткойнов пользователю B.
Для пользователя А, прежде всего, необходимо определить набор всех принадлежащих ему UTXO, то есть всех биткойнов, которыми может управлять пользователь А;
A выбирает один или несколько UTXO из этого набора в качестве входных данных транзакции. Сумма сумм этих входных данных равна m (2+0,8+0,5=3,3 BTC), что больше суммы, подлежащей выплате n (3 BTC );
Пользователь А устанавливает два выхода для транзакции, один выход выплачивается на адрес Б, сумма равна n (3 BTC), а другой выход выплачивается на собственный адрес сдачи А, сумма составляет m-n-комиссию (3,3-3-0,001). = 0,299 БТЦ). Кошелек пользователя обычно состоит из нескольких адресов.Как правило, каждый адрес используется только один раз, а изменения по умолчанию возвращаются на новый адрес;
После того, как майнер упаковывает транзакцию и загружает ее в цепочку для подтверждения, B может получить информацию о транзакции. Поскольку размер блока имеет верхний предел (приблизительно 1 МБ), майнеры будут отдавать приоритет транзакциям с высокой скоростью транзакций (fee_rate=fee/size), чтобы получить максимальную комиссию. Мы можем видеть ситуацию с комиссией за транзакции майнинга в режиме реального времени в мемпуле. Если нам нужно максимально быстрое подтверждение во время процесса перевода, мы можем выбрать Высокий приоритет или настроить подходящую скорость транзакции;
2. Нумерация и отслеживание конгов
Общее количество биткойнов составляет 21 миллион, и каждый биткойн содержит 10^8 сатоши (сатоши, сат). Таким образом, всего в сети Биткойн имеется 21 миллион*10^8 сатоши. Протокол Ordinals различает эти сатоши и присваивает каждому сатоши уникальный номер. В этом разделе будет показано, как этот протокол уникально нумерует каждый сатоши и как он отслеживает учетную запись, которой он принадлежит. Кроме того, будет введена классификация редкости сатоши.
номер Сатоши
Согласно протоколу Ordinals, сатоши нумеруются в зависимости от порядка их добычи. На рисунке ниже показано представление 0-го сатоши, добытого в 0-м блоке.
Есть много способов выразить Сатоши:
Целочисленный символ: например, 2099994106992659, который представляет собой серийный номер, присвоенный сатоши в соответствии с порядком майнинга.
Десятичная запись: например, 3891094.16797, первое число указывает высоту блока, в котором были добыты сатоши, а второе число указывает количество сатоши в блоке.
Символ степени: например, 3°111094′214″16797‴, первое число — это период, нумерация начинается с 0, второе число — это индекс блока эпохи сокращения вдвое, а третье число — это индекс блока во время сложности. период корректировки, последняя цифра — индекс сата в блоке.
Символ процента: например, 99,99971949060254% указывает позицию сатоши в запасе биткойнов, выраженную в процентах.
Имя: Например Сатоши. Имя, которое кодирует порядковый номер с помощью символов от a до z.
Мы будем использовать пример, чтобы объяснить, как нумеровать вновь добытые биткойны. Глядя на блок 795952 блокчейна Биткойн, мы видим, что первая транзакция Tx 3a1f...b177 записывает вознаграждение майнера (транзакция Coinbase). Эта транзакция включает в себя недавно добытые биткойны, которые используются в качестве вознаграждения за упаковку для майнеров, а также комиссию за обработку, выплачиваемую майнерам инициатором транзакции. Посмотрев на входные данные на рисунке ниже, мы можем обнаружить, что его идентификатор UTXO состоит из строки нулей и высоты блока. Выходной адрес — это адрес кошелька майнера, а сумма — это сумма вышеуказанных вознаграждений и комиссий за обработку.
Если мы посмотрим дальше на вывод майнеров, мы увидим распределение адресов, сумм и содержащихся сатоши. Как упоминалось ранее, к ним относятся вознаграждения и комиссии за майнинг. Среди них зеленая информация о номере сатоши 1941220000000000–1941220625000000 — это новые сатоши, сгенерированные в результате вознаграждения за майнинг, а оставшиеся 712 записей сатоши соответствуют всем комиссиям за обработку в блоке.
Мы можем проверить номер субботы 1941220000000000. Номер его блока — 795952, а десятичная запись (десятичная) — 795952.0, что означает, что высота блока добычи этого сатоши равна 795952, количество сатоши в этом блоке равно 0, а последующая отметка редкости (редкости) — редкость. Подробно это будет объяснено в следующем разделе.
Тираж Конга
Поскольку каждый BTC генерируется за счет вознаграждений за майнинг, их все можно отследить. Биткойн-счета используют модель UTXO. Предположим, что пользователь А получает 100-110 сатоши посредством майнинга (10 сатоши хранятся целиком в одном UTXO с идентификатором adc123). Когда пользователь А хочет заплатить 5 сатоши пользователю Б, он решает использовать идентификатор abc123 в качестве входных данных транзакции, из которых 5 сатоши передаются пользователю Б, а 5 сатоши возвращаются пользователю А в качестве сдачи. Эти две копии 5 сатоши представляют собой единое целое и хранятся в двух UTXO с идентификаторами abc456 и abc789 соответственно. Приведенный выше идентификатор UTXO и количество сатоши показаны только в качестве примера. В реальных ситуациях минимальное количество отправленных сатоши ограничено 546, и идентификатор UTXO не выражается в этой форме.
В приведенной выше транзакции путь обращения 10 сатоши пользователя А следующий:
Майнинг производит 10 сатоши, пронумерованных [100, 110). Это означает, что сатоши со 100 по 109 хранятся в UTXO с идентификатором abc123, а его владельцем является пользователь А.
Когда А переводит деньги, 10 сатоши делятся на две части, по 5 сатоши в каждой. Здесь используется принцип «первым пришел — первым вышел», то есть порядок количества сатоши определяется в соответствии с их индексом в выводе транзакции. Предположим, что порядок вывода: сначала пользователь А, затем пользователь Б, затем серийный номер оставшихся 5 сатоши пользователя А равен [100, 105), сохраненный в UTXO с идентификатором abc456, а серийный номер 5 сатоши пользователя Б равен [105, 110), хранящиеся в UTXO с идентификатором abc789.
Редкость (Редкие Сатоши)
В результате протокола Ordinals редкость сатоши можно определить на основе порядка, в котором они добываются. В результате появятся особые сатоши разной редкости. Вот уровни редкости различных сатоши:
общий: любые сатоши, кроме первых сатоши в блоке (общее количество — 2100 триллионов).
необычно: первые сатоши в каждом блоке (общее количество 6 929 999)
редко: первые сатоши за каждый период корректировки сложности (всего 3437)
эпический: первые сатоши после каждого халвинга (всего 32 сатоши)
легендарный: первые сатоши каждый цикл (всего 5 штук)
мифический: первые сатоши в блоке генезиса (общее количество — 1)
Эта концепция редких сатоши может повысить интерес и ценность экосистемы Биткойн. Сатоши разной редкости могут иметь разную ценность на рынке, привлекая коллекционеров и инвесторов.
3. Метод надписи
Порядковые номера существенно отличаются от NFT в других цепочках, не связанных с биткойнами. Основное отличие состоит в том, что метаданные Ordinals не хранятся в определенном месте. Вместо этого эти метаданные встраиваются в данные-свидетели транзакции (данные-свидетели, поле свидетеля), поэтому мы называем это «надписью», поскольку эти данные «выгравированы» в Биткойн как надпись. данные привязаны к конкретному сатоши. Этот процесс записи реализуется с помощью Segregated Witness (SegWit) и Pay-to-Taproot (P2TR), который включает в себя два этапа: фиксацию и раскрытие, которые могут вписывать любую форму контента (например, текст, изображения или видео) в назначенное место. Сатоши. Ниже мы представим еще один, более прямой метод хранения OP_RETURN и объясним, почему он не используется в качестве средства записи. В то же время мы расскажем, что такое Segregated Witness и Pay-to-Taproot, и какую роль они играют в Inscription. Наконец, мы представим метод записи.
OP_RETURE
В клиенте Bitcoin Core версии 0.9 компромисс был наконец достигнут за счет принятия оператора RETURN. **RETURN позволяет разработчикам добавлять 80 байт данных о неплатеже к выводу транзакции. **В отличие от псевдоплатежей, RETURN создает явно проверяемые, неиспользуемые выходные данные, которые не нужно хранить в наборе UTXO. Выходы RETURN записываются в блокчейн. Они занимают дисковое пространство и увеличивают размер блокчейна. Однако они не сохраняются в наборе UTXO, поэтому не расширяют пул памяти UTXO и не увеличивают количество полных узлов. Дорогостоящая память.
Хотя OP_RETURN — это очень простой способ хранения информации в блокчейне Биткойна, он также является потенциальным методом записи. Но ограничения OP_RETURN создают некоторые проблемы при работе с хранилищем метаданных. Прежде всего, OP_RETURN может хранить только 80 байт данных.В ситуациях, когда необходимо хранить большие объемы данных, это ограничение явно неудовлетворительно. Во-вторых, данные OP_RETURN хранятся в выходной части транзакции.Хотя эти данные не хранятся в наборе UTXO, они занимают место хранения блокчейна, что приводит к увеличению размера блокчейна. Наконец, использование OP_RETURN приводит к более высоким комиссиям за транзакции, поскольку для публикации этих транзакций требуется платить больше.
Отдельный свидетель
Напротив, новый метод, предоставляемый SegWit, может решить вышеуказанные проблемы. SegWit — важное обновление протокола для Биткойн. Оно было предложено разработчиком ядра Биткойна Питером Вуйлем в 2015 году и наконец официально принято в версии 0.16.0 в 2017 году. Сегрегация в Segregated Witness означает разделение и изоляцию.Свидетель — это подпись, связанная с транзакцией. Таким образом, SegWit отделяет определенные данные подписи транзакции (данные-свидетели) от транзакции.
Основным преимуществом отделения подписей от данных, связанных с транзакциями, является уменьшение размера данных, хранящихся в блоке Биткойн. Это дает дополнительную емкость на блок для хранения большего количества транзакций, что также означает, что сеть может обрабатывать больше транзакций, а отправители платят меньшие комиссии. Технически говоря, это означает извлечение информации о сигнатуре скрипта (scriptSig) из базовой структуры (базового блока) и помещение ее в новую структуру данных. Узлы и майнеры, выполняющие работу по проверке, также проверят подпись сценария в этой новой структуре данных, чтобы убедиться, что транзакция действительна. Обновление Segwit представляет новое поле-свидетель в выходных данных транзакций для обеспечения конфиденциальности и производительности. Хотя данные-свидетели не предназначены для хранения данных, они фактически дают нам возможность хранить такие вещи, как метаданные надписей. Мы используем следующий рисунок, чтобы более наглядно понять концепцию изолированного свидетеля:
стержневой корень
P2TR — это тип вывода транзакций Биткойна, который был представлен в обновлении Taproot в 2021 году и позволяет более конфиденциально хранить различные условия транзакций в блокчейне. В надписи Ординалов P2TR играет жизненно важную роль. Inscription по сути встраивает определенный контент данных в транзакции Биткойн, а обновления Taproot, особенно P2TR, делают это встраивание данных более гибким и экономичным.
Во-первых, благодаря способу хранения скриптов Taproot мы можем хранить содержимое записей в сценариях расходования путей сценариев Taproot, которые практически не имеют ограничений на контент, а также получать скидки на данные-свидетели, что делает хранение контента записей относительно экономичным. Поскольку использование скриптов Taproot можно выполнить только из уже существующих выходных данных Taproot, Inscription использует двухэтапный процесс фиксации/раскрытия. Сначала в транзакции фиксации создается вывод Taproot, который обещает сценарий, содержащий содержимое надписи. Затем в транзакции раскрытия используются выходные данные, созданные транзакцией фиксации, тем самым раскрывая содержимое записи в цепочке.
Такой подход значительно снижает потребление ресурсов. Если P2TR не используется, информация-свидетель будет сохранена в выходных данных транзакции. Таким образом, пока этот вывод не используется, информация-свидетель всегда будет храниться в наборе UTXO. Напротив, если используется P2TR, информация-свидетель не появится в транзакции, сгенерированной на этапе фиксации, поэтому она не будет записана в набор UTXO. Только когда этот UTXO будет использован, информация-свидетель появится во входных данных транзакции на этапе раскрытия. P2TR позволяет записывать метаданные в блокчейн Биткойна, но никогда не появляется в наборе UTXO. Поскольку поддержание/изменение набора UTXO требует больше ресурсов, этот подход может сэкономить много ресурсов.
надпись
Протокол Ordinals использует преимущества SegWit для ослабления ограничения размера контента, записываемого в сеть Биткойн, сохраняя содержимое надписи в данных-свидетелях. Разрешение хранить до 4 МБ метаданных. Taproot упрощает хранение произвольных данных-свидетелей в транзакциях Биткойн, позволяя разработчику Ordinals Кейси Родармору перепрофилировать старые коды операций (OP_FALSE, OP_IF, OP_PUSH) в то, что он называет «конвертами» для того, что он называет «надписным» хранилищем произвольных данных.
Процесс литья надписей состоит из следующих двух этапов:
Во-первых, вам необходимо создать транзакцию фиксации на выходе Taproot скрипта, содержащего содержимое надписи. Формат хранения — Taproot, то есть выходные данные предыдущей транзакции — P2TR (Pay-To-Taproot), а входные данные следующей транзакции встраиваются в определенный формат в засвидетельствованный скрипт Taproot; во-первых, строка ord имеет вид помещается в стек, чтобы исключить двусмысленность того, что надпись имела другое применение. OP_PUSH 1 указывает, что следующая передача данных содержит тип контента, а OP_PUSH 0 указывает, что последующие отправки данных содержат сам контент. Для больших записей необходимо использовать несколько операций отправки данных, поскольку одним из немногих ограничений Taproot является то, что размер одной передачи данных не может превышать 520 байт. На данный момент данные записи сопоставлены с UTXO вывода транзакции, но не обнародованы.
Во-вторых, выходные данные, созданные транзакцией фиксации, должны быть использованы в транзакции раскрытия. На этом этапе транзакция инициируется с использованием UTXO, соответствующего этой записи, в качестве входных данных. В это время соответствующее содержание надписи было обнародовано всему Интернету.
С помощью двух вышеуказанных шагов содержимое записи было привязано к записанному UTXO. Согласно представленному выше позиционированию сатоши, запись выполняется на первый сатоши, соответствующий вводу UTXO, и содержимое надписи включается во ввод отображаемой транзакции. Согласно введению в обращение и отслеживанию сатоши, представленному выше, эти сатоши со специальным содержанием можно передавать, покупать, продавать, терять и возвращать. Следует отметить, что повторные надписи не допускаются, иначе последующие надписи будут недействительны.
Мы подробно объясним этот процесс на примере гравировки небольшого изображения BTC NFT. Этот процесс в основном включает в себя два этапа фиксации и раскрытия, упомянутые ранее. Во-первых, мы видим, что хэш-идентификатор первой транзакции — 2ddf9...f585c. Можно отметить, что выходные данные этой транзакции не содержат данных-свидетелей, и на веб-странице нет соответствующей информации о надписи.
Далее проверяем запись второго этапа, хеш-идентификатор которой — e7454...7c0e1. Здесь мы можем увидеть информацию Ординалической надписи, которая является содержанием записи показаний. Входной адрес этой транзакции является выходным адресом предыдущей транзакции, а выходные 0,00000546BTC (546 сатоши) предназначены для отправки этого NFT на ваш собственный адрес. При этом мы также можем найти сатоши, где находится эта надпись в Sat 1893640468329373.
В биткойн-кошельке мы видим этот актив. Если мы хотим торговать этим NFT, мы можем отправить его напрямую на адреса других людей, то есть отправить этот UTXO, завершив тем самым передачу надписи.
4. Биткойн-кошелек
После того, как мы поймем, что такое экология Ординалов, обращение сатоши и связанные с этим знания о надписях, в настоящее время существует множество сценариев применения, будь то появление BRC-20, ORC-20, BRC-721, GBRC-721 и другие связанные производные протоколы, которые требуют, чтобы у нас были соответствующие кошельки для поддержки и отображения информации о токенах или небольших изображений NFT. В этом разделе мы познакомим вас с концепциями и характеристиками различных адресов биткойн-кошельков.
Биткойн-адреса начинаются с 1, 3 или bc1. Как и адреса электронной почты, ими можно поделиться с другими пользователями Биткойн, которые смогут использовать их для отправки Биткойнов непосредственно в свои кошельки. С точки зрения безопасности адреса биткойнов не содержат ничего конфиденциального. Его можно разместить где угодно, не ставя под угрозу безопасность вашего аккаунта. В отличие от адресов электронной почты, новые адреса могут быть созданы в любое время по мере необходимости, и все они будут переводить средства непосредственно в ваш кошелек. Фактически, многие современные кошельки автоматически создают новый адрес для каждой транзакции, чтобы максимизировать конфиденциальность. Кошелек — это просто набор адресов и ключей, которые разблокируют находящиеся в нем средства. Сначала нам нужно знать, как генерируется адрес биткойн-кошелька.
Частные и открытые ключи Биткойна
Биткойн использует эллиптическую кривую Secp256k1. «Закрытый ключ» — это случайное число от 1 до n-1. n — большое число (256 бит). n выражается в научной записи следующим образом:
Этот диапазон чрезвычайно велик, и нам практически невозможно угадать приватные ключи других людей. Этот случайный целочисленный закрытый ключ может быть представлен 256 битами, и существует несколько методов кодирования. Если закрытый ключ в форме WIF или WIF-сжатой форме не зашифрован, исходное «случайное целое число» можно получить путем его декодирования. Другой способ - BIP38, который предлагает использовать алгоритм AES для шифрования закрытого ключа. Закрытый ключ, полученный этим методом, начинается с символа 6P. Этот тип закрытого ключа должен ввести пароль, прежде чем его можно будет импортировать в различные биткойн-кошельки. Это то, что мы обычно делаем: часто используемые приватные ключи.
Затем мы будем использовать формулу эллиптической кривой K = kG для генерации открытого ключа Биткойна K из закрытого ключа k. G — это базовая точка, которая является параметром secp256k1. Можно получить две координаты K, которые являются двумя выражениями открытого ключа, а именно «Несжатый формат» и «Сжатый формат».
В несжатой форме две координаты x и y напрямую соединяются вместе, а затем добавляется префикс 0x04 впереди;
Сжатая форма означает, что когда y — четное число, кодировка — 02 x, а когда y — нечетное число, кодировка — 03 x;
Биткойн-адрес
На рисунке ниже показаны различные типы биткойн-адресов.Существует четыре метода представления:
Ссылка: https://en.bitcoin.it/wiki/Invoice_address.
1. Устаревший формат (P2PKH)
Пример: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Адреса, начинающиеся с «1», являются исходным форматом адреса Биткойна и используются до сих пор. Он рассчитывается на основе открытого ключа через хеш, также известный как P2PKH, что является аббревиатурой Pay To PubKey Hash (платеж по хешу открытого ключа).
2. Формат вложенного SegWit (P2SH).
Пример: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Адрес начинается с «3», а P2SH — это аббревиатура Pay To Script Hash, которая поддерживает более сложные функции, чем устаревшие адреса. Вложенный P2SH принимает существующий адрес P2SH (начиная с «3») и инкапсулирует его с адресом SegWit.
3. Собственный формат SegWit (Bech32).
Пример: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
В BIP0173 предлагаются адреса, начинающиеся с bc1, которые являются собственными адресами SegWit. Адрес в кодировке Bech32 — это формат адреса, специально разработанный для SegWit. Bech32 был определен в BIP173 в конце 2017 года. Одной из основных особенностей этого формата является то, что он нечувствителен к регистру (адрес содержит только 0–9, a–z), поэтому он позволяет эффективно избежать путаницы при вводе и более удобочитаем. . Поскольку в адресе требуется меньше символов, в адресе используется кодировка Base32 вместо традиционной Base58, что делает вычисления более удобными и эффективными. Данные могут храниться более надежно в QR-кодах. Bech32 обеспечивает большую безопасность, лучше оптимизированный код обнаружения ошибок контрольной суммы и сводит к минимуму вероятность получения недействительных адресов.
Сами адреса Bech32 совместимы с SegWit. Для помещения адреса SegWit в адрес P2SH не требуется дополнительного места, поэтому при использовании адреса формата Bech32 плата за обработку будет ниже. Адреса Bech32 имеют несколько преимуществ по сравнению со старыми адресами Base58 (кодировка Base58Check используется для кодирования массивов байтов в Биткойне в строки, кодируемые человеком): QR-коды меньше, лучше защищены от ошибок, более безопасны, неразличимы верхний и нижний регистры, состоят только из строчных букв. , чтобы его было легче читать, печатать и понимать.
4. Формат Taproot (P2TR)
У Bech32 есть недостаток: если последним символом адреса является p, то вставка или удаление любого количества символов q непосредственно перед p не приведет к аннулированию его контрольной суммы.
Для смягчения вышеперечисленных недостатков Бех32 в BIP0350 был предложен адрес Бех32м:
Для собственных адресов SegWit версии 0 используйте предыдущий Bech32;
Для собственных адресов SegWit версии 1 (или выше) используется новый Bech32m.
Для адресов Bech32m, когда версия равна 1, они всегда начинаются с bc1p (т. е. адреса Taproot). В частности, как и собственный SegWit, кошелек может состоять из исходной фразы и парольной фразы. Они используются для генерации расширенных открытых и закрытых ключей, используемых для получения адресов для произвольных путей в иерархическом детерминированном кошельке. В основном там хранятся BRC-20 и BTC NFT и т. д.


