Aprende los principios del Protocolo de Ordinales y las inscripciones de Bitcoin en un artículo

Avanzado1/1/2024, 4:54:08 AM
Este artículo explica los detalles técnicos del protocolo Ordinals y la evolución de los detalles de la dirección BTC.

Con el nacimiento del Protocolo Ordinal, proporcionó a Bitcoin la función de numeración e inscripción, ampliando así la gama de productos del ecosistema Bitcoin y aportando nueva vitalidad al ecosistema Bitcoin. En este artículo, profundizaremos en los detalles del Protocolo Ordinal, incluyendo cómo se numeran y rastrean cada Bitcoin, y la relación entre inscripciones y números. Pero antes de adentrarnos más en este tema, necesitamos entender primero algunos antecedentes básicos de Bitcoin para ayudarnos a comprender mejor lo que viene a continuación.

Después de leer este artículo, dominarás el mecanismo de transacción de Bitcoin y el modelo de pago, aprenderás cómo los Ordinales pueden numerar y rastrear cada Satoshi, y cómo se crean y negocian las inscripciones. Además, aprenderás sobre las diferencias entre los diferentes tipos de monederos.

I. Antecedentes de Bitcoin

Bitcoin utiliza un modelo de transacción similar al efectivo (sistema de efectivo), y su método de pago se basa en un modelo llamado UTXO, que es diferente del modelo tradicional basado en saldos de cuentas. Por ejemplo, en el proceso de contabilidad del libro de cuentas de un banco, cuando A transfiere 100 yuanes a B, el banco registra tres pasos. Estos tres pasos forman un proceso de transacción. El primer paso es deducir 100 yuanes de la cuenta de A. El ID de registro para este paso es tid1. El segundo paso es depositar 100 yuanes en la cuenta de B. El ID de registro para este paso es tid2. El tercer paso es registrar un registro de transferencia. Este registro enlaza tid1 y tid2, indicando una reducción de 100 yuanes para la cuenta A y un aumento de 100 yuanes para la cuenta B. De esta manera, la relación de transferencia entre A y B se registra y se puede consultar y rastrear en el futuro. Ahora, explicaremos los métodos de pago de Bitcoin a través de una introducción a UTXO y modelos de pago.

UTXO

En la cadena de bloques Bitcoin, todos los saldos se almacenan en una lista llamada “Unspent Transaction Output (UTXO)” (Salida de Transacciones No Gastadas). Cada UTXO contiene una cierta cantidad de bitcoins, junto con información sobre los propietarios de esos bitcoins, e indica si están disponibles. Piénselo como un cheque al portador con el nombre del titular en él. Mientras el titular lo firme, puede transferir el derecho de uso a otra persona. Para una dirección específica, todas las cantidades de UTXO se suman al saldo de la billetera de esa dirección. Al revisar todos los UTXOs, podemos obtener el saldo actual para cada dirección. La suma de todas las cantidades de UTXO es la cantidad total de bitcoins actualmente en circulación.

En la estructura de transacción de Bitcoin, cada transacción incluye varios inputs y outputs. Cada input es una referencia a un UTXO existente, y cada output especifica una nueva dirección de recibo de fondos y el monto correspondiente. Una vez que se inicia una transacción, el UTXO referenciado en la sección de input se bloquea temporalmente para evitar su reutilización hasta que se complete la transacción. Solo cuando la transacción es empacada con éxito en un bloque (Bloque) por el minero y confirmada por la red, cambiará el estado relevante de UTXO. Específicamente, los UTXO utilizados para el input de la transacción serán eliminados de la lista de UTXO, indicando que han sido consumidos, y el output de la transacción generará un nuevo UTXO que se añadirá a la lista de UTXO. Se puede entender que un antiguo cheque al portador fue usado y luego se volvió inválido, creando un nuevo cheque al portador, que fue poseído por el nuevo titular.

Vale la pena enfatizar que cada UTXO solo puede usarse una vez en una transacción única. Una vez que se ha consumido como entrada, se elimina permanentemente de la lista de UTXO. Mientras tanto, la salida recién generada se agrega a la lista como un nuevo UTXO. La lista de UTXO está cambiando constantemente y, a medida que se crea cada nuevo bloque, se actualiza en consecuencia. Además, al analizar la historia de transacciones en la cadena de bloques, podemos reconstruir el estado de la lista de UTXO en cualquier momento dado.

Además, el monto total de entrada de una transacción generalmente supera ligeramente su monto total de salida. Esta diferencia, llamada tarifa de transacción (tarifa de transacción) o tarifa de red (tarifa de red), se da como un incentivo a los mineros responsables de empaquetar transacciones en bloques. El tamaño de la tarifa de red es proporcional a la complejidad de la transacción, por lo que una transacción con más entradas y salidas generalmente requiere una tarifa de red más alta.

Ahora, para comprender mejor la estructura de la transacción de Bitcoin, realizaremos un análisis en profundidad a través de un ejemplo específico. La estructura de la transacción de Bitcoin es la siguiente. Las dos variables vin y vout representan la “entrada” y “salida” de una transacción de Bitcoin, respectivamente. Las transacciones de Bitcoin no son como los modelos tradicionales de saldo de cuenta que registran cambios en los datos de la cuenta, sino que se expresan a través de la entrada y salida.

Podemos seleccionar aleatoriamente un registro de transacción en blockchain.com para analizar. La figura a continuación muestra que el ID de hash es una transacción de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Contiene una entrada y dos salidas.

Al usar los comandos bitcoin-cli getrawtransaction y decoderawtransaction, podemos ver la estructura subyacente de la transacción anterior:

En la red Bitcoin, la salida de la transacción contiene dos piezas importantes de información: la dirección (hash de la clave pública) y la cantidad (en bitcoins). Si la salida de una transacción no se utiliza en la entrada de otra transacción, entonces esta salida de transacción se llama salida de transacción no gastada (UTXO). Quien tenga la clave privada correspondiente a la clave pública en UTXO tiene el derecho de usar (es decir, gastar) esta UTXO.

Veamos la información en “vin” en el código anterior, que indica que el UTXO gastado en este intercambio proviene de otra transacción (su id es 7957a35fe64f80d234d76d83a2a8a0d8a0d149a41d81de548f0a65a8a999f6f18). Podemos encontrar la cantidad de este UTXO a partir de transacciones históricas (por ejemplo, 0.1), Por lo tanto, en esta transacción, el usuario gastó 0.1 BTC. El valor 0.1 no necesita ser escrito explícitamente en la transacción, sino que se obtiene buscando información de UTXO. El “vout” de esta transacción tiene dos salidas. Estas dos salidas son dos nuevos UTXOs, correspondientes al nuevo saldo y titular hasta que otra transacción los consuma como entrada.

  1. Para el usuario A, es necesario en primer lugar determinar todos los conjuntos de UTXO que posee, es decir, todos los bitcoins que el usuario A puede controlar;
  2. Un selecciona uno o más UTXO de este conjunto como entrada a la transacción. La suma de los montos de estas entradas es m (2+0.8+0.5 = 3.3 BTC) es mayor que la cantidad a pagar n (3 BTC);
  3. El usuario A establece dos salidas para la transacción. Una salida se paga a la dirección de B, la cantidad es n (3 BTC), y la otra salida se paga a la propia dirección de cero de A. La cantidad es m-n-cuota (3.3-3-0.001 = 0.299 BTC). La billetera del usuario suele consistir en múltiples direcciones. Normalmente, cada dirección se utiliza solo una vez, y el cero se devuelve a una nueva dirección de forma predeterminada;
  4. Después de que el minero empaqueta esta transacción en la cadena y la confirma, B puede recibir la información de la transacción. Dado que hay un límite superior en el tamaño del bloque (aproximadamente 1 MB), los mineros dan prioridad a confirmar transacciones con una alta tasa de transacción (fee_rate=fee/size) para obtener el mayor retorno de comisión. Podemos ver la situación de la tarifa de transacción minera en tiempo real en mempool. Si queremos la confirmación más rápida durante el proceso de transferencia, podemos elegir Alta Prioridad (High Priority) o Personalizado (custom) una tarifa de transacción adecuada.

