1. Antecedentes de Bitcoin

Bitcoin adopta 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 el saldo de la cuenta.

图片

Por ejemplo: en el proceso del modelo de contabilidad de cuentas del banco, cuando A transfiere 100 yuanes a B, el banco registrará tres pasos, que constituyen un proceso de transacción. El primer paso es deducir 100 yuanes de la cuenta de A. El ID de registro de este paso es tid1. El segundo paso es depositar 100 yuanes en la cuenta de B. El ID de registro de este paso es tid2. El tercer paso es registrar un registro de transferencia, que asocia tid1 y tid2, lo que indica que la cuenta A disminuye en 100 yuanes y la cuenta B aumenta en 100 yuanes.

De esta manera, la relación de transferencia entre A y B queda registrada y puede consultarse y rastrearse en el futuro. Ahora, explicaremos el método de pago 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 "Salidas de transacciones no gastadas" (UTXO). Cada UTXO contiene una cierta cantidad de Bitcoin, información del propietario y estado de disponibilidad, similar a un cheque con el nombre del titular. Este cheque puede firmarse y transferirse a otra persona.

El saldo de una dirección es igual a la suma de todos sus UTXO. El saldo actual de cada dirección se puede obtener recorriendo la lista de UTXO, y la suma de estos UTXO representa el suministro total actual de todos los Bitcoins.

图片

En la estructura de transacciones de Bitcoin, cada transacción contiene entradas y salidas. Cada entrada es una referencia a una UTXO existente y cada salida especifica una nueva dirección de recepción y una nueva cantidad. Una vez que se crea una transacción, el UTXO asociado con la entrada se bloquea temporalmente para evitar su reutilización, y el estado del UTXO asociado solo cambiará después de que el minero lo empaquete y confirme con éxito.

Específicamente, se elimina el UTXO de entrada y la salida genera un nuevo UTXO y lo agrega a la lista. Esto es similar a la generación de un nuevo cheque después de que caduque el cheque anterior, con la propiedad del nuevo cheque transferida al nombre del nuevo titular.

Cabe enfatizar que cada UTXO solo se puede usar una vez en una transacción. Después de su uso, se elimina permanentemente y se crea una nueva salida y se agrega a la lista de UTXO. La lista UTXO se actualiza constantemente a medida que se crean nuevos bloques. Al analizar el historial de transacciones, se puede reconstruir el estado de la lista UTXO en cualquier momento dado.

Además, el monto total de insumos de una transacción generalmente excede ligeramente el monto total de producción, y esta diferencia se convierte en la tarifa de transacción y sirve como incentivo para K trabajadores. Las tarifas de transacción son proporcionales a la complejidad de la transacción, por lo que una transacción con más entradas y salidas generalmente requerirá tarifas de red más altas.

图片

Para comprender más vívidamente la estructura de transacciones de Bitcoin, podemos aprender más a través del siguiente ejemplo, donde "vin" representa la entrada de la transacción y "vout" representa la salida de la transacción. Las transacciones de Bitcoin utilizan un enfoque de entrada y salida en lugar del modelo tradicional de saldo de cuenta.

图片

Podemos seleccionar aleatoriamente un registro de transacción en blockchain.com para analizarlo. La siguiente figura muestra el Hash ID.

Transacción para 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Contiene una entrada y dos salidas.

图片

Al utilizar los comandos bitcoin-cli getrawtransaction y decoderrawtransaction, podemos inspeccionar la estructura subyacente de la transacción anterior:

图片

En la red Bitcoin, el resultado de cada transacción contiene dos datos clave: la dirección (hash de clave pública) y la cantidad (en Bitcoins).

Si la salida de una transacción no se ha utilizado en la entrada de otras transacciones, entonces esta salida se denomina salida de transacción no gastada (UTXO). Cualquiera que posea la clave privada correspondiente a la clave pública en el UTXO tiene derecho a usar (es decir, gastar) este UTXO.

