Aprenda os princípios do Protocolo Ordinals e inscrições do Bitcoin em um artigo

Avançado1/1/2024, 4:54:08 AM
Este artigo explica os detalhes técnicos do protocolo Ordinais e a evolução dos detalhes do endereço BTC.

Com o nascimento do Protocolo Ordinais, ele forneceu ao Bitcoin a função de numeração e inscrição, ampliando assim a gama de produtos do ecossistema Bitcoin e trazendo nova vitalidade ao ecossistema Bitcoin. Neste artigo, vamos mergulhar nos detalhes do Protocolo Ordinal, incluindo como cada Bitcoin é numerado e rastreado, e a relação entre inscrições e números. Mas antes de aprofundarmos nesse tópico, precisamos primeiro entender alguns conceitos básicos do Bitcoin para nos ajudar a entender melhor o que vem a seguir.

Depois de ler este artigo, você dominará o mecanismo de transação do Bitcoin e o modelo de pagamento, aprenderá como os Ordinais podem numerar e rastrear cada Satoshi e como as inscrições são criadas e negociadas. Além disso, você aprenderá sobre as diferenças entre os diferentes tipos de carteiras.

I. Antecedentes do Bitcoin

O Bitcoin usa um modelo de transação semelhante a dinheiro (sistema de dinheiro), e seu método de pagamento é baseado em um modelo chamado UTXO, que é diferente do modelo tradicional baseado em saldos de conta. Por exemplo, no processo de modelo de contabilidade de livro de conta bancária, quando A transfere 100 yuan para B, o banco registra três passos. Esses três passos formam um processo de transação. O primeiro passo é deduzir 100 yuan da conta de A. O ID do registro para este passo é tid1. O segundo passo é depositar 100 yuan na conta de B. O ID do registro para este passo é tid2. O terceiro passo é registrar um registro de transferência. Este registro vincula tid1 e tid2, indicando uma redução de 100 yuan para a conta A e um aumento de 100 yuan para a conta B. Dessa forma, o relacionamento de transferência entre A e B é registrado e pode ser consultado e rastreado no futuro. Agora, vamos explicar os métodos de pagamento do Bitcoin através de uma introdução aos modelos UTXO e de pagamento.

UTXO

Na blockchain do Bitcoin, todos os saldos são armazenados em uma lista chamada “Unspent Transaction Output (UTXO)” (Saída de Transação Não Gasta). Cada UTXO contém uma certa quantidade de bitcoins, juntamente com informações sobre os proprietários desses bitcoins, e indica se eles estão disponíveis. Pense nisso como um cheque nominal. Desde que o titular o assine, você pode transferir o direito de uso para outra pessoa. Para um endereço específico, todas as quantias de UTXO somam o saldo da carteira desse endereço. Ao passar por todos os UTXOs, podemos obter o saldo atual para cada endereço. A soma de todas as quantias de UTXO é o montante total de bitcoins atualmente em circulação.

Na estrutura de transação do Bitcoin, cada transação inclui várias entradas e saídas. Cada entrada é uma referência a um UTXO existente, e cada saída especifica um novo endereço de recebimento de fundos e o valor correspondente. Uma vez que uma transação é iniciada, o UTXO referenciado na seção de entrada é temporariamente bloqueado para evitar reutilização até que a transação seja concluída. Somente quando a transação é empacotada com sucesso em um bloco (Bloco) pelo minerador e confirmada pela rede, o status relevante do UTXO mudará. Especificamente, os UTXOs usados para a entrada da transação serão removidos da lista de UTXO, indicando que foram consumidos, e a saída da transação gerará um novo UTXO que será adicionado à lista de UTXO. Pode-se entender que um antigo cheque foi usado e depois se tornou inválido, criando um novo cheque, que pertencia ao novo proprietário.

Vale ressaltar que cada UTXO só pode ser usado uma vez em uma única transação. Uma vez que é consumido como entrada, ele é permanentemente removido da lista de UTXO. Enquanto isso, a saída recém-gerada é adicionada à lista como um novo UTXO. A lista de UTXO está em constante mudança e, à medida que cada novo bloco é criado, é atualizada de acordo. Além disso, analisando o histórico de transações na blockchain, somos capazes de reconstruir o estado da lista de UTXO em qualquer ponto no tempo.

Além disso, o montante total de entrada de uma transação geralmente excede ligeiramente o montante total de saída. Essa diferença, chamada de taxa de transação (taxa de transação) ou taxa de rede (taxa de rede), é dada como um incentivo aos mineradores responsáveis por agrupar transações em blocos. O tamanho da taxa de rede é proporcional à complexidade da transação, então uma transação com mais entradas e saídas geralmente requer uma taxa de rede mais alta.

Agora, para entender melhor a estrutura da transação do Bitcoin, faremos uma análise detalhada por meio de um exemplo específico. A estrutura da transação do Bitcoin é a seguinte. As duas variáveis vin e vout representam o "input" e "output" de uma transação de Bitcoin, respectivamente. As transações de Bitcoin não são como os modelos tradicionais de saldo de conta que registram alterações nos dados da conta, mas são expressas por meio de entrada e saída.

Podemos selecionar aleatoriamente um registro de transação em blockchain.com para analisar. A figura abaixo mostra que o ID de hash é uma transação de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Ele contém uma entrada e duas saídas.

Ao usar os comandos bitcoin-cli getrawtransaction e decoderawtransaction, podemos visualizar a estrutura subjacente da transação acima:

Na rede Bitcoin, a saída da transação contém duas peças importantes de informação: o endereço (hash da chave pública) e a quantidade (em bitcoins). Se a saída de uma transação não for utilizada na entrada de outra transação, então essa saída de transação é chamada de saída de transação não gasta (UTXO). Quem possui a chave privada correspondente à chave pública em UTXO tem o direito de usar (ou seja, gastar) essa UTXO.

Vamos olhar as informações em 'vin' no código acima, que indica que o UTXO gasto nesta troca vem de outra transação (seu id é 7957a35fe64f80d234d76d83a2a8a0d8a0d149a41d81de548f0a65a8a999f6f18). Podemos encontrar o valor deste UTXO a partir de transações históricas (por exemplo, 0.1). Portanto, nesta transação, o usuário gastou 0.1 BTC. O valor 0.1 não precisa ser explicitamente escrito na transação, mas é obtido ao procurar informações do UTXO. O 'vout' desta transação possui duas saídas. Essas duas saídas são dois novos UTXOs, correspondentes ao novo saldo e titular até que outra transação os consuma como entrada.

  1. Para o usuário A, é primeiro necessário determinar todos os conjuntos de UTXO que ele possui, ou seja, todos os bitcoins que o usuário A pode controlar;
  2. Um seleciona um ou mais UTXOs deste conjunto como entrada para a transação. A soma dos valores dessas entradas é m (2+0.8+0.5 = 3.3 BTC) é maior do que o valor a ser pago n (3 BTC);
  3. O usuário A define duas saídas para a transação. Uma saída é paga para o endereço de B, o valor é n (3 BTC), e a outra saída é paga para o próprio endereço de zeragem de A. O valor é m-n-taxa (3,3-3-0,001 = 0,299 BTC). A carteira do usuário geralmente é composta por vários endereços. Normalmente, cada endereço é usado apenas uma vez, e o zero é retornado para um novo endereço por padrão;
  4. Depois que o minerador empacota essa transação na cadeia e a confirma, B pode receber as informações da transação. Como há um limite superior no tamanho do bloco (cerca de 1 MB), os mineradores dão prioridade à confirmação de transações com uma alta taxa de transação (taxa_de_taxa=taxa/tamanho) para obter o maior retorno de taxa. Podemos ver a situação da taxa de transação de mineração em tempo real em mempoolSe quisermos a confirmação mais rápida durante o processo de transferência, podemos escolher Alta Prioridade (High Priority) ou Personalizado (custom) uma taxa de transação adequada.

