Autores: Ash Li, Noah Ho
Con la creación del protocolo Ordinal, que brinda la capacidad de numerar e inscribir bitcoins, amplió la gama de productos disponibles para el ecosistema bitcoin y aportó una nueva dinámica al ecosistema bitcoin. En este artículo, profundizaremos en los detalles del protocolo Ordinal, incluido cómo se numera y rastrea cada bitcoin, y cómo se relacionan las inscripciones con la numeración. Pero antes de profundizar en este tema, primero debemos comprender algunos antecedentes básicos sobre Bitcoin que nos ayudarán a comprender mejor lo que sigue.
Después de completar este artículo, habrá dominado el mecanismo de transacción y el modelo de pago de Bitcoin, comprenderá cómo Ordinals implementa la numeración y el seguimiento de cada satoshi y cómo se crean y comercializan las inscripciones. Además, comprenderá las diferencias entre los distintos tipos de billeteras.
I. Antecedentes de Bitcoin
Bitcoin utiliza un modelo de transacción similar al efectivo y sus pagos se basan en un modelo llamado UTXO, que es diferente del modelo tradicional basado en el saldo de la cuenta. Por ejemplo, en un proceso modelo de contabilidad de cuentas bancarias, cuando A transfiere $100 a B, el banco registra tres pasos que conforman un proceso de transacción. El primer paso es debitar $100 de la cuenta de A y el ID de registro para este paso es tid1. El segundo paso es depositar $100 en la cuenta de B y el ID de registro para este paso es tid2. El tercer paso es registrar un registro de transferencia que asocie tid1 con tid2, lo que indica que la cuenta de A se reduce en $100 y la cuenta de B aumenta en $100. De esta manera, la relación de transferencia entre A y B queda registrada y puede consultarse y rastrearse en el futuro. Ahora, explicaremos cómo se realizan los pagos de Bitcoin mediante la introducción de UTXO y el modelo de pago.
UTXO
En la cadena de bloques de Bitcoin, todos los saldos se almacenan en una lista llamada Salida de transacciones no gastadas (UTXO). Cada UTXO contiene una cierta cantidad de bitcoins, junto con información sobre el propietario de esos bitcoins, e indica si están disponibles. Piense en ello como un cheque en efectivo firmado con el nombre del titular, que puede transferirse a otra persona para su uso siempre que el titular lo firme. Para una dirección determinada, todos sus montos UTXO se suman al saldo de la billetera en esa dirección. Al atravesar todos los UTXO, podemos obtener el saldo actual de cada dirección. Sumar todas las cantidades de UTXO suma la cantidad total de bitcoins actualmente en circulación.
En la estructura de transacciones de Bitcoin, cada transacción consta de varias entradas y salidas, donde cada entrada es una referencia a una UTXO existente, y cada salida especifica la nueva dirección donde se recibirán los fondos y el monto correspondiente. Una vez que se inicia una transacción, el UTXO al que se hace referencia en su sección de entrada se bloquea temporalmente para evitar su reutilización hasta que se complete la transacción. Solo cuando el minero empaqueta con éxito esta transacción en un bloque y la red la confirma, el estado UTXO asociado cambia. Específicamente, los UTXO utilizados como entrada a la transacción se eliminan de la lista de UTXO, lo que indica que se han consumido, mientras que la salida de la transacción genera nuevos UTXO que se agregan a la lista de UTXO. Se puede entender que los cheques de caja antiguos se utilizan y luego caducan, generando nuevos cheques de caja cuya titularidad pertenece al nuevo tenedor.
Vale la pena enfatizar que cada UTXO solo se puede usar una vez en una sola transacción. Una vez que se consume como entrada, se elimina permanentemente de la lista UTXO. Al mismo tiempo, la salida recién generada se agrega a la lista como un nuevo UTXO. la lista UTXO cambia constantemente y, a medida que se crea cada nuevo bloque, se actualiza en consecuencia. Y, al analizar el historial de transacciones en la cadena de bloques, podemos reconstruir el estado de la lista UTXO en cualquier momento dado.
Además, el monto total de entrada de una transacción generalmente excederá ligeramente su monto total de salida. Esta diferencia, llamada tarifa de transacción o tarifa de red, se otorga como incentivo a los mineros responsables de empaquetar las 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 que contiene más entradas y salidas generalmente requerirá una tarifa de red más alta.
Ahora, para comprender la estructura de las transacciones de Bitcoin de una manera más visual, veremos un ejemplo concreto. La estructura de una transacción de Bitcoin es la siguiente, donde las variables vin y vout representan la "entrada" y la "salida" de una transacción de Bitcoin, respectivamente. Las transacciones de Bitcoin no están representadas por entradas y salidas, a diferencia de los modelos tradicionales de saldo de cuenta que registran cambios de datos en forma de cuenta.