Veamos la información en "vin" en el código anterior. Indica que el UTXO gastado por esta transacción proviene de la salida 0 (una transacción puede tener múltiples salidas, índice) de otra transacción (su ID es 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). desde 0).

Podemos averiguar el importe de este UTXO (por ejemplo, 0,1 Bitcoin) en el historial de transacciones. Por lo tanto, en esta transacción, este usuario gastó 0,1 Bitcoin, y no es necesario escribir explícitamente el valor 0,1 en la transacción, sino que se obtiene consultando la información UTXO.

El "vout" de esta transacción contiene dos salidas, que representan dos nuevos UTXO, correspondientes al nuevo saldo y propietario. Estos nuevos UTXO existirán hasta que otra transacción los consuma como entrada.

图片

Modelo de pago

Para comprender mejor el modelo de pago de la red Bitcoin, utilizamos un ejemplo para presentar el proceso de pago de una cantidad de n Bitcoins pagados por A a B. La siguiente figura muestra el proceso en el que el usuario A envía 3 Bitcoins al usuario B.

图片

Para el usuario A, en primer lugar, es necesario determinar el conjunto de todos los UTXO que posee, es decir, todos los Bitcoins que el usuario A puede controlar;

A selecciona uno o más UTXO de este conjunto como entrada de la transacción. La suma de las cantidades de estas entradas es m (2+0,8+0,5=3,3 BTC), que es mayor que la cantidad n (3 BTC) que necesita. a pagar;

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 cambio de A, la cantidad es mn-fee (3.3-3-0.001 = 0,299 BTC). La billetera del usuario generalmente consta de varias direcciones. Generalmente, cada dirección solo se usa una vez y el cambio se devuelve a una nueva dirección de forma predeterminada;

Una vez que el trabajador K empaquete y confirme la transacción en la cadena de bloques, el receptor B podrá obtener información sobre la transacción.

图片

Dado que el tamaño de cada bloque es limitado (generalmente alrededor de 1 MB), los trabajadores K priorizan las transacciones con tasas de transacción altas (tarifa_tasa = tarifa/tamaño) para obtener los retornos de tarifa más altos.

Podemos verificar la tasa de transacciones mineras de K en tiempo real en el grupo de transacciones no confirmadas (mempool). Si queremos obtener la confirmación lo antes posible durante el proceso de transferencia, podemos elegir Alta Prioridad o personalizar una tasa de transacción adecuada.

图片

2. Numeración y seguimiento de cong

El suministro total de Bitcoin es de 21 millones y cada Bitcoin contiene 10^8 Satoshi (Sat). Entonces, en la red Bitcoin, tenemos un total de 21 millones * 10^8 satoshis.

El protocolo Ordinals utiliza una forma única de numerar cada Satoshi para garantizar su singularidad y la capacidad de rastrear con precisión la cuenta a la que pertenecen. Además, se simplificará la clasificación de rareza de los satoshis.

El numero de Satoshi.

Según el protocolo Ordinals, los satoshis se numeran según el orden en que se extraen. La siguiente figura muestra la representación del 0.º Satoshi minado en el bloque 0.

图片

Hay muchas formas de expresar Satoshi:

Símbolo entero: Por ejemplo, 2099994106992659, que representa el número de serie asignado al satoshi según el orden de minado.

Notación decimal: por ejemplo, 3891094.16797, el primer dígito indica la altura del bloque donde se extrajo el Satoshi y el segundo dígito indica el número de Satoshi en el bloque.

Símbolo de grado: por ejemplo, 3°111094′214″16797‴, el primer dígito es el período, numerado a partir de 0, el segundo dígito es el índice de bloque de la época de reducción a la mitad y el tercer dígito es el índice de bloque durante la dificultad. período de ajuste, el último dígito es el índice de sat en el bloque.

Símbolo de porcentaje: por ejemplo, 99,99971949060254% indica la posición del Satoshi en el suministro de Bitcoin, expresada como porcentaje.

Nombre: Por ejemplo Satoshi. Un nombre que codifica el número de secuencia utilizando los caracteres de la a a la z.