II. Numeração e Rastreamento de Satoshi

O número total de bitcoins é de 21 milhões, e cada bitcoin contém 10^8 Satoshi (Satoshi, Sat). Como resultado, existem 21 milhões*10^8 satoshi na rede Bitcoin. O protocolo Ordinais distingue esses Satoshi e numera cada Satoshi de forma única. Esta seção explica como esse acordo numera cada Satoshi de forma única e rastreia a conta em que ele está. Além disso, a classificação de raridade para Satoshi também será introduzida.

número de Satoshi

De acordo com o Acordo dos Ordinais, os Satoshis são numerados de acordo com a ordem em que foram minerados. A figura abaixo mostra como o 0º Satoshi é representado pelo 0º bloco.

Existem muitas maneiras de expressar Satoshi:

  1. Símbolos inteiros: Por exemplo, 2099994106992659, indicam o número de série atribuído pelo Satoshi de acordo com a ordem de mineração.
  2. Símbolos decimais: Por exemplo, 3891094.16797. O primeiro número indica a altura do bloco em que o Satoshi foi minerado, e o segundo número indica o número de Satoshi no bloco.
  3. Símbolos de grau: Por exemplo, 3°111094′214″16797. O primeiro número é o período, numerado a partir de 0, o segundo número é o índice do bloco para a era dividida ao meio, o terceiro número é o índice do bloco durante o período de ajuste de dificuldade e o último número é o índice SAT no bloco.
  4. Símbolos de porcentagem: Por exemplo, 99.99971949060254%, indicam a posição de Satoshi no fornecimento de Bitcoin, expressa como uma porcentagem.
  5. Nome: Satoshi, por exemplo. Nomes que usam caracteres de a a z para codificar números sequenciais.

Usaremos um exemplo para explicar como numerar os bitcoins recém-minerados. Ao olharmos para o 795952º bloco da blockchain do Bitcoin, podemos ver que a primeira transação Tx 3a1f… b177 registrou a recompensa do minerador (transação Coinbase). A transação inclui bitcoins recém-minerados, que são recompensas empacotadas para os mineradores, e taxas de processamento pagas aos mineradores pelo iniciador da transação. Ao olhar para a entrada na imagem abaixo, podemos ver que seu ID UTxO consiste em uma sequência de zeros e altura do bloco. O endereço de saída é o endereço da carteira do minerador, e o valor é a soma das recompensas e taxas acima.

Se analisarmos mais de perto a seção de saída para os mineradores, podemos ver o endereço, o valor e a distribuição dos Satoshis incluídos. Como mencionado anteriormente, estes incluem recompensas de mineração e taxas. Entre eles, as informações do número de SATS verdes 1941220000000000-1941220625000000 são novos Satoshis gerados por recompensas de mineração, e os 712 registros restantes de Satoshi correspondem a todas as taxas de processamento neste bloco.

Podemos verificar o número Sat 1941220000000000. Seu número de bloco é 795952 e o símbolo decimal (decimal) é 795952.0, o que significa que a altura do bloco para minerar este Satoshi é 795952, o número neste bloco é 0 e a raridade (rarity) que se segue é marcada como incomum, o que abordaremos com mais detalhes nas seções posteriores.

Circulação inteligente

Porque cada BTC é gerado através de recompensas de mineração, todos eles são rastreáveis. As contas de Bitcoin utilizam o modelo UTXO. Digamos que o usuário A obteve o 100º ao 110º Satoshi através da mineração (10 Satoshi são armazenados como um todo no UTXO com o mesmo ID adc123). Quando o usuário A deseja pagar ao usuário B 5 Satoshi, ele escolhe usar o ID abc123 como entrada para a transação. Destes, 5 Satoshi são dados ao usuário B, e 5 Satoshi são devolvidos ao usuário A como zeros. Estas duas cópias dos 5 Satoshi são um todo, armazenadas em dois UTXO com IDs abc456 e abc789, respectivamente. O número de IDs UTXO e Satoshi mencionados acima é apenas um exemplo. Em circunstâncias reais, o número mínimo de Satoshi enviado é limitado a 546, e os IDs UTXO não são expressos desta forma.

Na transação acima descrita, os caminhos de transferência dos 10 Satoshis do Usuário A são:

  1. A mineração gera 10 Satoshi, o número é [100*, 110). *Indica que o 100º ao 109º Satoshi está armazenado em UTXO com ID ABC123, e seu proprietário é o Usuário A.
  2. Quando A transfere dinheiro, 10 Satoshi são divididos em 2 partes, 5 Satoshi cada. O princípio de "primeiro a entrar, primeiro a sair" é usado aqui, ou seja, a classificação dos números de Satoshi é determinada pelo seu índice na saída da transação. Supondo que a ordem de saída seja usuário A primeiro, então usuário B, em seguida, os 5 números de Satoshi restantes para o usuário A são [100, 105), armazenados em UTXO com ID ABC456, enquanto os 5 números de série de Satoshi do usuário B são [105, 110), armazenados em UTXO com ID ABC789.

Raridade (Satoshi Raro)

Como derivado do Protocolo Ordinais, a raridade de Satoshi pode ser definida com base na ordem em que são minerados. Isso fará com que alguns Satoshi especiais tenham níveis de raridade variados. Aqui está quão raras são os diferentes tipos de ouvidos:

  1. Nível normal comum: Qualquer Satoshi que não seja o primeiro Satoshi no bloco (o fornecimento total é de 2,100 trilhões de dólares)
  2. Nível Excelente Incomum: O primeiro Satoshi em cada bloco (o fornecimento total é 6929999)
  3. Nível Raro: O primeiro Satoshi em cada período de ajuste de dificuldade (o fornecimento total é 3437)
  4. Nível Épico: Primeiro Satoshi após cada halving (o fornecimento total é de 32)
  5. LENDÁRIO LENDÁRIO LENDÁRIO: O primeiro Satoshi de cada ciclo (o fornecimento total é 5)
  6. Nível Mítico Mítico: O primeiro Satoshi no bloco Gênesis (o fornecimento total é 1)

Este conceito raro e inteligente pode adicionar mais diversão e valor ao ecossistema do Bitcoin. Satoshis de raridades variadas podem ter valores diferentes no mercado, atraindo colecionadores e investidores.

3. Método de inscrição

Os Ordinais são significativamente diferentes de outros NFTs on-chain não-Bitcoin. Entre eles, a principal diferença é que os metadados dos Ordinais não são armazenados em um local específico. Em vez disso, esses metadados são incorporados aos dados testemunhais da transação (campo testemunha), razão pela qual o chamamos de 'inscrição', porque esses dados são 'gravados' como uma inscrição em uma parte específica de uma transação de Bitcoin, e esses dados são anexados a um Satoshi específico. Esse processo de inscrição é alcançado por meio de testemunha segregada (SegWit) e 'pagamento ao taproot (P2TR)'. Ele inclui duas etapas de submissão (compromisso) e divulgação (revelação) e pode gravar qualquer forma de conteúdo (como texto, imagem ou vídeo) no quadro inteligente designado. Abaixo, introduziremos outro método de armazenamento mais direto, OP_RETURN, e explicaremos por que ele não foi utilizado como meio de inscrições. Ao mesmo tempo, apresentaremos o que são testemunha segregada e pagamento ao taproot, e qual papel desempenham na inscrição. Por fim, introduziremos como as inscrições são feitas.

OP_RETURE