II. Numeración y Seguimiento de Satoshi

El número total de bitcoins es de 21 millones, y cada bitcoin contiene 10^8 Satoshi (Satoshi, Sat). Como resultado, hay 21 millones*10^8 satoshi en la red Bitcoin. El protocolo de Ordinales distingue estos Satoshi y numera de forma única a cada uno de ellos. Esta sección explica cómo este acuerdo numera de forma única a cada Satoshi y realiza un seguimiento de la cuenta en la que se encuentra. Además, también se introducirá la clasificación de rareza para Satoshi.

número de Satoshi

Según el Acuerdo Ordinal, los Satoshi se numeran según el orden en que fueron minados. La figura de abajo muestra cómo el 0º Satoshi está representado por el bloque 0.

Hay muchas formas de expresar Satoshi:

  1. Símbolos enteros: Por ejemplo, 2099994106992659, indican el número de serie asignado por el Satoshi según el orden de minería.
  2. Símbolos decimales: Por ejemplo, 3891094.16797. El primer número indica la altura del bloque en el que se minó el Satoshi, y el segundo número indica la cantidad de Satoshi en el bloque.
  3. Símbolos de grado: Por ejemplo, 3°111094′214″16797. El primer número es el período, numerado comenzando en 0, el segundo número es el índice de bloque para la era dividida a la mitad, el tercer número es el índice de bloque durante el período de ajuste de dificultad, y el último número es el índice SAT en el bloque.
  4. Símbolos de porcentaje: Por ejemplo, 99.99971949060254%, indican la posición de Satoshi en el suministro de Bitcoin, expresada como un porcentaje.
  5. Nombre: Satoshi, por ejemplo. Nombres que utilizan caracteres de la a a la z para codificar números secuenciales.

Usaremos un ejemplo para explicar cómo numerar los bitcoins recién extraídos. Al mirar el bloque 795952 de la cadena de bloques de Bitcoin, podemos ver que la primera transacción Tx 3a1f… b177 registró la recompensa del minero (transacción Coinbase). La transacción incluye bitcoins recién extraídos, que son recompensas empaquetadas para los mineros, y las tarifas de procesamiento pagadas a los mineros por el iniciador de la transacción. Al mirar la entrada en la imagen a continuación, podemos ver que su ID de UTxO consta de una cadena de ceros y la altura del bloque. La dirección de salida es la dirección de la billetera del minero, y la cantidad es la suma de las recompensas y tarifas mencionadas anteriormente.

Si observamos de cerca la sección de salida a mineros, podemos ver la dirección, la cantidad y la distribución de los Satoshi incluidos. Como se mencionó anteriormente, estos incluyen recompensas mineras y tarifas. Entre ellos, la información del número SATS verde 1941220000000000-1941220625000000 es un nuevo Satoshi generado por recompensas mineras, y los 712 registros de Satoshi restantes corresponden a todas las tarifas de procesamiento en este bloque.

Podemos verificar el número Sat 1941220000000000. Su número de bloque es 795952, y el símbolo decimal (decimal) es 795952.0, lo que significa que la altura del bloque para minar este Satoshi es 795952, el número en este bloque es 0, y la rareza (rareza) que sigue está marcada como poco común, lo que cubriremos con más detalle en las secciones posteriores.

Circulación inteligente

Dado que cada BTC se genera a través de recompensas por minería, todos son rastreables. Las cuentas de Bitcoin utilizan el modelo UTXO. Digamos que el usuario A obtuvo el 100º al 110º Satoshi a través de la minería (10 Satoshi se almacenan como un todo en UTXO con el mismo ID adc123). Cuando el usuario A quiere pagar al usuario B 5 Satoshi, elige usar el ID abc123 como entrada para la transacción. De estos, 5 Satoshi se entregan al usuario B, y 5 Satoshi se devuelven al usuario A como ceros. Estas dos copias de los 5 Satoshi son un todo, almacenado en dos UTXO con IDs abc456 y abc789, respectivamente. El número de IDs de UTXO y Satoshi mencionados anteriormente se muestra solo como un ejemplo. En circunstancias reales, el número mínimo de Satoshi enviado está limitado a 546, y los IDs de UTXO no se expresan de esta forma.

En la transacción descrita anteriormente, los caminos de transferencia de los 10 Satoshis del Usuario A son:

  1. La minería genera 10 Satoshi, el número es [100*, 110). *Indica que el Satoshi del 100 al 109 está almacenado en UTXO con ID ABC123, y su propietario es el Usuario A.
  2. Cuando A transfiere dinero, 10 Satoshi se divide en 2 partes, 5 Satoshi cada una. Aquí se utiliza el principio de "primero en entrar, primero en salir", es decir, la clasificación de los números de Satoshi se determina por su índice en la salida de la transacción. Suponiendo que el orden de salida es primero el usuario A, luego el usuario B, entonces los 5 números de Satoshi restantes para el usuario A son [100, 105), almacenados en UTXO con ID ABC456, mientras que los 5 números de serie de Satoshi de usuario B son [105, 110), almacenados en UTXO con ID ABC789.

Rareza (Satoshi raro)

Como derivado del Protocolo de Ordinales, la rareza de Satoshi se puede definir en función del orden en el que se minan. Esto hará que algunos Satoshi especiales tengan niveles de rareza variables. Así es lo raro que son los diferentes tipos de audición:

  1. Nivel normal común: Cualquier Satoshi que no sea el primer Satoshi en el bloque (el suministro total es de 2,100 billones de dólares)
  2. Nivel excelente poco común: el primer Satoshi en cada bloque (el suministro total es 6929999)
  3. Nivel raro: El primer Satoshi en cada período de ajuste de dificultad (el suministro total es 3437)
  4. Nivel épico: Primer Satoshi después de cada reducción a la mitad (el suministro total es 32)
  5. LEGENDARIO LEGENDARIO LEGENDARIO: El primer Satoshi de cada ciclo (el suministro total es 5)
  6. Nivel Mítico Mítico: El primer Satoshi en el bloque Génesis (el suministro total es 1)

Este concepto raro y astuto puede añadir más diversión y valor al ecosistema de Bitcoin. Satoshi de diferentes rarezas pueden tener valores distintos en el mercado, atrayendo a coleccionistas e inversores.

3. Método de inscripción

Los Ordinales son significativamente diferentes de otros NFT en cadena que no son de Bitcoin. Entre ellos, la principal diferencia es que los metadatos de los Ordinales no se almacenan en una ubicación específica. En su lugar, estos metadatos se incrustan en los datos de testigo de la transacción (campo de testigo), por eso lo llamamos “inscripción”, porque estos datos están “grabados” como una inscripción en una parte específica de una transacción de Bitcoin, y estos datos están adjuntos a un Satoshi específico. Este proceso de inscripción se logra a través de segregated witness (SegWit) y “pay-to-taproot (P2TR)” (pago a taproot). Incluye dos etapas de presentación (compromiso) y divulgación (revelación), y puede grabar cualquier forma de contenido (como texto, imagen o video) en el tablero inteligente designado. A continuación, presentaremos otro método de almacenamiento más directo llamado OP_RETURN y explicaremos por qué no se usó como medio de inscripción. Al mismo tiempo, presentaremos qué son segregated witness y pay-to-taproot, y qué papel desempeñan en la inscripción. Al final, presentaremos cómo se realizan las inscripciones.

OP_RETURE