图片

Tomemos un ejemplo para explicar cómo numerar los Bitcoins recién extraídos. Al observar el bloque 795952 de la cadena de bloques de Bitcoin, contiene una transacción denominada "Tx 3a1f...b177", que registra la recompensa del trabajador K (transacción de coinbase). Esta transacción incluye Bitcoins recién extraídos, que se utilizan como recompensa para los trabajadores K, así como las tarifas de gestión pagadas por el iniciador de la transacción a los trabajadores K.

Al observar la parte de entrada, podemos ver el ID del UTXO, que consta de una cadena de ceros y la altura del bloque. Y en la sección de salida podemos ver las direcciones que recibieron estas recompensas y tarifas, así como su monto total.

图片

Si examinamos más a fondo la salida parcial a K trabajadores, podemos ver la distribución de direcciones, cantidades y satoshis contenidos. Como se mencionó anteriormente, estos incluyen recompensas de minería K y tarifas de manejo.

Entre ellos, la información del número de sats verde 1941220000000000–1941220625000000 es el nuevo satoshi generado por la extracción de recompensas K, y los 712 registros satoshi restantes corresponden a todas las tarifas de manejo en el bloque.

图片

Podemos verificar el número Sat 1941220000000000.

Su número de bloque es 795952 y la notación decimal (decimal) es 795952.0, lo que significa que la altura del bloque para extraer este Satoshi es 795952, el número de Satoshi en este bloque es 0 y la rareza posterior está marcada como poco común. Lo presentaremos en detalle en las siguientes secciones.

图片

La circulación de Cong

El modelo de transacción de Bitcoin utiliza el modelo de salida de transacciones no gastadas (UTXO), lo que significa que se puede rastrear cada Bitcoin (BTC) hasta su fuente. Ilustremos este proceso con un ejemplo:

Supongamos que el usuario A recibió una recompensa por extraer K, que contiene Bitcoins desde el Satoshi número 100 hasta el Satoshi 110. Todos estos Bitcoins están almacenados en el mismo UTXO (Salida de transacción no gastada). El ID de este UTXO es adc123.

Ahora, cuando el usuario A quiere pagarle al usuario B 5 satoshis, elige usar el UTXO con ID abc123 como entrada para la transacción. Esta transacción enviará 5 satoshis al usuario B y devolverá 5 satoshis como cambio al usuario A.

Estos dos 5 satoshis se convertirán en un todo, pero se almacenarán en dos UTXO diferentes, como abc456 y abc789.

La identificación de UTXO anterior y la cantidad de satoshis solo se muestran como ejemplos. En situaciones reales, la cantidad mínima de satoshis enviados está limitada a 546 y la identificación de UTXO no se expresa de esta forma.

图片

En la transacción anterior, la ruta de circulación de los 10 satoshis del usuario A es:

La minería K produce 10 satoshis, numerados [100, 110). Significa que los satoshis del 100 al 109 se almacenan en el UTXO con el id abc123 y su propietario es el usuario A.

Cuando A hace la transferencia, los 10 satoshis se dividen en dos partes, cada una de las cuales es de 5 satoshis. Aquí se adopta el principio de "primero en entrar, primero en salir", es decir, el orden de los números Satoshi se determina de acuerdo con su índice en el resultado de la transacción.

Suponiendo que el orden de salida es primero el usuario A, luego el usuario B, entonces el número de secuencia de los 5 satoshis restantes del usuario A es [100, 105), que se almacena en el UTXO con id abc456, y los 5 satoshis del usuario B son La secuencia El número es [105, 110) y se almacena en el UTXO con id abc789.

图片

Satoshi raro

Como resultado del protocolo Ordinals, la rareza de los satoshi se puede definir en función del orden en que se extraen. Esto dará como resultado que algunos satoshis especiales tengan diferentes rarezas. Aquí están los niveles de rareza de los diferentes Satoshis:

común Nivel común: cualquier satoshi excepto el primer satoshi del bloque (la oferta total es de 2100 billones)

poco común Nivel excelente: el primer satoshi de cada bloque (el suministro total es 6929999)

raro: el primer satoshi de cada período de ajuste de dificultad (el suministro total es 3437)

Épico: el primer Satoshi después de cada reducción a la mitad (el suministro total es 32)

legendario: el primer satoshi de cada ciclo (el suministro total es 5)

mítico: el primer Satoshi en el bloque génesis (el suministro total es 1)

Este concepto de satoshis raros puede agregar más interés y valor al ecosistema de Bitcoin. Los satoshis de diferentes rarezas pueden tener diferentes valores en el mercado, lo que atrae a coleccionistas e inversores.

图片

3. Método de inscripción

Una diferencia significativa entre los Ordinals y otras NFT que no pertenecen a la cadena Bitcoin es que sus metadatos no se almacenan en una ubicación específica.

En cambio, estos metadatos están incrustados en los datos testigo (campo testigo) de la transacción, por lo que los llamamos "inscripción" porque los datos están "grabados" en los bits como una inscripción en una parte específica de la transacción de monedas. , estos datos están adjuntos a un Satoshi específico.

Este proceso de inscripción se implementa a través de Segregated Witness (SegWit) y Pay-to-Taproot (P2TR). Incluye dos etapas: confirmar y revelar cualquier forma de contenido (como texto, imágenes o videos) en el Satoshi designado.

A continuación, detallaremos otro método de almacenamiento más directo, OP_RETURN, y explicaremos por qué no funciona con inscripciones. Al mismo tiempo, exploraremos los conceptos de Segwit y Pay-to-Taproot, y su papel en Inscripción. Finalmente, profundizaremos en los métodos de inscripción.

图片

OP_RETURA

En la versión 0.9 del cliente Bitcoin Core, finalmente se llegó a un compromiso utilizando el 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 que es explícitamente verificable pero no gastable y no necesita almacenarse en una colección UTXO (Salida de transacción no gastada).​

Las salidas RETURN se registran en la cadena de bloques, lo que ocupará espacio en el disco y hará que el tamaño de la cadena de bloques aumente, pero no ocuparán la colección de UTXO y, por lo tanto, no harán que la colección de UTXO se infle, ni aumentarán el costoso costo de la memoria. del nodo completo.

Si bien OP_RETURN es un método para almacenar información directamente en la cadena de bloques de Bitcoin, también presenta algunos desafíos. En primer lugar, OP_RETURN solo puede almacenar 80 bytes de datos, lo que obviamente no es suficiente para situaciones en las que es necesario almacenar más datos.

En segundo lugar, los datos OP_RETURN se almacenan en la salida de la transacción. Aunque no ocuparán la colección UTXO, sí ocuparán el espacio de almacenamiento de la cadena de bloques, lo que hará que el tamaño de la cadena de bloques aumente.

Finalmente, usar OP_RETURN aumenta las tarifas de transacción porque requiere pagar más para publicar estas transacciones.

图片

Testigo segregado

En comparación con los métodos anteriores, SegWit proporciona una nueva solución que puede resolver los problemas anteriores.

SegWit es una actualización de protocolo clave para Bitcoin. Fue propuesta por primera vez por el desarrollador principal de Bitcoin, Pieter Wuille, en 2015 y finalmente se adoptó oficialmente en la versión 0.16.0 en 2017.

El "Segregado" en Segregated Witness (SegWit) significa separación o aislamiento, mientras que "Testigo" implica los datos de firma asociados con la transacción. Por lo tanto, el concepto central de SegWit es separar ciertos datos de firma de transacciones (también llamados datos testigo) de los datos de la transacción real.

El principal beneficio de separar los datos de firmas de los datos de transacciones es reducir el tamaño de los datos almacenados en los bloques de Bitcoin. Esto da como resultado más capacidad disponible por bloque para acomodar más transacciones, lo que también significa que la red puede procesar más transacciones y los usuarios pagan tarifas de transacción más bajas.

