Автор: Эш Ли, Ноа Хо

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

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

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 представляют «вход» и «выход» транзакции Биткойн соответственно. Биткойн-транзакции не фиксируют изменения данных в форме счета, как в традиционной модели баланса счета, а представлены входами и выходами.

Источник: https://github.com/bitcoin/bitcoin/blob/v22.0/src/primitives/transaction.h#L270.

Мы можем случайным образом выбрать запись транзакции на блокчейне для анализа. На рисунке ниже показана транзакция с хэш-идентификатором 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Он содержит один вход и два выхода.

Используя команды getrawtransaction и decoderawtransaction биткойн-cli, мы можем просмотреть базовую структуру вышеуказанной транзакции:

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

Давайте посмотрим на информацию в «vin» в приведенном выше коде. Она указывает, что UTXO, потраченный на эту транзакцию, поступает с 0-го выхода (выход транзакции может иметь несколько значений, индекс начинается с 0), мы можем найти сумма этого UTXO из исторических транзакций (например, 0,1), поэтому в этой транзакции пользователь потратил 0,1 BTC, и значение 0,1 не нужно писать явно в транзакции, а через поиск информации UTXO получается. «vout» этой транзакции имеет два выхода. Эти два выхода представляют собой два новых UTXO, соответствующих новому балансу и держателю, пока другая транзакция не использует их в качестве входных данных.

Модель оплаты

Чтобы лучше понять модель оплаты в сети Биткойн, мы используем пример, чтобы представить процесс оплаты, в котором А платит Б сумму в n биткойнов. На рисунке ниже показан процесс отправки пользователем A 3 биткойнов пользователю B.

  1. Для пользователя А, прежде всего, необходимо определить набор всех принадлежащих ему UTXO, то есть всех биткойнов, которыми может управлять пользователь А;

  2. A выбирает один или несколько UTXO из этого набора в качестве входных данных транзакции. Сумма сумм этих входных данных равна m (2+0,8+0,5=3,3 BTC), что больше суммы, подлежащей выплате n (3 BTC). );

  3. Пользователь А устанавливает два выхода для транзакции, один выход выплачивается на адрес Б, сумма равна n (3 BTC), а другой выход выплачивается на собственный адрес сдачи А, сумма составляет m-n-комиссию (3,3-3-0,001). = 0,299 БТЦ). Кошелек пользователя обычно состоит из нескольких адресов. Как правило, каждый адрес используется только один раз, и по умолчанию изменения возвращаются на новый адрес;

  4. После того, как майнер упаковывает транзакцию и загружает ее в цепочку для подтверждения, B может получить информацию о транзакции. Поскольку размер блока имеет верхний предел (примерно 1 МБ), майнеры будут отдавать приоритет транзакциям с высокой скоростью транзакций (fee_rate=fee/size), чтобы получить максимальную комиссию. Мы можем видеть ситуацию с комиссией за транзакции майнинга в режиме реального времени в мемпуле. Если нам нужно максимально быстрое подтверждение во время процесса перевода, мы можем выбрать Высокий приоритет или настроить подходящую скорость транзакции.

2. Нумерация и отслеживание конгов

Общее количество биткойнов составляет 21 миллион, и каждый биткойн содержит 10^8 сатоши (сатоши, сат). Таким образом, всего в сети Биткойн имеется 21 миллион*10^8 сатоши. Протокол Ordinals различает эти сатоши и присваивает каждому сатоши уникальный номер. В этом разделе будет показано, как этот протокол уникально нумерует каждый сатоши и как он отслеживает учетную запись, которой он принадлежит. Кроме того, будет введена классификация редкости сатоши.

номер Сатоши

Согласно протоколу Ordinals, сатоши нумеруются в зависимости от порядка их добычи. На рисунке ниже показано представление 0-го сатоши, добытого в 0-м блоке.

Источник: https://ordinals.com/sat/0

Есть много способов выразить Сатоши:

  • Целочисленный символ: например, 2099994106992659, который представляет собой серийный номер, присвоенный сатоши в соответствии с порядком майнинга.

  • Десятичная запись: например, 3891094.16797, первое число указывает высоту блока, в котором были добыты сатоши, а второе число указывает количество сатоши в блоке.

  • Символ степени: например, 3°111094′214″16797‴. Этот метод еще не определен.

  • Символ процента: например, 99,99971949060254% указывает позицию сатоши в запасе биткойнов, выраженную в процентах.

  • Имя: Например Сатоши. Имя, которое кодирует порядковый номер с помощью символов от a до z.