Podemos elegir un registro de transacción aleatorio en blockchain.com para analizarlo. La siguiente figura muestra una transacción con Hash ID 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Contiene una entrada y dos salidas.

Al utilizar los comandos bitcoin-cli getrawtransaction y decoderrawtransaction, podemos ver la estructura subyacente de las transacciones anteriores:

En la red Bitcoin, el resultado de la transacción contiene dos datos importantes: la dirección (hash de clave pública) y la cantidad (en bitcoins). Si el resultado de una transacción no se utiliza en la entrada de otras transacciones, entonces este resultado de la transacción se denomina resultado de la transacción no gastada (UTXO). Quien tenga la clave privada correspondiente a la clave pública en el UTXO tiene derecho a utilizar o gastar este UTXO.
Veamos la información en el "vin" en el código anterior, que indica que el UTXO gastado en esta transacción provino de otra transacción (con el id 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18) de la salida 0 (puede haber más de una salida de una transacción, el índice está numerado desde 0), podemos encontrar la cantidad de este UTXO en el historial de transacciones (por ejemplo, 0.1), por lo que no es necesario escribir explícitamente el valor 0.1 en la transacción, pero se obtiene buscando la información UTXO. El "vout" de esta transacción tiene dos salidas, que son dos nuevos UTXO, correspondientes al nuevo saldo y al titular, hasta que otra transacción los consuma como entrada.
Modelo de pago
Para comprender mejor el modelo de pago de la red Bitcoin, presentamos un ejemplo del proceso de pago para un pago de A a B por la cantidad de n bitcoins. El siguiente diagrama muestra el proceso de envío de 3 bitcoins del usuario A al usuario B.

Para el usuario A, primero es necesario determinar el conjunto de todos los UTXO que posee, es decir, todos los bitcoins a disposición del usuario A;
A selecciona uno o más UTXO de este conjunto como entradas para la transacción, y la suma de estas entradas es m(2+0,8+0,5=3,3 BTC) para ser mayor que la cantidad a pagar, n(3 BTC);
El usuario A establece dos salidas para la transacción, una salida para pagar a la dirección de B por la cantidad de n(3 BTC) y la otra salida para pagar a una de las direcciones de cambio de A por la cantidad de m-n-fee(3.3-3- 0,001=0,299 BTC). (b) La billetera del usuario generalmente consta de varias direcciones, cada una de las cuales normalmente se usa solo una vez, y el cambio se devuelve a una nueva dirección de forma predeterminada;
A la espera de que el minero empaquete esta transacción en la cadena para su confirmación, B puede recibir la información de esta transacción. Debido a que el tamaño del bloque tiene un límite superior (aproximadamente 1 MB), los mineros darán prioridad a confirmar transacciones con una tasa de transacción alta (fee_rate=fee/size) para obtener la tarifa de retorno más alta. Podemos ver 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 o personalizar una tarifa de transacción adecuada.

II. Numeración y seguimiento de Satoshi
El número total de bitcoins es 21 millones y cada bitcoin contiene 10 ^ 8 Satoshi (Sat). Por tanto, hay 21 millones * 10^8 satoshi en la red Bitcoin. El protocolo Ordinals distingue estos satoshi numerando de forma única cada uno. Esta sección describe cómo el protocolo hace esto y cómo realiza un seguimiento de las cuentas en las que se encuentra cada satoshi. Además, se describirá la clasificación de rareza del satoshi.
La numeración de Satoshi
Según el protocolo Ordinals, los satoshi se numeran según el orden en que se extraen. La siguiente figura muestra la representación del 0º satoshi minado del bloque 0.