En la versión 0.9 del cliente de Bitcoin Core, finalmente se logró un compromiso mediante el uso del operador RETURN. **RETURN permite a los desarrolladores agregar 80 bytes de datos no relacionados con el pago a la salida de la transacción. **A diferencia de los pagos falsos, RETURN crea una salida verificable inequívoca no consumible; estos datos no necesitan ser almacenados en un conjunto de UTXO. Las salidas de RETURN se registran en la cadena de bloques. Consumen espacio en disco y también hacen que la cadena de bloques crezca en tamaño, pero como no se almacenan en la concentración de UTXO, no aumentan el grupo de memoria de UTXO, y mucho menos aumentan el costoso costo de memoria de todo el nodo.

Aunque OP_RETURN es un medio muy directo de almacenar información en la cadena de bloques de Bitcoin, también es un método de inscripción potencial. Sin embargo, las limitaciones de OP_RETURN hacen que enfrente algunos desafíos al tratar con el almacenamiento de metadatos. En primer lugar, OP_RETURN solo puede almacenar 80 bytes de datos, y para situaciones en las que se necesitan almacenar cantidades mayores de datos, esta limitación es claramente imposible de cumplir. En segundo lugar, los datos de OP_RETURN se almacenan en la sección de salidas de transacción. Aunque estos datos no se almacenan de forma centralizada en UTXO, ocupan espacio de almacenamiento en la cadena de bloques, lo que lleva a un aumento en el tamaño de la cadena de bloques. Por último, el uso de OP_RETURN resulta en mayores tarifas de transacción porque requiere pagar más para publicar estas transacciones.

Testigo de cuarentena

Por el contrario, SegWit ofrece un nuevo enfoque que puede superar estos problemas. SegWit es una importante actualización del protocolo para Bitcoin. Fue propuesto por el desarrollador principal de Bitcoin, Pieter Wuille, en 2015 y finalmente adoptado oficialmente en la versión 0.16.0 en 2017. Segregado en testigos segregados significa separación o aislamiento, y testigo es una firma relacionada con una transacción. Por lo tanto, SegWit separa ciertos datos de firma de transacción (datos de testigos) de las transacciones.

El principal beneficio de separar las firmas de los datos relacionados con la transacción es la reducción en el tamaño de los datos almacenados en un bloque de Bitcoin. De esta manera, cada bloque tiene capacidad adicional para almacenar más transacciones, lo que también significa que la red puede procesar más transacciones y que el remitente paga menores tarifas de procesamiento. Técnicamente hablando, la información de la firma de script (scriptSig) se toma de la estructura básica (bloque base) y se coloca en una nueva estructura de datos. Los nodos y mineros que realizan trabajo de verificación también verificarán las firmas de script en esta nueva estructura de datos para asegurarse de que las transacciones son válidas. La actualización de Segwit introdujo un nuevo campo de testigo en la salida de la transacción para garantizar la privacidad y el rendimiento. Aunque los datos del testigo no están diseñados para el almacenamiento de datos, en realidad nos brindan la oportunidad de almacenar cosas como metadatos de inscripción. Utilicemos la siguiente imagen para comprender mejor el testigo de cuarentena:

Taproot

P2TR es un tipo de salida de transacción para Bitcoin. Fue introducido en la actualización de Taproot en 2021. Permite que diferentes condiciones de transacción se almacenen de manera más privada en la cadena de bloques. En la inscripción de los Ordinales, P2TR desempeña un papel crítico. La inscripción básicamente incrusta contenido de datos específicos en las transacciones de Bitcoin, y las actualizaciones de Taproot, en particular P2TR, han hecho que estos datos incrustados sean más flexibles y económicos.

En primer lugar, debido al método de almacenamiento de scripts Taproot, podemos almacenar contenido de inscripción en scripts de gasto de ruta de script Taproot. Estos scripts tienen casi ninguna restricción en cuanto al contenido, y al mismo tiempo también pueden obtener descuentos en los datos de testigos, lo que hace que sea relativamente económico almacenar contenido de inscripción. Dado que el consumo del script Taproot solo se puede hacer desde la salida de Taproot que ya existe, la inscripción utiliza un proceso de presentación/revelación de dos etapas. En primer lugar, al presentar una transacción, se creó una salida de Taproot que prometía un script que contenía el contenido de la inscripción. Luego, en la transacción de revelación, la salida creada al presentar la transacción fue consumida, revelando así el contenido de la inscripción en la cadena.

Este enfoque ha reducido en gran medida el consumo de recursos. Si no se utiliza P2TR, la información del testigo se almacena en la salida de la transacción. De esta manera, siempre que esta salida no se consuma, la información del testigo siempre se almacenará en el grupo UTXO. Por el contrario, si se utiliza P2TR, la información del testigo no aparecerá en las transacciones generadas durante la fase de presentación, por lo que no se escribirá en el conjunto UTXO. Solo cuando se gaste este UTXO, la información del testigo aparecerá en la entrada de la transacción durante la fase de revelación. P2TR permite que los metadatos se escriban en la cadena de bloques de Bitcoin, pero nunca aparece en UTXO. Dado que mantener/modificar conjuntos UTXO requiere más recursos, este enfoque puede ahorrar recursos significativos.

inscripciones

El protocolo Ordinals utilizó SegWit para relajar las restricciones de tamaño en el contenido escrito en la red Bitcoin, almacenando el contenido de la inscripción en los datos de los testigos. Le permite almacenar hasta 4 MB de metadatos. Taproot facilita el almacenamiento de datos de testigos arbitrarios en las transacciones de Bitcoin, lo que permite al desarrollador de Ordinals, Casey Rodarmor, reutilizar códigos de operación antiguos (OP_FALSE, OP_IF, OP_PUSH) para almacenar datos arbitrarios en lo que describió como un "sobre" llamado "inscripción".

El proceso para hacer una inscripción consiste en los siguientes dos pasos:

Primero, es necesario crear una promesa en la transacción de envío a la salida de Taproot del script que contiene el contenido de la inscripción. El formato de almacenamiento es Taproot, es decir, la salida de la transacción anterior es P2TR (Pagar a Taproot), y la entrada de la última transacción incrusta el contenido en un formato específico en el script de Taproot presenciado; la cadena ord se apila primero para eliminar la ambigüedad de que la inscripción tiene otros usos. OP_PUSH 1 indica que el próximo push contiene el tipo de contenido, y OP_PUSH 0 indica que los push de datos posteriores incluyen el contenido en sí. Las inscripciones grandes deben usar múltiples push de datos porque una de las pocas limitaciones de taproot es que un solo push de datos no puede ser mayor de 520 bytes. En este punto, los datos de la inscripción se han aplicado a la salida UTXO de la transacción, pero no se han revelado.

En segundo lugar, es necesario revelar la salida creada por la transacción de envío de compra en la transacción. En esta etapa, la transacción se inicia utilizando el UTXO correspondiente a esa inscripción como entrada. En este punto, el contenido de la inscripción correspondiente se hizo público a toda la red.

A través de los dos pasos anteriores, el contenido de la inscripción se ha vinculado a la UTXO grabada. Además, según la posición de Satoshi descrita anteriormente, la inscripción se realiza en el primer Satoshi correspondiente a la entrada UTXO, y el contenido de la inscripción se incluye en la entrada que muestra la transacción. Según la introducción a la circulación y seguimiento de Satoshi descrita anteriormente, este Satoshi, que está grabado con un contenido especial, puede ser transferido, comprado, vendido, perdido y recuperado. Tenga en cuenta que las inscripciones no se pueden repetir, de lo contrario las inscripciones posteriores no serán válidas.

Explicaremos este proceso en detalle mediante la inscripción de un ejemplo de una pequeña imagen NFT de BTC. Este proceso incluye principalmente las dos etapas de presentación (compromiso) y divulgación (revelación) mencionadas anteriormente. Primero, vemos que la ID de hash para la primera transacción es 2ddf9... f585c. Se puede notar que la salida de esta transacción no incluyó datos de testigos y no hubo una inscripción relevante en la página.

