Изучите принципы протокола Ordinals и надписи Bitcoin в одной статье

Продвинутый1/1/2024, 4:54:08 AM
Эта статья объясняет технические детали протокола Ординалс и эволюцию деталей адреса BTC.

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

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

I. Фоновая информация о Биткойне

Биткойн использует модель транзакций, похожую на наличные (система наличности), и его метод оплаты основан на модели, называемой UTXO, которая отличается от традиционной модели на основе балансов счетов. Например, в процессе ведения бухгалтерии банковского счета, когда A переводит 100 юаней B, банк регистрирует три шага. Эти три шага формируют процесс транзакции. Первый шаг - вычет 100 юаней со счета A. Идентификатор записи для этого шага - tid1. Второй шаг - зачисление 100 юаней на счет B. Идентификатор записи для этого шага - tid2. Третий шаг - регистрация записи о переводе. Эта запись связывает tid1 и tid2, указывая на вычет 100 юаней со счета A и зачисление 100 юаней на счет B. Таким образом, отношение перевода между A и B регистрируется и может быть запрошено и отслежено в будущем. Сейчас мы расскажем об методах оплаты в Bitcoin через введение в UTXO и модели оплаты.

UTXO

В блокчейне Bitcoin все балансы хранятся в списке, называемом «Unspent Transaction Output (UTXO)» (непотраченные выходные транзакции). Каждый UTXO содержит определенное количество биткойнов, а также информацию об их владельцах и указывает, доступны они или нет. Думайте о нем как о чеке наличными с именем держателя. Пока держатель его подписывает, вы можете передать право на его использование другому человеку. Для конкретного адреса все суммы его UTXO добавляются к балансу кошелька этого адреса. Проходя через все UTXO, мы можем получить текущий баланс для каждого адреса. Сумма всех сумм UTXO является общим количеством биткойнов, находящихся в обращении в настоящее время.

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

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

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

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

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

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

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

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

  1. Для пользователя A сначала необходимо определить все наборы UTXO, которыми он владеет, то есть все биткойны, которыми пользователь A может управлять;
  2. A выбирает один или несколько UTXO из этого набора в качестве входных данных для транзакции. Сумма сумм этих входов составляет m (2+0.8+0.5 = 3.3 BTC), что больше, чем сумма, которую нужно заплатить n (3 BTC);
  3. Пользователь A устанавливает два выхода для транзакции. Один выход оплачивается по адресу B, сумма n (3 BTC), а другой выход оплачивается по собственному адресу A. Сумма составляет м-сбор (3.3-3-0.001 = 0.299 BTC). В кошельке пользователя обычно есть несколько адресов. Обычно каждый адрес используется только один раз, и по умолчанию ноль возвращается на новый адрес;
  4. После того, как майнер упакует эту транзакцию в цепочку и подтвердит ее, B может получить информацию о транзакции. Поскольку существует верхний предел размера блока (около 1 МБ), майнеры отдают приоритет подтверждению транзакций с высокой скоростью транзакции (fee_rate=fee/size), чтобы получить наивысший возврат комиссии. Мы можем увидеть ситуацию с комиссией за майнинг транзакций в реальном времени в mempool. Если мы хотим получить самое быстрое подтверждение в процессе передачи, мы можем выбрать Высокий Приоритет (High Priority) или Пользовательский (custom) подходящую тарифную ставку.

II. Нумерация и отслеживание Сатоши

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

Число Сатоши

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

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

  1. Целочисленные символы: Например, 2099994106992659, указывают порядковый номер, присвоенный Сатоши в соответствии с порядком майнинга.
  2. Десятичные символы: Например, 3891094.16797. Первое число указывает на высоту блока, в котором был добыт Сатоши, а второе число указывает на количество Сатоши в блоке.
  3. Символы градуса: Например, 3°111094′214″16797. Первое число - это период, пронумерованный с нуля, второе число - индекс блока для уполовиненной эры, третье число - индекс блока во время периода корректировки сложности, и последнее число - индекс SAT в блоке.
  4. Символы процента: Например, 99,99971949060254%, указывают позицию Сатоши в запасах биткойна, выраженную в процентах.
  5. Имя: Сатоши, например. Имена, которые используют символы от a до z для кодирования последовательных чисел.

