Tabla de contenido
- Entendiendo la Blockchain
- Lidiando con el doble gasto
- Prueba de trabajo y 'minería'
Una de las principales preocupaciones de cualquier desarrollador de criptomonedas es el tema del doble gasto. Esto se refiere a la incidencia de que un individuo gaste un saldo de esa criptomoneda más de una vez, creando efectivamente una disparidad entre el registro de gastos y la cantidad de esa criptomoneda disponible, así como la forma en que se distribuye.
La cuestión del doble gasto es un problema que el efectivo no tiene; si paga un sándwich con una factura de $ 10, entregándole esa factura al fabricante del sándwich, no puede darse la vuelta y gastar esos mismos $ 10 en otro lugar. Sin embargo, una transacción que utiliza una moneda digital como bitcoin se produce de forma totalmente digital. Esto significa que es posible copiar los detalles de la transacción y retransmitirla de tal manera que un solo propietario pueda gastar el mismo BTC varias veces. A continuación, examinaremos cómo los desarrolladores de criptomonedas se han asegurado de que el doble gasto no pueda suceder.
Para llevar clave
- Un problema técnico que surge con la noción de una moneda digital es la capacidad de alguien para duplicar el dinero digital y gastarlo simultáneamente en dos o más lugares. Este problema de 'doble gasto' se evita en las criptomonedas basadas en blockchain como Bitcoin por utilizando un mecanismo de consenso conocido como prueba de trabajo (PoW). Este PoW se lleva a cabo por una red descentralizada de 'mineros' que no solo aseguran la fidelidad de las transacciones pasadas en el libro mayor de blockchain sino que también detectan y evitan el doble gasto.
Entendiendo la Blockchain
La cadena de bloques que subyace a una moneda digital como bitcoin no puede evitar el doble gasto por sí sola. Más bien, todas las diferentes transacciones que involucran la criptomoneda relevante se publican en la cadena de bloques, donde se verifican y protegen por separado mediante un proceso de confirmación. En el caso de bitcoin y muchas otras criptomonedas, las transacciones que se han confirmado de esta manera se vuelven irreversibles; se publican públicamente y se mantienen a perpetuidad.
Bitcoin fue la primera moneda digital importante en resolver el problema del doble gasto. Lo hizo implementando este mecanismo de confirmación y manteniendo un sistema de contabilidad común y universal. De esta manera, la cadena de bloques de bitcoin retiene registros de transacciones con sello de tiempo que se remontan a la fundación de la criptomoneda en 2009.
En términos de Bitcoin, un "bloque" es un archivo de datos grabados permanentemente. Todas las transacciones recientes se escriben en bloques, al igual que un libro de transacciones de acciones en un intercambio. La información de los bloques se agrega al libro mayor cada pocos minutos; Todos los nodos en la red mantienen una copia del libro mayor de blockchain. Los usuarios pueden navegar la cadena de bloques para bitcoin y revisar las transacciones solo en términos de cantidad. Los detalles sobre las identidades del comprador y el vendedor en cualquier transacción están protegidos por un cifrado de alto nivel, que también protege el libro mayor de la manipulación de fuentes externas. Cuando se actualiza el libro mayor de blockchain, también lo son todas las billeteras bitcoin.
Lidiando con el doble gasto
Imagine que tiene 1 BTC e intenta gastarlo dos veces en dos transacciones separadas. Puede intentar hacer esto enviando el mismo BTC a dos direcciones de billetera bitcoin separadas. Ambas transacciones pasarán al grupo de transacciones no confirmadas. La primera transacción se aprobaría mediante el mecanismo de confirmación y luego se verificaría en el siguiente bloque. Sin embargo, la segunda transacción sería reconocida como inválida por el proceso de confirmación y no sería verificada. Si ambas transacciones se extraen del grupo para confirmación simultáneamente, la transacción con el mayor número de confirmaciones se incluirá en la cadena de bloques, mientras que la otra se descartará.
Si bien esto efectivamente trata el tema del doble gasto, no está exento de problemas. Por ejemplo, el destinatario previsto de la segunda transacción (fallida) no tendría parte en el fracaso de la transacción y, sin embargo, esa persona no recibiría el bitcoin que había anticipado. Muchos comerciantes esperan al menos 6 confirmaciones de una transacción (lo que significa que se agregaron 6 bloques de transacciones posteriores a la cadena de bloques después de la transacción en cuestión). En este punto, el comerciante puede asumir con seguridad que la transacción es válida.
Sigue habiendo otras vulnerabilidades en este sistema que podrían permitir que se produzcan ataques de doble gasto. Por ejemplo, si un atacante es capaz de controlar al menos el 51% del poder de la red, puede cometer el doble de gasto. Si un atacante pudiera controlar de alguna manera este poder computacional, podría revertir las transacciones y crear una cadena de bloques privada y separada. Sin embargo, el rápido crecimiento de Bitcoin prácticamente ha asegurado que este tipo de ataque es imposible. (Para más información, vea Cuidado con estas cinco estafas de Bitcoin)
Prueba de trabajo y 'minería' explicada
Ahora pongámonos un poco más técnicos. La forma en que los usuarios detectan la manipulación, como un intento de doble gasto en la práctica, es a través de hashes, largas cadenas de números que sirven como prueba de trabajo (PoW). Ponga un conjunto de datos determinado a través de una función hash (bitcoin usa SHA-256), y solo generará un hash. Sin embargo, debido al "efecto de avalancha", incluso un pequeño cambio en cualquier parte de los datos originales dará como resultado un hash totalmente irreconocible. Cualquiera que sea el tamaño del conjunto de datos original, el hash generado por una función determinada tendrá la misma longitud. El hash es una función unidireccional: no se puede usar para obtener los datos originales, solo para verificar que los datos que generaron el hash coinciden con los datos originales.
Generar cualquier hash para un conjunto de transacciones de bitcoin sería trivial para una computadora moderna, por lo que para convertir el proceso en "trabajo", la red de bitcoin establece un cierto nivel de "dificultad". Esta configuración se ajusta de modo que se "extrae" un nuevo bloque, que se agrega a la cadena de bloques al generar un hash válido, aproximadamente cada 10 minutos. Establecer la dificultad se logra estableciendo un "objetivo" para el hash: cuanto más bajo es el objetivo, más pequeño es el conjunto de hashes válidos y más difícil es generar uno. En la práctica, esto significa un hash que comienza con una larga cadena de ceros: el hash para el bloque # 429818, por ejemplo, es 000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Ese bloque contiene 2, 012 transacciones que involucran poco más de 1, 000 bitcoin, así como el encabezado del bloque anterior. Si un usuario cambiara el monto de una transacción en 0.0001 bitcoin, el hash resultante sería irreconocible y la red rechazaría el fraude.
Dado que un conjunto de datos dado solo puede generar un hash, ¿cómo se aseguran los mineros de generar un hash por debajo del objetivo? Alteran la entrada agregando un número entero, llamado nonce ("número usado una vez"). Una vez que se encuentra un hash válido, se transmite a la red y el bloque se agrega a la cadena de bloques.
La minería es un proceso competitivo, pero es más una lotería que una carrera. En promedio, alguien generará una prueba aceptable de trabajo cada diez minutos, pero quién lo hará es una incógnita. Los mineros se agrupan para aumentar sus posibilidades de extraer bloques, lo que genera tarifas de transacción y, por un tiempo limitado, una recompensa de bitcoins recién creados.
La prueba de trabajo hace que sea extremadamente difícil alterar cualquier aspecto de la cadena de bloques, ya que dicha modificación requeriría volver a minar todos los bloques posteriores. También dificulta que un usuario o grupo de usuarios monopolice la potencia informática de la red, ya que la maquinaria y la potencia necesarias para completar las funciones hash son caras.