Мы будем использовать пример, чтобы объяснить, как нумеровать вновь добытые биткойны. Глядя на блок 795952 блокчейна Биткойн, мы видим, что первая транзакция Tx 3a1f...b177 записывает вознаграждение майнера (транзакция Coinbase). Эта транзакция включает в себя недавно добытые биткойны, которые используются в качестве вознаграждения за упаковку для майнеров, а также комиссию за обработку, выплачиваемую майнерам инициатором транзакции. Посмотрев на входные данные на рисунке ниже, мы можем обнаружить, что его идентификатор UTXO состоит из строки нулей и высоты блока. Выходной адрес — это адрес кошелька майнера, а сумма — сумма вышеуказанных вознаграждений и комиссий за обработку.

Источник: https://ordinals.com/tx/3a1fdea5953faea184e0303774ea234533aa58979a4d9a4f1c0de0d9b2efb177.

Если мы посмотрим дальше на вывод майнеров, мы увидим распределение адресов, сумм и содержащихся сатоши. Как упоминалось ранее, к ним относятся вознаграждения и комиссии за майнинг. Среди них зеленая информация о номере сатоши 1941220000000000–1941220625000000 — это новые сатоши, сгенерированные в результате вознаграждения за майнинг, а оставшиеся 712 записей сатоши соответствуют всем комиссиям за обработку в блоке.

Источник: https://ordinals.com/output/3a1fdea5953faea184e0303774ea234533aa58979a4d9a4f1c0de0d9b2efb177:0

Мы можем проверить номер субботы 1941220000000000. Номер его блока — 795952, а десятичная запись (десятичная) — 795952.0, что означает, что высота блока добычи этого сатоши — 795952, количество сатоши в этом блоке — 0, а последующая отметка редкости (редкости) — редкость. Подробно это будет объяснено в следующем разделе.

Источник: https://ordinals.com/sat/1941220000000000

Тираж Конга

Поскольку каждый BTC генерируется за счет вознаграждений за майнинг, их все можно отследить. Биткойн-счета используют модель UTXO. Предположим, что пользователь А получает 100-110 сатоши посредством майнинга (10 сатоши хранятся целиком в одном UTXO с идентификатором adc123). Когда пользователь А хочет заплатить 5 сатоши пользователю Б, он решает использовать идентификатор abc123 в качестве входных данных транзакции, из которых 5 сатоши передаются пользователю Б, а 5 сатоши возвращаются пользователю А в качестве сдачи. Эти две копии 5 сатоши представляют собой единое целое и хранятся в двух UTXO с идентификаторами abc456 и abc789 соответственно. Приведенный выше идентификатор UTXO и количество сатоши показаны только в качестве примера. В реальных ситуациях минимальное количество отправленных сатоши ограничено 546, и идентификатор UTXO не выражается в этой форме.

В приведенной выше транзакции путь обращения 10 сатоши пользователя А следующий:

  1. Майнинг производит 10 сатоши, пронумерованных [100*, 110). *Это означает, что сатоши со 100 по 109 хранятся в UTXO с идентификатором abc123, а его владельцем является пользователь А.

  2. Когда А переводит деньги, 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 означает разделение и изоляцию. Witness — это подпись, связанная с транзакцией. Таким образом, SegWit отделяет определенные данные подписи транзакции (данные-свидетели) от транзакции.

Основным преимуществом отделения подписей от данных, связанных с транзакциями, является уменьшение размера данных, хранящихся в блоке Биткойн. Это дает дополнительную емкость на блок для хранения большего количества транзакций, что также означает, что сеть может обрабатывать больше транзакций, а отправители платят меньшие комиссии. Технически говоря, это означает извлечение информации о сигнатуре скрипта (scriptSig) из базовой структуры (базового блока) и помещение ее в новую структуру данных. Узлы и майнеры, выполняющие работу по проверке, также проверят подпись сценария в этой новой структуре данных, чтобы убедиться, что транзакция действительна. Обновление Segwit представляет новое поле-свидетель в выходных данных транзакций для обеспечения конфиденциальности и производительности. Хотя данные-свидетели не предназначены для хранения данных, они фактически дают нам возможность хранить такие вещи, как метаданные надписей. Мы используем следующий рисунок, чтобы более наглядно понять концепцию изолированного свидетеля:

Pre-SegWit — описание структуры транзакции (процент заполнения данных)
После SegWit – Описание структуры транзакции (процент заполнения данных)
Структура данных транзакции до и после 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) в то, что он называет «конвертами» для того, что он называет «надписным» хранилищем произвольных данных.

Процесс литья надписей состоит из следующих двух этапов:

  1. Во-первых, вам необходимо создать транзакцию фиксации на выходе Taproot скрипта, содержащего содержимое надписи. Формат хранения — Taproot, то есть выходные данные предыдущей транзакции — P2TR (Pay-To-Taproot), а входные данные следующей транзакции встраиваются в определенный формат в засвидетельствованный скрипт Taproot. Сначала строка ord равна; помещается в стек, чтобы исключить двусмысленность того, что надпись имела другое применение. OP_PUSH 1 указывает, что следующая передача данных содержит тип контента, а OP_PUSH 0 указывает, что последующие отправки данных содержат сам контент. Для больших записей необходимо использовать несколько операций отправки данных, поскольку одно из немногих ограничений Taproot заключается в том, что размер одной передачи данных не может превышать 520 байт. На данный момент данные записи сопоставлены с UTXO вывода транзакции, но не обнародованы.

    Текстовая надпись, содержащая строку «Hello, world, сериализуется, как указано выше!»
  2. Во-вторых, выходные данные, созданные транзакцией фиксации, должны быть использованы в транзакции раскрытия. На этом этапе транзакция инициируется с использованием UTXO, соответствующего этой записи, в качестве входных данных. В это время соответствующее содержание надписи было обнародовано всему Интернету.

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

Мы подробно объясним этот процесс на примере гравировки небольшого изображения BTC NFT. Этот процесс в основном включает в себя два этапа фиксации и раскрытия, упомянутые ранее. Во-первых, мы видим, что хэш-идентификатор первой транзакции — 2ddf9...f585c. Можно отметить, что выходные данные этой транзакции не содержат данных-свидетелей, и на веб-странице нет соответствующей информации о надписи.

Источник: https://www.blockchain.com/explorer/transactions/btc/2ddf90ddf7c929c8038888fc2b7591fb999c3ba3c3c7b49d54d01f8db4af585c

Далее проверяем запись второго этапа, хеш-идентификатор которой — e7454...7c0e1. Здесь мы можем увидеть информацию Ординалической надписи, которая является содержанием записи показаний. Входной адрес этой транзакции является выходным адресом предыдущей транзакции, а выходные 0,00000546BTC (546 сатоши) предназначены для отправки этого NFT на ваш собственный адрес. При этом мы также можем найти сатоши, где находится эта надпись в Sat 1893640468329373.

Источник: https://www.blockchain.com/explorer/transactions/btc/e7454db518ca3910d2f17f41c7b215d6cba00f29bd186ae77d4fcd7f0ba7c0e1
Источник: https://www.blockchain.com/explorer/transactions/btc/e7454db518ca3910d2f17f41c7b215d6cba00f29bd186ae77d4fcd7f0ba7c0e1

В биткойн-кошельке мы видим этот актив. Если мы хотим торговать этим NFT, мы можем отправить его напрямую на адреса других людей, то есть отправить этот UTXO, завершив тем самым передачу надписи.

4. Биткойн-кошелек

После того, как мы поймем, что такое экология Ординалов, обращение сатоши и связанные с этим знания о надписях, в настоящее время существует множество сценариев применения, будь то появление BRC-20, ORC-20, BRC-721, GBRC-721 и другие связанные производные протоколы, которые требуют, чтобы у нас были соответствующие кошельки для поддержки и отображения информации о токенах или небольших изображений NFT. В этом разделе мы познакомим вас с концепциями и характеристиками различных адресов биткойн-кошельков.

Биткойн-адреса начинаются с 1, 3 или bc1. Как и адреса электронной почты, ими можно поделиться с другими пользователями Биткойн, которые смогут использовать их для отправки Биткойнов непосредственно на свои кошельки. С точки зрения безопасности адреса биткойнов не содержат ничего конфиденциального. Его можно разместить где угодно, не ставя под угрозу безопасность вашего аккаунта. В отличие от адресов электронной почты, новые адреса могут быть созданы в любое время по мере необходимости, и все они будут переводить средства непосредственно в ваш кошелек. Фактически, многие современные кошельки автоматически создают новый адрес для каждой транзакции, чтобы максимизировать конфиденциальность. Кошелек — это просто набор адресов и ключей, которые разблокируют находящиеся в нем средства. Сначала нам нужно знать, как генерируется адрес биткойн-кошелька.

