Hoy vamos a hablar de los principales métodos de generación y almacenamiento de moneda electrónica en el momento actual. La mayor parte de monedas electrónicas usan un mecanismo conocido como Proof of Work (PoW) o Prueba de Trabajo que es el que usa Bitcoin. Algunas otras, las menos, usan Proof of Stake (PoS) o Prueba de Participación.
Desde el surgimiento de la moneda Nxtcoin (NXT), que es 100% Proof of Stake, parece que PoS está tomando cierta relevancia. Así es que he creído oportuno crear un ejemplo para ilustrar el modo de funcionamiento de este mecanismo.
PoS no es un concepto nuevo, se conoce desde hace bastante tiempo y está aplicado ya en algunas monedas. Una de ellas es Peercoin (PPC), que aplica un método híbrido con PoW predominante a corto plazo y PoS a largo plazo, y es esta moneda la que usaré para ilustrar el ejemplo que nos ocupa.
Como primer paso recordemos que Proof of Work se basa en cálculos masivos de Hashes de Bloques, miles o millones de Hashes por segundo, dependiendo de la potencia de cálculo de los aparatos de minería utilizados, hasta dar con el Hash que cumpla el criterio de Dificultad fijado; el mismo criterio para todos los nodos mineros de la red. No olvidemos que la Dificultad fija el número de ceros que tiene que tener el Hash al principio para considerar que se ha “descubierto” un Bloque. Una vez descubierto el Hash del Bloque, se incorpora a la Cadena de Bloques y se propaga por toda la red.
Hay muchos puntos comunes entre ambos conceptos en cuanto a Transacciones, Bloques, Cadena de Bloques, etc… Las diferencias principales de Proof of Stake son dos:
- El número de Hashes por segundo está fijado. No depende de la potencia de cálculo que uno tenga. Por mucho que pongamos ASICs versión 1000, o de la siguiente tecnología que salga, no vamos a calcular más Hashes/s que los establecidos.
- La Dificultad no es igual para todos los nodos, al contrario de lo que sucede en PoW. Depende de la cantidad de moneda que tenga cada nodo y es inversamente proporcional a ésta. Es decir, cuanta más moneda se tenga, menor será la Dificultad Particular y más fácil será encontrar el Hash del Bloque buscado.
Una vez aclarados estos puntos desarrollaremos nuestro ejemplo de minería con la moneda PPC, suponiendo que estamos minando Bloques por Proof of Stake. Nuestro minero está vez es Manolín, como sabemos, ya tiene experiencia como minero de BTC, que usa Proof of Work, y como es algo curioso el tipo, quería conocer el funcionamiento del Proof of Stake. Para ello hace dos meses compró 1.000 PPCs y se ha puesto a minar con ellos.
Para minar con los PPCs simplemente hace falta abrir el monedero PPC, y si lo tenemos encriptado, desencriptarlo para habilitar la Minería (ppcoind walletpassphrase <Passphrase> 9999999 true). Debe tenerse en cuenta también que para poder comenzar a minar, los PPCs deben tener al menos 30 días de antigüedad en nuestro monedero.
Con PPC aparece un concepto nuevo que es el Coin-Age, que también podemos expresarlo como Coin-Years o Coin-Days:
Coin-Days=Montante*DíasEnMonedero
Por tanto los PPCs de Manolín tienen 1.000*60=60.000 Coin-Days. Multiplicando esta cantidad por el 1% y dividiéndola en entre 365 días se obtiene la recompensa que obtendrá Manolín por el siguiente Bloque que descubra su monedero. Esto es así porque PPC genera por cada descubrimiento de Bloque el 1% del montante que se tenga de Coin-Years, o lo que es lo mismo un 1% anual.
Premio en PPCs = (Coin-Days/365)*0,01
Con lo cual, Manolín generará para el siguiente Bloque que descubra 1,64 PPCs. Una vez descubierto el contador de Coin-Age se pondrá de nuevo a cero.
El conjunto de datos del que se pretende obtener el Hash del Bloque contiene entre otras cosas una Transacción de generación llamada coinstake, que hace las veces de la coinbase de generación de Bitcoin, con un primer input llamado Kernel con todas las monedas que tiene en su monedero actual hacia si mismo más el premio; el número de Coin-Days; el Hash del Bloque anterior; y un Timestamp que se genera cada segundo y que es el que marca el ritmo de Hasheo fijado por Proof of Stake. De tal forma que nadie puede superar más de 1 Hash/s por monedero con algún montante en su interior. Este Timestamp viene a ser algo similar al Nonce del PoW. Es lo que provoca que el conjunto de datos varíe en cada Hash y así nos vayamos dirigiendo hacia el Hash objetivo. Con este ritmo tan bajo de Hasheo cualquier CPU de cualquier ordenador actual puede hacer los cálculos sin demasiado trabajo, que es lo que hace la CPU del ordenador de Manolín mientras tiene abierto su monedero de PPC. Si el monedero está vacío no Hashea porque no puede generar la Transacción de generación.
De esta forma se consigue obtener la Cadena de Bloques sin tanto derroche de energía eléctrica como con Proof of Work, y en este caso de nuevo, cuantas más Confirmaciones vaya teniendo una transacción más tiempo costaría alterarla, ya que ello supondría que habría que calcular todos los Bloques posteriores de nuevo. Para lo cual, ahora no haría falta poder de Hasheo como sucedía en Bitcoin, si no montante de PPCs, que es lo que haría bajar la Dificultad Particular para que fuera posible el recalculado fraudulento. Así sólo aquellos que tienen los mayores montantes de PPCs serían los que podrían lanzar ataques serios contra la red, pero hacerlo sería un contrasentido, ya que ese colectivo es el más interesado en que la red permanezca segura, al ser ellos precisamente los más beneficiados con la seguridad.
Sin duda este mecanismo, que lleva asociada la gran ventaja del bajo consumo energético, dará mucho que hablar, y muy probablemente será sobre el que se construirán importantes monedas futuras…
Agradece al autor: 1LuGGBn5HGjypx3JKXvhh1AV4hX5HESEbH