Aprenda os princípios do Protocolo Ordinais e inscrições de Bitcoin num artigo

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

Com o nascimento do Protocolo Ordinals, proporcionou 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 aprofundar os detalhes do Protocolo Ordinal, incluindo como cada Bitcoin é numerado e rastreado, e a relação entre inscrições e números. Mas antes de nos aprofundarmos neste tópico, precisamos primeiro compreender alguns antecedentes básicos do Bitcoin para nos ajudar a entender melhor o que está por vir.

Após ler este artigo, 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, aprenderá sobre as diferenças entre os diferentes tipos de carteiras.

I. Antecedentes do Bitcoin

O Bitcoin utiliza um modelo de transação semelhante ao de dinheiro (sistema de dinheiro) e o seu método de pagamento é baseado num modelo chamado UTXO, que é diferente do modelo tradicional baseado em saldos de contas. Por exemplo, no processo de modelagem de contabilidade de contas de um banco, quando A transfere 100 yuan para B, o banco regista três passos. Estes três passos formam um processo de transação. O primeiro passo é deduzir 100 yuan da conta de A. O ID de registo para este passo é tid1. O segundo passo é depositar 100 yuan na conta de B. O ID de registo para este passo é tid2. O terceiro passo é registar um registo de transferência. Este registo liga tid1 e tid2, indicando uma redução de 100 yuan para a conta A e um aumento de 100 yuan para a conta B. Desta forma, a relação de transferência entre A e B é registada e pode ser consultada e seguida no futuro. Agora, vamos explicar os métodos de pagamento do Bitcoin através de uma introdução aos modelos de UTXO e de pagamento.

UTXO

Na blockchain do Bitcoin, todos os saldos são armazenados numa 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 estão disponíveis. Pense nisso como um cheque em dinheiro com o nome do titular. Desde que o titular o assine, pode transferir o direito de o usar para outra pessoa. Para um endereço específico, todas as quantidades 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 quantidades 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. Apenas 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 UTXOs, indicando que foram consumidos, e a saída da transação gerará um novo UTXO e será adicionado à lista de UTXOs. Pode-se entender que um antigo cheque foi usado e depois se tornou inválido, criando um novo cheque, que passou a ser propriedade do novo detentor.

Vale a pena enfatizar que cada UTXO só pode ser utilizado uma vez em uma única transação. Uma vez que é consumido como entrada, é permanentemente removido da lista UTXO. Entretanto, a saída recém-gerada é adicionada à lista como um novo UTXO. A lista UTXO está em constante mudança e, à medida que cada novo bloco é criado, é atualizada em conformidade. Além disso, ao analisar o histórico de transações na blockchain, somos capazes de reconstruir o estado da lista UTXO em qualquer momento dado.

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 mineiros responsáveis por empacotar 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 compreender melhor a estrutura da transação de Bitcoin, faremos uma análise aprofundada através de um exemplo específico. A estrutura da transação de Bitcoin é a seguinte. As duas variáveis vin e vout representam o "input" e "output" de uma transação de Bitcoin, respetivamente. As transações de Bitcoin não são como os modelos tradicionais de saldo de conta que registam alterações nos dados da conta, mas são expressas através do input e output.

Podemos selecionar aleatoriamente um registo de transação em blockchain.com para analisar. A figura abaixo mostra que o ID de hash é uma transação de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Contém uma entrada e dois resultados.

Ao utilizar 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 o montante (em bitcoins). Se a saída de uma transação não é usada na entrada de outra transação, então esta saída de transação é chamada de saída de transação não gasta (UTXO). Quem tem a chave privada correspondente à chave pública em UTXO tem o direito de usar (ou seja, gastar) esta UTXO.