A continuación, veamos el registro de la segunda etapa. El ID hash es e7454... 7c0e1. Aquí, podemos ver la información sobre la Inscripción Ordinal, es decir, el contenido de la inscripción del testigo. La dirección de entrada para esta transacción es la dirección de salida de la transacción anterior, y la salida 0.00000546 BTC (546 Satoshi) está enviando este NFT a su propia dirección. Al mismo tiempo, también podemos usar Sat Find Satoshi donde se encuentra esta inscripción en 1893640468329373.

En la billetera de Bitcoin, podemos ver este activo. Si queremos negociar este NFT, podemos enviarlo directamente a la dirección de otra persona, es decir, enviar este UTXO, y así se completa la circulación de la inscripción.

4. Carteras de Bitcoin

Después de haber aprendido sobre el ecosistema de Ordinales, la circulación de Satoshi y el conocimiento relacionado sobre inscripciones, actualmente existen muchos escenarios de aplicación. Ya sea la aparición de acuerdos derivados relacionados como BRC-20, ORC-20, BRC-721, GBRC-721, etc., necesitamos una billetera correspondiente para soportar y mostrar información de tokens o pequeñas imágenes NFT. En esta sección, presentaremos los conceptos y características de diferentes direcciones de billeteras Bitcoin.

Las direcciones de Bitcoin comienzan con 1, 3 o bc1. Al igual que las direcciones de correo electrónico, se pueden compartir con otros usuarios de Bitcoin que pueden usarlas para enviar bitcoins directamente a sus billeteras. Desde un punto de vista de seguridad, las direcciones de Bitcoin no tienen ningún contenido sensible. Se pueden publicar en cualquier lugar sin comprometer la seguridad de la cuenta. A diferencia de las direcciones de correo electrónico, podemos crear nuevas direcciones en cualquier momento que necesitemos, todas las cuales depositarán fondos directamente en su billetera. De hecho, muchas billeteras modernas crean automáticamente una nueva dirección para cada transacción para maximizar la privacidad. Una billetera es simplemente una colección de direcciones y claves para desbloquear los fondos en ella. Primero, necesitamos saber cómo se genera la dirección de la billetera de Bitcoin.

Bitcoin claves privadas y públicas

Bitcoin utiliza una curva elíptica secp256k1. La “clave privada” es un número aleatorio entre 1 y n-1. n es un número grande (256 bits), y n se expresa en notación científica alrededor de 1.15792*10^77. El alcance es enorme, y es casi imposible que adivinemos las claves privadas de otras personas. Esta clave privada entera aleatoria puede ser utilizada 256 bits indican que hay muchas formas de codificar. Si la clave privada utiliza WIF o WIF-comprimido sin cifrar, el “número entero aleatorio” original puede ser obtenido descodificando. Otro método es BIP38. Se propone utilizar el algoritmo AES para cifrar la clave privada. La clave privada obtenida por este esquema comienza con el carácter 6P. Esta clave privada debe ser importada en varias carteras de Bitcoin. Esta es la clave privada que solemos utilizar.

Luego usaremos la fórmula de la curva elíptica K = kG para generar la clave pública de Bitcoin K a partir de la clave privada k. G es el punto base, que es un parámetro de secp256k1. Puedes obtener las dos coordenadas de K, que son las dos expresiones de la clave pública, respectivamente, en formato 'No comprimido' y 'Comprimido'.

  1. La forma descomprimida es conectar directamente las dos coordenadas x e y, y luego agregar un prefijo 0x04 al frente;
  2. La forma comprimida es cuando y es un número par, el código es 02 x, y cuando y es un número impar, el código es 03 x;

dirección de Bitcoin

Los diversos tipos de direcciones de Bitcoin se pueden ver en la siguiente figura. Hay cuatro formas de expresarlas:

1. Formato heredado (P2PKH)

Ejemplo: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Las direcciones que comienzan con “1” son el formato de dirección original de Bitcoin y todavía se utilizan hoy. Obtenido a partir de la clave pública a través del cálculo hash, también conocido como P2PKH, es una abreviatura de Pagar a la Clave Pública Hash (pago a la clave pública hash).

2. Formato Nested SegWit (P2SH)

Ejemplo: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

Las direcciones comienzan con “ 3 “. P2SH es una abreviatura de Pagar a la Dirección de Script (Pagar a Script Hash), que admite funciones más complejas que las direcciones Legacy. P2SH anidado obtiene una dirección P2SH existente (que comienza con “3”) y la encapsula con la dirección SegWit.

3. Formato nativo SegWit (Bech32)

Las direcciones que comienzan con bc1 fueron propuestas en BIP0173; son direcciones de testigo de cuarentena nativas. La dirección codificada en Bech32 es un formato de dirección desarrollado especialmente para SegWit. Bech32 fue definido en BIP173 a finales de 2017. Una de las principales características de este formato es que no distingue entre mayúsculas y minúsculas (la dirección contiene solo 0-9, az), por lo que puede evitar eficazmente la confusión y es más fácil de leer al introducirlo. Dado que se requieren menos caracteres en la dirección, la dirección utiliza codificación Base32 en lugar de Base58 tradicional, lo que es más conveniente y eficiente para calcular. Los datos se pueden almacenar de forma más compacta en un código QR. Bech32 proporciona una mayor seguridad, optimiza mejor los códigos de verificación y detección de errores y minimiza la posibilidad de direcciones inválidas.

La dirección Bech32 en sí es compatible con SegWit. No se requiere espacio adicional para poner la dirección SegWit en la dirección P2SH, por lo que el uso de una dirección en formato Bech32, la tarifa de procesamiento será menor. Las direcciones Bech32 tienen varias ventajas sobre las antiguas direcciones Base58 (la codificación Base58Check se utiliza para codificar matrices de bytes en Bitcoin en cadenas codificables por humanos): los códigos QR son más pequeños; son más a prueba de errores; son más seguros; no son sensibles a mayúsculas y minúsculas; solo están compuestos por letras minúsculas, por lo que son más fáciles de leer, escribir y entender.

Formato Taproot (P2TR)

Bech32 tiene una desventaja: si el último carácter en la dirección es p, insertar o borrar cualquier número de caracteres q inmediatamente antes de p no invalidará su suma de verificación.

Para mitigar las deficiencias anteriores de Bech32, se propuso la dirección Bech32M en BIP0350:

  1. Para direcciones nativas de testigo segregado con versión 0, utiliza el Bech32 anterior;
  2. Para las direcciones testigo de cuarentena nativa con versión 1 (o superior), utiliza el nuevo Bech32M.

Para las direcciones Bech32M, cuando la versión es 1, siempre comienzan con bc1p (es decir, dirección Taproot). Específicamente, como testigo de cuarentena local, una cartera puede consistir en una frase semilla y una contraseña. Estas se utilizan para generar claves privadas y públicas extendidas, y se utilizan para derivar direcciones para rutas arbitrarias en carteras determinísticas jerárquicas. Principalmente NFTs que almacenan BRC-20 y BTC.

5. Acerca de Nosotros

Spectrum Labs es un equipo de maestros y doctores enfocados en la investigación de blockchain, así como veteranos dentro de la industria de blockchain. Estamos comprometidos con la tecnología de cadena de investigación de blockchain y sus aplicaciones para ayudar a las personas a comprender mejor blockchain. El principal negocio de Spectrum Labs incluye escribir informes de investigación, redactar cursos y desarrollar herramientas.

La Comunidad China de NFT de BTC es una plataforma de intercambio chino de NFT de BTC para recién llegados chinos de todo el mundo.

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [Laboratorio Spectrum]. Todos los derechos de autor pertenecen al autor original [Ash Li, Noah Ho]. Si hay objeciones a esta reimpresión, por favor contacte al Gate Learnequipo, y ellos lo resolverán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son únicamente las del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Aprende los principios del Protocolo de Ordinales y las inscripciones de Bitcoin en un artículo