Existen varias representaciones de los números ordinales: (https://docs.ordinals.com/overview.html)
Notación entera: [2099994106992659]() El número ordinal, asignado según el orden en que se extrajo el satoshi.
Notación decimal: [3891094.16797]() El primer número es la altura del bloque en el que se extrajo el satoshi, el segundo el desplazamiento del satoshi dentro del bloque.
Notación de grados: [3°111094′214″16797‴](). El primer número es el ciclo, numerado a partir de 0, el segundo es el índice del bloque en la época de reducción a la mitad, el tercer número es el índice del bloque en el período de ajuste de dificultad y el último número es el índice de sat en el bloque.
Notación percentil: [99.99971949060254%]() . La posición del satoshi en la oferta de Bitcoin, expresada como porcentaje.
Nombre: [satoshi](). Una codificación del número ordinal utilizando los caracteres de la a a la z.
Veremos un ejemplo de cómo numerar los bitcoins recién extraídos. Al observar el bloque 795952 de la cadena de bloques bitcoin, podemos ver que la primera de estas transacciones, Tx 3a1f...b177, registra la recompensa del minero (la transacción coinbase). Esta transacción contiene bitcoins recién extraídos, que se utilizan como recompensa empaquetada para el minero, así como una tarifa pagada al minero por el iniciador de la transacción. Al observar la entrada del diagrama a continuación, podemos ver que su identificación UTXO consta de una cadena de ceros y la altura del bloque. La dirección de salida es entonces la dirección de la billetera del minero y el monto es la suma de las recompensas y tarifas mencionadas anteriormente.

Si miramos más a fondo la sección de salida a los mineros, podemos ver la distribución de direcciones, cantidades y satoshi contenidos. Como se mencionó anteriormente, estos contienen las recompensas y tarifas mineras. De estos, la información del número de sats verdes 1941220000000000–1941220625000000 son los nuevos satoshi generados por la recompensa minera, mientras que los 712 registros satoshi restantes corresponden a todas las tarifas del bloque.

Podemos verificar el número Sat 1941220000000000. Su número de bloque es 795952 y el decimal es 795952.0, lo que significa que la altura del bloque para extraer este Satoshi es 795952, y el número de Satoshi en este bloque es 0, seguido de la marca de rareza para poco común, que Lo describiremos en detalle en la parte posterior.

El flujo de Satoshi
Debido a que cada BTC se genera a través de recompensas mineras, todos son rastreables. Las cuentas Bitcoin utilizan el modelo UTXO. Supongamos que el usuario A ha obtenido el satoshi número 100-110 mediante minería (los 10 satoshi se almacenan en su conjunto en el mismo UTXO con id adc123). Cuando el usuario A quiere pagarle al usuario B 5 satoshi, elige usar la identificación abc123 como entrada de la transacción, donde se le dan 5 satoshi al usuario B y se devuelven 5 satoshi al usuario A como cambio. Ambas copias de 5 satoshi se almacenan en su totalidad en dos UTXO con identificadores abc456 y abc789 respectivamente. Los identificadores de UTXO anteriores y el número de satoshi se muestran solo como ejemplos; en la práctica, el número mínimo es 546 sats y los identificadores de UTXO no se expresan de esta forma.

En la transacción anterior, la ruta de flujo de 10 satoshi del usuario A es
la minería genera 10 satoshi con el número [100, 110). Significa que los satoshi numerados del 100 al 109 se almacenan en el UTXO con id abc123 y su propietario es el usuario A.
Cuando A hace la transferencia, los 10 satoshi se dividen en dos partes, cada una con 5 satoshi. Aquí se utiliza el principio de "primero en entrar, primero en salir", es decir, la numeración de los satoshi está determinada por su índice en el resultado de la transacción. Suponiendo que el orden de salida es el Usuario A y luego el Usuario B, entonces los 5 satoshi restantes del Usuario A están numerados [100, 105) y se almacenan en el UTXO con id abc456, mientras que los 5 satoshi del Usuario B están numerados [105 , 110) y almacenado en el UTXO con id abc789.
Satoshi raro
Como juego derivado del protocolo Ordinals, la rareza de Satoshi se puede definir en función del orden en que se extraen. Esto dará como resultado que algunos Satoshi especiales tengan diferentes rarezas. Los siguientes son los niveles de rareza de los diferentes Satoshi:
común: cualquier sat que no sea el primero de su bloque (suministro total: 2,1 mil billones)
poco común: El primer sat de cada bloque (Oferta total: 6,929,999)
raro: el primer sat de cada período de ajuste de dificultad (suministro total: 3437)
épico: El primer sat de cada época de reducción a la mitad (Suministro total: 32)
legendario: El primer sat de cada ciclo (Suministro total: 5)
mítico: El primer sat del bloque génesis (Suministro total: 1)
Este concepto de satoshi raro puede agregar más interés y valor al ecosistema bitcoin. Satoshi de diferente rareza puede tener diferentes valores en el mercado, lo que atrae a coleccionistas e inversores.
III. Método de inscripción
Ordinals es significativamente diferente de otras NFT en cadenas que no son de Bitcoin. Una de las principales diferencias es que los metadatos de Ordinals no se almacenan en una ubicación específica. En cambio, los metadatos están incrustados en los datos testigo de la transacción, por lo que los llamamos "inscripción", porque están "grabados" como una inscripción en una parte específica de la transacción bitcoin. Los datos están adjuntos a un satoshi específico. Este proceso de inscripción se implementa a través de Segregated Witness (SegWitness) y Pay-to-Taproot (P2TR), que consta de dos fases: confirmación y revelación. Es posible inscribir cualquier tipo de contenido (por ejemplo, texto, imagen o vídeo) en un satoshi específico. A continuación presentaremos otro método de almacenamiento más directo, OP_RETURN, y explicaremos por qué no se utiliza como medio de inscripción. Además, describiremos qué son el testigo aislado y el Pay-to-Taproot y qué papel juegan en la inscripción. Finalmente introduciremos la forma de las inscripciones.
ON_RETURN
En la versión 0.9 del cliente Bitcoin Core, el compromiso finalmente se logró mediante la adopción del operador RETURN. RETURN permite a los desarrolladores agregar 80 bytes de datos de falta de pago al resultado de la transacción. A diferencia de los pseudopagos, RETURN crea una salida no consumible explícitamente verificable; No es necesario almacenar dichos datos en el conjunto UTXO. Las salidas RETURN se registran en la cadena de bloques, consumen espacio en disco y hacen que la cadena de bloques aumente de tamaño, pero no se almacenan en el conjunto UTXO y, por lo tanto, no inflan el conjunto de memoria UTXO ni aumentan el costoso costo de memoria de el nodo completo.
Si bien OP_RETURN es un medio muy sencillo de almacenar información en la cadena de bloques de Bitcoin, también es un medio potencial de inscripción. Sin embargo, las limitaciones de OP_RETURN hacen que se enfrente a algunos desafíos cuando se trata de almacenamiento de metadatos. En primer lugar, OP_RETURN sólo puede almacenar 80 bytes de datos, una limitación que claramente no se cumple en los casos en los que es necesario almacenar grandes cantidades de datos. En segundo lugar, los datos OP_RETURN se almacenan en la sección de salida de la transacción y, aunque dichos datos no se almacenan en el conjunto 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. Finalmente, el uso de OP_RETURN genera un aumento en las tarifas de transacción, ya que requiere que se paguen más tarifas para publicar estas transacciones.
Testigo segregado
Por el contrario, SegWit ofrece un nuevo enfoque que supera estos problemas. SegWit es una importante actualización del protocolo para Bitcoin, propuesta por Pieter Wuille, un desarrollador central de Bitcoin, en 2015 y finalmente adoptada formalmente en la versión 0.16.0 en 2017. Segregado en Segregated Witness significa separado, aislado y Witness es algo firmado asociado con una transacción. Por tanto, SegWit es la separación de ciertos datos de firma de transacción (datos de testigo) de la transacción.
El principal beneficio de separar la firma de los datos relacionados con las transacciones es que reduce el tamaño de los datos almacenados en un bloque de bitcoin. Esto le da a cada bloque capacidad adicional para almacenar más transacciones y significa que la red puede procesar más transacciones y el remitente paga tarifas más bajas. Técnicamente hablando, esto significa sacar la información de scriptSig del bloque base y colocarla en una nueva estructura de datos. La actualización de Segwit introduce un nuevo campo testigo en el resultado de la transacción para garantizar la privacidad y el rendimiento. Si bien los datos de los testigos no están diseñados para el almacenamiento de datos, en realidad nos brindan la oportunidad de almacenar contenido como metadatos de inscripción. Entendamos la testificación segregada más gráficamente con el siguiente diagrama:



Raíz principal
P2TR es un tipo de salida de transacción de Bitcoin que se introdujo en la actualización de Taproot que tuvo lugar en 2021, que permite almacenar diferentes condiciones de transacción en la cadena de bloques de una manera más privada. P2TR juega un papel crucial en las inscripciones de los ordinales. Básicamente, las inscripciones incorporan contenido de datos específicos en las transacciones de Bitcoin, y la actualización de Taproot, y P2TR en particular, hace que estos datos integrados sean más flexibles y económicos.
En primer lugar, debido a la forma en que se almacenan los scripts Taproot, podemos almacenar contenido de inscripción en la ruta del script Taproot gastando scripts que son prácticamente ilimitados en términos de contenido, y al mismo tiempo recibir un descuento en los datos de los testigos, lo que hace que sea relativamente económico almacenar el contenido de las inscripciones. Dado que los scripts de Taproot solo se pueden consumir a partir de resultados de Taproot ya existentes, las inscripciones se envían/revelan mediante un proceso de envío/revelación de dos etapas. Primero, en la transacción de envío, se crea una salida Taproot que promete un script que contiene el contenido de la inscripción. Luego, en la transacción de revelación, se consume el resultado creado por la transacción de envío, revelando así el contenido de la inscripción en la cadena.
Este enfoque reduce significativamente el consumo de recursos. Si no se utiliza P2TR, la información del testigo se almacena en el resultado de la transacción. Así, mientras no se consuma esta salida, la información del testigo permanecerá almacenada en el conjunto UTXO. Por el contrario, si se utiliza P2TR, la información testigo no aparece en las transacciones generadas durante la fase de confirmación, por lo que no se escribe en el conjunto UTXO. Solo cuando se consume este UTXO aparece la información del testigo en la entrada de la transacción durante la fase de revelación. p2tr permite escribir metadatos en la cadena de bloques de bitcoin, pero nunca aparece en el conjunto UTXO. Dado que mantener/modificar el conjunto UTXO requiere más recursos, este enfoque ahorra muchos recursos.
Inscripciones
El protocolo Ordinals aprovecha la relajación de las restricciones de tamaño de SegWit al escribir contenido de la red Bitcoin almacenando contenido de inscripción en datos de testigos. Taproot facilita el almacenamiento de datos de testigos arbitrarios en 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 lo que él describe como "sobres" para almacenar datos arbitrarios para lo que se denomina "inscripciones".
El proceso de emisión de una inscripción consta de los dos pasos siguientes:
Primero, es necesario crear una salida Commit-to-Taproot del script que contenga el contenido de la inscripción en la transacción enviada. El formato almacenado es Taproot, es decir, la salida de la transacción anterior es P2TR (Pay-To-Taproot) y la entrada de la última transacción, con un formato específico incrustado en el script Taproot presenciado; Primero, la cadena se coloca en la pila para evitar que la inscripción tenga otros usos. OP_PUSH 1 indica que el siguiente envío contiene el tipo de contenido y OP_PUSH 0 indica que los envíos de datos posteriores contienen el contenido en sí. Las inscripciones grandes deben utilizar múltiples envíos de datos porque una de las pocas restricciones de taproot es que los envíos de datos individuales no deben tener más de 520 bytes. En este punto los datos de la inscripción ya corresponden al UTXO de salida de la transacción, pero no se hacen públicos.

La inscripción de texto que contiene la cadena "¡Hola, mundo!" está serializado como arriba En segundo lugar, es necesario consumir el resultado creado al enviar la transacción en la transacción revelada. En esta etapa, la transacción se inicia tomando como entrada el UTXO correspondiente a esa inscripción. En este punto, el contenido de su correspondiente inscripción se divulga a toda la red.
Con los dos pasos descritos anteriormente, el contenido de la inscripción se ha vinculado al UTXO que se está inscribiendo. Nuevamente, de acuerdo con el posicionamiento del satoshi descrito anteriormente, la inscripción se realiza en el primer satoshi correspondiente a su UTXO de entrada, y el contenido de la inscripción se incluye en la entrada que muestra la transacción. Según la introducción al flujo y seguimiento del satoshi descrita anteriormente, este satoshi inscrito con contenido especial puede transferirse, comprarse, venderse, perderse y restaurarse. Cabe señalar que las inscripciones no se pueden repetir, de lo contrario las inscripciones posteriores no serán válidas.
Ilustraremos este proceso en detalle inscribiendo un ejemplo de una pequeña imagen BTC NFT, que consta de las dos fases principales mencionadas anteriormente, confirmar y revelar. Primero, vemos que el Hash ID de la primera transacción es 2ddf9...f585c. Cabe señalar que el resultado de esta transacción no contiene datos de testigos y no existe ninguna inscripción relevante en la página web.

A continuación, observamos la segunda etapa del registro, cuyo Hash ID es e7454...7c0e1. Aquí podemos ver la información de la inscripción de los Ordinales, que es el contenido de la inscripción del testigo. La dirección de entrada de esta transacción es la dirección de salida de la anterior, mientras que la salida de 0.00000546BTC (546 Satoshi) envía este NFT a su propia dirección. Además, podemos encontrar el satoshi donde se encuentra esta inscripción en Sat 1893640468329373.


En la billetera Bitcoin podemos ver este activo. Si queremos intercambiar este NFT, podemos enviarlo directamente a la dirección de otra persona, lo que significa enviar este UTXO, que completa el flujo de inscripciones.

IV. Billetera Bitcoin
Después de que entendamos qué son los ordinales, el flujo de Satoshi y el conocimiento sobre las inscripciones, hay muchos escenarios de aplicación que están surgiendo actualmente, ya sea BRC-20, ORC-20, BRC-721, GBRC-721 y otros protocolos derivados relacionados que requieren que tengamos billeteras correspondientes para respaldar y mostrar información de tokens o imágenes pequeñas de NFT. En esta sección presentaremos el concepto y las características de las diferentes direcciones de billetera 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 utilizarlas para enviar Bitcoins directamente a sus billeteras. Desde una perspectiva de seguridad, una dirección bitcoin no tiene ningún contenido confidencial. Se puede publicar en cualquier lugar sin comprometer la seguridad de la cuenta. A diferencia de las direcciones de correo electrónico, podemos crear nuevas direcciones tantas veces como sea necesario, y todas ellas depositarán fondos directamente en su billetera. De hecho, muchas billeteras modernas crean automáticamente una nueva dirección para cada transacción para lograr la máxima privacidad. Una billetera es simplemente una colección de direcciones y las claves para desbloquear los fondos que contienen. Primero necesitamos saber cómo se crean las direcciones de las billeteras Bitcoin.
Claves públicas y privadas de Bitcoin
Bitcoin utiliza la curva elíptica Secp256k1, donde la "clave privada" es un número aleatorio entre 1 y n-1, siendo n un número muy grande (256 bits) y n expresado en notación científica aproximadamente: 1,15792*10^77 .
El rango es tan grande que es casi imposible adivinar la clave privada de otra persona. Esta clave privada entera aleatoria se puede representar con 256 bits y hay muchas formas de codificarla. Si la clave privada en WIF, en formato WIF comprimido, no está cifrada, se puede decodificar para obtener el "entero aleatorio" original. Otra forma es BIP38, que propone cifrar la clave privada con el algoritmo AES. La clave privada obtenida de este esquema comienza con el carácter 6P, y esta clave privada debe ingresarse como contraseña para importarse a varias billeteras bitcoin, que es la clave privada que usamos habitualmente.
Luego usaremos la fórmula de la curva elíptica K = kG para generar la clave pública K de Bitcoin a partir de la clave privada k. G es el punto base, que es un parámetro de secp256k1. Las dos coordenadas de K son las dos expresiones de la clave pública, que son "formato sin comprimir" y "formato comprimido".

Sin comprimir, que es una concatenación directa de dos coordenadas xey, precedidas por un prefijo 0x04;
Forma comprimida, que se codifica como 02 x, cuando y es par y 03 x cuando y es impar;
Direcciones de Bitcoin
Los distintos tipos de direcciones bitcoin se pueden mostrar en el siguiente diagrama, con cuatro representaciones:

Formato heredado (P2PKH)
Ejemplo: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
La dirección comienza con un "1" y es el formato de dirección original de Bitcoin, que todavía se utiliza en la actualidad. También se conoce como P2PKH, que significa Pay To PubKey Hash, y se obtiene calculando la clave pública a través de un hash.
Formato SegWit anidado (P2SH)
Ejemplo: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
P2SH anidado, que toma una dirección P2SH existente (que comienza con "3") y la envuelve con una dirección SegWit.
Formato nativo SegWit (Bech32)
Ejemplo: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Las direcciones que comienzan con bc1 se proponen en BIP0173 y son direcciones testigo aisladas nativas. Direcciones codificadas en bech32, un formato de dirección desarrollado específicamente para SegWit. bech32 se definió en BIP173 a finales de 2017, y una de las características principales del formato es que no distingue entre mayúsculas y minúsculas (solo se incluyen 0-9, az, en la dirección), lo que lo hace efectivo para evitar confusión y más legible cuando se ingresa. Debido a que se necesitan menos caracteres en la dirección, la dirección se codifica utilizando Base32 en lugar del tradicional Base58, lo que hace que el cálculo sea más fácil y eficiente. Los datos se pueden almacenar de forma más precisa en el código QR. bech32 proporciona mayor seguridad, mejor optimización de la suma de comprobación y de los códigos de detección de errores, y minimiza la posibilidad de direcciones no válidas.
Las propias direcciones Bech32 son compatibles con SegWit. No se necesita espacio adicional para colocar direcciones SegWit en direcciones P2SH, por lo que las tarifas son más bajas con las direcciones en formato Bech32. Las direcciones Bech32 tienen varias ventajas sobre las direcciones Base58 más antiguas (la codificación Base58Check se utiliza para codificar matrices de bytes en Bitcoin en cadenas codificables por humanos): códigos QR más pequeños; mejor detección de errores; más seguro; no distingue entre mayúsculas y minúsculas; y consta únicamente de letras minúsculas, por lo que es más fácil de leer, escribir y comprender.
Formato de raíz principal (P2TR)
Bech32 tiene un inconveniente: si el último carácter de la dirección es p, insertar o eliminar cualquier número de caracteres q inmediatamente antes de p no invalidará su suma de verificación.
Para paliar este inconveniente de Bech32, se propone la dirección Bech32m en BIP0350:
Para una dirección testigo aislada nativa de la versión 0, utilice el Bech32 anterior;
Para una dirección testigo nativa aislada versión 1 (o superior), se utiliza el nuevo Bech32m.
Para las direcciones Bech32m, siempre comienzan con bc1p (es decir, dirección Taproot) cuando se usa la versión 1. Específicamente, al igual que un testigo local aislado, una billetera puede consistir en una frase inicial y una frase criptográfica. Se utilizan para generar claves públicas y privadas extendidas que se utilizan para derivar direcciones de ruta arbitrarias en una billetera determinista jerárquica. El objetivo principal es almacenar BRC-20, así como NFT para BTC, etc.
V. Sobre nosotros
Spectrum Labs es un equipo de maestrías y doctorados centrados en la investigación de blockchain, así como de veteranos dentro de la industria blockchain. Nos dedicamos a la tecnología de la cadena de investigación blockchain y sus aplicaciones para ayudar a las personas a comprender mejor blockchain. Las principales actividades de Spectrum Labs incluyen la redacción de informes de investigación, el desarrollo de planes de estudios y el desarrollo de herramientas.
La comunidad china BTC NFT (中文社区) es una plaza de comunicación china BTC NFT para los recién llegados a la comunidad china global.
