El
problema Nothing at Stake (abreviado
N@S) es la razón principal por la cual el Proof of Work se considera actualmente más seguro que el Proof of Stake.
Vi que todavía no hay mucha información en castellano/español sobre el problema Nothing-at-stake. Quizá por eso es frecuente ver posts como "el Bitcoin no se pasa a Proof of Stake porque es conservador". O. "El Bitcoin será reemplazado por un altcoin con PoS porque gasta mucha energía". Es decir, mucha gente subestima el problema o directamente lo desconoce.
Voy a intentar una explicación lo más corta posible. El problema Nothing at Stake es un problema que tiene que ver con los mismos fundamentos de la informática, y por lo tanto no puede ser "resuelto" fácilmente.
Problema fundamentalEn el Proof of Stake no cuesta dinero atacar la cadena y tratar de efectuar un "doble gasto" porque no se gasta energía. "No hay nada en juego" (en inglés: "there is nothing at stake"). En comparación, en el Proof of Work para cada ataque se debe gastar energía para minar algunos bloques.
ExplicaciónEn una criptomoneda, los nodos necesitan un método para saber cual es el bloque válido cuando hay más de una opción, es decir, cuando la cadena se bifurca.
El Bitcoin emplea el método del Proof of Work: Los mineros necesitan gastar energía para "encontrar" un bloque. Acumulando el valor de la "difficulty" (un valor que está relacionado al hashrate), cada nodo puede saber cual es la cadena válida: la que presenta el mayor valor acumulado.
El Proof of Stake hace algo similar, pero diferente. Básicamente, en el Proof of Stake "encuentra el bloque", el que posee la dirección en la cual, en un momento determinado, se encuentra la mayor cantidad de coins (es un poco más complicado, pero para esta explicación alcanza). También hay un valor similar a la "difficulty", que indica (de manera simplificada) cuantos coins se usaron para minar un bloque. Cuando la cadena se bifurca, los nodos consideran válida la cadena con mayor valor acumulado de este indicador.
Ahora bien: En el Proof of Stake, no se gasta un significativo monto de energía para "minar".
Esto es un problema. ¿Por qué? Porque un minero puede minar varios bloques de manera paralela, prácticamente sin gastar dinero.
¿Pero para que sirve eso? Bueno, principalmente para una razón: atacar la criptomoneda y realizar un doble gasto. En los ataques del tipo "51%", lo que hace el minero es efectuar un gasto - por ejemplo, comprar un producto en una tienda online - y minar este bloque. Luego, en secreto, mina una cadena paralela que no contiene esta transacción
sino otra que transfiere los coins a una direcci+on de su propia cartera. Cuando el minero recibe la contraprestación por su transacción (ej: el producto de la tienda on line), publica la cadena "secreta". En el caso del PoW, si el minero cuenta con el 50% o más del hashrate, en algún momento podrá hacer creer a los otros nodos que su cadena "secreta" es la válida. Pero tiene que gastar mucho dinero para este intento de ataque.
En el caso del PoS ocurre lo mismo: El atacante "mina" una cadena en secreto y luego la publica. Esta será aceptada siempre y cuando el atacante haya usado más coins para minarla que los competidores que minaron la cadena "verdadera", o sea, con el 50% de los coins que están haciendo "staking". Pero: No gasta dinero para el ataque. Puede intentar el ataque infinitas veces hasta que salga.
Y hay otro problema, un poco más difícil de entender: En PoS, alcanza que el atacante haya tenido control en algún momento sobre el 50% de los coins usados para el "staking". Simplemente comienza su cadena secreta con el bloque cuando perdió el control sobre estas monedas. Este problema tiene que ver con que el PoS usa un recurso dentro del sistema (la cantidad de coins en una dirección) para determinar quien mina un bloque, mientras que el PoW usa un recurso fuera del sistema, la energia vertida en la minería.
ObjecionesAhora, muchos van a decir: ¡Pero si las monedas PoS funcionan! Es verdad que monedas PoS grandes, como Peercoin, Blackcoin, Bitshares, Steem, NEM (que usa una variante del PoS llamada Proof of Importance) o NXT/Ardor, nunca han sido atacadas con éxito.
Es que hay mecanismos que pueden ayudar a minimizar el problema. Pero no lo resuelven por completo. Por ejemplo, NXT no permite "reorganizar" la cadena por más de 720 bloques. Esto significa que cualquier ataque se debe realizar dentro de este límite. Otras monedas como Cardano usan un sistema que pre-selecciona a los mineros con mucha anticipación, lo que hace que no pueda aparecer otro minero con una cadena secreta.
Pero todos estos mecanismos no son el 100% infalibles y en muchos casos llevan a otros problemas (por ejemplo, en Cardano es posible que la cadena pare de producir bloques si hay un cartel de mineros suficientemente grande, y se necesita un hard fork para que siga operando).
También está la objeción que el atacante "cava su propia fosa" si ataca la cadena para efectuar un doble gasto, porque el valor de la criptomoneda luego se podría derrumbar debido al ataque. Pero también hay un problema con esta afirmación: El atacante podría efectuar una venta al descubierto ("short sell"), que lo beneficia cuando el precio cae, para cubrir sus pérdidas. Y también esto no previene ataques cuyo fin es simplemente "sabotear" a una criptomoneda (por ejemplo, por parte de gobiernos o competidores).
ConclusiónBitcoin no se pasa a Proof of Stake porque el problema del Nothing at Stake es considerado demasiado grave y todavía no se ha demostrado que puede ser "resuelto". Si bien el problema hasta ahora ha sido teórico, no está garantizado que nunca nadie encuentre una forma de atacar el PoS obteniendo ganancias, haciendo fallar todo el sistema de seguridad.
Para leerUn buen resumen, bastante completo, de los problemas informáticos que influyen en el Proof of Stake se puede encontrar en la
FAQ de Ethereum (inglés)
(PD: Editado y precisado algunos conceptos)