Avanzado1/1/2024, 4:54:08 AM
Este artículo explica los detalles técnicos del protocolo Ordinals y la evolución de los detalles de la dirección BTC.

Con el nacimiento del Protocolo Ordinal, proporcionó a Bitcoin la función de numeración e inscripción, ampliando así la gama de productos del ecosistema Bitcoin y aportando nueva vitalidad al ecosistema Bitcoin. En este artículo, profundizaremos en los detalles del Protocolo Ordinal, incluyendo cómo se numeran y rastrean cada Bitcoin, y la relación entre inscripciones y números. Pero antes de adentrarnos más en este tema, necesitamos entender primero algunos antecedentes básicos de Bitcoin para ayudarnos a comprender mejor lo que viene a continuación.

Después de leer este artículo, dominarás el mecanismo de transacción de Bitcoin y el modelo de pago, aprenderás cómo los Ordinales pueden numerar y rastrear cada Satoshi, y cómo se crean y negocian las inscripciones. Además, aprenderás sobre las diferencias entre los diferentes tipos de monederos.

I. Antecedentes de Bitcoin

Bitcoin utiliza un modelo de transacción similar al efectivo (sistema de efectivo), y su método de pago se basa en un modelo llamado UTXO, que es diferente del modelo tradicional basado en saldos de cuentas. Por ejemplo, en el proceso de contabilidad del libro de cuentas de un banco, cuando A transfiere 100 yuanes a B, el banco registra tres pasos. Estos tres pasos forman un proceso de transacción. El primer paso es deducir 100 yuanes de la cuenta de A. El ID de registro para este paso es tid1. El segundo paso es depositar 100 yuanes en la cuenta de B. El ID de registro para este paso es tid2. El tercer paso es registrar un registro de transferencia. Este registro enlaza tid1 y tid2, indicando una reducción de 100 yuanes para la cuenta A y un aumento de 100 yuanes para la cuenta B. De esta manera, la relación de transferencia entre A y B se registra y se puede consultar y rastrear en el futuro. Ahora, explicaremos los métodos de pago de Bitcoin a través de una introducción a UTXO y modelos de pago.

UTXO

En la cadena de bloques Bitcoin, todos los saldos se almacenan en una lista llamada “Unspent Transaction Output (UTXO)” (Salida de Transacciones No Gastadas). Cada UTXO contiene una cierta cantidad de bitcoins, junto con información sobre los propietarios de esos bitcoins, e indica si están disponibles. Piénselo como un cheque al portador con el nombre del titular en él. Mientras el titular lo firme, puede transferir el derecho de uso a otra persona. Para una dirección específica, todas las cantidades de UTXO se suman al saldo de la billetera de esa dirección. Al revisar todos los UTXOs, podemos obtener el saldo actual para cada dirección. La suma de todas las cantidades de UTXO es la cantidad total de bitcoins actualmente en circulación.

En la estructura de transacción de Bitcoin, cada transacción incluye varios inputs y outputs. Cada input es una referencia a un UTXO existente, y cada output especifica una nueva dirección de recibo de fondos y el monto correspondiente. Una vez que se inicia una transacción, el UTXO referenciado en la sección de input se bloquea temporalmente para evitar su reutilización hasta que se complete la transacción. Solo cuando la transacción es empacada con éxito en un bloque (Bloque) por el minero y confirmada por la red, cambiará el estado relevante de UTXO. Específicamente, los UTXO utilizados para el input de la transacción serán eliminados de la lista de UTXO, indicando que han sido consumidos, y el output de la transacción generará un nuevo UTXO que se añadirá a la lista de UTXO. Se puede entender que un antiguo cheque al portador fue usado y luego se volvió inválido, creando un nuevo cheque al portador, que fue poseído por el nuevo titular.

Vale la pena enfatizar que cada UTXO solo puede usarse una vez en una transacción única. Una vez que se ha consumido como entrada, se elimina permanentemente de la lista de UTXO. Mientras tanto, la salida recién generada se agrega a la lista como un nuevo UTXO. La lista de UTXO está cambiando constantemente y, a medida que se crea cada nuevo bloque, se actualiza en consecuencia. Además, al analizar la historia de transacciones en la cadena de bloques, podemos reconstruir el estado de la lista de UTXO en cualquier momento dado.

Además, el monto total de entrada de una transacción generalmente supera ligeramente su monto total de salida. Esta diferencia, llamada tarifa de transacción (tarifa de transacción) o tarifa de red (tarifa de red), se da como un incentivo a los mineros responsables de empaquetar transacciones en bloques. El tamaño de la tarifa de red es proporcional a la complejidad de la transacción, por lo que una transacción con más entradas y salidas generalmente requiere una tarifa de red más alta.

Ahora, para comprender mejor la estructura de la transacción de Bitcoin, realizaremos un análisis en profundidad a través de un ejemplo específico. La estructura de la transacción de Bitcoin es la siguiente. Las dos variables vin y vout representan la “entrada” y “salida” de una transacción de Bitcoin, respectivamente. Las transacciones de Bitcoin no son como los modelos tradicionales de saldo de cuenta que registran cambios en los datos de la cuenta, sino que se expresan a través de la entrada y salida.

Podemos seleccionar aleatoriamente un registro de transacción en blockchain.com para analizar. La figura a continuación muestra que el ID de hash es una transacción de 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5f5fbd8a57286c345c2f2. Contiene una entrada y dos salidas.

Al usar los comandos bitcoin-cli getrawtransaction y decoderawtransaction, podemos ver la estructura subyacente de la transacción anterior:

En la red Bitcoin, la salida de la transacción contiene dos piezas importantes de información: la dirección (hash de la clave pública) y la cantidad (en bitcoins). Si la salida de una transacción no se utiliza en la entrada de otra transacción, entonces esta salida de transacción se llama salida de transacción no gastada (UTXO). Quien tenga la clave privada correspondiente a la clave pública en UTXO tiene el derecho de usar (es decir, gastar) esta UTXO.

Veamos la información en “vin” en el código anterior, que indica que el UTXO gastado en este intercambio proviene de otra transacción (su id es 7957a35fe64f80d234d76d83a2a8a0d8a0d149a41d81de548f0a65a8a999f6f18). Podemos encontrar la cantidad de este UTXO a partir de transacciones históricas (por ejemplo, 0.1), Por lo tanto, en esta transacción, el usuario gastó 0.1 BTC. El valor 0.1 no necesita ser escrito explícitamente en la transacción, sino que se obtiene buscando información de UTXO. El “vout” de esta transacción tiene dos salidas. Estas dos salidas son dos nuevos UTXOs, correspondientes al nuevo saldo y titular hasta que otra transacción los consuma como entrada.

  1. Para el usuario A, es necesario en primer lugar determinar todos los conjuntos de UTXO que posee, es decir, todos los bitcoins que el usuario A puede controlar;
  2. Un selecciona uno o más UTXO de este conjunto como entrada a la transacción. La suma de los montos de estas entradas es m (2+0.8+0.5 = 3.3 BTC) es mayor que la cantidad a pagar n (3 BTC);
  3. El usuario A establece dos salidas para la transacción. Una salida se paga a la dirección de B, la cantidad es n (3 BTC), y la otra salida se paga a la propia dirección de cero de A. La cantidad es m-n-cuota (3.3-3-0.001 = 0.299 BTC). La billetera del usuario suele consistir en múltiples direcciones. Normalmente, cada dirección se utiliza solo una vez, y el cero se devuelve a una nueva dirección de forma predeterminada;
  4. Después de que el minero empaqueta esta transacción en la cadena y la confirma, B puede recibir la información de la transacción. Dado que hay un límite superior en el tamaño del bloque (aproximadamente 1 MB), los mineros dan prioridad a confirmar transacciones con una alta tasa de transacción (fee_rate=fee/size) para obtener el mayor retorno de comisión. Podemos ver la situación de la tarifa de transacción minera en tiempo real en mempool. Si queremos la confirmación más rápida durante el proceso de transferencia, podemos elegir Alta Prioridad (High Priority) o Personalizado (custom) una tarifa de transacción adecuada.

