Esta semana es el concierto de Bad Bunny. En minutos se agotaron las entradas para 3 fechas en el Estadio Nacional, y muchísima gente se quedó fuera.
Imagina que una entrada no fuera de una sola persona, sino que pudiera usarse una y otra vez: entras tú, y después esa misma entrada la usa alguien más, nadie se quedaría fuera. Suena bacán, pero en ese mundo las entradas dejarían de ser escasas, perderían valor, el Nacional colapsaría de gente y Bad Bunny no podría pasar sus veranos en NuevaYol.
Por eso las ticketeras se aseguran de que cada entrada sea única y no se pueda reutilizar. Este problema es súper común*, sobre todo cuando hablamos de plata.
Esto no pasa con el dinero físico, si tengo un billete de $1.000 no se lo puedo pasar a dos personas a la vez. Pero con el dinero digital es otro tema, como son puros bits, podrías intentar hacer copy-paste y tratar de usar lo mismo dos veces. ¿Cómo nos aseguramos de que eso no pase? Bitcoin resuelve muy bien este problema, y para ver cómo lo hace imaginemos el caso de Alice.
Alice compra un helado en la tienda de Bob que cuesta 1 BTC (el helado más caro del mundo), pero antes de que a Bob le llegue la plata, Alice intenta hacer lo mismo con Charlie que vende bebidas: quiere mandar otro pago usando ese mismo BTC. Si nadie revisara los movimientos, los dos pagos podrían terminar siendo aceptados y ese BTC se gastaría dos veces. Por eso Bitcoin necesita una forma de validar las transacciones y definir cuál de las dos es la que cuenta.

¿Qué pasa en la realidad?
Bitcoin es descentralizado: las transacciones se hacen directo entre personas, sin una entidad única que las regule. En su lugar, miles de computadores llamados nodos revisan cada transacción y verifican que cumpla ciertas reglas. Si la transacción respeta esas reglas, la dejan registrada en el historial de todas las transacciones de Bitcoin, llamado blockchain. Es parecido a una cartola bancaria, pero pública y compartida.
Cuando ocurre una transacción en Bitcoin, primero entra en una “sala de espera” donde se queda hasta que alguien la incluya en un bloque. Esa sala de espera se llama mempool. Mientras está ahí, todavía no está confirmada. ****Bob podría ver la transacción de Alice en el mempool y pensar “parece que ya me pagó”. Pero como Bob es una persona precavida, todavía no le entregará el helado.
La confirmación llega cuando esa transacción entra a un bloque. Los bloques los arman los mineros, que toman un conjunto de transacciones del mempool e intentan crear el próximo bloque usando Proof of Work (PoW). Piensa en PoW como una prueba de matemáticas muy difícil: tienen que encontrar un número que haga que el bloque calce con un patrón. Encontrar ese número cuesta energía y tiempo, pero una vez que alguien lo encuentra, es muy fácil para el resto comprobar que efectivamente el bloque cumple el patrón y es válido.
Cuando un minero logra esa prueba, propone el bloque a la red. Los nodos del resto del mundo lo revisan y lo aceptan solo si cumple las reglas. Y una de las reglas más importantes es que ninguna transacción esté gastando algo que ya se gastó antes. Si el bloque es válido, se agrega al blockchain y los siguientes bloques se construyen encima. Si es inválido, se rechaza y la red sigue adelante con otro bloque.
Aquí aparece un concepto clave: un UTXO (Unspent Transaction Output) es como un “billete digital” específico que te pertenece. Tu saldo en Bitcoin es la suma de esos billetes que aún no has usado. Y cuando pagas, tu transacción dice exactamente qué billetes estás gastando, y crea nuevos UTXOs: uno para quien recibe y, si corresponde, otro de vuelto para ti.
Por ejemplo, si Alice tuviera 2 UTXOs: uno de 0.7 BTC y uno de 0.5 BTC, para comprar el helado le tiene que pagar 1 BTC a Bob, por lo que el flujo se vería así:

Entonces, si Alice intenta hacer doble gasto, en realidad está intentando usar el mismo UTXO en dos transacciones distintas. Ambas transacciones pueden ser vistas por muchos nodos y quedar en el mempool al mismo tiempo, por lo que puede pasar que algunos vean primero la transacción a Bob y otros vean primero la transacción a Charlie.
Como no todos ven lo mismo al mismo tiempo, por un rato la red puede quedar dividida sobre cuál transacción es la válida. Ahí entra la regla que hace que todos se pongan de acuerdo:
Los nodos siguen una regla simple: seguir la cadena válida más larga (o, mejor dicho, la que tiene más PoW acumulado). Esa termina siendo la oficial porque es donde la mayoría de los mineros sigue agregando nuevos bloques, así que va creciendo más rápido que cualquier otra versión.

El momento de verdad es cuando una de esas transacciones entra a un bloque válido. Ahí el UTXO queda oficialmente marcado como gastado en el historial que la red está siguiendo. Y como eso queda en la versión oficial que todos usan para validar, cuando un nodo revisa ese historial, ve que el UTXO de Alice ya está gastado y recién ahí Bob le entrega el helado a Alice. Si aparece otra transacción intentando usar ese mismo UTXO, esta se rechazará por inválida, y Charlie sabrá que nunca le pagaron la bebida.
En resumen, Bitcoin evita el doble gasto con una idea simple: todos los nodos terminan siguiendo la misma versión del historial (la cadena válida con más PoW acumulado), y solo se considera definitivo lo que queda confirmado ahí. Antes de eso, Alice puede dejar dos transacciones peleando en el mempool, pero cuando una queda confirmada en un bloque en esa cadena, el UTXO queda gastado y la otra queda inválida.
Gracias a estos mecanismos, Bitcoin logra que una misma unidad no se pueda gastar dos veces, por mucho que se intente. Y este problema no es exclusivo de Bitcoin: aparece en todos lados donde hay cosas únicas que no se pueden duplicar, desde saldos bancarios hasta entradas para conciertos. Tener reglas claras para resolverlo es lo que evita que el pobre Charlie sea estafado, y de paso hace posible que Bad Bunny venda una entrada por persona y pueda financiar sus veranos en Nueva Yol