Мы воспользуемся примером, чтобы объяснить, как нумеруются недавно добытые биткойны. Просматривая 795952-й блок блокчейна биткойна, мы видим, что первая транзакция Tx 3a1f... b177 записала вознаграждение майнера (транзакция Coinbase). Транзакция включает в себя недавно добытые биткойны, которые являются упакованными вознаграждениями для майнеров, а также комиссии за обработку, выплаченные майнерам инициатором транзакции. Рассмотрев входные данные на изображении ниже, мы видим, что его идентификатор UTxO состоит из строки нулей и высоты блока. Адрес вывода - это адрес кошелька майнера, а сумма - это сумма вышеперечисленных вознаграждений и комиссий.

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

Мы можем проверить число Sat 1941220000000000. Его номер блока - 795952, и символ десятичной точки (десятичный) - 795952.0, что означает, что высота блока для добычи этого Сатоши составляет 795952, число в этом блоке - 0, а редкость (редкость), которая следует за ним, отмечена как необычная, о чем мы подробно расскажем в последующих разделах.

Умное движение

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

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

  1. Майнинг генерирует 10 Сатоши, число [100*, 110). *Это означает, что 100-109-й Сатоши хранятся в UTXO с идентификатором ABC123, а их владелец - Пользователь A.
  2. Когда A переводит деньги, 10 Сатоши разделяются на 2 части, по 5 Сатоши в каждой. Здесь используется принцип "первым вошел, первым вышел", то есть ранжирование чисел Сатоши определяется их индексом в выходной транзакции. Предположим, что порядок выхода сначала для пользователя A, затем для пользователя B, затем оставшиеся 5 чисел Сатоши для пользователя A - [100, 105), хранятся в UTXO с ID ABC456, в то время как последовательные номера 5 Сатоши для пользователя B - [105, 110), хранятся в UTXO с ID ABC789.

Редкость (Редкий Сатоши)

Как производное Протокола Ординалов, редкость Сатоши может быть определена на основе порядка их добычи. Это приведет к тому, что у некоторых особых Сатоши будут различные уровни редкости. Вот какая редкость у различных типов добычи:

  1. Обычный нормальный уровень: Любой Сатоши, кроме первого Сатоши в блоке (общее предложение составляет 2,100 триллионов долларов)
  2. Необычный отличный уровень: первый Сатоши в каждом блоке (общее предложение составляет 6929999)
  3. Уровень редкости: первый Сатоши в каждом периоде корректировки сложности (общее количество составляет 3437)
  4. Эпический уровень: первый Сатоши после каждого уменьшения наполовину (общее предложение составляет 32)
  5. ЛЕГЕНДАРНЫЙ ЛЕГЕНДАРНЫЙ ЛЕГЕНДАРНЫЙ: Первый Сатоши каждого цикла (общее количество составляет 5)
  6. Мифический Мифический Уровень: Первый Сатоши в блоке Genesis (общее количество составляет 1)

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

3. Метод надписи

Ординалы значительно отличаются от других не-Bitcoin on-chain NFT. Среди них основное отличие заключается в том, что метаданные Ординалов не хранятся в определенном месте. Вместо этого эти метаданные внедрены в данные свидетельства транзакции (поле свидетельства), поэтому мы называем это “надпись (inscription)”, потому что эти данные “выгравированы” как надпись на определенной части транзакции Bitcoin, и эти данные присоединены к определенному Сатоши. Этот процесс надписи достигается через разделяемые свидетели (SegWit) и “оплата-тапрут (P2TR)” (оплата-тапрут (P2TR)). Он включает два этапа представления (commit) и раскрытия (reveal), и может выгравировать любую форму контента (такую как текст, изображение или видео) на назначенную умную доску. Мы представим еще один более прямой способ хранения OP_RETURN ниже и объясним, почему он не использовался в качестве средства надписи. В то же время мы представим, что такое разделяемые свидетели и оплата-тапрут, и какую роль они играют в надписи. В конце мы расскажем, как делаются надписи.