Na versão 0.9 do cliente Bitcoin Core, um compromisso foi finalmente alcançado usando o operador RETURN. **RETURN permite que os desenvolvedores adicionem 80 bytes de dados não relacionados ao pagamento à saída da transação. **Ao contrário de pagamentos falsos, RETURN cria uma saída inequívoca, verificável e não consumível; tais dados não precisam ser armazenados em um conjunto UTXO. As saídas RETURN são registradas na blockchain. Elas consomem espaço em disco e também fazem com que a blockchain cresça em tamanho, mas como não são armazenadas na concentração UTXO, elas não aumentam o pool de memória UTXO, muito menos aumentam o custo de memória caro de todo o nó.

Embora o OP_RETURN seja um meio muito direto de armazenar informações na blockchain do Bitcoin, também é um método potencial de inscrição. No entanto, as limitações do OP_RETURN fazem com que ele enfrente alguns desafios ao lidar com o armazenamento de metadados. Em primeiro lugar, o OP_RETURN só pode armazenar 80 bytes de dados, e em situações em que quantidades maiores de dados precisam ser armazenadas, essa limitação é claramente impossível de atender. Em segundo lugar, os dados do OP_RETURN são armazenados na seção de saída da transação. Embora esses dados não sejam armazenados centralmente em UTXO, ocupam espaço de armazenamento na blockchain, levando a um aumento no tamanho da blockchain. Por fim, o uso do OP_RETURN resulta em taxas de transação mais altas, pois requer o pagamento de mais para postar essas transações.

Testemunha de quarentena

Em contraste, o SegWit oferece uma nova abordagem que pode superar esses problemas. O SegWit é uma atualização de protocolo importante para o Bitcoin. Foi proposto pelo desenvolvedor principal do Bitcoin, Pieter Wuille, em 2015 e finalmente adotado oficialmente na versão 0.16.0 em 2017. Segregado em testemunha segregada significa separação ou isolamento, e a testemunha é uma assinatura relacionada a uma transação. Portanto, o SegWit separa certos dados de assinatura de transação (dados de testemunha) das transações.

O principal benefício de separar assinaturas dos dados relacionados à transação é a redução no tamanho dos dados armazenados em um bloco de Bitcoin. Dessa forma, cada bloco tem capacidade extra para armazenar mais transações, o que também significa que a rede pode processar mais transações e o remetente paga taxas de processamento mais baixas. Tecnicamente falando, as informações da assinatura do script (scriptSig) são retiradas da estrutura básica (bloco base) e colocadas em uma nova estrutura de dados. Nós e mineradores que realizam o trabalho de verificação também verificarão as assinaturas de script nessa nova estrutura de dados para garantir que as transações sejam válidas. A atualização Segwit introduziu um novo campo de testemunha na saída da transação para garantir privacidade e desempenho. Embora os dados de testemunha não sejam projetados para armazenamento de dados, na realidade, nos dá a oportunidade de armazenar coisas como metadados de inscrição. Vamos usar a seguinte imagem para entender melhor a testemunha de quarentena:

Taproot

P2TR é um tipo de saída de transação para Bitcoin. Foi introduzido na atualização Taproot em 2021. Permite que diferentes condições de transação sejam armazenadas de forma mais privada na blockchain. Na inscrição dos Ordinais, P2TR desempenha um papel crítico. A inscrição essencialmente incorpora conteúdo de dados específicos em transações Bitcoin, e as atualizações do Taproot, particularmente P2TR, tornaram esses dados incorporados mais flexíveis e econômicos.

Primeiro, devido ao método de armazenamento de scripts Taproot, podemos armazenar o conteúdo da inscrição nos scripts de despesa do caminho do script Taproot. Esses scripts têm quase nenhuma restrição de conteúdo e, ao mesmo tempo, também podem obter descontos nos dados de testemunha, tornando relativamente econômico armazenar o conteúdo da inscrição. Como o consumo do script Taproot só pode ser feito a partir da saída do Taproot que já existe, a inscrição usa um processo de submissão/revelação em duas etapas. Primeiro, ao submeter uma transação, foi criada uma saída Taproot que prometia um script contendo o conteúdo da inscrição. Em seguida, na transação de revelação, a saída criada ao submeter a transação foi consumida, revelando assim o conteúdo da inscrição na cadeia.

Esta abordagem reduziu significativamente o consumo de recursos. Se P2TR não for usado, as informações de testemunho são armazenadas na saída da transação. Dessa forma, enquanto essa saída não for consumida, as informações de testemunho sempre serão armazenadas no pool UTXO. Por outro lado, se P2TR for usado, as informações de testemunho não aparecerão nas transações geradas durante a fase de envio, portanto, não serão gravadas no conjunto UTXO. Somente quando esse UTXO for gasto, as informações de testemunho aparecerão na entrada da transação durante a fase de divulgação. P2TR permite que metadados sejam escritos no blockchain do Bitcoin, mas nunca aparece no UTXO. Como a manutenção/modificação dos conjuntos UTXO requer mais recursos, esta abordagem pode economizar recursos significativos.

inscrições

O protocolo Ordinals usou o SegWit para relaxar as restrições de tamanho no conteúdo escrito na rede Bitcoin, armazenando o conteúdo da inscrição em dados de testemunhas. Ele permite que ele armazene até 4MB de metadados. O Taproot facilita o armazenamento de dados arbitrários de testemunhas em transações de Bitcoin, permitindo que o desenvolvedor do Ordinals, Casey Rodarmor, reutilize opcodes antigos (OP_FALSE, OP_IF OP_PUSH) para armazenar dados arbitrários no que ele descreveu como um "envelope" chamado "inscrição".

O processo de lançar uma inscrição consiste nos seguintes dois passos:

Primeiro, é necessário criar uma promessa na transação de envio para a saída Taproot do script contendo o conteúdo da inscrição. O formato de armazenamento é Taproot, ou seja, a saída da transação anterior é P2TR (Pay-To-Taproot), e a entrada da última transação incorpora o conteúdo em um formato específico no script Taproot testemunhado; a string ord é primeiro empilhada para eliminar a ambiguidade de que a inscrição tem outros usos. OP_PUSH 1 indica que o próximo push contém o tipo de conteúdo, e OP_PUSH 0 indica que os próximos push de dados incluem o conteúdo em si. Inscrições grandes devem usar vários push de dados porque uma das poucas limitações do taproot é que um único push de dados não pode ser maior que 520 bytes. Neste ponto, os dados da inscrição foram aplicados à saída UTXO da transação, mas ainda não foram divulgados.

Em segundo lugar, é necessário revelar a saída criada pela transação de submissão de compra na transação. Nesta fase, a transação é iniciada usando o UTXO correspondente a essa inscrição como entrada. Neste ponto, o conteúdo da inscrição correspondente foi tornada pública para toda a rede.

Através dos dois passos acima, o conteúdo da inscrição foi vinculado ao UTXO gravado. Além disso, de acordo com a posição de Satoshi descrita acima, a inscrição é realizada no primeiro Satoshi correspondente à entrada UTXO, e o conteúdo da inscrição é incluído na entrada mostrando a transação. De acordo com a introdução à circulação e rastreamento de Satoshi descrita acima, este Satoshi, que é gravado com conteúdo especial, pode ser transferido, comprado, vendido, perdido e recuperado. Note que as inscrições não podem ser repetidas, caso contrário as inscrições subsequentes não serão válidas.

Vamos explicar este processo em detalhes, fazendo a inscrição de um exemplo de uma pequena imagem NFT de BTC. Este processo inclui principalmente as duas etapas de submissão (commit) e divulgação (reveal) mencionadas anteriormente. Primeiro, vemos que o ID do Hash para a primeira transação é 2ddf9... f585c. Pode-se notar que a saída desta transação não incluiu dados de testemunha, e não houve uma inscrição relevante na página.

