
Autor: Captainz, ex investigador de GametaversedAo Fuente: X,@hicaintainz
En las últimas dos semanas, cuando estudiaba la ecología BTC y varios proyectos de inscripción, descubrí que pocos artículos pueden introducir claramente los principios y los detalles técnicos: por ejemplo, cómo se inició la transacción cuando se emitió la inscripción y los SAT Utxo en UTXO ¿Cómo se rastrea, el contenido de la inscripción se coloca en el script y por qué el BRC20 necesita funcionar dos veces al transferir?Encuentro que no entiendo estos detalles técnicos, es difícil entender las diferencias entre BRC20, BRC420, Atómicos, sellos, Rune Runes, este artículo penetrará el conocimiento básico de la cadena de bloques BTC e intentará responder las preguntas anteriores .
Estructura de bloque de BTC
Blockchain es esencialmente una tecnología de contabilidad de múltiples usuarios.
>
Utilizamos Excel para hacer un formulario para explicar el principio de funcionamiento de la cadena de bloques.Un archivo de Excel representa una cadena de bloques, cada una de las cuales muestra una forma separada.La parte principal del bloque es el método de contabilidad dúplex más común en el campo de contabilidad.El valor corresponde a la dirección correspondiente de la dirección correspondiente.El número de monedas de entrada será mayor que el número de monedas de salida.El cabezal del bloque obtendrá la altura del bloque anterior, el valor hash del bloque anterior, el tiempo de establecimiento (marca de tiempo) de este bloque y el número aleatorio.Entonces, como tecnología de contabilidad descentralizada, ¿quién obtendrá los derechos de contabilidad del próximo bloque?Confiar en este número aleatorio y el valor hash correspondiente.Los mineros con potencia informática calculan la computación hash de los bloques actuales, y los primeros mineros que obtienen el valor de hash calificado tienen el siguiente bloque de contabilidad de bloque correcto y ganan la tarifa de recompensa y transferencia de bloques.Finalmente, el área de script se puede usar para hacer algunas aplicaciones de expansión.Cabe señalar que en el bloque real, el área de script está conectada a la información de entrada y salida, no un área separada.Por ejemplo, el script adjunto a la entrada es el script de desbloqueo (scriptSIG), que requiere que la dirección de la billetera realice la autorización de firma de la clave privada para permitir la transferencia.
>
>
Las dos cifras anteriores son las tablas de estructura de datos de la entrada y salida originales.
Testigo de aislamiento y taproot#
Aunque la red de bitcoin ha estado operando durante más de 10 años, no ha habido eventos significativos, pero los costos de transacción se han disparado a puntos altos que ya no son factibles.Por lo tanto, los desarrolladores de Bitcoin han estado discutiendo cómo la mejor expansión de la red para lidiar con el creciente volumen de transacciones en el futuro.
En 2017, el debate alcanzó un clímax, y la comunidad de desarrollo de Bitcoin se dividió en dos facciones. .
Mencionamos anteriormente que la comprensión de que el script de bloqueo debe usar la clave privada para generar «datos de testigos», entonces, ¿podemos separar estos datos de testigos del bloque, para aumentar el número de transacciones que pueden acomodar cada bloque?El testigo segregado se activó oficialmente en agosto de 2017.Su método de implementación es dividir todos los datos de transacciones en dos partes, uno son los datos de información básica de la transacción, y la otra parte es la información de firma de la transacción y guarda la información de firma en una nueva estructura de datos en el nuevo bloque, que se llama «testigo» y se transmite por separado de la transacción original.
>
Técnicamente, la implementación de SEGWIT significa que las transacciones ya no necesitan incluir datos de testigos (que no ocupan espacios de 1 MB que Bitcoin originalmente organizó para el bloqueo).En cambio, al final de un bloque, se crea un espacio extra independiente para presenciar datos.Admite cualquier transferencia de datos y tiene un «peso de bloque» de descuento, que mantiene inteligentemente una gran cantidad de datos en el tamaño del bloque de Bitcoin para evitar las necesidades de horquillas duras.De esta manera, el tamaño de los datos de transacciones de las transacciones de bitcoin aumenta el límite superior, al tiempo que reduce el costo de transacción de los datos de la firma.Antes de la actualización de Segwit, la capacidad del bitcoin era de 1 MB, y después de Segwit, aunque la capacidad de la transacción simple aún era 1 m, el tamaño del espacio de testigos de aislamiento alcanzó 4 MB.
Taproot se implementó en noviembre de 2021. Consiste en tres propuestas diferentes de mejora de bitcoin (BIP), que incluyen: Taproot, Tapscript y su nuevo esquema de firma digital llamado «Schnorr Signature».Taproot tiene como objetivo aportar muchos beneficios a los usuarios de Bitcoin, como aumentar la privacidad de las transacciones y reducir los costos de transacción.También permitirá que Bitcoin realice transacciones más complejas, amplíe los escenarios de aplicación (agregando algunos códigos de operación de código operativo).
Estas actualizaciones son el factor de promoción clave de los Ordinales NFT, que almacena los datos NFT en el script gastado (espacio de datos presenciado) en la ruta de script de taproot.Esta actualización facilita la estructura y el almacenamiento para presenciar los datos, estableciendo las bases para el estándar «Ord».Con la relajación de los requisitos de datos, suponiendo que una transacción puede llenar todo el bloque con sus datos de transacción y testimonio, la limitación del tamaño del bloque (espacio de datos de testimonio) de 4 MB de expansión genial del tipo de medio que se puede colocar en la cadena.
Algunas personas pueden preguntar, ya que hay alguna cadena en el script, ¿no hay restricción en estas cadenas?¿Qué pasa si estos scripts se ejecutan realmente?Si el contenido se coloca casualmente, ¿el código de error se negará a salir?Esto es para mencionar la instrucción OP_FALSE.OP_FALSE (también expresado en los scripts de bitcoin como «0») asegura que la ruta de ejecución en el lenguaje de script nunca ingrese a la rama OP_IF y la mantendrá en un estado incansable.Actúa como un lugar o operación aérea en el script, similar a las «anotaciones» en idiomas avanzados para garantizar que no se ejecute el código posterior.
>
Modelo de transferencia UTXO
Los anteriores son los principios básicos de BTC de la estructura de datos de la computadora.
UTXO es la abreviatura de las salidas de transacciones no gastadas.Entonces, ¿por qué Bitcoin usa tal concepto?Esto comienza con el modelo de comercio de cuenta y el modelo de saldo de cuenta del método de contabilidad.
Debido a que hemos estado en el sistema centralizado durante demasiado tiempo, estamos muy acostumbrados al método de contabilidad de los modelos de saldo de cuenta.Cuando el usuario A transfiere 100 yuanes al usuario B, el banco verificará si hay 100 yuanes en la cuenta bancaria de A. se completa el accidente cerebrovascular.
Sin embargo, el algoritmo de contabilidad de Bitcoin no tiene el concepto de equilibrio.Solo hay una transacción registrada en el libro mayor distribuido de la cadena de bloques, y no registrará directamente el saldo actual de una cuenta (el saldo de registro generalmente requiere un nodo de servidor especial para grabar, luego centralizado).Supongamos que el usuario actual A es de 1,000 yuanes.
Transacción 1 Usuario A al usuario B Transferencia 100 Yuan
Transacción 2 Usuario A al usuario A transferencia 900 yuan (UTXO) (UTXO)
>
Aunque la transacción aquí es una transacción, en términos de función, desempeñó el papel del saldo de la cuenta, lo que indica que todavía quedan 900 yuanes en la cuenta de la cuenta de A después de completar la transferencia de 100 yuanes.
Entonces, la pregunta es, ¿por qué tienes que construir un utxo así?Debido a que solo las transacciones se pueden registrar en la cadena de bloques BTC, el saldo de la cuenta no se puede registrar.Sin este UTXO, debe calcular el saldo del saldo y acumular todas las transacciones y cuentas de todas las cuentas.La aparición de UTXO evita hábilmente los puntos débiles de todas las transacciones al calcular el equilibrio.
Utxo tiene una característica, es decir, como una moneda, no puede abrirla.Podemos usar la moneda para hacer una analogía (de hecho, es mejor traducirla automáticamente en «monedas» cuando ves la palabra utxo).
Xiaoming transferido 1 bitcoin para Xiaogang.Todo el proceso es como este. Dos entradas en esta transacción de transferencia.Al mismo tiempo, habrá dos resultados, una es para la pequeña dirección del pigrante, y el valor nominal es 1 bitcoin.Otra dirección a la propia dirección de Xiaoming es 0.1 Bitcoin.
En otras palabras, hay dos monedas en el bolsillo de Xiaoming, un valor nominal es 0.9 y el otro es 0.2. Xiaogang al mismo tiempo.Por lo tanto, la esencia de este modelo de contabilidad es evitar el «saldo de cálculo» a través de la acción de «encontrar cero».
El sistema de pedido del protocolo ordinal
Se puede decir que el protocolo ordinal es la fuente de esta ronda de explosión ecológica de BTC.¿Cómo fue eso?
Sabemos que la cantidad total de BTC es de 21 millones, y un BTC se puede dividir a 100 millones (SAT), por lo que la unidad más pequeña de BTC es SAT.Ahora tratamos de asignar un número de serie a estos SAT.
Al hablar sobre la estructura de datos de bloque antes, mencionamos que la información de la transacción debe indicar la dirección y la cantidad de entrada y la dirección y la cantidad de salida.Cada bloque contiene dos partes de las transacciones: las tarifas de entrega y transferencia de BTC.El comercio de tarifas de manejo debe tener entrada y salida, pero debido a que la recompensa de salida es un BTC generado por el aire, no hay una dirección de entrada, por lo tanto, esta «entrada del» campo está en blanco, también llamada «transacción coinbase».El número total de BTC se deriva de esta transacción Coinbase, que también se clasifica primero en todas las transacciones de bloque.
El protocolo ordinal estipula de la siguiente manera:
-
Número: Cada SAT está numerado en el orden de su minería
-
Transferencia: de acuerdo con las reglas avanzadas de avanzado primero, transfiera de la entrada de la transacción a la salida
Artículo 1 Las reglas son relativamente simples, y determina que el número solo puede ser generado por la transacción Coinbase en la recompensa minera.Por ejemplo, si el primer bloque de recompensas de minería es de 50 BTC, se asignará el primer bloque [0; 5,000,000,000; -
Envío de la etapa (Conjunto): en esta etapa, los usuarios envían su información (como la selección de votación o el precio de licitación), pero esta información está encriptada.En general, los usuarios generarán el valor hash (es decir, el cifrado de información), y luego enviarán este valor hash a la cadena de bloques.Debido a las características de la función hash, pueden generar una salida única (valor hash), que es irreversible para la información original.Esto significa que la información original no se puede inferir del valor hash.Este proceso garantiza la confidencialidad de la información al enviar.
-
Revelar: Después de un predeterminado, los usuarios deben revelar su información original y demostrar que coincide con el valor hash enviado antes.Esto generalmente se realiza enviando la información original y cualquier datos adicionales (como números aleatorios o «sal») utilizados para generar hash.Luego, la red verifica si el valor hash de esta información original es el mismo que el valor hash enviado antes.Si coincide, la información original se acepta como válida.
-
Crear costos
Para crear una transacción P2TR, los usuarios primero definen una condición condicional, como una sola clave pública o un script más complicado, especificando los requisitos para gastar bitcoin (por ejemplo, múltiples billeteras de firma o contratos inteligentes). -
Generar la salida de Taproot
Luego, el usuario genera una salida de Taproot, que incluye una sola clave pública (la clave pública representa la condición del gasto).Esta clave pública se deriva de la combinación de la clave pública del usuario y del hash del usuario, utilizando un proceso llamado «ajuste».Esto asegura que la salida parezca una clave pública estándar, lo que dificulta la distinción con otras transacciones en la cadena de bloques. -
Gastar bitcoin
Cuando los usuarios quieren gastar Bitcoin, pueden usar su clave única (si se alcanza el costo) o revelar el script original y proporcionar las firmas o datos necesarios para cumplir con el costo.Esto se hace utilizando Tapscript, que permite una ejecución de costos más eficiente y flexible. -
Transacción de verificación
Los mineros y nodos se verificaron posteriormente al verificar las firmas de Schnorr y las condiciones de datos y gastos proporcionadas por la inspección.Si se cumplen las condiciones y la transacción se considera válida, se puede esperar bitcoin. -
Privacidad y flexibilidad mejoradas
Debido a que las transacciones P2TR solo revelan los costos necesarios al gastar Bitcoin, mantienen la privacidad de alto nivel.Además, las firmas de Mast y Schnorr lo hacen puede codificar eficientemente múltiples costos y permitir transacciones más complicadas y flexibles sin aumentar el tamaño general de la transacción.
>
La parte más difícil aquí es que, debido a que UTXO en realidad contiene mucho Cong, cada Cong en este UTXO se ve igual.Esto en realidad está determinado por las segundas reglas.
Primero supongo que la unidad de división más pequeña del BTC es 1, que tiene un total de 10 bloques, y las recompensas de salida de cada bloque son 10 BTC, es decir, la cantidad total es 100.Podemos dar a estos 100 BTC un número de serie de (0-99).Si no hay una situación de transferencia, solo sabemos que los 10 números de BTC del primer bloque son (0-9), y los 10 números de 10 BTC del segundo bloque son (10-19), hasta el décimo área el 10 BTC Los números del bloque son (90-99).No hay salida porque no hay costo, y solo podemos dar un rango de números a cada 10 BTC.
Supongamos que se agregan dos gastos al segundo bloque, uno es 3BTC y el otro es 7 BTC con «Find Cero», que corresponde a 3 BTC para otros y encuentra 7 BTC para ellos mismos.En este momento, en la lista de transacciones de bloque, se clasifica primero en las 7 clasificaciones BTC que encuentra cero (el número correspondiente es 10-16) y la clasificación de 3BTC para otros (el número correspondiente es 17-19).Esto confirma la colección de secuencia de SAT contenidos en un UTXO a través de la transferencia de salida.
¡Tenga en cuenta que cada SAT no es UTXO!
En cuanto a cómo expresar este «número», Ordinal admite múltiples formas, como el «método entero» mencionado anteriormente, otros métodos decimales decimales, método de grado, método porcentual y método de nombres de letras puras.
>
Después de que SATS tiene un número de serie unificado, puede considerar la inspección.Mencionamos anteriormente que podemos cargar cualquier archivo de tipo de datos en el tamaño de 4M del área de datos, ya sea texto o imágenes y videos.Por lo tanto, 1 UTXO corresponde a un área de script de grifo, y estos UTXO también incluirán muchos SAT (recolección general de secuencia SATS. Para evitar ataques de polvo, el número de bitcoins en un solo UTXO no puede ser inferior a 546 Cong Cong).Para facilitar el registro, el protocolo ordinal estipula artificialmente que «el primer número de SAT que usa esta colección de secuencia representa la relación de unión» (la palabra original del papel blanco es el primer número de salida)) el UTXO del número usa directamente el 17 para reemplazar la colección y la vinculación del contenido de la inscripción.
Fundición y transferencia de activos ordinales#
El NFT ordinal obviamente se carga al script en el área de testimonio de aislamiento y lo une a una secuencia SATS para reunir para emitir activos NFT en la cadena BTC.Pero también hay un problema aquí.La respuesta correcta es que ambos están disponibles.Aquí tengo que mencionar el mecanismo de Revalos Commit en la tecnología blockchain.
El mecanismo de Revalos Commit en la cadena de bloques es un protocolo para garantizar la equidad y el procesamiento transparente de la información.Este mecanismo generalmente se usa en el escenario que debe enviarse a la información oculta (como la votación o la licitación), y luego revela esta información en cierto punto en el futuro.El mecanismo de Revalos Commit se divide en dos etapas: la etapa de la Comisión (Commit) y la etapa revelada.
Como se mencionó anteriormente, el contenido de la inscripción debe estar vinculado con el conjunto de secuencias SATS contenido en UTXO.Sin embargo, el nodo completo de BTC debe ser un mantenimiento local y la transmisión de todos los conjuntos UTXO en toda la red.Imagine que si hay 10,000 archivos de video 4M cargados directamente a 10,000 script de bloqueo UTXO, entonces todos los nodos completos deben tener un alto espacio de almacenamiento y una velocidad de red ultra rápida.Por lo tanto, la única solución es colocar el contenido en el script de desbloqueo en la entrada, y luego dejar que este contenido «apunte» a otra salida.
Por lo tanto, el lanzamiento de los activos ordinales debe dividirse en dos pasos (la billetera es combinar estos dos pasos. Al construir una transacción y, al mismo tiempo, la transacción padre-hijo está construida. Tarifa).
Durante la etapa de casting, el usuario primero necesita cargar el valor hash de un archivo en el script de bloqueo en el UTXO de la transacción de confirmación (la dirección de la dirección A a la dirección B de la dirección B).En segundo lugar, el usuario construye una nueva transacción (la dirección B se transfiere a usted mismo), que se llama transacción de revelación. Entrada El script de desbloqueo debe contener el archivo de inscripción original.La descripción de las palabras originales en el documento blanco es «en primer lugar, en la confirmación, crear una salida de tapro de tap enviada al script que contiene el contenido de la inscripción. Segundo, en la transacción reveladora» «» «
Durante la etapa de transferencia, el NFT ordinal y el BRC20 son ligeramente diferentes.Sin embargo, el BRC20 se divide en dos pasos porque implica una transferencia de cantidad personalizada. implica que el par de transacciones de padre e hijo de compromiso es similar a una transferencia ordinaria NFT.Algunas billeteras construirán estas tres transacciones (transacciones de tres generaciones de sus hijos y nietos) al mismo tiempo, para ahorrar tiempo y gas.
>
En resumen, la transacción de confirmación se usa para vincular el contenido de inscripción (valor hash del contenido original) con los SATS (UTXO) con el número de serie, y la transacción reveladora se usa para mostrar el contenido (contenido original).Esta transacción padre -don ha completado el lanzamiento de NFT.
P2tr y un ejemplo#
La discusión técnica anterior sobre el casting no ha terminado, porque algunas personas sentirán curiosidad, ¿cómo la transacción revelar verifica la información de inscripción en la transacción de confirmación?¿Por qué necesito transferir las dos direcciones de los demás al construir una transacción?No vi dos billeteras cuando estaba jugando inscripciones.Aquí necesitamos hablar sobre una de las principales actualizaciones de Taproot P2TR.
P2TR (Pay-to-Tapoot) es un nuevo tipo de transacción Bitcoin introducida por Taproot.Las transacciones P2TR gastan Bitcoin al permitir a los usuarios usar una sola clave pública o un script más complicado (como billeteras de firma múltiples o contratos inteligentes) para lograr una mayor privacidad y flexibilidad.Esto se logra firmando las firmas de los árboles de sintaxis abstracta de Merkleized (Mast) y Schnorr.
Lo anterior es el método de aplicación del mecanismo de revelación de comandos en P2TR.
Use el navegador blockchain https://www.blockchain.com/ Estudiemos el proceso de lanzamiento de una imagen ordinal NFT, incluido el comité anterior.
En primer lugar, vemos que la identificación hash de la transacción de confirmación es (2DDF90DDF7C929C80388888FC2B7591FB999C3BA3C7B49D54D01F8DB4AF585C).Cabe señalar que la salida de esta transacción no contiene datos de inscripción (de hecho, el valor hash del archivo de imagen del mecanismo 16), y no hay información de inscripción relevante en la página web.Esta dirección de salida (BC1P4MTC …) es en realidad una dirección temporal generada por el proceso de «ajuste» (que representa la clave pública de la condición de desbloqueo de script) y una clave privada con la dirección principal (bc1pg2mp …).El segundo utxo en esta transacción pertenece a la operación «cero» de la devolución.De esta manera, la vinculación del contenido de inscripción y el SATS contenidos en el primer UTXO.
>
Luego, verificamos el registro de transacción Reveal, y su ID de hash es (E7454DB518CA3910D2F17F41C7B215D6CBA00F29BD186AE77D7FCD7F0BA7C0E1).Aquí, podemos ver la información de Ordinales Inscript.La dirección de entrada de esta transacción es la dirección de salida temporal generada por la transacción anterior (bc1p4mtc …..), y el script de desbloqueo de la entrada contiene el archivo hexadecimal de la imagen original, mientras que la salida 0.00000546BTC (546 Cong) Esto es para enviar este NFT a su propia dirección principal de Taproot (bc1pg2mp …).Basado en el primero en el principio de primera salida y «el primer número de Cong de la primera salida está vinculada».Por lo tanto, podemos encontrar a Cong, donde la inscripción se encuentra en (SAT 1893640468329373).
(Https://ordinals.com/sat/1893640468329373)
>
Estas dos transacciones (pertenecientes a la transacción de padre e hijo) serán sometidas al grupo de memoria por la billetera al mismo tiempo cuando se lanzarán, por lo que solo toma un gas, y también es una gran oportunidad que se grabe y transmitirá por los mineros en el mismo bloque (en los ejemplos anteriores (los ejemplos anteriores, las dos transacciones existen en el bloque 790468).Posteriormente, los mineros y nodos se verificaron verificando la firma Schnorr proporcionada por la entrada en la transacción reveladora y los valores hash de las imágenes hexadecimales y los valores hash de 16 imágenes a prueba de imágenes en el script de salida en la transacción de confirmación.Si los dos son iguales y la transacción se considera válida, se puede gastar el utxo de este bitcoin, entonces estas dos transacciones se registran naturalmente en la base de datos de blockchain del BTC.Si los dos valores hash son diferentes, las dos transacciones se cancelarán y la inscripción falla.
Protocolo e indexador BRC20
Para el protocolo ordinal, estamos grabados con un texto, que es el texto NFT (correspondiente al botín en el Ethereum), la inscripción es una imagen, es la imagen NFT (correspondiente al PFP en Ethereum), que está inscrita por un período de música.Entonces, ¿qué pasa si estamos grabados con un código y este código es un código de «tokens de homogeneización FT»?
El BRC20 debe implementar, fundir y transferir token utilizando el protocolo ordinal para implementar, fundir y transferir al formato de datos JSON. .Ya hemos dicho en el artículo anterior que la esencia del token BRC20 es el token semi -homogéneo SFT, es decir, en algunos casos, se puede usar como transacciones NFT, y algunos casos pueden usarse como transacciones FT. de par es ¿cómo se puede controlar el control de «diferentes situaciones»?La respuesta es el índice.
El indexador es en realidad un contador, que se utiliza para registrar la información de recepción en la base de datos.En el protocolo ordinal, los índices determinan los cambios de los SAT en diferentes direcciones mediante el seguimiento de la entrada y la salida.En el protocolo BRC-20, los índices tienen una función más: registrar los cambios en diferentes direcciones en la inscripción.
Por lo tanto, podemos ver diferentes existencias de tokens desde la perspectiva del contable: los tokens de protocolo BRC20 realmente existen en una base de datos triple.La primera capa1, el contador es BTC Miner, el tipo de base de datos es la «Base de datos de cadena» y el BTC generado son los activos FT.La segunda capa2, el contador es el indexador ordinal, el tipo de base de datos es la «base de datos relacional», y el número de serie SATS es un activo NFT.La tercera capa3, el contador es el indexador BRC20, el tipo de base de datos es la «base de datos relacional» y el activo BRC20 generado es FT Activos.当我们把 BRC20 按照 “张” 来算的时候 , 站的角度是 站的角度是 索引器(由该索引器记录) 索引器(由该索引器记录) 它自然是 它自然是 nft ;当我们把 BRC20 按照分拆好的 “个” 来思考的时候( Especialmente después de recargar a intercambios centralizados), el ángulo de la estación es el índice BRC20 (registrado por el registro de índice o el servidor del intercambio centralizado), que es naturalmente FT.A partir de esto, podemos obtener una conclusión de que la existencia de tokens semihomogenizadas SFT es causada por diferentes niveles de bookkeepers.
Blockchain no es una base de datos distribuida, por lo que hay un contador de mineros para mantener conjuntamente esta «base de datos de cadena» (porque solo la base de datos de la cadena puede ser realmente descentralizada).Pero cuando dimos la vuelta, todavía volvimos al viejo camino de la «base de datos relacional» centralizada.Esta es la razón por la cual el orden del acuerdo ordinal hace algún tiempo, el promotor del protocolo BRC20, la billetera Unisat por la razón esencial indispensable de si el indexador quiere actualizar el agitación.
Sin embargo, después de más de diez años de desarrollo, la industria ha acumulado mucha experiencia en «descentralización».¿Puede adoptar fraude o ZKP para garantizar la seguridad y la descentralización?¿La demanda de DA se desbordará al ecosistema de bitcoin a otros DA para promover la prosperidad e integración ecológica de múltiples cadenas?Parece que veo más posibilidades.
Información de referencia
https://www.aixinzhijie.com/books/261/master_bitcoin/_book/
https://learnblockchain.cn/article/5717
https://zhuanlan.zhihu.com/p/361854961
https://www.odaily.news/post/5187233
https://learnblockchain.cn/article/5376
https://www.panewslab.com/zh/articledetails/1301r1ibp79c.html
https://docs.ordinals.com/inscriptions.html
https://thebitcoinmanual.com/articles/pay-taproot-p2tr/