Técnicamente, esto significa mover los datos de firma del script (scriptSig) originalmente contenidos en la estructura del bloque base a una nueva estructura de datos. Los nodos de validación y los trabajadores K también verificarán la firma del script en esta nueva estructura de datos para garantizar la validez de la transacción.

图片

La actualización de SegWit también introduce un nuevo campo de datos de testigos para mejorar la privacidad y la eficiencia. Aunque los datos de testigos no están diseñados específicamente para almacenar datos de transacciones en texto sin formato, en realidad nos brindan la oportunidad de almacenar cosas como metadatos de inscripción.

Usamos la siguiente figura para comprender más vívidamente el Testigo Segregado:

图片

Raíz principal

P2TR es un tipo de salida de transacción de Bitcoin que se introdujo en la actualización Taproot de 2021, que permite almacenar diferentes condiciones de transacción en la cadena de bloques de manera más privada.

En esta arquitectura, P2TR juega un papel crucial en la inscripción de datos de Ordinals. En realidad, la inscripción incorpora datos específicos en las transacciones de Bitcoin, y las actualizaciones de Taproot, específicamente P2TR, hacen que la incorporación de estos datos sea más flexible y económica.

En primer lugar, debido al método de almacenamiento de los códigos de comando Taproot, podemos almacenar datos de inscripción en la ruta del comando Taproot y estos códigos de comando casi no tienen restricciones de contenido. Al mismo tiempo, también podemos disfrutar de descuentos en datos de testigos. lo que hace que sea relativamente económico almacenar datos de inscripción.

Sin embargo, dado que el consumo de instrucciones Taproot solo puede provenir de la salida Taproot existente, el almacenamiento de inscripciones adopta un proceso de confirmación/revelación de dos etapas. Primero, en la transacción de confirmación, se establece una salida Taproot que promete contener los datos de inscripción.

图片

Luego, en una transacción de revelación, se consume la salida establecida por la transacción de confirmación, revelando así el contenido de la inscripción en la cadena.

Este enfoque reduce significativamente el uso de recursos. Si no se utiliza P2TR, los datos del testigo se almacenarán en la salida de la transacción. Mientras esta salida no se consuma, los datos del testigo siempre existirán en el conjunto UTXO.

Por el contrario, si se utiliza P2TR, los datos testigo no aparecerán en la transacción generada durante la fase de confirmación y, por lo tanto, no se escribirán en el conjunto UTXO. Solo cuando se consuma este UTXO, los datos del testigo aparecerán en la entrada de la transacción durante la fase de revelación.

P2TR permite escribir datos originales en la cadena de bloques de Bitcoin, pero no siempre ocupa el espacio concentrado en UTXO. Dado que mantener/modificar el conjunto UTXO requiere más recursos, este método puede ahorrar recursos significativamente.

图片

inscripción

El protocolo Ordinals amplía el límite de tamaño de escritura en la red Bitcoin mediante el uso de SegWit para almacenar contenido de texto sin formato en el testigo, lo que permite hasta 4 MB de almacenamiento de metadatos.

Taproot simplifica el proceso de 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 crear los llamados "sobres" para almacenar lo que se denomina "inscripción" de cualquier información.

El proceso de fundición de la inscripción consta de los dos pasos siguientes:

Primero, en la transacción de confirmación, debe crear una promesa que apunte a la salida de Taproot que contiene el contenido de la inscripción. El formato de este almacenamiento es Taproot, el resultado de la transacción anterior debe ser P2TR (Pay-To-Taproot) y el contenido de un formato específico está incrustado en el script testigo de Taproot.

Primero, se inserta la cadena "ordn" en la pila para eliminar la ambigüedad del propósito de la inscripción. Luego, use OP_PUSH 1 para indicar que el siguiente envío contiene el tipo de contenido y OP_PUSH 0 para indicar que los envíos de datos posteriores contienen el contenido en sí.