A seguir, vamos analisar o registro da segunda etapa. O ID de hash é e7454... 7c0e1. Aqui, podemos ver as informações sobre a Inscrição Ordinal, ou seja, o conteúdo da inscrição da testemunha. O endereço de entrada para esta transação é o endereço de saída da transação anterior, e a saída 0.00000546 BTC (546 Satoshi) está enviando este NFT para seu próprio endereço. Ao mesmo tempo, também podemos usar Sat Find Satoshi onde esta inscrição está localizada em 1893640468329373.

Na carteira Bitcoin, podemos ver este ativo. Se quisermos negociar este NFT, podemos enviá-lo diretamente para o endereço de outra pessoa, ou seja, enviar este UTXO, e isso completa a circulação da inscrição.

4. Carteiras Bitcoin

Depois de termos aprendido sobre o ecossistema dos Ordinais, a circulação de Satoshi e conhecimentos relacionados sobre inscrições, atualmente existem muitos cenários de aplicação. Seja o surgimento de acordos derivados relacionados como BRC-20, ORC-20, BRC-721, GBRC-721, etc., precisamos de uma carteira correspondente para suportar e exibir informações do token ou pequenas imagens de NFT. Nesta seção, apresentaremos os conceitos e características de diferentes endereços de carteira Bitcoin.

Os endereços Bitcoin começam com 1, 3 ou bc1. Assim como os endereços de e-mail, eles podem ser compartilhados com outros usuários de Bitcoin que podem usá-los para enviar bitcoins diretamente para suas carteiras. Do ponto de vista da segurança, os endereços Bitcoin não têm nenhum conteúdo sensível. Eles podem ser postados em qualquer lugar sem comprometer a segurança da conta. Ao contrário dos endereços de e-mail, podemos criar novos endereços sempre que precisarmos, todos os quais depositarão fundos diretamente em sua carteira. Na verdade, muitas carteiras modernas criam automaticamente um novo endereço para cada transação a fim de maximizar a privacidade. Uma carteira é simplesmente uma coleção de endereços e chaves para desbloquear os fundos nela. Primeiro, precisamos saber como o endereço da carteira Bitcoin é gerado.

Chaves privadas e públicas do Bitcoin

Bitcoin usa uma curva elíptica secp256k1. A “chave privada” é um número aleatório entre 1 e n-1. n é um número grande (256 bits), e n é expresso em notação científica cerca de 1,15792*10^77. O escopo é enorme, e é quase impossível para nós adivinharmos as chaves privadas de outras pessoas. Esta chave privada inteira aleatória pode ser usada 256 bits indicam que há muitas maneiras de codificar. Se a chave privada usando WIF ou WIF-comprimida não estiver criptografada, o “número inteiro aleatório” original pode ser obtido decodificando. Outro método é o BIP38. É proposto usar o algoritmo AES para criptografar a chave privada. A chave privada obtida por este esquema começa com o caractere 6P. Esta chave privada deve ser importada em várias carteiras Bitcoin. Esta é a chave privada que costumamos usar.

Em seguida, usaremos a fórmula da curva elíptica K = kG para gerar a chave pública do Bitcoin K a partir da chave privada k. G é o ponto base, que é um parâmetro de secp256k1. Você pode obter as duas coordenadas de K, que são as duas expressões da chave pública, respectivamente, "formato não compactado" e "formato compactado".

  1. A forma não compactada é conectar diretamente as duas coordenadas x e y e depois adicionar um prefixo 0x04 na frente;
  2. A forma comprimida é quando y é um número par, o código é 02 x e quando y é um número ímpar, o código é 03 x;

Endereço Bitcoin

Os vários tipos de endereços Bitcoin podem ser vistos na figura seguinte. Existem quatro maneiras de os expressar:

1. Formato Legacy (P2PKH)

Exemplo: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Endereços que começam com “1” são o formato de endereço original do Bitcoin e ainda estão em uso hoje. Obtidos da chave pública através do cálculo do hash, também conhecido como P2PKH, é uma abreviação de Pagamento Para Hash de Chave Pública (pagamento para hash de chave pública).

2. Formato SegWit aninhado (P2SH)

Exemplo: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

Os endereços começam com “ 3 “. P2SH é uma abreviatura de Pay To Script Hash (Pagamento para Script Hash), que suporta recursos mais complexos do que os endereços Legacy. P2SH aninhado obtém um endereço P2SH existente (começando com “3”) e o encapsula com o endereço SegWit.

3. Formato SegWit Nativo (Bech32)

Os endereços que começam com bc1 foram propostos no BIP0173; eles são endereços nativos de testemunha de quarentena. O endereço codificado em Bech32 é um formato de endereço especialmente desenvolvido para SegWit. Bech32 foi definido no BIP173 no final de 2017. Uma das principais características deste formato é que ele não é sensível a maiúsculas e minúsculas (o endereço contém apenas 0-9, az), então pode evitar efetivamente confusão e é mais fácil de ler ao digitar. Como menos caracteres são necessários no endereço, o endereço usa codificação Base32 em vez da tradicional Base58, o que é mais conveniente e eficiente para calcular. Os dados podem ser armazenados de forma mais compacta em um código QR. Bech32 fornece uma segurança maior, otimiza melhor os códigos de verificação e detecção de erros e minimiza a chance de endereços inválidos.

O próprio endereço Bech32 é compatível com SegWit. Não há espaço adicional necessário para colocar o endereço SegWit no endereço P2SH, então, ao usar um endereço no formato Bech32, a taxa de processamento será menor. Os endereços Bech32 têm várias vantagens sobre os antigos endereços Base58 (a codificação Base58Check é usada para codificar matrizes de bytes em Bitcoin em strings codificáveis por humanos): os códigos QR são menores; eles são mais à prova de erros; eles são mais seguros; eles não são sensíveis a maiúsculas e minúsculas; eles são compostos apenas por letras minúsculas, então são mais fáceis de ler, digitar e entender.

Formato Taproot (P2TR)

Bech32 tem uma desvantagem: se o último caractere no endereço for p, inserir ou excluir qualquer número de caracteres q imediatamente antes de p não invalidará seu checksum.

Para mitigar as deficiências acima do Bech32, o endereço Bech32M foi proposto no BIP0350:

  1. Para endereços nativos de testemunha segregada com a versão 0, use o Bech32 anterior;
  2. Para endereços de testemunha de quarentena nativa com versão 1 (ou superior), use o novo Bech32M.

Para endereços Bech32M, quando a versão é 1, eles sempre começam com bc1p (ou seja, endereço Taproot). Especificamente, como uma testemunha de quarentena local, uma carteira pode consistir em uma frase-semente e uma senha. Estes são usados para gerar chaves públicas e privadas estendidas, e são usados para derivar endereços para caminhos arbitrários em carteiras determinísticas hierárquicas. Principalmente NFTs que armazenam BRC-20 e BTC.

5. Sobre Nós

Spectrum Labs é uma equipe de mestres e doutores focados em pesquisa de blockchain, bem como veteranos na indústria de blockchain. Estamos comprometidos com a tecnologia de pesquisa de blockchain e suas aplicações para ajudar as pessoas a entender melhor o blockchain. O principal negócio da Spectrum Labs inclui escrever relatórios de pesquisa, cursos e desenvolvimento de ferramentas.

A Comunidade Chinesa de BTC NFT é uma plataforma de câmbio chinês de BTC NFT para novatos chineses de todo o mundo.

Aviso Legal:

  1. Este artigo é reproduzido a partir de [Laboratório de Espectro]. Todos os direitos autorais pertencem ao autor original [Ash Li, Noah Ho]. Se houver objeções a esta reimpressão, entre em contato com o Portão Aprenderequipe e eles vão lidar com isso prontamente.
  2. Isenção de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. A menos que seja mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

Aprenda os princípios do Protocolo Ordinals e inscrições do Bitcoin em um artigo