II. Numeración y Seguimiento de Satoshi

El número total de bitcoins es de 21 millones, y cada bitcoin contiene 10^8 Satoshi (Satoshi, Sat). Como resultado, hay 21 millones*10^8 satoshi en la red Bitcoin. El protocolo de Ordinales distingue estos Satoshi y numera de forma única a cada uno de ellos. Esta sección explica cómo este acuerdo numera de forma única a cada Satoshi y realiza un seguimiento de la cuenta en la que se encuentra. Además, también se introducirá la clasificación de rareza para Satoshi.

número de Satoshi

Según el Acuerdo Ordinal, los Satoshi se numeran según el orden en que fueron minados. La figura de abajo muestra cómo el 0º Satoshi está representado por el bloque 0.

Hay muchas formas de expresar Satoshi:

  1. Símbolos enteros: Por ejemplo, 2099994106992659, indican el número de serie asignado por el Satoshi según el orden de minería.
  2. Símbolos decimales: Por ejemplo, 3891094.16797. El primer número indica la altura del bloque en el que se minó el Satoshi, y el segundo número indica la cantidad de Satoshi en el bloque.
  3. Símbolos de grado: Por ejemplo, 3°111094′214″16797. El primer número es el período, numerado comenzando en 0, el segundo número es el índice de bloque para la era dividida a la mitad, el tercer número es el índice de bloque durante el período de ajuste de dificultad, y el último número es el índice SAT en el bloque.
  4. Símbolos de porcentaje: Por ejemplo, 99.99971949060254%, indican la posición de Satoshi en el suministro de Bitcoin, expresada como un porcentaje.
  5. Nombre: Satoshi, por ejemplo. Nombres que utilizan caracteres de la a a la z para codificar números secuenciales.

Usaremos un ejemplo para explicar cómo numerar los bitcoins recién extraídos. Al mirar el bloque 795952 de la cadena de bloques de Bitcoin, podemos ver que la primera transacción Tx 3a1f… b177 registró la recompensa del minero (transacción Coinbase). La transacción incluye bitcoins recién extraídos, que son recompensas empaquetadas para los mineros, y las tarifas de procesamiento pagadas a los mineros por el iniciador de la transacción. Al mirar la entrada en la imagen a continuación, podemos ver que su ID de UTxO consta de una cadena de ceros y la altura del bloque. La dirección de salida es la dirección de la billetera del minero, y la cantidad es la suma de las recompensas y tarifas mencionadas anteriormente.

Si observamos de cerca la sección de salida a mineros, podemos ver la dirección, la cantidad y la distribución de los Satoshi incluidos. Como se mencionó anteriormente, estos incluyen recompensas mineras y tarifas. Entre ellos, la información del número SATS verde 1941220000000000-1941220625000000 es un nuevo Satoshi generado por recompensas mineras, y los 712 registros de Satoshi restantes corresponden a todas las tarifas de procesamiento en este bloque.

Podemos verificar el número Sat 1941220000000000. Su número de bloque es 795952, y el símbolo decimal (decimal) es 795952.0, lo que significa que la altura del bloque para minar este Satoshi es 795952, el número en este bloque es 0, y la rareza (rareza) que sigue está marcada como poco común, lo que cubriremos con más detalle en las secciones posteriores.

Circulación inteligente

Dado que cada BTC se genera a través de recompensas por minería, todos son rastreables. Las cuentas de Bitcoin utilizan el modelo UTXO. Digamos que el usuario A obtuvo el 100º al 110º Satoshi a través de la minería (10 Satoshi se almacenan como un todo en UTXO con el mismo ID adc123). Cuando el usuario A quiere pagar al usuario B 5 Satoshi, elige usar el ID abc123 como entrada para la transacción. De estos, 5 Satoshi se entregan al usuario B, y 5 Satoshi se devuelven al usuario A como ceros. Estas dos copias de los 5 Satoshi son un todo, almacenado en dos UTXO con IDs abc456 y abc789, respectivamente. El número de IDs de UTXO y Satoshi mencionados anteriormente se muestra solo como un ejemplo. En circunstancias reales, el número mínimo de Satoshi enviado está limitado a 546, y los IDs de UTXO no se expresan de esta forma.

En la transacción descrita anteriormente, los caminos de transferencia de los 10 Satoshis del Usuario A son:

  1. La minería genera 10 Satoshi, el número es [100*, 110). *Indica que el Satoshi del 100 al 109 está almacenado en UTXO con ID ABC123, y su propietario es el Usuario A.
  2. Cuando A transfiere dinero, 10 Satoshi se divide en 2 partes, 5 Satoshi cada una. Aquí se utiliza el principio de "primero en entrar, primero en salir", es decir, la clasificación de los números de Satoshi se determina por su índice en la salida de la transacción. Suponiendo que el orden de salida es primero el usuario A, luego el usuario B, entonces los 5 números de Satoshi restantes para el usuario A son [100, 105), almacenados en UTXO con ID ABC456, mientras que los 5 números de serie de Satoshi de usuario B son [105, 110), almacenados en UTXO con ID ABC789.

Rareza (Satoshi raro)

Como derivado del Protocolo de Ordinales, la rareza de Satoshi se puede definir en función del orden en el que se minan. Esto hará que algunos Satoshi especiales tengan niveles de rareza variables. Así es lo raro que son los diferentes tipos de audición:

  1. Nivel normal común: Cualquier Satoshi que no sea el primer Satoshi en el bloque (el suministro total es de 2,100 billones de dólares)
  2. Nivel excelente poco común: el primer Satoshi en cada bloque (el suministro total es 6929999)
  3. Nivel raro: El primer Satoshi en cada período de ajuste de dificultad (el suministro total es 3437)
  4. Nivel épico: Primer Satoshi después de cada reducción a la mitad (el suministro total es 32)
  5. LEGENDARIO LEGENDARIO LEGENDARIO: El primer Satoshi de cada ciclo (el suministro total es 5)
  6. Nivel Mítico Mítico: El primer Satoshi en el bloque Génesis (el suministro total es 1)

Este concepto raro y astuto puede añadir más diversión y valor al ecosistema de Bitcoin. Satoshi de diferentes rarezas pueden tener valores distintos en el mercado, atrayendo a coleccionistas e inversores.

3. Método de inscripción

Los Ordinales son significativamente diferentes de otros NFT en cadena que no son de Bitcoin. Entre ellos, la principal diferencia es que los metadatos de los Ordinales no se almacenan en una ubicación específica. En su lugar, estos metadatos se incrustan en los datos de testigo de la transacción (campo de testigo), por eso lo llamamos “inscripción”, porque estos datos están “grabados” como una inscripción en una parte específica de una transacción de Bitcoin, y estos datos están adjuntos a un Satoshi específico. Este proceso de inscripción se logra a través de segregated witness (SegWit) y “pay-to-taproot (P2TR)” (pago a taproot). Incluye dos etapas de presentación (compromiso) y divulgación (revelación), y puede grabar cualquier forma de contenido (como texto, imagen o video) en el tablero inteligente designado. A continuación, presentaremos otro método de almacenamiento más directo llamado OP_RETURN y explicaremos por qué no se usó como medio de inscripción. Al mismo tiempo, presentaremos qué son segregated witness y pay-to-taproot, y qué papel desempeñan en la inscripción. Al final, presentaremos cómo se realizan las inscripciones.

OP_RETURE

En la versión 0.9 del cliente de Bitcoin Core, finalmente se logró un compromiso mediante el uso del operador RETURN. **RETURN permite a los desarrolladores agregar 80 bytes de datos no relacionados con el pago a la salida de la transacción. **A diferencia de los pagos falsos, RETURN crea una salida verificable inequívoca no consumible; estos datos no necesitan ser almacenados en un conjunto de UTXO. Las salidas de RETURN se registran en la cadena de bloques. Consumen espacio en disco y también hacen que la cadena de bloques crezca en tamaño, pero como no se almacenan en la concentración de UTXO, no aumentan el grupo de memoria de UTXO, y mucho menos aumentan el costoso costo de memoria de todo el nodo.