OP_RETURE

В версии 0.9 клиента Bitcoin Core наконец было достигнуто компромиссное решение с использованием оператора RETURN. **RETURN позволяет разработчикам добавлять 80 байт неплатежных данных в выходную транзакцию. **В отличие от фальшивых платежей, RETURN создает однозначный проверяемый непотребляемый выход; такие данные не нужно хранить в наборе UTXO. Выходы RETURN записываются в блокчейн. Они потребляют дисковое пространство и также приводят к увеличению размера блокчейна, но поскольку они не хранятся в концентрации UTXO, они не расширяют пул памяти UTXO, не говоря уже о увеличении дорогой памяти всего узла.

Хотя OP_RETURN является очень прямым способом хранения информации в блокчейне Bitcoin, он также представляет собой потенциальный метод надписи. Однако ограничения OP_RETURN приводят к некоторым сложностям при работе с хранением метаданных. Во-первых, OP_RETURN может хранить только 80 байт данных, и в ситуациях, где требуется хранить большие объемы данных, это ограничение явно невозможно соблюсти. Во-вторых, данные OP_RETURN хранятся в разделе вывода транзакции. Хотя эти данные не хранятся централизованно в UTXO, они занимают место в блокчейне, что приводит к увеличению его размера. Наконец, использование OP_RETURN приводит к повышению комиссий за транзакции, поскольку для их размещения требуется больше оплаты.

Свидетель карантина

В отличие от этого, SegWit предоставляет новый подход, который может преодолеть эти проблемы. SegWit - это важное обновление протокола для Биткойна. Он был предложен разработчиком ядра Биткойна Питером Вулле в 2015 году и наконец официально принят в версии 0.16.0 в 2017 году. Разделенность в отдельном свидетельстве означает разделение или изоляцию, а свидетель - это подпись, связанная с транзакцией. Поэтому SegWit отделяет определенные данные транзакции (данные свидетелей) от транзакций.

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

Taproot

P2TR - это тип выхода транзакции для биткойна. Он был представлен в обновлении Taproot в 2021 году. Это позволяет хранить различные условия транзакции более конфиденциально на блокчейне. В надписи Ordinals P2TR играет критическую роль. Суть надписи заключается в том, что она встраивает определенное содержимое данных в транзакции биткойна, и обновления Taproot, в частности P2TR, сделали эти встроенные данные более гибкими и экономичными.

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

Этот подход значительно сократил потребление ресурсов. Если не используется P2TR, информация свидетеля хранится в выходе транзакции. Таким образом, пока этот выход не будет потрачен, информация свидетеля всегда будет храниться в пуле UTXO. Напротив, если используется P2TR, информация свидетеля не появится в транзакциях, сгенерированных во время фазы подачи, поэтому она не будет записана в набор UTXO. Только когда этот UTXO будет потрачен, информация свидетеля появится во входе транзакции во время фазы раскрытия. P2TR позволяет записывать метаданные в блокчейн Bitcoin, но они никогда не появляются в 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 заключается в том, что единичный data push не может быть больше 520 байт. На этом этапе данные надписи были применены к выходу UTXO транзакции, но не были раскрыты.

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

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

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

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

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

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

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

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

Приватные и публичные ключи Биткойн

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