Avançado1/1/2024, 4:54:08 AM
Este artigo explica os detalhes técnicos do protocolo Ordinais e a evolução dos detalhes do endereço BTC.

Com o nascimento do Protocolo Ordinais, ele forneceu ao Bitcoin a função de numeração e inscrição, ampliando assim a gama de produtos do ecossistema Bitcoin e trazendo nova vitalidade ao ecossistema Bitcoin. Neste artigo, vamos mergulhar nos detalhes do Protocolo Ordinal, incluindo como cada Bitcoin é numerado e rastreado, e a relação entre inscrições e números. Mas antes de aprofundarmos nesse tópico, precisamos primeiro entender alguns conceitos básicos do Bitcoin para nos ajudar a entender melhor o que vem a seguir.

Depois de ler este artigo, você dominará o mecanismo de transação do Bitcoin e o modelo de pagamento, aprenderá como os Ordinais podem numerar e rastrear cada Satoshi e como as inscrições são criadas e negociadas. Além disso, você aprenderá sobre as diferenças entre os diferentes tipos de carteiras.

I. Antecedentes do Bitcoin

O Bitcoin usa um modelo de transação semelhante a dinheiro (sistema de dinheiro), e seu método de pagamento é baseado em um modelo chamado UTXO, que é diferente do modelo tradicional baseado em saldos de conta. Por exemplo, no processo de modelo de contabilidade de livro de conta bancária, quando A transfere 100 yuan para B, o banco registra três passos. Esses três passos formam um processo de transação. O primeiro passo é deduzir 100 yuan da conta de A. O ID do registro para este passo é tid1. O segundo passo é depositar 100 yuan na conta de B. O ID do registro para este passo é tid2. O terceiro passo é registrar um registro de transferência. Este registro vincula tid1 e tid2, indicando uma redução de 100 yuan para a conta A e um aumento de 100 yuan para a conta B. Dessa forma, o relacionamento de transferência entre A e B é registrado e pode ser consultado e rastreado no futuro. Agora, vamos explicar os métodos de pagamento do Bitcoin através de uma introdução aos modelos UTXO e de pagamento.

UTXO

Na blockchain do Bitcoin, todos os saldos são armazenados em uma lista chamada “Unspent Transaction Output (UTXO)” (Saída de Transação Não Gasta). Cada UTXO contém uma certa quantidade de bitcoins, juntamente com informações sobre os proprietários desses bitcoins, e indica se eles estão disponíveis. Pense nisso como um cheque nominal. Desde que o titular o assine, você pode transferir o direito de uso para outra pessoa. Para um endereço específico, todas as quantias de UTXO somam o saldo da carteira desse endereço. Ao passar por todos os UTXOs, podemos obter o saldo atual para cada endereço. A soma de todas as quantias de UTXO é o montante total de bitcoins atualmente em circulação.

Na estrutura de transação do Bitcoin, cada transação inclui várias entradas e saídas. Cada entrada é uma referência a um UTXO existente, e cada saída especifica um novo endereço de recebimento de fundos e o valor correspondente. Uma vez que uma transação é iniciada, o UTXO referenciado na seção de entrada é temporariamente bloqueado para evitar reutilização até que a transação seja concluída. Somente quando a transação é empacotada com sucesso em um bloco (Bloco) pelo minerador e confirmada pela rede, o status relevante do UTXO mudará. Especificamente, os UTXOs usados para a entrada da transação serão removidos da lista de UTXO, indicando que foram consumidos, e a saída da transação gerará um novo UTXO que será adicionado à lista de UTXO. Pode-se entender que um antigo cheque foi usado e depois se tornou inválido, criando um novo cheque, que pertencia ao novo proprietário.

Vale ressaltar que cada UTXO só pode ser usado uma vez em uma única transação. Uma vez que é consumido como entrada, ele é permanentemente removido da lista de UTXO. Enquanto isso, a saída recém-gerada é adicionada à lista como um novo UTXO. A lista de UTXO está em constante mudança e, à medida que cada novo bloco é criado, é atualizada de acordo. Além disso, analisando o histórico de transações na blockchain, somos capazes de reconstruir o estado da lista de UTXO em qualquer ponto no tempo.

Além disso, o montante total de entrada de uma transação geralmente excede ligeiramente o montante total de saída. Essa diferença, chamada de taxa de transação (taxa de transação) ou taxa de rede (taxa de rede), é dada como um incentivo aos mineradores responsáveis por agrupar transações em blocos. O tamanho da taxa de rede é proporcional à complexidade da transação, então uma transação com mais entradas e saídas geralmente requer uma taxa de rede mais alta.

Agora, para entender melhor a estrutura da transação do Bitcoin, faremos uma análise detalhada por meio de um exemplo específico. A estrutura da transação do Bitcoin é a seguinte. As duas variáveis vin e vout representam o "input" e "output" de uma transação de Bitcoin, respectivamente. As transações de Bitcoin não são como os modelos tradicionais de saldo de conta que registram alterações nos dados da conta, mas são expressas por meio de entrada e saída.

Podemos selecionar aleatoriamente um registro de transação em blockchain.com para analisar. A figura abaixo mostra que o ID de hash é uma transação de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Ele contém uma entrada e duas saídas.

Ao usar os comandos bitcoin-cli getrawtransaction e decoderawtransaction, podemos visualizar a estrutura subjacente da transação acima:

Na rede Bitcoin, a saída da transação contém duas peças importantes de informação: o endereço (hash da chave pública) e a quantidade (em bitcoins). Se a saída de uma transação não for utilizada na entrada de outra transação, então essa saída de transação é chamada de saída de transação não gasta (UTXO). Quem possui a chave privada correspondente à chave pública em UTXO tem o direito de usar (ou seja, gastar) essa UTXO.

Vamos olhar as informações em 'vin' no código acima, que indica que o UTXO gasto nesta troca vem de outra transação (seu id é 7957a35fe64f80d234d76d83a2a8a0d8a0d149a41d81de548f0a65a8a999f6f18). Podemos encontrar o valor deste UTXO a partir de transações históricas (por exemplo, 0.1). Portanto, nesta transação, o usuário gastou 0.1 BTC. O valor 0.1 não precisa ser explicitamente escrito na transação, mas é obtido ao procurar informações do UTXO. O 'vout' desta transação possui duas saídas. Essas duas saídas são dois novos UTXOs, correspondentes ao novo saldo e titular até que outra transação os consuma como entrada.

  1. Para o usuário A, é primeiro necessário determinar todos os conjuntos de UTXO que ele possui, ou seja, todos os bitcoins que o usuário A pode controlar;
  2. Um seleciona um ou mais UTXOs deste conjunto como entrada para a transação. A soma dos valores dessas entradas é m (2+0.8+0.5 = 3.3 BTC) é maior do que o valor a ser pago n (3 BTC);
  3. O usuário A define duas saídas para a transação. Uma saída é paga para o endereço de B, o valor é n (3 BTC), e a outra saída é paga para o próprio endereço de zeragem de A. O valor é m-n-taxa (3,3-3-0,001 = 0,299 BTC). A carteira do usuário geralmente é composta por vários endereços. Normalmente, cada endereço é usado apenas uma vez, e o zero é retornado para um novo endereço por padrão;
  4. Depois que o minerador empacota essa transação na cadeia e a confirma, B pode receber as informações da transação. Como há um limite superior no tamanho do bloco (cerca de 1 MB), os mineradores dão prioridade à confirmação de transações com uma alta taxa de transação (taxa_de_taxa=taxa/tamanho) para obter o maior retorno de taxa. Podemos ver a situação da taxa de transação de mineração em tempo real em mempoolSe quisermos a confirmação mais rápida durante o processo de transferência, podemos escolher Alta Prioridade (High Priority) ou Personalizado (custom) uma taxa de transação adequada.