Aunque OP_RETURN es un medio muy directo de almacenar información en la cadena de bloques de Bitcoin, también es un método de inscripción potencial. Sin embargo, las limitaciones de OP_RETURN hacen que enfrente algunos desafíos al tratar con el almacenamiento de metadatos. En primer lugar, OP_RETURN solo puede almacenar 80 bytes de datos, y para situaciones en las que se necesitan almacenar cantidades mayores de datos, esta limitación es claramente imposible de cumplir. En segundo lugar, los datos de OP_RETURN se almacenan en la sección de salidas de transacción. Aunque estos datos no se almacenan de forma centralizada en UTXO, ocupan espacio de almacenamiento en la cadena de bloques, lo que lleva a un aumento en el tamaño de la cadena de bloques. Por último, el uso de OP_RETURN resulta en mayores tarifas de transacción porque requiere pagar más para publicar estas transacciones.

Testigo de cuarentena

Por el contrario, SegWit ofrece un nuevo enfoque que puede superar estos problemas. SegWit es una importante actualización del protocolo para Bitcoin. Fue propuesto por el desarrollador principal de Bitcoin, Pieter Wuille, en 2015 y finalmente adoptado oficialmente en la versión 0.16.0 en 2017. Segregado en testigos segregados significa separación o aislamiento, y testigo es una firma relacionada con una transacción. Por lo tanto, SegWit separa ciertos datos de firma de transacción (datos de testigos) de las transacciones.

El principal beneficio de separar las firmas de los datos relacionados con la transacción es la reducción en el tamaño de los datos almacenados en un bloque de Bitcoin. De esta manera, cada bloque tiene capacidad adicional para almacenar más transacciones, lo que también significa que la red puede procesar más transacciones y que el remitente paga menores tarifas de procesamiento. Técnicamente hablando, la información de la firma de script (scriptSig) se toma de la estructura básica (bloque base) y se coloca en una nueva estructura de datos. Los nodos y mineros que realizan trabajo de verificación también verificarán las firmas de script en esta nueva estructura de datos para asegurarse de que las transacciones son válidas. La actualización de Segwit introdujo un nuevo campo de testigo en la salida de la transacción para garantizar la privacidad y el rendimiento. Aunque los datos del testigo no están diseñados para el almacenamiento de datos, en realidad nos brindan la oportunidad de almacenar cosas como metadatos de inscripción. Utilicemos la siguiente imagen para comprender mejor el testigo de cuarentena:

Taproot

P2TR es un tipo de salida de transacción para Bitcoin. Fue introducido en la actualización de Taproot en 2021. Permite que diferentes condiciones de transacción se almacenen de manera más privada en la cadena de bloques. En la inscripción de los Ordinales, P2TR desempeña un papel crítico. La inscripción básicamente incrusta contenido de datos específicos en las transacciones de Bitcoin, y las actualizaciones de Taproot, en particular P2TR, han hecho que estos datos incrustados sean más flexibles y económicos.

En primer lugar, debido al método de almacenamiento de scripts Taproot, podemos almacenar contenido de inscripción en scripts de gasto de ruta de script Taproot. Estos scripts tienen casi ninguna restricción en cuanto al contenido, y al mismo tiempo también pueden obtener descuentos en los datos de testigos, lo que hace que sea relativamente económico almacenar contenido de inscripción. Dado que el consumo del script Taproot solo se puede hacer desde la salida de Taproot que ya existe, la inscripción utiliza un proceso de presentación/revelación de dos etapas. En primer lugar, al presentar una transacción, se creó una salida de Taproot que prometía un script que contenía el contenido de la inscripción. Luego, en la transacción de revelación, la salida creada al presentar la transacción fue consumida, revelando así el contenido de la inscripción en la cadena.

Este enfoque ha reducido en gran medida el consumo de recursos. Si no se utiliza P2TR, la información del testigo se almacena en la salida de la transacción. De esta manera, siempre que esta salida no se consuma, la información del testigo siempre se almacenará en el grupo UTXO. Por el contrario, si se utiliza P2TR, la información del testigo no aparecerá en las transacciones generadas durante la fase de presentación, por lo que no se escribirá en el conjunto UTXO. Solo cuando se gaste este UTXO, la información del testigo aparecerá en la entrada de la transacción durante la fase de revelación. P2TR permite que los metadatos se escriban en la cadena de bloques de Bitcoin, pero nunca aparece en UTXO. Dado que mantener/modificar conjuntos UTXO requiere más recursos, este enfoque puede ahorrar recursos significativos.

inscripciones

El protocolo Ordinals utilizó SegWit para relajar las restricciones de tamaño en el contenido escrito en la red Bitcoin, almacenando el contenido de la inscripción en los datos de los testigos. Le permite almacenar hasta 4 MB de metadatos. Taproot facilita el almacenamiento de datos de testigos arbitrarios en las transacciones de Bitcoin, lo que permite al desarrollador de Ordinals, Casey Rodarmor, reutilizar códigos de operación antiguos (OP_FALSE, OP_IF, OP_PUSH) para almacenar datos arbitrarios en lo que describió como un "sobre" llamado "inscripción".

El proceso para hacer una inscripción consiste en los siguientes dos pasos:

Primero, es necesario crear una promesa en la transacción de envío a la salida de Taproot del script que contiene el contenido de la inscripción. El formato de almacenamiento es Taproot, es decir, la salida de la transacción anterior es P2TR (Pagar a Taproot), y la entrada de la última transacción incrusta el contenido en un formato específico en el script de Taproot presenciado; la cadena ord se apila primero para eliminar la ambigüedad de que la inscripción tiene otros usos. OP_PUSH 1 indica que el próximo push contiene el tipo de contenido, y OP_PUSH 0 indica que los push de datos posteriores incluyen el contenido en sí. Las inscripciones grandes deben usar múltiples push de datos porque una de las pocas limitaciones de taproot es que un solo push de datos no puede ser mayor de 520 bytes. En este punto, los datos de la inscripción se han aplicado a la salida UTXO de la transacción, pero no se han revelado.

En segundo lugar, es necesario revelar la salida creada por la transacción de envío de compra en la transacción. En esta etapa, la transacción se inicia utilizando el UTXO correspondiente a esa inscripción como entrada. En este punto, el contenido de la inscripción correspondiente se hizo público a toda la red.

A través de los dos pasos anteriores, el contenido de la inscripción se ha vinculado a la UTXO grabada. Además, según la posición de Satoshi descrita anteriormente, la inscripción se realiza en el primer Satoshi correspondiente a la entrada UTXO, y el contenido de la inscripción se incluye en la entrada que muestra la transacción. Según la introducción a la circulación y seguimiento de Satoshi descrita anteriormente, este Satoshi, que está grabado con un contenido especial, puede ser transferido, comprado, vendido, perdido y recuperado. Tenga en cuenta que las inscripciones no se pueden repetir, de lo contrario las inscripciones posteriores no serán válidas.

Explicaremos este proceso en detalle mediante la inscripción de un ejemplo de una pequeña imagen NFT de BTC. Este proceso incluye principalmente las dos etapas de presentación (compromiso) y divulgación (revelación) mencionadas anteriormente. Primero, vemos que la ID de hash para la primera transacción es 2ddf9... f585c. Se puede notar que la salida de esta transacción no incluyó datos de testigos y no hubo una inscripción relevante en la página.

