Prueba de trabajo
La prueba de trabajo o su traducción en inglés, Proof of Work (PoW) es un mecanismo para prevenir double-spends (doble gastos). La mayor parte de las principales criptomonedas lo utilizan como algoritmo de consenso -que es, sencillamente, como denominamos a un método para proteger el libro mayor contable de la criptomoneda.
Un doble gasto se produce cuando los mismos fondos se gastan más de una vez. El concepto se usa, casi en exclusiva, en el contexto del dinero digital –a fin de cuentas, a uno le resultaría muy complicado poder gastar dos veces el mismo dinero efectivo físico
Un hash es una serie de letras y números en orden arbitrarios, que se genera cuando procesas datos a través de una función hash. Si procesas los mismos datos a través de ella de nuevo, obtendrás siempre el mismo output. Sin embargo, si cambias tan sólo un pequeño detalle, el aspecto de tu hash será completamente distinto.
En Proof of Work, el protocolo establece condiciones que determinan la validez de un bloque. Éste podría decir, por ejemplo, que sólo un bloque cuyo hash empiece por 00 será válido. La única forma de que un minero logre crear uno que presente esa combinación, será procesando a fuerza bruta los inputs. El minero podrá ir ajustando un parámetro de sus datos para así ir produciendo resultados distintos en cada prueba, hasta dar con el hash correcto.
Proof of Work le exige al minero (el usuario que crea el bloque) el gasto de una parte de sus recursos a cambio de ese privilegio. El recurso en cuestión es potencia computacional, utilizada para someter a hash los datos del bloque hasta que se encuentra una solución a un rompecabezas.
Someter a hash los datos del bloque significa pasarlos por una función de hashing para generar un hash del bloque. El hash del bloque funciona como una “huella digital” –se trata de una identidad para tus datos de input, que es única de cada bloque.
Es prácticamente imposible revertir el hash de un bloque para obtener los datos de input. Si se conoce el input, sin embargo, resulta trivial confirmar que el hash sea correcto. Sólo se necesita pasar el input por la función y comprobar que el output sea el mismo. En Proof of Work, debes proporcionar datos cuyo hash cumpla ciertas condiciones. Sin embargo, no sabes cómo lograrlo. La única opción que tienes es pasar tus datos por una función hash y comprobar si se cumplen las condiciones. Si no es así, deberás modificar tus datos ligeramente para obtener un hash distinto. Incluso cambiar un único carácter de tus datos producirá un resultado completamente diferente, por lo que no hay manera de predecir cómo será un output.
Como resultado, si quieres crear un bloque, estás jugando un juego de adivinanzas, por lo general, tomas información sobre todas las transacciones que deseas agregar y algunos otros datos importantes, luego lo combinas todo. Pero como tu conjunto de datos no cambiará, debes agregar una información que sea variable. De lo contrario, siempre obtendrás el mismo hash que la salida. Estos datos variables son lo que llamamos un nonce. Es un número que cambiará con cada intento, por lo que obtendrás un hash diferente cada vez. Y esto es lo que llamamos minería.
En resumen, la minería es el proceso de recopilar datos de blockchain y mezclarlos con un nonce hasta que encuentres un hash en particular. Si encuentras un hash que satisfaga las condiciones establecidas por el protocolo, tienes derecho a transmitir el nuevo bloque a la red. En este punto, los otros participantes de la red actualizan sus blockchains para incluir el nuevo bloque.
Última actualización