Затем мы будем использовать формулу эллиптической кривой K = kG для генерации открытого ключа Bitcoin K из закрытого ключа k. G - это базовая точка, которая является параметром secp256k1. Вы можете получить две координаты K, которые представляют собой два выражения открытого ключа, "Несжатый формат" и "Сжатый формат", соответственно.

  1. Несжатая форма заключается в прямом соединении двух координат x и y, а затем добавлении префикса 0x04 спереди;
  2. Сжатая форма - когда y является четным числом, код - 02 x, а когда y - нечетное число, код - 03 x;

Адрес Биткойн

Различные типы адресов Bitcoin можно увидеть на следующей фигуре. Их можно выразить четырьмя способами:

1. Формат наследия (P2PKH)

Пример: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Адреса, начинающиеся с "1", представляют собой оригинальный формат адресов Bitcoin и по сей день используются. Полученные из открытого ключа путем вычисления хэша, также известные как P2PKH, являются сокращением от Pay To PubKey Hash (оплата на хэш открытого ключа).

2. Вложенный формат SegWit (P2SH)

Пример: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

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

3.Нативный формат SegWit (Bech32)

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

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

4. Формат Taproot (P2TR)

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

Для устранения вышеуказанных недостатков Bech32 был предложен адрес Bech32M в BIP0350:

  1. Для местных отделенных свидетельств с версией 0 используйте предыдущий Bech32;
  2. Для местных адресов свидетелей карантина с версией 1 (или выше) используйте новый Bech32M.

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

5. О нас

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

BTC NFT Китайское сообщество - это платформа обмена BTC NFT для китайских новичков со всего мира.

Отказ от ответственности:

  1. Эта статья взята из [надписьЛаборатория спектра]. Все авторские права принадлежат оригинальному автору [Аш Ли, Ноа Хо]. Если есть возражения против этого перепечатывания, пожалуйста, свяжитесь с Gate Learnкоманда, и они незамедлительно разберутся с этим.
  2. Ответственность за отказ: Взгляды и мнения, выраженные в этой статье, являются исключительно мнениями автора и не являются инвестиционными советами.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.

Изучите принципы протокола Ordinals и надписи Bitcoin в одной статье

Продвинутый1/1/2024, 4:54:08 AM
Эта статья объясняет технические детали протокола Ординалс и эволюцию деталей адреса BTC.

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

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

I. Фоновая информация о Биткойне

Биткойн использует модель транзакций, похожую на наличные (система наличности), и его метод оплаты основан на модели, называемой UTXO, которая отличается от традиционной модели на основе балансов счетов. Например, в процессе ведения бухгалтерии банковского счета, когда A переводит 100 юаней B, банк регистрирует три шага. Эти три шага формируют процесс транзакции. Первый шаг - вычет 100 юаней со счета A. Идентификатор записи для этого шага - tid1. Второй шаг - зачисление 100 юаней на счет B. Идентификатор записи для этого шага - tid2. Третий шаг - регистрация записи о переводе. Эта запись связывает tid1 и tid2, указывая на вычет 100 юаней со счета A и зачисление 100 юаней на счет B. Таким образом, отношение перевода между A и B регистрируется и может быть запрошено и отслежено в будущем. Сейчас мы расскажем об методах оплаты в Bitcoin через введение в UTXO и модели оплаты.

UTXO