Vamos analisar 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 das 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 pesquisar as 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 ao titular até que outra transação os consuma como entrada.

  1. Para o utilizador A, é primeiro necessário determinar todos os conjuntos de UTXO que possui, ou seja, todas as bitcoins que o utilizador A pode controlar;
  2. A seleciona um ou mais UTXOs deste conjunto como entrada para a transação. A soma dos montantes destas entradas é m (2+0.8+0.5 = 3.3 BTC) é maior do que o montante a ser pago n (3 BTC);
  3. O Utilizador A define duas saídas para a transação. Uma saída é paga para o endereço de B, o montante é n (3 BTC), e a outra saída é paga para o próprio endereço de zero de A. O montante é m-n-taxa (3.3-3-0.001 = 0.299) BTC). A carteira do utilizador geralmente consiste em vários endereços. Normalmente, cada endereço é utilizado apenas uma vez, e o zero é devolvido a um novo endereço por padrão;
  4. Depois de o minerador embalar esta transação na cadeia e confirmá-la, B pode receber a informação da transação. Como existe um limite superior de tamanho de bloco (cerca de 1 MB), os mineradores dão prioridade à confirmação de transações com uma alta taxa de transação (fee_rate=fee/size) para obter o maior retorno de taxa. Podemos ver a situação da taxa de transação de mineração em tempo real em mempool. Se 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. Número e Rastreamento de Satoshi

O número total de Bitcoins é 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 Ordinals distingue estes Satoshi e numera cada Satoshi de forma única. Esta secção explica como este acordo numera cada Satoshi de forma única e rastreia a conta em que se encontra. Além disso, a classificação de raridade para Satoshi também será introduzida.

número de Satoshi

De acordo com o Acordo Ordinal, 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 metade da era, 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 percentuais: Por exemplo, 99.99971949060254%, indicam a posição de Satoshi no fornecimento de Bitcoin, expressa como uma percentagem.
  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 registou 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 olharmos para a entrada na imagem abaixo, podemos ver que o seu ID de UTxO consiste em uma sequência de zeros e a altura do bloco. O endereço de saída é o endereço da carteira do minerador, e o montante é a soma das recompensas e taxas acima.

Se olharmos mais de perto para a secção de saída para mineiros, podemos ver o endereço, a quantidade e a distribuição de Satoshi incluídos. Como mencionado anteriormente, estes incluem recompensas de mineração e taxas. Entre eles, a informação do número SATS verde 1941220000000000-1941220625000000 é um novo Satoshi gerado por recompensas de mineração, e os restantes 712 registos de Satoshi correspondem a todas as taxas de processamento neste bloco.

Podemos verificar o número Sat 1941220000000000. O 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 está marcada como incomum, o que iremos abordar com mais detalhe nas secções seguintes.

Circulação inteligente