II. Numeração e Rastreamento de Satoshi

O número total de bitcoins é de 21 milhões, e cada bitcoin contém 10^8 Satoshi (Satoshi, Sat). Como resultado, existem 21 milhões*10^8 satoshi na rede Bitcoin. O protocolo Ordinais distingue esses Satoshi e numera cada Satoshi de forma única. Esta seção explica como esse acordo numera cada Satoshi de forma única e rastreia a conta em que ele está. Além disso, a classificação de raridade para Satoshi também será introduzida.

número de Satoshi

De acordo com o Acordo dos Ordinais, os Satoshis são numerados de acordo com a ordem em que foram minerados. A figura abaixo mostra como o 0º Satoshi é representado pelo 0º bloco.

Existem muitas maneiras de expressar Satoshi:

  1. Símbolos inteiros: Por exemplo, 2099994106992659, indicam o número de série atribuído pelo Satoshi de acordo com a ordem de mineração.
  2. Símbolos decimais: Por exemplo, 3891094.16797. O primeiro número indica a altura do bloco em que o Satoshi foi minerado, e o segundo número indica o número de Satoshi no bloco.
  3. Símbolos de grau: Por exemplo, 3°111094′214″16797. O primeiro número é o período, numerado a partir de 0, o segundo número é o índice do bloco para a era dividida ao meio, o terceiro número é o índice do bloco durante o período de ajuste de dificuldade e o último número é o índice SAT no bloco.
  4. Símbolos de porcentagem: Por exemplo, 99.99971949060254%, indicam a posição de Satoshi no fornecimento de Bitcoin, expressa como uma porcentagem.
  5. Nome: Satoshi, por exemplo. Nomes que usam caracteres de a a z para codificar números sequenciais.

Usaremos um exemplo para explicar como numerar os bitcoins recém-minerados. Ao olharmos para o 795952º bloco da blockchain do Bitcoin, podemos ver que a primeira transação Tx 3a1f… b177 registrou a recompensa do minerador (transação Coinbase). A transação inclui bitcoins recém-minerados, que são recompensas empacotadas para os mineradores, e taxas de processamento pagas aos mineradores pelo iniciador da transação. Ao olhar para a entrada na imagem abaixo, podemos ver que seu ID UTxO consiste em uma sequência de zeros e altura do bloco. O endereço de saída é o endereço da carteira do minerador, e o valor é a soma das recompensas e taxas acima.

Se analisarmos mais de perto a seção de saída para os mineradores, podemos ver o endereço, o valor e a distribuição dos Satoshis incluídos. Como mencionado anteriormente, estes incluem recompensas de mineração e taxas. Entre eles, as informações do número de SATS verdes 1941220000000000-1941220625000000 são novos Satoshis gerados por recompensas de mineração, e os 712 registros restantes de Satoshi correspondem a todas as taxas de processamento neste bloco.

Podemos verificar o número Sat 1941220000000000. Seu número de bloco é 795952 e o símbolo decimal (decimal) é 795952.0, o que significa que a altura do bloco para minerar este Satoshi é 795952, o número neste bloco é 0 e a raridade (rarity) que se segue é marcada como incomum, o que abordaremos com mais detalhes nas seções posteriores.

Circulação inteligente

Porque cada BTC é gerado através de recompensas de mineração, todos eles são rastreáveis. As contas de Bitcoin utilizam o modelo UTXO. Digamos que o usuário A obteve o 100º ao 110º Satoshi através da mineração (10 Satoshi são armazenados como um todo no UTXO com o mesmo ID adc123). Quando o usuário A deseja pagar ao usuário B 5 Satoshi, ele escolhe usar o ID abc123 como entrada para a transação. Destes, 5 Satoshi são dados ao usuário B, e 5 Satoshi são devolvidos ao usuário A como zeros. Estas duas cópias dos 5 Satoshi são um todo, armazenadas em dois UTXO com IDs abc456 e abc789, respectivamente. O número de IDs UTXO e Satoshi mencionados acima é apenas um exemplo. Em circunstâncias reais, o número mínimo de Satoshi enviado é limitado a 546, e os IDs UTXO não são expressos desta forma.

Na transação acima descrita, os caminhos de transferência dos 10 Satoshis do Usuário A são:

  1. A mineração gera 10 Satoshi, o número é [100*, 110). *Indica que o 100º ao 109º Satoshi está armazenado em UTXO com ID ABC123, e seu proprietário é o Usuário A.
  2. Quando A transfere dinheiro, 10 Satoshi são divididos em 2 partes, 5 Satoshi cada. O princípio de "primeiro a entrar, primeiro a sair" é usado aqui, ou seja, a classificação dos números de Satoshi é determinada pelo seu índice na saída da transação. Supondo que a ordem de saída seja usuário A primeiro, então usuário B, em seguida, os 5 números de Satoshi restantes para o usuário A são [100, 105), armazenados em UTXO com ID ABC456, enquanto os 5 números de série de Satoshi do usuário B são [105, 110), armazenados em UTXO com ID ABC789.

Raridade (Satoshi Raro)

Como derivado do Protocolo Ordinais, a raridade de Satoshi pode ser definida com base na ordem em que são minerados. Isso fará com que alguns Satoshi especiais tenham níveis de raridade variados. Aqui está quão raras são os diferentes tipos de ouvidos:

  1. Nível normal comum: Qualquer Satoshi que não seja o primeiro Satoshi no bloco (o fornecimento total é de 2,100 trilhões de dólares)
  2. Nível Excelente Incomum: O primeiro Satoshi em cada bloco (o fornecimento total é 6929999)
  3. Nível Raro: O primeiro Satoshi em cada período de ajuste de dificuldade (o fornecimento total é 3437)
  4. Nível Épico: Primeiro Satoshi após cada halving (o fornecimento total é de 32)
  5. LENDÁRIO LENDÁRIO LENDÁRIO: O primeiro Satoshi de cada ciclo (o fornecimento total é 5)
  6. Nível Mítico Mítico: O primeiro Satoshi no bloco Gênesis (o fornecimento total é 1)

Este conceito raro e inteligente pode adicionar mais diversão e valor ao ecossistema do Bitcoin. Satoshis de raridades variadas podem ter valores diferentes no mercado, atraindo colecionadores e investidores.

3. Método de inscrição

Os Ordinais são significativamente diferentes de outros NFTs on-chain não-Bitcoin. Entre eles, a principal diferença é que os metadados dos Ordinais não são armazenados em um local específico. Em vez disso, esses metadados são incorporados aos dados testemunhais da transação (campo testemunha), razão pela qual o chamamos de 'inscrição', porque esses dados são 'gravados' como uma inscrição em uma parte específica de uma transação de Bitcoin, e esses dados são anexados a um Satoshi específico. Esse processo de inscrição é alcançado por meio de testemunha segregada (SegWit) e 'pagamento ao taproot (P2TR)'. Ele inclui duas etapas de submissão (compromisso) e divulgação (revelação) e pode gravar qualquer forma de conteúdo (como texto, imagem ou vídeo) no quadro inteligente designado. Abaixo, introduziremos outro método de armazenamento mais direto, OP_RETURN, e explicaremos por que ele não foi utilizado como meio de inscrições. Ao mesmo tempo, apresentaremos o que são testemunha segregada e pagamento ao taproot, e qual papel desempenham na inscrição. Por fim, introduziremos como as inscrições são feitas.

OP_RETURE