Частные и открытые ключи Биткойна

Биткойн использует эллиптическую кривую Secp256k1. «Закрытый ключ» представляет собой случайное число от 1 до n-1. n — это большое число (256 бит). n выражается в научной записи примерно как 1,15792*10^77. Этот диапазон чрезвычайно велик, и нам практически невозможно угадать приватные ключи других людей. Этот случайный целочисленный закрытый ключ может быть представлен 256 битами, и существует несколько методов кодирования. Если закрытый ключ в форме WIF или WIF-сжатой форме не зашифрован, исходное «случайное целое число» можно получить путем его декодирования. Другой способ — BIP38, который предлагает использовать алгоритм AES для шифрования закрытого ключа. Закрытый ключ, полученный этим методом, начинается с символа 6P. В этот тип закрытого ключа необходимо ввести пароль, прежде чем его можно будет импортировать в различные биткойн-кошельки. Это то, что мы обычно делаем.

Затем мы будем использовать формулу эллиптической кривой K = kG для генерации открытого ключа Биткойна 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 (платеж по хешу открытого ключа).

  1. Формат вложенного SegWit (P2SH)

Пример: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

Адрес начинается с «3», а P2SH — это аббревиатура Pay To Script Hash, которая поддерживает более сложные функции, чем устаревшие адреса. Вложенный P2SH принимает существующий адрес P2SH (начиная с «3») и инкапсулирует его с адресом SegWit.

  1. Собственный формат SegWit (Bech32)

Пример: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

В BIP0173 предлагаются адреса, начинающиеся с bc1, которые являются собственными адресами SegWit. Адрес в кодировке Bech32 — это формат адреса, специально разработанный для SegWit. Bech32 был определен в BIP173 в конце 2017 года. Одной из основных особенностей этого формата является то, что он не чувствителен к регистру (адрес содержит только 0–9, az), поэтому он позволяет эффективно избежать путаницы при вводе и более удобочитаем. . Поскольку в адресе требуется меньше символов, в адресе используется кодировка Base32 вместо традиционной Base58, что делает вычисления более удобными и эффективными. Данные могут храниться более надежно в QR-кодах. Bech32 обеспечивает большую безопасность, улучшенный оптимизированный код обнаружения ошибок контрольной суммы и сводит к минимуму вероятность получения недействительных адресов.

Сами адреса Bech32 совместимы с SegWit. Для помещения адреса SegWit в адрес P2SH не требуется дополнительного места, поэтому при использовании адреса формата Bech32 плата за обработку будет ниже. Адреса Bech32 имеют несколько преимуществ по сравнению с более старыми адресами Base58 (кодировка Base58Check используется для кодирования массивов байтов в биткойнах в строки, кодируемые человеком): QR-коды меньше; более устойчивы к ошибкам; более безопасны; неразличимые прописные и строчные буквы состоят только из строчных букв; , чтобы его было легче читать, печатать и понимать.

  1. Формат стержневого корня (P2TR)

У Bech32 есть недостаток: если последним символом адреса является p, то вставка или удаление любого количества символов q непосредственно перед p не приведет к аннулированию его контрольной суммы.

С целью смягчения вышеперечисленных недостатков Бех32 в BIP0350 был предложен адрес Бех32м:

  • Для собственных адресов SegWit версии 0 используйте предыдущий Bech32;

  • Для собственных адресов SegWit версии 1 (или выше) используется новый Bech32m.

Для адресов Bech32m, когда версия равна 1, они всегда начинаются с bc1p (т. е. адреса Taproot). В частности, как и собственный SegWit, кошелек может состоять из исходной фразы и парольной фразы. Они используются для генерации расширенных открытых и закрытых ключей, используемых для получения адресов для произвольных путей в иерархическом детерминированном кошельке. В основном там хранятся BRC-20 и BTC NFT и т. д.

5. О нас

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

Китайское сообщество BTC NFT — это китайская площадка обмена BTC NFT, созданная для новых китайцев по всему миру.