Porque todos os BTC são gerados através de recompensas de mineração, todos eles são rastreáveis. As contas de Bitcoin usam o modelo UTXO. Vamos dizer 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 quer 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 os IDs abc456 e abc789, respectivamente. O número de IDs de UTXO e Satoshi mencionados acima é apenas mostrado como um exemplo. Em circunstâncias reais, o número mínimo de Satoshi enviado é limitado a 546, e os IDs de UTXO não são expressos desta forma.

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

  1. 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" é utilizado 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 primeiro o usuário A, depois o usuário B, então os 5 números de série 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 (Raro Satoshi)

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 rara são os diferentes tipos de audição:

  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 é de 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 é 32)
  5. LEGENDÁRIO LEGENDÁRIO LEGENDÁRIO: O primeiro Satoshi de cada ciclo (o fornecimento total é de 5)
  6. Nível Mítico Mítico: O primeiro Satoshi no bloco Genesis (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

Ordinais são significativamente diferentes de outros NFTs não-Bitcoin on-chain. Entre eles, a principal diferença é que os metadados do Ordinais não são armazenados num local específico. Em vez disso, estes metadados são incorporados nos dados de testemunho da transação (campo de testemunho), razão pela qual os chamamos de "inscrição (inscription)", pois estes dados são "gravados" como uma inscrição numa parte específica de uma transação Bitcoin, e estes dados estão ligados a um Satoshi específico. Este processo de inscrição é alcançado através de testemunha segregada (SegWit) e "pay-to-taproot (P2TR)" (pagar a taproot (P2TR)). Inclui duas etapas de submissão (commit) e divulgação (reveal), e pode gravar qualquer forma de conteúdo (como texto, imagem ou vídeo) no quadro inteligente designado. Vamos introduzir outro método de armazenamento mais direto OP_RETURN abaixo e explicar por que não foi usado como meio de inscrições. Ao mesmo tempo, vamos introduzir o que é a testemunha segregada e pay-to-taproot, e que papel desempenham na inscrição. No final, vamos introduzir como as inscrições são feitas.

OP_RETURE

Na versão 0.9 do cliente Bitcoin Core, finalmente foi alcançado um compromisso usando o operador RETURN. **RETURN permite aos desenvolvedores adicionar 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 inconsumível verificável inequivocamente; 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 expandem o pool de memória UTXO, muito menos aumentam o custo oneroso de memória 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 de inscrição potencial. No entanto, as limitações do OP_RETURN fazem com que enfrente alguns desafios ao lidar com o armazenamento de metadados. Em primeiro lugar, o OP_RETURN só pode armazenar 80 bytes de dados, e para situações em que quantidades maiores de dados precisam ser armazenadas, essa limitação é claramente impossível de ser atendida. 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, eles 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

Por outro lado, o SegWit fornece 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 no testemunho segregado significa separação ou isolamento, e testemunho é 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 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 de script de assinatura (scriptSig) são retiradas da estrutura básica (bloco base) e colocadas em uma nova estrutura de dados. Nós e mineradores que fazem o trabalho de verificação também verificarão as assinaturas de script nesta 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 testemunho não sejam destinados ao armazenamento de dados, na verdade nos dá a oportunidade de armazenar coisas como metadados de inscrição. Vamos usar a seguinte imagem para entender melhor o testemunho 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 mais privadamente 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 de Bitcoin, e as atualizações do Taproot, particularmente o 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. Estes 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. Uma vez que o consumo do script Taproot só pode ser feito a partir da saída do Taproot que já existe, a inscrição utiliza um processo de submissão/revelação em duas etapas. Primeiro, ao submeter uma transação, foi criada uma saída de Taproot que prometia um script contendo o conteúdo da inscrição. Depois, 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 o P2TR não for usado, as informações de testemunho são armazenadas na saída da transação. Dessa forma, desde que esta saída não seja consumida, as informações de testemunho serão sempre armazenadas no pool de UTXO. Por outro lado, se o P2TR for usado, as informações de testemunho não aparecerão nas transações geradas durante a fase de submissão, portanto, não serão escritas no conjunto de UTXO. Apenas quando este UTXO for gasto, as informações de testemunho aparecerão na entrada da transação durante a fase de divulgação. O P2TR permite que os metadados sejam escritos na blockchain do Bitcoin, mas nunca aparecem em UTXO. Como a manutenção/modificação dos conjuntos de UTXO requer mais recursos, esta abordagem pode economizar recursos significativos.

inscrições

O protocolo Ordinals usou SegWit para relaxar as restrições de tamanho sobre o conteúdo escrito na rede Bitcoin, armazenando o conteúdo de inscrição em dados de testemunha. Isso permite armazenar até 4MB de metadados. Taproot torna mais fácil armazenar dados de testemunha arbitrários em transações Bitcoin, permitindo que o desenvolvedor Ordinals Casey Rodarmor reutilize antigas opcodes (OP_FALSE, OP_IF, OP_PUSH) para armazenar dados arbitrários em uma espécie de "envelope" chamado de "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 que contém o conteúdo da inscrição. O formato de armazenamento é Taproot, ou seja, a saída da transação anterior é P2TR (Pagar-Para-Taproot), e a entrada da última transação incorpora 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 pushes de dados incluem o próprio conteúdo. Inscrições grandes devem usar vários pushes 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 não foram divulgados.

Em segundo lugar, é necessário revelar a saída criada pela transação de envio 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 tornado público 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 detalhe, inscrevendo um exemplo de uma pequena imagem NFT de BTC. Este processo inclui principalmente as duas fases de submissão (commit) e divulgação (reveal) mencionadas anteriormente. Primeiro, vemos que o ID de 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 registo da segunda fase. 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 de 0.00000546 BTC (546 Satoshi) está a enviar este NFT para o 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, existem atualmente muitos cenários de aplicação. Quer 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 de token ou pequenas imagens NFT. Nesta seção, vamos introduzir os conceitos e características de diferentes endereços de carteira Bitcoin.

Os endereços Bitcoin começam com 1, 3 ou bc1. Tal como os endereços de email, podem ser partilhados com outros utilizadores de Bitcoin que os podem usar para enviar bitcoins diretamente para as suas carteiras. Do ponto de vista da segurança, os endereços Bitcoin não contêm qualquer conteúdo sensível. Podem ser publicados em qualquer lugar sem comprometer a segurança da conta. Ao contrário dos endereços de email, podemos criar novos endereços sempre que necessário, todos os quais depositarão fundos diretamente na sua carteira. De facto, muitas carteiras modernas criam automaticamente um novo endereço para cada transação para maximizar a privacidade. Uma carteira é simplesmente uma coleção de endereços e chaves para desbloquear os fundos nela. Primeiro, precisamos de saber como é gerado o endereço da carteira Bitcoin.

Chaves privadas e públicas do Bitcoin

O 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 alcance é enorme, e é quase impossível para nós adivinhar as chaves privadas de outras pessoas. Esta chave privada inteira aleatória pode ser usada 256 bits indicam que existem muitas maneiras de codificar. Se a chave privada usando WIF ou WIF-comprimido não estiver criptografada, o “número inteiro aleatório” original pode ser obtido por decodificação. 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 para várias carteiras de Bitcoin. Esta é a chave privada que normalmente usamos.

Então, 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, "Formato não comprimido" e "Formato comprimido", respectivamente.

  1. A forma não comprimida é conectar diretamente as duas coordenadas x e y e depois adicionar um prefixo 0x04 à 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

Os 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 a partir da chave pública através do cálculo de hash, também conhecido como P2PKH, é uma abreviatura de Pagamento para Hash da Chave Pública (pagamento para hash da 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 (Pagar Para o Hash do Script), que suporta funcionalidades mais complexas do que os endereços Legacy. O P2SH aninhado obtém um endereço P2SH existente (que começa com “3”) e encapsula-o com o endereço SegWit.

3.Formato Native SegWit (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 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 não é sensível a maiúsculas e minúsculas (o endereço contém apenas 0-9, az), o que pode evitar eficazmente confusões e é mais fácil de ler ao introduzir. Como são necessários menos caracteres no endereço, o endereço utiliza 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 num código QR. Bech32 fornece maior segurança, otimiza melhor os códigos de verificação e deteção de erros e minimiza a chance de endereços inválidos.

O próprio endereço Bech32 é compatível com SegWit. Não é necessário espaço adicional para colocar o endereço SegWit no endereço P2SH, portanto, ao usar um endereço no formato Bech32, a taxa de processamento será menor. Os endereços Bech32 têm várias vantagens em relação aos 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, portanto, são mais fáceis de ler, digitar e entender.

4. 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 de testemunha segregada nativos com versão 0, use o Bech32 anterior;
  2. Para endereços 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 hierárquicas determinísticas. Principalmente NFTs que armazenam BRC-20 e Bitcoin.

5. Sobre Nós

A Spectrum Labs é uma equipa de mestres e doutorados focada na investigação em blockchain, bem como veteranos na indústria da blockchain. Estamos empenhados na tecnologia de cadeia de investigação em blockchain e nas suas aplicações para ajudar as pessoas a compreender melhor a blockchain. O principal negócio da Spectrum Labs inclui a escrita de relatórios de investigação, a preparação de cursos e o desenvolvimento de ferramentas.

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

Aviso legal:

  1. Este artigo é reproduzido a partir de [Laboratório Spectrum]. Todos os direitos de autor pertencem ao autor original [Ash Li, Noah Ho]. Se houver objeções a esta reimpressão, entre em contato com o Gate Learnequipa e eles tratarão disso prontamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as 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. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.

Aprenda os princípios do Protocolo Ordinais e inscrições de Bitcoin num artigo

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

Com o nascimento do Protocolo Ordinals, proporcionou 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 aprofundar os detalhes do Protocolo Ordinal, incluindo como cada Bitcoin é numerado e rastreado, e a relação entre inscrições e números. Mas antes de nos aprofundarmos neste tópico, precisamos primeiro compreender alguns antecedentes básicos do Bitcoin para nos ajudar a entender melhor o que está por vir.

Após ler este artigo, 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, aprenderá sobre as diferenças entre os diferentes tipos de carteiras.

I. Antecedentes do Bitcoin

O Bitcoin utiliza um modelo de transação semelhante ao de dinheiro (sistema de dinheiro) e o seu método de pagamento é baseado num modelo chamado UTXO, que é diferente do modelo tradicional baseado em saldos de contas. Por exemplo, no processo de modelagem de contabilidade de contas de um banco, quando A transfere 100 yuan para B, o banco regista três passos. Estes três passos formam um processo de transação. O primeiro passo é deduzir 100 yuan da conta de A. O ID de registo para este passo é tid1. O segundo passo é depositar 100 yuan na conta de B. O ID de registo para este passo é tid2. O terceiro passo é registar um registo de transferência. Este registo liga tid1 e tid2, indicando uma redução de 100 yuan para a conta A e um aumento de 100 yuan para a conta B. Desta forma, a relação de transferência entre A e B é registada e pode ser consultada e seguida no futuro. Agora, vamos explicar os métodos de pagamento do Bitcoin através de uma introdução aos modelos de UTXO e de pagamento.

UTXO

Na blockchain do Bitcoin, todos os saldos são armazenados numa 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 estão disponíveis. Pense nisso como um cheque em dinheiro com o nome do titular. Desde que o titular o assine, pode transferir o direito de o usar para outra pessoa. Para um endereço específico, todas as quantidades 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 quantidades 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. Apenas 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 UTXOs, indicando que foram consumidos, e a saída da transação gerará um novo UTXO e será adicionado à lista de UTXOs. Pode-se entender que um antigo cheque foi usado e depois se tornou inválido, criando um novo cheque, que passou a ser propriedade do novo detentor.

Vale a pena enfatizar que cada UTXO só pode ser utilizado uma vez em uma única transação. Uma vez que é consumido como entrada, é permanentemente removido da lista UTXO. Entretanto, a saída recém-gerada é adicionada à lista como um novo UTXO. A lista UTXO está em constante mudança e, à medida que cada novo bloco é criado, é atualizada em conformidade. Além disso, ao analisar o histórico de transações na blockchain, somos capazes de reconstruir o estado da lista UTXO em qualquer momento dado.

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 mineiros responsáveis por empacotar 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 compreender melhor a estrutura da transação de Bitcoin, faremos uma análise aprofundada através de um exemplo específico. A estrutura da transação de Bitcoin é a seguinte. As duas variáveis vin e vout representam o "input" e "output" de uma transação de Bitcoin, respetivamente. As transações de Bitcoin não são como os modelos tradicionais de saldo de conta que registam alterações nos dados da conta, mas são expressas através do input e output.

Podemos selecionar aleatoriamente um registo de transação em blockchain.com para analisar. A figura abaixo mostra que o ID de hash é uma transação de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Contém uma entrada e dois resultados.

Ao utilizar 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 o montante (em bitcoins). Se a saída de uma transação não é usada na entrada de outra transação, então esta saída de transação é chamada de saída de transação não gasta (UTXO). Quem tem a chave privada correspondente à chave pública em UTXO tem o direito de usar (ou seja, gastar) esta UTXO.

Vamos analisar 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 das 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 pesquisar as 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 ao titular até que outra transação os consuma como entrada.

  1. Para o utilizador A, é primeiro necessário determinar todos os conjuntos de UTXO que possui, ou seja, todas as bitcoins que o utilizador A pode controlar;
  2. A seleciona um ou mais UTXOs deste conjunto como entrada para a transação. A soma dos montantes destas entradas é m (2+0.8+0.5 = 3.3 BTC) é maior do que o montante a ser pago n (3 BTC);
  3. O Utilizador A define duas saídas para a transação. Uma saída é paga para o endereço de B, o montante é n (3 BTC), e a outra saída é paga para o próprio endereço de zero de A. O montante é m-n-taxa (3.3-3-0.001 = 0.299) BTC). A carteira do utilizador geralmente consiste em vários endereços. Normalmente, cada endereço é utilizado apenas uma vez, e o zero é devolvido a um novo endereço por padrão;
  4. Depois de o minerador embalar esta transação na cadeia e confirmá-la, B pode receber a informação da transação. Como existe um limite superior de tamanho de bloco (cerca de 1 MB), os mineradores dão prioridade à confirmação de transações com uma alta taxa de transação (fee_rate=fee/size) para obter o maior retorno de taxa. Podemos ver a situação da taxa de transação de mineração em tempo real em mempool. Se 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. Número e Rastreamento de Satoshi

O número total de Bitcoins é 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 Ordinals distingue estes Satoshi e numera cada Satoshi de forma única. Esta secção explica como este acordo numera cada Satoshi de forma única e rastreia a conta em que se encontra. Além disso, a classificação de raridade para Satoshi também será introduzida.

número de Satoshi

De acordo com o Acordo Ordinal, 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 metade da era, 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 percentuais: Por exemplo, 99.99971949060254%, indicam a posição de Satoshi no fornecimento de Bitcoin, expressa como uma percentagem.
  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 registou 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 olharmos para a entrada na imagem abaixo, podemos ver que o seu ID de UTxO consiste em uma sequência de zeros e a altura do bloco. O endereço de saída é o endereço da carteira do minerador, e o montante é a soma das recompensas e taxas acima.

Se olharmos mais de perto para a secção de saída para mineiros, podemos ver o endereço, a quantidade e a distribuição de Satoshi incluídos. Como mencionado anteriormente, estes incluem recompensas de mineração e taxas. Entre eles, a informação do número SATS verde 1941220000000000-1941220625000000 é um novo Satoshi gerado por recompensas de mineração, e os restantes 712 registos de Satoshi correspondem a todas as taxas de processamento neste bloco.

Podemos verificar o número Sat 1941220000000000. O 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 está marcada como incomum, o que iremos abordar com mais detalhe nas secções seguintes.

Circulação inteligente

Porque todos os BTC são gerados através de recompensas de mineração, todos eles são rastreáveis. As contas de Bitcoin usam o modelo UTXO. Vamos dizer 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 quer 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 os IDs abc456 e abc789, respectivamente. O número de IDs de UTXO e Satoshi mencionados acima é apenas mostrado como um exemplo. Em circunstâncias reais, o número mínimo de Satoshi enviado é limitado a 546, e os IDs de UTXO não são expressos desta forma.

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

  1. 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" é utilizado 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 primeiro o usuário A, depois o usuário B, então os 5 números de série 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 (Raro Satoshi)

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 rara são os diferentes tipos de audição:

  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 é de 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 é 32)
  5. LEGENDÁRIO LEGENDÁRIO LEGENDÁRIO: O primeiro Satoshi de cada ciclo (o fornecimento total é de 5)
  6. Nível Mítico Mítico: O primeiro Satoshi no bloco Genesis (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

Ordinais são significativamente diferentes de outros NFTs não-Bitcoin on-chain. Entre eles, a principal diferença é que os metadados do Ordinais não são armazenados num local específico. Em vez disso, estes metadados são incorporados nos dados de testemunho da transação (campo de testemunho), razão pela qual os chamamos de "inscrição (inscription)", pois estes dados são "gravados" como uma inscrição numa parte específica de uma transação Bitcoin, e estes dados estão ligados a um Satoshi específico. Este processo de inscrição é alcançado através de testemunha segregada (SegWit) e "pay-to-taproot (P2TR)" (pagar a taproot (P2TR)). Inclui duas etapas de submissão (commit) e divulgação (reveal), e pode gravar qualquer forma de conteúdo (como texto, imagem ou vídeo) no quadro inteligente designado. Vamos introduzir outro método de armazenamento mais direto OP_RETURN abaixo e explicar por que não foi usado como meio de inscrições. Ao mesmo tempo, vamos introduzir o que é a testemunha segregada e pay-to-taproot, e que papel desempenham na inscrição. No final, vamos introduzir como as inscrições são feitas.

OP_RETURE

Na versão 0.9 do cliente Bitcoin Core, finalmente foi alcançado um compromisso usando o operador RETURN. **RETURN permite aos desenvolvedores adicionar 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 inconsumível verificável inequivocamente; 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 expandem o pool de memória UTXO, muito menos aumentam o custo oneroso de memória 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 de inscrição potencial. No entanto, as limitações do OP_RETURN fazem com que enfrente alguns desafios ao lidar com o armazenamento de metadados. Em primeiro lugar, o OP_RETURN só pode armazenar 80 bytes de dados, e para situações em que quantidades maiores de dados precisam ser armazenadas, essa limitação é claramente impossível de ser atendida. 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, eles 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

Por outro lado, o SegWit fornece 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 no testemunho segregado significa separação ou isolamento, e testemunho é 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 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 de script de assinatura (scriptSig) são retiradas da estrutura básica (bloco base) e colocadas em uma nova estrutura de dados. Nós e mineradores que fazem o trabalho de verificação também verificarão as assinaturas de script nesta 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 testemunho não sejam destinados ao armazenamento de dados, na verdade nos dá a oportunidade de armazenar coisas como metadados de inscrição. Vamos usar a seguinte imagem para entender melhor o testemunho 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 mais privadamente 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 de Bitcoin, e as atualizações do Taproot, particularmente o 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. Estes 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. Uma vez que o consumo do script Taproot só pode ser feito a partir da saída do Taproot que já existe, a inscrição utiliza um processo de submissão/revelação em duas etapas. Primeiro, ao submeter uma transação, foi criada uma saída de Taproot que prometia um script contendo o conteúdo da inscrição. Depois, 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 o P2TR não for usado, as informações de testemunho são armazenadas na saída da transação. Dessa forma, desde que esta saída não seja consumida, as informações de testemunho serão sempre armazenadas no pool de UTXO. Por outro lado, se o P2TR for usado, as informações de testemunho não aparecerão nas transações geradas durante a fase de submissão, portanto, não serão escritas no conjunto de UTXO. Apenas quando este UTXO for gasto, as informações de testemunho aparecerão na entrada da transação durante a fase de divulgação. O P2TR permite que os metadados sejam escritos na blockchain do Bitcoin, mas nunca aparecem em UTXO. Como a manutenção/modificação dos conjuntos de UTXO requer mais recursos, esta abordagem pode economizar recursos significativos.

inscrições

O protocolo Ordinals usou SegWit para relaxar as restrições de tamanho sobre o conteúdo escrito na rede Bitcoin, armazenando o conteúdo de inscrição em dados de testemunha. Isso permite armazenar até 4MB de metadados. Taproot torna mais fácil armazenar dados de testemunha arbitrários em transações Bitcoin, permitindo que o desenvolvedor Ordinals Casey Rodarmor reutilize antigas opcodes (OP_FALSE, OP_IF, OP_PUSH) para armazenar dados arbitrários em uma espécie de "envelope" chamado de "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 que contém o conteúdo da inscrição. O formato de armazenamento é Taproot, ou seja, a saída da transação anterior é P2TR (Pagar-Para-Taproot), e a entrada da última transação incorpora 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 pushes de dados incluem o próprio conteúdo. Inscrições grandes devem usar vários pushes 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 não foram divulgados.

Em segundo lugar, é necessário revelar a saída criada pela transação de envio 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 tornado público 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 detalhe, inscrevendo um exemplo de uma pequena imagem NFT de BTC. Este processo inclui principalmente as duas fases de submissão (commit) e divulgação (reveal) mencionadas anteriormente. Primeiro, vemos que o ID de 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 registo da segunda fase. 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 de 0.00000546 BTC (546 Satoshi) está a enviar este NFT para o 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, existem atualmente muitos cenários de aplicação. Quer 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 de token ou pequenas imagens NFT. Nesta seção, vamos introduzir os conceitos e características de diferentes endereços de carteira Bitcoin.

Os endereços Bitcoin começam com 1, 3 ou bc1. Tal como os endereços de email, podem ser partilhados com outros utilizadores de Bitcoin que os podem usar para enviar bitcoins diretamente para as suas carteiras. Do ponto de vista da segurança, os endereços Bitcoin não contêm qualquer conteúdo sensível. Podem ser publicados em qualquer lugar sem comprometer a segurança da conta. Ao contrário dos endereços de email, podemos criar novos endereços sempre que necessário, todos os quais depositarão fundos diretamente na sua carteira. De facto, muitas carteiras modernas criam automaticamente um novo endereço para cada transação para maximizar a privacidade. Uma carteira é simplesmente uma coleção de endereços e chaves para desbloquear os fundos nela. Primeiro, precisamos de saber como é gerado o endereço da carteira Bitcoin.

Chaves privadas e públicas do Bitcoin

O 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 alcance é enorme, e é quase impossível para nós adivinhar as chaves privadas de outras pessoas. Esta chave privada inteira aleatória pode ser usada 256 bits indicam que existem muitas maneiras de codificar. Se a chave privada usando WIF ou WIF-comprimido não estiver criptografada, o “número inteiro aleatório” original pode ser obtido por decodificação. 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 para várias carteiras de Bitcoin. Esta é a chave privada que normalmente usamos.

Então, 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, "Formato não comprimido" e "Formato comprimido", respectivamente.

  1. A forma não comprimida é conectar diretamente as duas coordenadas x e y e depois adicionar um prefixo 0x04 à 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

Os 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 a partir da chave pública através do cálculo de hash, também conhecido como P2PKH, é uma abreviatura de Pagamento para Hash da Chave Pública (pagamento para hash da 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 (Pagar Para o Hash do Script), que suporta funcionalidades mais complexas do que os endereços Legacy. O P2SH aninhado obtém um endereço P2SH existente (que começa com “3”) e encapsula-o com o endereço SegWit.

3.Formato Native SegWit (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 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 não é sensível a maiúsculas e minúsculas (o endereço contém apenas 0-9, az), o que pode evitar eficazmente confusões e é mais fácil de ler ao introduzir. Como são necessários menos caracteres no endereço, o endereço utiliza 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 num código QR. Bech32 fornece maior segurança, otimiza melhor os códigos de verificação e deteção de erros e minimiza a chance de endereços inválidos.

O próprio endereço Bech32 é compatível com SegWit. Não é necessário espaço adicional para colocar o endereço SegWit no endereço P2SH, portanto, ao usar um endereço no formato Bech32, a taxa de processamento será menor. Os endereços Bech32 têm várias vantagens em relação aos 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, portanto, são mais fáceis de ler, digitar e entender.

4. 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 de testemunha segregada nativos com versão 0, use o Bech32 anterior;
  2. Para endereços 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 hierárquicas determinísticas. Principalmente NFTs que armazenam BRC-20 e Bitcoin.

5. Sobre Nós

A Spectrum Labs é uma equipa de mestres e doutorados focada na investigação em blockchain, bem como veteranos na indústria da blockchain. Estamos empenhados na tecnologia de cadeia de investigação em blockchain e nas suas aplicações para ajudar as pessoas a compreender melhor a blockchain. O principal negócio da Spectrum Labs inclui a escrita de relatórios de investigação, a preparação de cursos e o desenvolvimento de ferramentas.

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

Aviso legal:

  1. Este artigo é reproduzido a partir de [Laboratório Spectrum]. Todos os direitos de autor pertencem ao autor original [Ash Li, Noah Ho]. Se houver objeções a esta reimpressão, entre em contato com o Gate Learnequipa e eles tratarão disso prontamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as 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. Salvo indicação em contrário, copiar, distribuir ou plagiar os artigos traduzidos é proibido.
Start Now
Sign up and get a
$100
Voucher!