Blockchain y validación de transacciones

¿Cómo comprueban los mineros que tengo suficientes Bitcoins? No puedo creer que caminarán a través de la enorme y siempre creciente cadena de bloques establecida desde 2009 para verificar cada transacción que hice para calcular mi saldo.

Para una mejor búsqueda por parte de otros usuarios en el futuro, creo que esta pregunta debería dividirse en dos. Uno se centró en la validación de blockchain, el otro en la validación de transacciones.

Respuestas (2)

Bitcoin usa una cosa llamada Conjunto de salida de transacciones no gastadas (conjunto UTXO), no cuentas o saldos. Una transacción consumirá UTXO como entradas y creará UTXO como salidas. Cuando un nodo recibe un bloque (ya sea durante la sincronización inicial o la retransmisión normal), actualizará su propia base de datos interna que contiene el conjunto UTXO. En esta actualización, elimina los UTXO que se han gastado y agrega los UTXO que se crearon. Debido a que hace esto para cada bloque, si un nodo está completamente sincronizado, debe saber cuáles son todos los UTXO y tenerlos almacenados en la base de datos.

Cuando un nodo recibe su transacción, buscará los UTXO que gasta su transacción en su base de datos. Si no existen, entonces descarta su transacción como inválida. No necesita atravesar la cadena de bloques; los datos que necesita se extrajeron y se colocaron en otro lugar donde se pueden buscar fácilmente.

Una vez que comprende cómo funcionan las bases de datos, es más fácil de creer. Además, solo se necesitan los UTXO (es decir, las salidas de transacciones no gastadas) para calcular su saldo.

Los clientes de Bitcoin cargan los datos de la cadena de bloques en una base de datos indexada para permitir verificaciones muy rápidas de los datos.

Más detalles aquí: https://en.bitcoin.it/wiki/Bitcoin_Core_0.11_(ch_2):_Data_Storage

Entiendo cómo funcionan las bases de datos, porque soy ingeniero de software. Estoy empezando a leer sobre bitcoin y blockchain, así que tengo varias preguntas que la documentación aún no pudo responder. Para mí, esto también significa que los nuevos mineros tienen que cargar la enorme cadena de bloques en una base de datos, lo que llevará unos minutos.
Sí, la validación de la cadena existente (que, como efecto secundario, crea la base de datos necesaria para la validación de bloques futuros) tiende a llevar varias horas o más (según la velocidad del disco, la CPU y la red). Sin embargo, la validación de un nuevo bloque después solo toma milisegundos.