Análisis del principio de transacción NFT (1)

Análisis del proceso de transacción NFT

Haga clic en el botón Mint en el sitio web oficial del proyecto para abrir en detalle el proceso de interacción de un extremo a otro desde el navegador a la red Ethernet:

1. Haga clic en el botón Menta

Todos inician sesión en el sitio web del proyecto, conectan sus billeteras en Chrome y hacen clic en el botón Mint. El código JavaScript de la página web genera datos de transacciones sin procesar en función del precio de emisión del proyecto, la dirección del contrato, etc., incluidos principalmente los siguientes campos clave

2. Firma TX

El código de la página web interactúa con Metamask y aparecerá una ventana que le permitirá confirmar la transacción. Después de hacer clic en Confirmar, Metamask utilizará la clave privada de su billetera para firmar y garantizar que usted autorice la transacción, y la red Ethereum posterior la verificará.

3. Enviar TX al nodo para su verificación.

Metamask envía la transacción TX al nodo Ethereum de Metamask (configuración predeterminada), y el nodo verifica el TX para garantizar que la transacción no sea falsificada.

4. Transmitir TX a la red Ethereum

La transacción TX se envía a los nodos adyacentes de la red Ethereum y luego se transmite a los nodos adyacentes. En este momento, su transacción se puede ver en etherscan.io y el estado es pendiente.

5. El nodo minero recibe TX

El nodo minero pondrá el tx sincronizado en un lugar llamado Txpool/Mempool. Este lugar es la clave para muchas cosas. Necesita ser ampliado:

TxpoolLa fuente de los datos proviene principalmente de:
envío localRPC , es decir, la transacción enviada por la aplicación de terceros llamando al servicio del nodo local de Ethereum ;
la sincronización remota se refiere a la sincronización de los datos de transacciones de otros nodos de Ethereum con el nodo local. mediante la forma de sincronización de transmisiones;

Txpool se divide en dos colas, Cola y Pendiente. Primero, los TX recién recibidos se juzgarán según las reglas y se colocarán en la cola Cola, y luego se agregará la cola Pendiente para esperar a que la minería agregue nuevos bloques.
 

Las reglas principales son las siguientes:

1) Priorizar el TX con Precio de Gas alto
2) Priorizar el TX local, que es demasiado remoto para sincronizar
3) Cada nodo establecerá el Precio de Gas mínimo, y el TX remoto inferior a este valor será descartado. El TX
en Pendiente será Mineradquirido y verificado por el módulo. Para la minería, después de que la minería sea exitosa, se escribe en el bloque y se transmite. MinerQuitar la transacción es copiar y el TX en el Txpool no disminuye. TX se Txpoolelimina de la cadena después de escribirse en la cadena.
El TX cuyo Gas esté demasiado bajo quedará atrapado en el Txpool y no podrá ser procesado, es necesario aumentar el Gas para permitir que sea procesado.

GasWar: Cuando se produce una transacción popular, se puede priorizar a todos para su propio TX y luchar para aumentar la tarifa del gas.

6. El bloque minero TX está empaquetado.

Los mineros comienzan a minar después de seleccionar TX y luego encuentran una solución de bloque y la transmiten a la red Ethereum.

7. El bloque está verificado.

Después de ser verificado por otros nodos mineros, el bloque se carga oficialmente en la cadena y nuestros resultados de TX se pueden ver en etherscan.io .

8. Sincronización del estado de TX

El estado relevante se devuelve localmente y se puede consultar en Metamask.

Documentos de referencia:

Ciclo de vida de una transacción de Ethereum
Ciclo de vida de la transacción en la cadena de bloques de Ethereum
Los factores que influyen en las tarifas de transacción de Ethereum

Cómo se ejecuta el contrato

En pocas palabras, la transacción que enviamos se convertirá en un objeto Mensaje y se pasará al EVM, y el EVM generará un objeto Contrato basado en el Mensaje para su posterior ejecución. La función mint se llama en función de la entrada de los datos que transferimos al contrato.

Preventa y venta pública de NFT

La preventa solo se puede comprar para usuarios específicos y la venta pública significa que todos pueden adquirirla.
Hay dos preguntas técnicas principales que deben responderse aquí:
1. ¿Cómo limitar la acuñación de carteras específicas?
2. ¿Cómo cambia el estado entre preventa y venta pública?

Mecanismo de lista blanca

Las listas blancas ahora generalmente se implementan usando árboles Merkle. En pocas palabras, todas las direcciones de billetera de la lista blanca se usan como nodos hoja del árbol Merkle para generar un hash raíz. En el contrato, solo es necesario almacenar el valor hash raíz. Cuando se llama a la función mint, el código JS de la página web genera una prueba basada en la dirección de la billetera (el hash del nodo principal de nivel superior de la dirección), y el contrato puede verificar si la dirección pertenece a la lista blanca.

Tome el contrato de C01 como ejemplo: 0x6fd053bff10512d743fa36c859e49351a4920df6

Actualice el hash a través de SetRoot durante la preventa y la venta pública (C01 usa un método de lista blanca para ambas ventas y la venta pública usa un método de lotería de verificación de capital)

Cambio de estado de ventas

Hay dos métodos comúnmente utilizados: 1) Juzgando el momento del contrato, como 2022-01-01 18:00 UTC para comenzar la venta pública 2) Juzgando el estado y estableciendo la variable de estado en el contrato, por ejemplo Por ejemplo, tomando el contrato XRC como ejemplo para juzgar el estado de Status .PublicSale, esto se establece llamando a SetStatus en el contrato.

Supongo que te gusta

Origin blog.csdn.net/xiaozhupeiqi321/article/details/125098377#comments_23370351
Recomendado
Clasificación