В блокчейне Bitcoin все балансы хранятся в списке, называемом «Unspent Transaction Output (UTXO)» (непотраченные выходные транзакции). Каждый UTXO содержит определенное количество биткойнов, а также информацию об их владельцах и указывает, доступны они или нет. Думайте о нем как о чеке наличными с именем держателя. Пока держатель его подписывает, вы можете передать право на его использование другому человеку. Для конкретного адреса все суммы его UTXO добавляются к балансу кошелька этого адреса. Проходя через все UTXO, мы можем получить текущий баланс для каждого адреса. Сумма всех сумм UTXO является общим количеством биткойнов, находящихся в обращении в настоящее время.

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

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

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

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

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

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

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

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

  1. Для пользователя A сначала необходимо определить все наборы UTXO, которыми он владеет, то есть все биткойны, которыми пользователь A может управлять;
  2. A выбирает один или несколько UTXO из этого набора в качестве входных данных для транзакции. Сумма сумм этих входов составляет m (2+0.8+0.5 = 3.3 BTC), что больше, чем сумма, которую нужно заплатить n (3 BTC);
  3. Пользователь A устанавливает два выхода для транзакции. Один выход оплачивается по адресу B, сумма n (3 BTC), а другой выход оплачивается по собственному адресу A. Сумма составляет м-сбор (3.3-3-0.001 = 0.299 BTC). В кошельке пользователя обычно есть несколько адресов. Обычно каждый адрес используется только один раз, и по умолчанию ноль возвращается на новый адрес;
  4. После того, как майнер упакует эту транзакцию в цепочку и подтвердит ее, B может получить информацию о транзакции. Поскольку существует верхний предел размера блока (около 1 МБ), майнеры отдают приоритет подтверждению транзакций с высокой скоростью транзакции (fee_rate=fee/size), чтобы получить наивысший возврат комиссии. Мы можем увидеть ситуацию с комиссией за майнинг транзакций в реальном времени в mempool. Если мы хотим получить самое быстрое подтверждение в процессе передачи, мы можем выбрать Высокий Приоритет (High Priority) или Пользовательский (custom) подходящую тарифную ставку.

II. Нумерация и отслеживание Сатоши

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

Число Сатоши

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

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

  1. Целочисленные символы: Например, 2099994106992659, указывают порядковый номер, присвоенный Сатоши в соответствии с порядком майнинга.
  2. Десятичные символы: Например, 3891094.16797. Первое число указывает на высоту блока, в котором был добыт Сатоши, а второе число указывает на количество Сатоши в блоке.
  3. Символы градуса: Например, 3°111094′214″16797. Первое число - это период, пронумерованный с нуля, второе число - индекс блока для уполовиненной эры, третье число - индекс блока во время периода корректировки сложности, и последнее число - индекс SAT в блоке.
  4. Символы процента: Например, 99,99971949060254%, указывают позицию Сатоши в запасах биткойна, выраженную в процентах.
  5. Имя: Сатоши, например. Имена, которые используют символы от a до z для кодирования последовательных чисел.

Мы воспользуемся примером, чтобы объяснить, как нумеруются недавно добытые биткойны. Просматривая 795952-й блок блокчейна биткойна, мы видим, что первая транзакция Tx 3a1f... b177 записала вознаграждение майнера (транзакция Coinbase). Транзакция включает в себя недавно добытые биткойны, которые являются упакованными вознаграждениями для майнеров, а также комиссии за обработку, выплаченные майнерам инициатором транзакции. Рассмотрев входные данные на изображении ниже, мы видим, что его идентификатор UTxO состоит из строки нулей и высоты блока. Адрес вывода - это адрес кошелька майнера, а сумма - это сумма вышеперечисленных вознаграждений и комиссий.

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

Мы можем проверить число Sat 1941220000000000. Его номер блока - 795952, и символ десятичной точки (десятичный) - 795952.0, что означает, что высота блока для добычи этого Сатоши составляет 795952, число в этом блоке - 0, а редкость (редкость), которая следует за ним, отмечена как необычная, о чем мы подробно расскажем в последующих разделах.

Умное движение

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

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

  1. Майнинг генерирует 10 Сатоши, число [100*, 110). *Это означает, что 100-109-й Сатоши хранятся в UTXO с идентификатором ABC123, а их владелец - Пользователь A.
  2. Когда A переводит деньги, 10 Сатоши разделяются на 2 части, по 5 Сатоши в каждой. Здесь используется принцип "первым вошел, первым вышел", то есть ранжирование чисел Сатоши определяется их индексом в выходной транзакции. Предположим, что порядок выхода сначала для пользователя A, затем для пользователя B, затем оставшиеся 5 чисел Сатоши для пользователя A - [100, 105), хранятся в UTXO с ID ABC456, в то время как последовательные номера 5 Сатоши для пользователя B - [105, 110), хранятся в UTXO с ID ABC789.