Dado que una de las limitaciones de Taproot es que una sola transferencia de datos no puede exceder los 520 bytes, se requieren múltiples transferencias de datos para almacenar inscripciones grandes. En este momento, los datos de inscripción se han vinculado a la salida de transacciones no gastadas (UTXO) de la salida de la transacción, pero aún no se han hecho públicos.

图片

En segundo lugar, en la transacción de revelación, la producción creada debe consumirse. En esta etapa, la transacción se inicia tomando como entrada el UTXO correspondiente a la inscripción. En este momento, el contenido de la inscripción relacionado con UTXO estará expuesto a toda la red.

A través de los dos pasos anteriores, el contenido de la inscripción se ha asociado con un UTXO específico. De acuerdo con el método de posicionamiento de Satoshi (UTXO) presentado anteriormente, la inscripción se graba 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 circulación y seguimiento de Satoshi (UTXO) antes mencionado, este Satoshi que contiene contenido especial puede transferirse, comprarse, venderse, perderse y recuperarse. Cabe señalar que la inscripción no se puede repetir, de lo contrario las inscripciones posteriores no serán válidas.

Para explicar este proceso con más detalle, veamos un ejemplo que muestra cómo inscribir una pequeña imagen de un NFT de Bitcoin. Este proceso cubre las dos fases de confirmación y revelación mencionadas anteriormente.

Primero, podemos ver que el ID de hash 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 hay información de inscripción relevante en la página web.

图片

A continuación, verificamos el registro de la segunda etapa, 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 testimonio.

La dirección de entrada de esta transacción es la dirección de salida de la transacción anterior, y la salida 0.00000546BTC (546 Satoshi) es para transferir este NFT a su propia dirección. Al mismo tiempo, también podemos encontrar el satoshi donde se encuentra esta inscripción en Sat 1893640468329373.

图片图片

En la billetera Bitcoin podemos ver este activo. Si queremos comercializar este NFT, podemos transferirlo directamente a direcciones de otras personas, es decir, transferir el UTXO, completando así la transferencia de la inscripción.

图片

4. Billetera Bitcoin

Una vez que comprendamos qué es la ecología de los ordinales, la circulación de satoshis y el conocimiento relacionado de las inscripciones, actualmente existen muchos escenarios de aplicación, ya sea el surgimiento de BRC-20, ORC-20, BRC-721, GBRC-721 y otros protocolos derivados relacionados, que requieren que tengamos billeteras correspondientes para admitir y mostrar información de tokens o imágenes pequeñas de NFT.

En esta sección presentaremos los conceptos y características de diferentes direcciones de billetera Bitcoin.

Las direcciones de Bitcoin normalmente comienzan con 1, 3 o bc1 y, al igual que las direcciones de correo electrónico, se pueden compartir con otros usuarios de Bitcoin para transferir Bitcoin directamente a su billetera.

Desde una perspectiva de seguridad, las direcciones de Bitcoin no contienen información confidencial y, por lo tanto, pueden compartirse públicamente en cualquier momento sin comprometer la seguridad de su cuenta. A diferencia de las direcciones de correo electrónico, puede crear nuevas direcciones de Bitcoin según sea necesario y todas ellas depositan fondos directamente en su billetera.

图片

De hecho, muchas billeteras modernas establecen 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 que desbloquean los fondos que contiene. Primero necesitamos saber cómo se genera la dirección de la billetera Bitcoin.

Claves públicas y privadas de Bitcoin