Na versão 0.9 do cliente Bitcoin Core, um compromisso foi finalmente alcançado usando o operador RETURN. **RETURN permite que os desenvolvedores adicionem 80 bytes de dados não relacionados ao pagamento à saída da transação. **Ao contrário de pagamentos falsos, RETURN cria uma saída inequívoca, verificável e não consumível; tais dados não precisam ser armazenados em um conjunto UTXO. As saídas RETURN são registradas na blockchain. Elas consomem espaço em disco e também fazem com que a blockchain cresça em tamanho, mas como não são armazenadas na concentração UTXO, elas não aumentam o pool de memória UTXO, muito menos aumentam o custo de memória caro de todo o nó.

Embora o OP_RETURN seja um meio muito direto de armazenar informações na blockchain do Bitcoin, também é um método potencial de inscrição. No entanto, as limitações do OP_RETURN fazem com que ele enfrente alguns desafios ao lidar com o armazenamento de metadados. Em primeiro lugar, o OP_RETURN só pode armazenar 80 bytes de dados, e em situações em que quantidades maiores de dados precisam ser armazenadas, essa limitação é claramente impossível de atender. Em segundo lugar, os dados do OP_RETURN são armazenados na seção de saída da transação. Embora esses dados não sejam armazenados centralmente em UTXO, ocupam espaço de armazenamento na blockchain, levando a um aumento no tamanho da blockchain. Por fim, o uso do OP_RETURN resulta em taxas de transação mais altas, pois requer o pagamento de mais para postar essas transações.

Testemunha de quarentena

Em contraste, o SegWit oferece uma nova abordagem que pode superar esses problemas. O SegWit é uma atualização de protocolo importante para o Bitcoin. Foi proposto pelo desenvolvedor principal do Bitcoin, Pieter Wuille, em 2015 e finalmente adotado oficialmente na versão 0.16.0 em 2017. Segregado em testemunha segregada significa separação ou isolamento, e a testemunha é uma assinatura relacionada a uma transação. Portanto, o SegWit separa certos dados de assinatura de transação (dados de testemunha) das transações.

O principal benefício de separar assinaturas dos dados relacionados à transação é a redução no tamanho dos dados armazenados em um bloco de Bitcoin. Dessa forma, cada bloco tem capacidade extra para armazenar mais transações, o que também significa que a rede pode processar mais transações e o remetente paga taxas de processamento mais baixas. Tecnicamente falando, as informações da assinatura do script (scriptSig) são retiradas da estrutura básica (bloco base) e colocadas em uma nova estrutura de dados. Nós e mineradores que realizam o trabalho de verificação também verificarão as assinaturas de script nessa nova estrutura de dados para garantir que as transações sejam válidas. A atualização Segwit introduziu um novo campo de testemunha na saída da transação para garantir privacidade e desempenho. Embora os dados de testemunha não sejam projetados para armazenamento de dados, na realidade, nos dá a oportunidade de armazenar coisas como metadados de inscrição. Vamos usar a seguinte imagem para entender melhor a testemunha de quarentena:

Taproot

P2TR é um tipo de saída de transação para Bitcoin. Foi introduzido na atualização Taproot em 2021. Permite que diferentes condições de transação sejam armazenadas de forma mais privada na blockchain. Na inscrição dos Ordinais, P2TR desempenha um papel crítico. A inscrição essencialmente incorpora conteúdo de dados específicos em transações Bitcoin, e as atualizações do Taproot, particularmente P2TR, tornaram esses dados incorporados mais flexíveis e econômicos.

Primeiro, devido ao método de armazenamento de scripts Taproot, podemos armazenar o conteúdo da inscrição nos scripts de despesa do caminho do script Taproot. Esses scripts têm quase nenhuma restrição de conteúdo e, ao mesmo tempo, também podem obter descontos nos dados de testemunha, tornando relativamente econômico armazenar o conteúdo da inscrição. Como o consumo do script Taproot só pode ser feito a partir da saída do Taproot que já existe, a inscrição usa um processo de submissão/revelação em duas etapas. Primeiro, ao submeter uma transação, foi criada uma saída Taproot que prometia um script contendo o conteúdo da inscrição. Em seguida, na transação de revelação, a saída criada ao submeter a transação foi consumida, revelando assim o conteúdo da inscrição na cadeia.

Esta abordagem reduziu significativamente o consumo de recursos. Se P2TR não for usado, as informações de testemunho são armazenadas na saída da transação. Dessa forma, enquanto essa saída não for consumida, as informações de testemunho sempre serão armazenadas no pool UTXO. Por outro lado, se P2TR for usado, as informações de testemunho não aparecerão nas transações geradas durante a fase de envio, portanto, não serão gravadas no conjunto UTXO. Somente quando esse UTXO for gasto, as informações de testemunho aparecerão na entrada da transação durante a fase de divulgação. P2TR permite que metadados sejam escritos no blockchain do Bitcoin, mas nunca aparece no UTXO. Como a manutenção/modificação dos conjuntos UTXO requer mais recursos, esta abordagem pode economizar recursos significativos.

inscrições

O protocolo Ordinals usou o SegWit para relaxar as restrições de tamanho no conteúdo escrito na rede Bitcoin, armazenando o conteúdo da inscrição em dados de testemunhas. Ele permite que ele armazene até 4MB de metadados. O Taproot facilita o armazenamento de dados arbitrários de testemunhas em transações de Bitcoin, permitindo que o desenvolvedor do Ordinals, Casey Rodarmor, reutilize opcodes antigos (OP_FALSE, OP_IF OP_PUSH) para armazenar dados arbitrários no que ele descreveu como um "envelope" chamado "inscrição".

O processo de lançar uma inscrição consiste nos seguintes dois passos:

Primeiro, é necessário criar uma promessa na transação de envio para a saída Taproot do script contendo o conteúdo da inscrição. O formato de armazenamento é Taproot, ou seja, a saída da transação anterior é P2TR (Pay-To-Taproot), e a entrada da última transação incorpora o conteúdo em um formato específico no script Taproot testemunhado; a string ord é primeiro empilhada para eliminar a ambiguidade de que a inscrição tem outros usos. OP_PUSH 1 indica que o próximo push contém o tipo de conteúdo, e OP_PUSH 0 indica que os próximos push de dados incluem o conteúdo em si. Inscrições grandes devem usar vários push de dados porque uma das poucas limitações do taproot é que um único push de dados não pode ser maior que 520 bytes. Neste ponto, os dados da inscrição foram aplicados à saída UTXO da transação, mas ainda não foram divulgados.

Em segundo lugar, é necessário revelar a saída criada pela transação de submissão de compra na transação. Nesta fase, a transação é iniciada usando o UTXO correspondente a essa inscrição como entrada. Neste ponto, o conteúdo da inscrição correspondente foi tornada pública para toda a rede.

Através dos dois passos acima, o conteúdo da inscrição foi vinculado ao UTXO gravado. Além disso, de acordo com a posição de Satoshi descrita acima, a inscrição é realizada no primeiro Satoshi correspondente à entrada UTXO, e o conteúdo da inscrição é incluído na entrada mostrando a transação. De acordo com a introdução à circulação e rastreamento de Satoshi descrita acima, este Satoshi, que é gravado com conteúdo especial, pode ser transferido, comprado, vendido, perdido e recuperado. Note que as inscrições não podem ser repetidas, caso contrário as inscrições subsequentes não serão válidas.

Vamos explicar este processo em detalhes, fazendo a inscrição de um exemplo de uma pequena imagem NFT de BTC. Este processo inclui principalmente as duas etapas de submissão (commit) e divulgação (reveal) mencionadas anteriormente. Primeiro, vemos que o ID do Hash para a primeira transação é 2ddf9... f585c. Pode-se notar que a saída desta transação não incluiu dados de testemunha, e não houve uma inscrição relevante na página.