Редкость (Редкий Сатоши)

Как производное Протокола Ординалов, редкость Сатоши может быть определена на основе порядка их добычи. Это приведет к тому, что у некоторых особых Сатоши будут различные уровни редкости. Вот какая редкость у различных типов добычи:

  1. Обычный нормальный уровень: Любой Сатоши, кроме первого Сатоши в блоке (общее предложение составляет 2,100 триллионов долларов)
  2. Необычный отличный уровень: первый Сатоши в каждом блоке (общее предложение составляет 6929999)
  3. Уровень редкости: первый Сатоши в каждом периоде корректировки сложности (общее количество составляет 3437)
  4. Эпический уровень: первый Сатоши после каждого уменьшения наполовину (общее предложение составляет 32)
  5. ЛЕГЕНДАРНЫЙ ЛЕГЕНДАРНЫЙ ЛЕГЕНДАРНЫЙ: Первый Сатоши каждого цикла (общее количество составляет 5)
  6. Мифический Мифический Уровень: Первый Сатоши в блоке Genesis (общее количество составляет 1)

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

3. Метод надписи

Ординалы значительно отличаются от других не-Bitcoin on-chain NFT. Среди них основное отличие заключается в том, что метаданные Ординалов не хранятся в определенном месте. Вместо этого эти метаданные внедрены в данные свидетельства транзакции (поле свидетельства), поэтому мы называем это “надпись (inscription)”, потому что эти данные “выгравированы” как надпись на определенной части транзакции Bitcoin, и эти данные присоединены к определенному Сатоши. Этот процесс надписи достигается через разделяемые свидетели (SegWit) и “оплата-тапрут (P2TR)” (оплата-тапрут (P2TR)). Он включает два этапа представления (commit) и раскрытия (reveal), и может выгравировать любую форму контента (такую как текст, изображение или видео) на назначенную умную доску. Мы представим еще один более прямой способ хранения OP_RETURN ниже и объясним, почему он не использовался в качестве средства надписи. В то же время мы представим, что такое разделяемые свидетели и оплата-тапрут, и какую роль они играют в надписи. В конце мы расскажем, как делаются надписи.

OP_RETURE

В версии 0.9 клиента Bitcoin Core наконец было достигнуто компромиссное решение с использованием оператора RETURN. **RETURN позволяет разработчикам добавлять 80 байт неплатежных данных в выходную транзакцию. **В отличие от фальшивых платежей, RETURN создает однозначный проверяемый непотребляемый выход; такие данные не нужно хранить в наборе UTXO. Выходы RETURN записываются в блокчейн. Они потребляют дисковое пространство и также приводят к увеличению размера блокчейна, но поскольку они не хранятся в концентрации UTXO, они не расширяют пул памяти UTXO, не говоря уже о увеличении дорогой памяти всего узла.

Хотя OP_RETURN является очень прямым способом хранения информации в блокчейне Bitcoin, он также представляет собой потенциальный метод надписи. Однако ограничения OP_RETURN приводят к некоторым сложностям при работе с хранением метаданных. Во-первых, OP_RETURN может хранить только 80 байт данных, и в ситуациях, где требуется хранить большие объемы данных, это ограничение явно невозможно соблюсти. Во-вторых, данные OP_RETURN хранятся в разделе вывода транзакции. Хотя эти данные не хранятся централизованно в UTXO, они занимают место в блокчейне, что приводит к увеличению его размера. Наконец, использование OP_RETURN приводит к повышению комиссий за транзакции, поскольку для их размещения требуется больше оплаты.

Свидетель карантина