Bitcoin utiliza la curva elíptica Secp256k1. La "clave privada" es un número aleatorio entre 1 y n-1, es un número muy grande (256 bits n se expresa en notación científica como:

图片

Este rango es muy amplio y hace que sea casi imposible descifrar las claves privadas de otras personas. Esta clave privada es un número entero aleatorio, generalmente representado por 256 bits binarios, y puede codificarse de diversas formas. Las claves privadas que utilizan WIF (Wallet Import Format) o formato comprimido WIF no están cifradas y se pueden decodificar directamente en números enteros aleatorios sin formato.

Otro método es BIP38 (Bitcoin Improvement Proposal 38), que recomienda utilizar el algoritmo AES para cifrar la clave privada. La clave privada generada por este esquema comienza con el carácter 6P y se debe ingresar una contraseña para importarla a varias billeteras Bitcoin. Esta es la forma en que usualmente usamos la protección de clave privada.

A continuación, utilizamos la fórmula de curva elíptica K = kG, donde k es la clave privada y G es el punto base, que es un argumento para la curva elíptica secp256k1.

A través de esta fórmula, podemos obtener las dos coordenadas de K, que son las dos expresiones de la clave pública, a saber, "formato sin comprimir" y "formato comprimido".

图片

La forma sin comprimir consiste en conectar directamente las dos coordenadas xey y luego agregar el prefijo 0x04 al frente;

La forma comprimida significa que 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

En la siguiente figura se muestran varios tipos de direcciones de Bitcoin. Hay cuatro métodos de representación:

图片

1. Formato heredado (P2PKH)

Ejemplo: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u

La dirección comienza con "1", que es el formato de dirección original de Bitcoin y todavía se utiliza en la actualidad. Se obtiene mediante cálculo Hash a partir de la clave pública, también conocida como P2PKH, que es la abreviatura de Pay To PubKey Hash (pago a hash de clave pública).

2. Formato SegWit anidado (P2SH)

Ejemplo: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN

La dirección comienza con "3". P2SH es la abreviatura de Pay To Script Hash, que admite funciones más complejas que las direcciones heredadas. P2SH anidado, obtiene la dirección P2SH existente (que comienza con "3") y la encapsula junto con la dirección SegWit.

图片

3. Formato nativo SegWit (Bech32)

Ejemplo: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3

BIP0173 introdujo formatos de dirección que comienzan con "bc1", que son las direcciones utilizadas para el testigo segregado nativo (SegWit). Este formato de dirección utiliza codificación Bech32 y está diseñado específicamente para SegWit. Las direcciones en formato Bech32 se definieron en BIP173 a finales de 2017. Una de sus características principales es que no distingue entre mayúsculas y minúsculas, por lo que es más fácil evitar confusiones al ingresar y también es más fácil de leer.

En comparación con la codificación Base58 tradicional, Bech32 usa codificación Base32, por lo que se requieren menos caracteres en la dirección, el cálculo es más eficiente y se puede almacenar de manera más compacta en el código QR.

Además, Bech32 ofrece mayor seguridad y una detección de errores de suma de comprobación mejor optimizada, minimizando el riesgo de direcciones no válidas.

Las propias direcciones Bech32 son compatibles con SegWit. No se requiere espacio adicional para colocar la dirección SegWit en la dirección P2SH, por lo que al usar la dirección en formato Bech32, la tarifa de manejo será menor.

En general, las direcciones Bech32 tienen varias ventajas sobre las direcciones Base58 tradicionales: los códigos QR generados son más pequeños, más a prueba de errores, más seguros, no distinguen entre mayúsculas y minúsculas y contienen solo letras minúsculas, por lo que son más fáciles de leer, escribir y escribir. comprender.

图片

4. 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 aliviar las deficiencias anteriores de Bech32, se propuso la dirección Bech32m en BIP0350:

  • Para direcciones Segwit nativas con versión 0, utilice el Bech32 anterior;

  • Para direcciones Segwit nativas de la versión 1 (o superior), se utiliza el nuevo Bech32m.

Para las direcciones Bech32m, cuando su número de versión es 1, siempre comienzan con "bc1p", lo que significa que son direcciones Taproot. De manera similar al Segwit nativo, estas direcciones se pueden generar a partir de una frase inicial y una frase de contraseña utilizadas para generar las claves públicas y privadas del conjunto extendido, lo que permite la derivación de direcciones para varias rutas en una billetera determinista jerárquica.

图片

Se utiliza principalmente para almacenar activos digitales como tokens BRC-20 y NFT de Bitcoin.