A continuación, veamos el registro de la segunda etapa. El ID hash es e7454... 7c0e1. Aquí, podemos ver la información sobre la Inscripción Ordinal, es decir, el contenido de la inscripción del testigo. La dirección de entrada para esta transacción es la dirección de salida de la transacción anterior, y la salida 0.00000546 BTC (546 Satoshi) está enviando este NFT a su propia dirección. Al mismo tiempo, también podemos usar Sat Find Satoshi donde se encuentra esta inscripción en 1893640468329373.

En la billetera de Bitcoin, podemos ver este activo. Si queremos negociar este NFT, podemos enviarlo directamente a la dirección de otra persona, es decir, enviar este UTXO, y así se completa la circulación de la inscripción.

4. Carteras de Bitcoin

Después de haber aprendido sobre el ecosistema de Ordinales, la circulación de Satoshi y el conocimiento relacionado sobre inscripciones, actualmente existen muchos escenarios de aplicación. Ya sea la aparición de acuerdos derivados relacionados como BRC-20, ORC-20, BRC-721, GBRC-721, etc., necesitamos una billetera correspondiente para soportar y mostrar información de tokens o pequeñas imágenes NFT. En esta sección, presentaremos los conceptos y características de diferentes direcciones de billeteras Bitcoin.

Las direcciones de Bitcoin comienzan con 1, 3 o bc1. Al igual que las direcciones de correo electrónico, se pueden compartir con otros usuarios de Bitcoin que pueden usarlas para enviar bitcoins directamente a sus billeteras. Desde un punto de vista de seguridad, las direcciones de Bitcoin no tienen ningún contenido sensible. Se pueden publicar en cualquier lugar sin comprometer la seguridad de la cuenta. A diferencia de las direcciones de correo electrónico, podemos crear nuevas direcciones en cualquier momento que necesitemos, todas las cuales depositarán fondos directamente en su billetera. De hecho, muchas billeteras modernas crean automáticamente una nueva dirección para cada transacción para maximizar la privacidad. Una billetera es simplemente una colección de direcciones y claves para desbloquear los fondos en ella. Primero, necesitamos saber cómo se genera la dirección de la billetera de Bitcoin.

Bitcoin claves privadas y públicas

Bitcoin utiliza una curva elíptica secp256k1. La “clave privada” es un número aleatorio entre 1 y n-1. n es un número grande (256 bits), y n se expresa en notación científica alrededor de 1.15792*10^77. El alcance es enorme, y es casi imposible que adivinemos las claves privadas de otras personas. Esta clave privada entera aleatoria puede ser utilizada 256 bits indican que hay muchas formas de codificar. Si la clave privada utiliza WIF o WIF-comprimido sin cifrar, el “número entero aleatorio” original puede ser obtenido descodificando. Otro método es BIP38. Se propone utilizar el algoritmo AES para cifrar la clave privada. La clave privada obtenida por este esquema comienza con el carácter 6P. Esta clave privada debe ser importada en varias carteras de Bitcoin. Esta es la clave privada que solemos utilizar.

Luego usaremos la fórmula de la curva elíptica K = kG para generar la clave pública de Bitcoin K a partir de la clave privada k. G es el punto base, que es un parámetro de secp256k1. Puedes obtener las dos coordenadas de K, que son las dos expresiones de la clave pública, respectivamente, en formato 'No comprimido' y 'Comprimido'.

  1. La forma descomprimida es conectar directamente las dos coordenadas x e y, y luego agregar un prefijo 0x04 al frente;
  2. La forma comprimida es cuando y es un número par, el código es 02 x, y cuando y es un número impar, el código es 03 x;

dirección de Bitcoin

Los diversos tipos de direcciones de Bitcoin se pueden ver en la siguiente figura. Hay cuatro formas de expresarlas:

1. Formato heredado (P2PKH)

Ejemplo: 1fh7ajxabjbpzw8bjd3qu4cuq3prty9u

Las direcciones que comienzan con “1” son el formato de dirección original de Bitcoin y todavía se utilizan hoy. Obtenido a partir de la clave pública a través del cálculo hash, también conocido como P2PKH, es una abreviatura de Pagar a la Clave Pública Hash (pago a la clave pública hash).

2. Formato Nested SegWit (P2SH)

Ejemplo: 3kf9nxowq4assgxrrzeitpdjmuwM2nyPan

Las direcciones comienzan con “ 3 “. P2SH es una abreviatura de Pagar a la Dirección de Script (Pagar a Script Hash), que admite funciones más complejas que las direcciones Legacy. P2SH anidado obtiene una dirección P2SH existente (que comienza con “3”) y la encapsula con la dirección SegWit.

3. Formato nativo SegWit (Bech32)

Las direcciones que comienzan con bc1 fueron propuestas en BIP0173; son direcciones de testigo de cuarentena nativas. La dirección codificada en Bech32 es un formato de dirección desarrollado especialmente para SegWit. Bech32 fue definido en BIP173 a finales de 2017. Una de las principales características de este formato es que no distingue entre mayúsculas y minúsculas (la dirección contiene solo 0-9, az), por lo que puede evitar eficazmente la confusión y es más fácil de leer al introducirlo. Dado que se requieren menos caracteres en la dirección, la dirección utiliza codificación Base32 en lugar de Base58 tradicional, lo que es más conveniente y eficiente para calcular. Los datos se pueden almacenar de forma más compacta en un código QR. Bech32 proporciona una mayor seguridad, optimiza mejor los códigos de verificación y detección de errores y minimiza la posibilidad de direcciones inválidas.

La dirección Bech32 en sí es compatible con SegWit. No se requiere espacio adicional para poner la dirección SegWit en la dirección P2SH, por lo que el uso de una dirección en formato Bech32, la tarifa de procesamiento será menor. Las direcciones Bech32 tienen varias ventajas sobre las antiguas direcciones Base58 (la codificación Base58Check se utiliza para codificar matrices de bytes en Bitcoin en cadenas codificables por humanos): los códigos QR son más pequeños; son más a prueba de errores; son más seguros; no son sensibles a mayúsculas y minúsculas; solo están compuestos por letras minúsculas, por lo que son más fáciles de leer, escribir y entender.

Formato Taproot (P2TR)

Bech32 tiene una desventaja: si el último carácter en la dirección es p, insertar o borrar cualquier número de caracteres q inmediatamente antes de p no invalidará su suma de verificación.

Para mitigar las deficiencias anteriores de Bech32, se propuso la dirección Bech32M en BIP0350:

  1. Para direcciones nativas de testigo segregado con versión 0, utiliza el Bech32 anterior;
  2. Para las direcciones testigo de cuarentena nativa con versión 1 (o superior), utiliza el nuevo Bech32M.

Para las direcciones Bech32M, cuando la versión es 1, siempre comienzan con bc1p (es decir, dirección Taproot). Específicamente, como testigo de cuarentena local, una cartera puede consistir en una frase semilla y una contraseña. Estas se utilizan para generar claves privadas y públicas extendidas, y se utilizan para derivar direcciones para rutas arbitrarias en carteras determinísticas jerárquicas. Principalmente NFTs que almacenan BRC-20 y BTC.

5. Acerca de Nosotros

Spectrum Labs es un equipo de maestros y doctores enfocados en la investigación de blockchain, así como veteranos dentro de la industria de blockchain. Estamos comprometidos con la tecnología de cadena de investigación de blockchain y sus aplicaciones para ayudar a las personas a comprender mejor blockchain. El principal negocio de Spectrum Labs incluye escribir informes de investigación, redactar cursos y desarrollar herramientas.

La Comunidad China de NFT de BTC es una plataforma de intercambio chino de NFT de BTC para recién llegados chinos de todo el mundo.

Descargo de responsabilidad:

  1. Este artículo es reimpreso de [Laboratorio Spectrum]. Todos los derechos de autor pertenecen al autor original [Ash Li, Noah Ho]. Si hay objeciones a esta reimpresión, por favor contacte al Gate Learnequipo, y ellos lo resolverán rápidamente.
  2. Descargo de responsabilidad: Las opiniones expresadas en este artículo son únicamente las del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!