Estoy un poco confundido con algo. Espero que me lo puedas aclarar...
Digamos que quiero hacer una transacción. Entonces mi billetera de intercambio hace eso por mí. La forma en que lo hace es que primero toma la lista de UTXO (digamos que la tiene en el disco D ), toma los que se pueden usar y, al usar esos UTXO, crea una transacción con las entradas válidas. Luego, esta transacción va al mempool del nodo. Luego, cuando comienza a extraer un bloque, el nodo toma esas transacciones, las coloca en un bloque y comienza la extracción.
Pregunta 1) ¿cuándo se actualizará la lista UTXO en el disco D ? ¿Antes de poner una transacción en un mempool, o después de que un minero resuelve un bloque o tal vez en ese momento cuando el minero obtiene transacciones del mempool?
Si la respuesta es: antes de colocar una transacción en un mempool, entonces, las cosas se complican porque si ese nodo no resuelve el bloque, existe la posibilidad de que la actualización de UTXO no debería haber ocurrido, lo que significa que el nodo revertirá el utxo volver a lo que era.
Si la respuesta es: después de que un minero resuelve un bloque, entonces es posible que mi nodo me permita hacer la misma transacción dos veces, ya que antes de crear una transacción, verifica la lista de UTXO.
Si la respuesta es: cuando un minero toma transacciones de mempool, entonces esto es bastante incorrecto, ya que mempool ya contiene transacciones validadas.
¿Qué opinas?
ACTUALIZAR PREGUNTA:
Digamos que tengo 1 BTC y publiqué una transacción de 1 BTC para Bob en el nodo A y la misma transacción de 1 BTC para Alice en el nodo B.
Entonces, digamos que la transmisión de transacciones no ocurrió, entonces ellos (nodoA, nodoB) no conocen la transacción del otro.
Ahora, el nodo A extrajo primero un bloque y lo transmitió. nodeB recibió este bloque. Ahora, nodeB usa muchos UTXO diferentes como dijiste. Una verificación que se realiza es que el nodo B recorre las transacciones del bloque del nodo A y si se puede encontrar alguna de las transacciones (compara las identificaciones de transacciones) en su mempool, la elimina. Ahora, ¿cómo eliminará el nodo B la transacción a Alice (que ahora es un gasto doble)? ¿Cómo se llega a esta conclusión?
Esto depende de la implementación, pero en Bitcoin Core no hay un solo conjunto de UTXO:
chainstate/
directorio de una base de datos. Corresponde al estado del último bloque vaciado (y no incluye los efectos de ninguna transacción de mempool o de ningún bloque desde el último vaciado).Finalmente, es importante tener en cuenta que cada nodo tiene su(s) propio(s) conjunto(s) de UTXO. Su propia billetera/nodo no actualizará nada cuando un minero (¿cuál?) comience a incluir su transacción en sus bloques candidatos; ni siquiera tiene forma de saber que lo están haciendo.
Nika Kurashvili
pieter wuille
Nika Kurashvili
Nika Kurashvili
pieter wuille
Nika Kurashvili
pieter wuille
Nika Kurashvili
pieter wuille
Nika Kurashvili
pieter wuille
Nika Kurashvili
pieter wuille