A seguir, vamos analisar o registro da segunda etapa. O ID de hash é e7454... 7c0e1. Aqui, podemos ver as informações sobre a Inscrição Ordinal, ou seja, o conteúdo da inscrição da testemunha. O endereço de entrada para esta transação é o endereço de saída da transação anterior, e a saída 0.00000546 BTC (546 Satoshi) está enviando este NFT para seu próprio endereço. Ao mesmo tempo, também podemos usar Sat Find Satoshi onde esta inscrição está localizada em 1893640468329373.

Na carteira Bitcoin, podemos ver este ativo. Se quisermos negociar este NFT, podemos enviá-lo diretamente para o endereço de outra pessoa, ou seja, enviar este UTXO, e isso completa a circulação da inscrição.

4. Carteiras Bitcoin

Depois de termos aprendido sobre o ecossistema dos Ordinais, a circulação de Satoshi e conhecimentos relacionados sobre inscrições, atualmente existem muitos cenários de aplicação. Seja o surgimento de acordos derivados relacionados como BRC-20, ORC-20, BRC-721, GBRC-721, etc., precisamos de uma carteira correspondente para suportar e exibir informações do token ou pequenas imagens de NFT. Nesta seção, apresentaremos os conceitos e características de diferentes endereços de carteira Bitcoin.

Os endereços Bitcoin começam com 1, 3 ou bc1. Assim como os endereços de e-mail, eles podem ser compartilhados com outros usuários de Bitcoin que podem usá-los para enviar bitcoins diretamente para suas carteiras. Do ponto de vista da segurança, os endereços Bitcoin não têm nenhum conteúdo sensível. Eles podem ser postados em qualquer lugar sem comprometer a segurança da conta. Ao contrário dos endereços de e-mail, podemos criar novos endereços sempre que precisarmos, todos os quais depositarão fundos diretamente em sua carteira. Na verdade, muitas carteiras modernas criam automaticamente um novo endereço para cada transação a fim de maximizar a privacidade. Uma carteira é simplesmente uma coleção de endereços e chaves para desbloquear os fundos nela. Primeiro, precisamos saber como o endereço da carteira Bitcoin é gerado.

Chaves privadas e públicas do Bitcoin

Bitcoin usa uma curva elíptica secp256k1. A “chave privada” é um número aleatório entre 1 e n-1. n é um número grande (256 bits), e n é expresso em notação científica cerca de 1,15792*10^77. O escopo é enorme, e é quase impossível para nós adivinharmos as chaves privadas de outras pessoas. Esta chave privada inteira aleatória pode ser usada 256 bits indicam que há muitas maneiras de codificar. Se a chave privada usando WIF ou WIF-comprimida não estiver criptografada, o “número inteiro aleatório” original pode ser obtido decodificando. Outro método é o BIP38. É proposto usar o algoritmo AES para criptografar a chave privada. A chave privada obtida por este esquema começa com o caractere 6P. Esta chave privada deve ser importada em várias carteiras Bitcoin. Esta é a chave privada que costumamos usar.

Em seguida, usaremos a fórmula da curva elíptica K = kG para gerar a chave pública do Bitcoin K a partir da chave privada k. G é o ponto base, que é um parâmetro de secp256k1. Você pode obter as duas coordenadas de K, que são as duas expressões da chave pública, respectivamente, "formato não compactado" e "formato compactado".

  1. A forma não compactada é conectar diretamente as duas coordenadas x e y e depois adicionar um prefixo 0x04 na frente;
  2. A forma comprimida é quando y é um número par, o código é 02 x e quando y é um número ímpar, o código é 03 x;

Endereço Bitcoin

Os vários tipos de endereços Bitcoin podem ser vistos na figura seguinte. Existem quatro maneiras de os expressar:

1. Formato Legacy (P2PKH)

Exemplo: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Endereços que começam com “1” são o formato de endereço original do Bitcoin e ainda estão em uso hoje. Obtidos da chave pública através do cálculo do hash, também conhecido como P2PKH, é uma abreviação de Pagamento Para Hash de Chave Pública (pagamento para hash de chave pública).

2. Formato SegWit aninhado (P2SH)

Exemplo: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

Os endereços começam com “ 3 “. P2SH é uma abreviatura de Pay To Script Hash (Pagamento para Script Hash), que suporta recursos mais complexos do que os endereços Legacy. P2SH aninhado obtém um endereço P2SH existente (começando com “3”) e o encapsula com o endereço SegWit.

3. Formato SegWit Nativo (Bech32)

Os endereços que começam com bc1 foram propostos no BIP0173; eles são endereços nativos de testemunha de quarentena. O endereço codificado em Bech32 é um formato de endereço especialmente desenvolvido para SegWit. Bech32 foi definido no BIP173 no final de 2017. Uma das principais características deste formato é que ele não é sensível a maiúsculas e minúsculas (o endereço contém apenas 0-9, az), então pode evitar efetivamente confusão e é mais fácil de ler ao digitar. Como menos caracteres são necessários no endereço, o endereço usa codificação Base32 em vez da tradicional Base58, o que é mais conveniente e eficiente para calcular. Os dados podem ser armazenados de forma mais compacta em um código QR. Bech32 fornece uma segurança maior, otimiza melhor os códigos de verificação e detecção de erros e minimiza a chance de endereços inválidos.

O próprio endereço Bech32 é compatível com SegWit. Não há espaço adicional necessário para colocar o endereço SegWit no endereço P2SH, então, ao usar um endereço no formato Bech32, a taxa de processamento será menor. Os endereços Bech32 têm várias vantagens sobre os antigos endereços Base58 (a codificação Base58Check é usada para codificar matrizes de bytes em Bitcoin em strings codificáveis por humanos): os códigos QR são menores; eles são mais à prova de erros; eles são mais seguros; eles não são sensíveis a maiúsculas e minúsculas; eles são compostos apenas por letras minúsculas, então são mais fáceis de ler, digitar e entender.

Formato Taproot (P2TR)

Bech32 tem uma desvantagem: se o último caractere no endereço for p, inserir ou excluir qualquer número de caracteres q imediatamente antes de p não invalidará seu checksum.

Para mitigar as deficiências acima do Bech32, o endereço Bech32M foi proposto no BIP0350:

  1. Para endereços nativos de testemunha segregada com a versão 0, use o Bech32 anterior;
  2. Para endereços de testemunha de quarentena nativa com versão 1 (ou superior), use o novo Bech32M.

Para endereços Bech32M, quando a versão é 1, eles sempre começam com bc1p (ou seja, endereço Taproot). Especificamente, como uma testemunha de quarentena local, uma carteira pode consistir em uma frase-semente e uma senha. Estes são usados para gerar chaves públicas e privadas estendidas, e são usados para derivar endereços para caminhos arbitrários em carteiras determinísticas hierárquicas. Principalmente NFTs que armazenam BRC-20 e BTC.

5. Sobre Nós

Spectrum Labs é uma equipe de mestres e doutores focados em pesquisa de blockchain, bem como veteranos na indústria de blockchain. Estamos comprometidos com a tecnologia de pesquisa de blockchain e suas aplicações para ajudar as pessoas a entender melhor o blockchain. O principal negócio da Spectrum Labs inclui escrever relatórios de pesquisa, cursos e desenvolvimento de ferramentas.

A Comunidade Chinesa de BTC NFT é uma plataforma de câmbio chinês de BTC NFT para novatos chineses de todo o mundo.

Aviso Legal:

  1. Este artigo é reproduzido a partir de [Laboratório de Espectro]. Todos os direitos autorais pertencem ao autor original [Ash Li, Noah Ho]. Se houver objeções a esta reimpressão, entre em contato com o Portão Aprenderequipe e eles vão lidar com isso prontamente.
  2. Isenção de Responsabilidade: As opiniões expressas neste artigo são exclusivamente do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outros idiomas são feitas pela equipe Gate Learn. A menos que seja mencionado, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Start Now
Sign up and get a
$100
Voucher!