В отличие от этого, SegWit предоставляет новый подход, который может преодолеть эти проблемы. SegWit - это важное обновление протокола для Биткойна. Он был предложен разработчиком ядра Биткойна Питером Вулле в 2015 году и наконец официально принят в версии 0.16.0 в 2017 году. Разделенность в отдельном свидетельстве означает разделение или изоляцию, а свидетель - это подпись, связанная с транзакцией. Поэтому SegWit отделяет определенные данные транзакции (данные свидетелей) от транзакций.

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

Taproot

P2TR - это тип выхода транзакции для биткойна. Он был представлен в обновлении Taproot в 2021 году. Это позволяет хранить различные условия транзакции более конфиденциально на блокчейне. В надписи Ordinals P2TR играет критическую роль. Суть надписи заключается в том, что она встраивает определенное содержимое данных в транзакции биткойна, и обновления Taproot, в частности P2TR, сделали эти встроенные данные более гибкими и экономичными.

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

Этот подход значительно сократил потребление ресурсов. Если не используется P2TR, информация свидетеля хранится в выходе транзакции. Таким образом, пока этот выход не будет потрачен, информация свидетеля всегда будет храниться в пуле UTXO. Напротив, если используется P2TR, информация свидетеля не появится в транзакциях, сгенерированных во время фазы подачи, поэтому она не будет записана в набор UTXO. Только когда этот UTXO будет потрачен, информация свидетеля появится во входе транзакции во время фазы раскрытия. P2TR позволяет записывать метаданные в блокчейн Bitcoin, но они никогда не появляются в 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 заключается в том, что единичный data push не может быть больше 520 байт. На этом этапе данные надписи были применены к выходу UTXO транзакции, но не были раскрыты.

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

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

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

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

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

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

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

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

Приватные и публичные ключи Биткойн

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

Затем мы будем использовать формулу эллиптической кривой K = kG для генерации открытого ключа Bitcoin K из закрытого ключа k. G - это базовая точка, которая является параметром secp256k1. Вы можете получить две координаты K, которые представляют собой два выражения открытого ключа, "Несжатый формат" и "Сжатый формат", соответственно.

  1. Несжатая форма заключается в прямом соединении двух координат x и y, а затем добавлении префикса 0x04 спереди;
  2. Сжатая форма - когда y является четным числом, код - 02 x, а когда y - нечетное число, код - 03 x;

Адрес Биткойн

Различные типы адресов Bitcoin можно увидеть на следующей фигуре. Их можно выразить четырьмя способами:

1. Формат наследия (P2PKH)

Пример: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Адреса, начинающиеся с "1", представляют собой оригинальный формат адресов Bitcoin и по сей день используются. Полученные из открытого ключа путем вычисления хэша, также известные как P2PKH, являются сокращением от Pay To PubKey Hash (оплата на хэш открытого ключа).

2. Вложенный формат SegWit (P2SH)

Пример: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

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

3.Нативный формат SegWit (Bech32)

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

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

4. Формат Taproot (P2TR)

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

Для устранения вышеуказанных недостатков Bech32 был предложен адрес Bech32M в BIP0350:

  1. Для местных отделенных свидетельств с версией 0 используйте предыдущий Bech32;
  2. Для местных адресов свидетелей карантина с версией 1 (или выше) используйте новый Bech32M.

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

5. О нас

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

BTC NFT Китайское сообщество - это платформа обмена BTC NFT для китайских новичков со всего мира.

Отказ от ответственности:

  1. Эта статья взята из [надписьЛаборатория спектра]. Все авторские права принадлежат оригинальному автору [Аш Ли, Ноа Хо]. Если есть возражения против этого перепечатывания, пожалуйста, свяжитесь с Gate Learnкоманда, и они незамедлительно разберутся с этим.
  2. Ответственность за отказ: Взгляды и мнения, выраженные в этой статье, являются исключительно мнениями автора и не являются инвестиционными советами.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. Если не указано иное, копирование, распространение или плагиат переведенных статей запрещены.
Начните торговать сейчас
Зарегистрируйтесь сейчас и получите ваучер на
$100
!